<?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[Ayush Unfiltered]]></title><description><![CDATA[A cocktail of philosophy, software development and all the other random things I am thinking about or working on. ]]></description><link>https://defcon007.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!DguR!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fdefcon007.substack.com%2Fimg%2Fsubstack.png</url><title>Ayush Unfiltered</title><link>https://defcon007.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 24 May 2026 23:55:51 GMT</lastBuildDate><atom:link href="https://defcon007.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ayush Goyal]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[defcon007@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[defcon007@substack.com]]></itunes:email><itunes:name><![CDATA[Ayush Goyal]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ayush Goyal]]></itunes:author><googleplay:owner><![CDATA[defcon007@substack.com]]></googleplay:owner><googleplay:email><![CDATA[defcon007@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ayush Goyal]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why Substack? ]]></title><description><![CDATA[My reasoning on why I moved from my custom website to Substack and how I did that]]></description><link>https://defcon007.substack.com/p/why-substack</link><guid isPermaLink="false">https://defcon007.substack.com/p/why-substack</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sat, 09 May 2026 23:02:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I6xd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>History</h1><p>Let me start with a little history of when I started writing. I wrote my first article ever on Nov 15th, 2016, i.e., almost 9 and a half years ago. It was during my college years that I learned how to easily SSH to a server from the college network (port 22 was blocked by our network admin, so direct SSH didn&#8217;t work). At that time, I heard about <a href="https://medium.com">Medium</a> and used it. For a while, it worked well, and I used it as my primary platform for writing and reading articles. Then Medium launched paywalled articles, and after that, the quality and product experience deteriorated significantly, so I decided to move away from it and create my own personal website. </p><p>Things worked well; like most other people, I used a template, used markdown for the content, and hosted it on a service as a static site (I guess it was GitHub Pages at the time) behind my own domain. <br>Now, after some time, I felt markdowns were a little cumbersome, and I recently started using Notion and decided to use it as my CMS (Content Management System). At the same time, Next.js came around, so I decided to switch to it as well. I created a new page inside Notion &#8220;Personal Website&#8220; and added sub-pages inside it to handle different things, used tags to differentiate and group posts like - <code>blog</code>, <code>project</code>, etc. During build time, I pulled the content from Notion using its API and cached all the dynamic posts in the build directory. This worked quite well for me. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eODU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eODU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 424w, https://substackcdn.com/image/fetch/$s_!eODU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 848w, https://substackcdn.com/image/fetch/$s_!eODU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 1272w, https://substackcdn.com/image/fetch/$s_!eODU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eODU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png" width="1456" height="735" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:735,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:532232,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196397754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eODU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 424w, https://substackcdn.com/image/fetch/$s_!eODU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 848w, https://substackcdn.com/image/fetch/$s_!eODU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 1272w, https://substackcdn.com/image/fetch/$s_!eODU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb08fed22-a015-4a66-b4c4-b1e6fe62c55d_3024x1526.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My notion CMS</figcaption></figure></div><h1>Problem </h1><p>Now, my notion + Next.js setup was working quite well, but I recently noticed that my writing frequency had become very low; I had almost stopped writing. <br>The last post I wrote was in October 2025, about a hackathon I won, and it was also because one of my friends wanted to know more about it. The one before it was in 2022!</p><p>I don&#8217;t know the exact reason, but one correlation I see is the platform. When I was using Medium, I was writing more, but once I shifted to custom blog management, I was more obsessed with styling, tech, and other optimizations. Although that was quite fun as well, it might have impacted my writing habits. There might not be any causation involved here, and it was maybe just a pure correlation, but I decided to shift back to a managed service to find out. </p><h1>The Solution</h1><p>I have known about Substack for a while now. I used to read articles on Substack from some people I follow and admire. In fact, when I decided to move to Substack, I noticed I already had an account from long before. </p><p>Apart from the writing experience, I found the reading experience on Substack to be quite good as well. So I decided to move my entire personal website to Substack. </p><h2>Migration </h2><p>Once the decision was made, I wanted to bring all my posts to Substack. <br>Substack had an inbuilt option to import posts. So I gave it a try, but that option didn&#8217;t work for my personal website, which makes sense since it is a custom site and I can&#8217;t expect Substack to parse it directly. But I saw that it explicitly mentioned Medium, and since the  majority of  my content was already there, it should work. But that also just errored out. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I6xd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I6xd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 424w, https://substackcdn.com/image/fetch/$s_!I6xd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 848w, https://substackcdn.com/image/fetch/$s_!I6xd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 1272w, https://substackcdn.com/image/fetch/$s_!I6xd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I6xd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png" width="1298" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1298,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95860,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196397754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I6xd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 424w, https://substackcdn.com/image/fetch/$s_!I6xd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 848w, https://substackcdn.com/image/fetch/$s_!I6xd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 1272w, https://substackcdn.com/image/fetch/$s_!I6xd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d1202d-4c65-4789-bc2d-6c685d3c0860_1298x794.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now I thought the issue must be on the medium side, they might be blocking Substack crawlers. So I decided to try something else. I followed this <a href="https://help.medium.com/hc/en-us/articles/115004745787-Export-your-account-data">article</a> from Medium support to export all my articles, and used Claude to write a simple script that exposed all of them from my localhost as an  RSS feed. Once that was done, I used <a href="https://ngrok.com">ngrok</a> to make it accessible from the internet and pasted the URL on Substack for importing, and it worked like a charm. All of my posts were now imported to Substack with the correct published date. I used the same logic on my personal website to import other articles and pages that were not on Medium, and now have all of my content on Substack. </p><p>The other part of the problem was redirection from old URLs. My personal website used a particular URL scheme for posts, but I can&#8217;t have the same thing for Substack. I researched a little and found that the most reliable way to do it is on my domain registrar, which was Cloudflare. <br>To my surprise, it was quite easy to do it there. Cloudflare had something called - <code>Redirect Rules</code>, with which you can easily set up redirections. I tested it out, and it was exactly what I was looking for. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hr_u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hr_u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 424w, https://substackcdn.com/image/fetch/$s_!hr_u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 848w, https://substackcdn.com/image/fetch/$s_!hr_u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 1272w, https://substackcdn.com/image/fetch/$s_!hr_u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hr_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png" width="1456" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181864,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196397754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hr_u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 424w, https://substackcdn.com/image/fetch/$s_!hr_u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 848w, https://substackcdn.com/image/fetch/$s_!hr_u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 1272w, https://substackcdn.com/image/fetch/$s_!hr_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b1094c2-7677-424e-9ce1-fc40144ba013_2406x1336.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But after I created my test rule, I noticed there is a limit of 10 redirect rules only, which was not enough for me. So, I was back to researching what to do. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!52vv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!52vv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 424w, https://substackcdn.com/image/fetch/$s_!52vv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 848w, https://substackcdn.com/image/fetch/$s_!52vv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 1272w, https://substackcdn.com/image/fetch/$s_!52vv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!52vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png" width="552" height="166" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:166,&quot;width&quot;:552,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16411,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196397754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!52vv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 424w, https://substackcdn.com/image/fetch/$s_!52vv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 848w, https://substackcdn.com/image/fetch/$s_!52vv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 1272w, https://substackcdn.com/image/fetch/$s_!52vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bda12a9-fe69-4849-9ac3-692f9e22f70d_552x166.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>After that, I found out about Snippet rules in Cloudflare, which were much more powerful as they were powered by JavaScript. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2XvR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2XvR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 424w, https://substackcdn.com/image/fetch/$s_!2XvR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 848w, https://substackcdn.com/image/fetch/$s_!2XvR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 1272w, https://substackcdn.com/image/fetch/$s_!2XvR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2XvR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png" width="1456" height="497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:497,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:226603,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196397754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2XvR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 424w, https://substackcdn.com/image/fetch/$s_!2XvR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 848w, https://substackcdn.com/image/fetch/$s_!2XvR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 1272w, https://substackcdn.com/image/fetch/$s_!2XvR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f26ef25-2cc0-4d85-b832-4f8ae50ec619_3008x1026.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So, I decided to use it. I created a new snippet rule, tested it out for a single URL, and it worked. It had a similar route matching, but once a route is matched, you can write custom JavaScript to handle what you want to do with it. In my case, I wanted to add a redirection. </p><p>In place of adding everything manually, Claude came to my rescue again. I started by telling it to list all the URLs on my website at the moment and validated whether it covered everything or not. After that, I gave the link to pages that list all my posts on Substack and asked it to match the links, and also pasted the demo JS code from Cloudflare snippet and asked Claude to update it. Claude worked amazingly well, and it one-shotted everything perfectly. I just pasted everything on Cloudflare, and it all worked. My old post links are now properly getting redirected to Substack. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b6fo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b6fo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 424w, https://substackcdn.com/image/fetch/$s_!b6fo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 848w, https://substackcdn.com/image/fetch/$s_!b6fo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!b6fo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b6fo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png" width="1456" height="1038" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1038,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:289271,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196397754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b6fo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 424w, https://substackcdn.com/image/fetch/$s_!b6fo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 848w, https://substackcdn.com/image/fetch/$s_!b6fo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!b6fo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f1b5bd-b051-4844-9e35-34eeda44c321_2176x1552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Demo Snippet JS code</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x67I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x67I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 424w, https://substackcdn.com/image/fetch/$s_!x67I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 848w, https://substackcdn.com/image/fetch/$s_!x67I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 1272w, https://substackcdn.com/image/fetch/$s_!x67I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x67I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png" width="1250" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95029,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196397754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x67I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 424w, https://substackcdn.com/image/fetch/$s_!x67I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 848w, https://substackcdn.com/image/fetch/$s_!x67I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 1272w, https://substackcdn.com/image/fetch/$s_!x67I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F035c2951-6d1c-4df5-894e-652274c18c97_1250x812.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Default matching criteria</figcaption></figure></div><p>With the setup now complete, the only thing left was to properly sunset my old website and read more, write more, and share more here on Substack. </p><p> </p>]]></content:encoded></item><item><title><![CDATA[Bringing Grafana dashboards to e-ink display]]></title><description><![CDATA[My experience on how I built a Grafana plugin for TRMNL and won their devops hackathon]]></description><link>https://defcon007.substack.com/p/bringing-grafana-dashboards-to-e</link><guid isPermaLink="false">https://defcon007.substack.com/p/bringing-grafana-dashboards-to-e</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sat, 25 Oct 2025 21:44:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/43df62bd-19b2-4981-b661-8923fa46b4b2_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 style="text-align: center;"><strong>Bringing Grafana dashboards to e-ink display</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YztD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YztD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 424w, https://substackcdn.com/image/fetch/$s_!YztD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 848w, https://substackcdn.com/image/fetch/$s_!YztD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 1272w, https://substackcdn.com/image/fetch/$s_!YztD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YztD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png" width="1006" height="664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:664,&quot;width&quot;:1006,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!YztD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 424w, https://substackcdn.com/image/fetch/$s_!YztD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 848w, https://substackcdn.com/image/fetch/$s_!YztD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 1272w, https://substackcdn.com/image/fetch/$s_!YztD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F920b4735-0af2-428f-97b2-8dabb24dbae3_1006x664.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I first heard about <a href="https://usetrmnl.com/">TRMNL</a> from a tweet by one of my old co&#8209;workers on Jan 31, 2025, and absolutely loved it. Although my first thought was that it was a little expensive, I liked the product a lot, and my wife convinced me to buy it for myself. I finally received the device around June, but was slapped with heavy customs fees&#8212;part of which the TRMNL team gladly reimbursed.</p><p>Let me start with what <a href="https://usetrmnl.com/">TRMNL</a> is. It is a battery&#8209;powered, developer&#8209;friendly, e&#8209;ink display, simply put, a Kindle&#8209;like device on which you can choose what to display from a library of plugins that connect to third&#8209;party services and show up&#8209;to&#8209;date results with a custom refresh interval. My favourite part was how easy it was to build your own plugins as well.</p><p>The first time I saw the device, I instantly thought there should be a Grafana plugin for TRMNL. My plan was to start developing it as soon as I received my device. But after it was delivered, I procrastinated. To start using the device, I installed the <a href="https://usetrmnl.com/recipes/49610">Weather Churn </a>plugin with a 30&#8209;minute refresh interval, which was helpful since I live in London and the weather here is quite unpredictable. Being able to see it at a glance in the living room helped whenever we were heading out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m2A0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m2A0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png 424w, https://substackcdn.com/image/fetch/$s_!m2A0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png 848w, https://substackcdn.com/image/fetch/$s_!m2A0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!m2A0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m2A0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png" width="1456" height="998" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:998,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!m2A0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png 424w, https://substackcdn.com/image/fetch/$s_!m2A0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png 848w, https://substackcdn.com/image/fetch/$s_!m2A0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!m2A0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25749be5-b0f6-4f2e-a4dc-02e6c38d95b5_1762x1208.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><figcaption class="image-caption">Weather churn plugin on TRMNL</figcaption></figure></div><p>I work at Grafana Labs, and we have quarterly hackathons that last a week. We get to step away from our daily work and focus on a hackathon project for the whole week. This was the perfect time to break my procrastination and start working on the plugin I&#8217;d had in mind for quite some time.</p><p>For the Grafana hackathon, my idea was to present it as a stepping stone toward Grafana&#8209;branded physical devices, where, after getting a device, you can link it to your Grafana Cloud account and easily select a dashboard or panel to display on the device. By the end of the hackathon, I had built a TRMNL plugin that lets you select a Grafana panel to display on the device.</p><p>Below is a short clip of how different Grafana panels looked on the TRMNL device using the plugin I created.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Uew!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Uew!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 424w, https://substackcdn.com/image/fetch/$s_!7Uew!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 848w, https://substackcdn.com/image/fetch/$s_!7Uew!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 1272w, https://substackcdn.com/image/fetch/$s_!7Uew!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Uew!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif" width="522" height="294" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02433573-7b31-4368-8c52-296e9faae149_522x294.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:294,&quot;width&quot;:522,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!7Uew!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 424w, https://substackcdn.com/image/fetch/$s_!7Uew!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 848w, https://substackcdn.com/image/fetch/$s_!7Uew!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 1272w, https://substackcdn.com/image/fetch/$s_!7Uew!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02433573-7b31-4368-8c52-296e9faae149_522x294.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Although I didn&#8217;t win the internal hackathon, I was very happy with the plugin&#8217;s results. It was still a private plugin, meaning only I could use it. The next step was to publish it as a recipe on TRMNL so that others could also use it, but my procrastination kicked in again, and I delayed publishing it as a recipe.</p><p>This time, it was a blessing in disguise. A few days ago, I got an email from the TRMNL team announcing a hackathon focused on building plugins for DevOps. I instantly remembered my Grafana plugin. I quickly went through the rules to check if I could submit a previously created plugin, and the rules said that if a plugin hadn&#8217;t been published as a recipe, it could be submitted. So my procrastination made me eligible to submit my Grafana plugin for this hackathon, the theme of which exactly matched my project. I made a few tweaks and submitted it. I also updated the video I created for the internal hackathon and attached it.</p><div id="youtube2-HsqdZziQGs0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;HsqdZziQGs0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/HsqdZziQGs0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Lo and behold, my submission was one of the winners, and I couldn&#8217;t have been happier. I didn&#8217;t see TRMNL&#8217;s official announcement first; my friend and college senior, Kshitij, congratulated me, and after reading his email I checked the blog and saw my plugin among the winners. In fact, the main reason I wrote this post was that he asked me to share my experience.</p><p>If you&#8217;d like to try the plugin, you can check it out here: <a href="https://usetrmnl.com/recipes/105532">https://usetrmnl.com/recipes/105532</a></p>]]></content:encoded></item><item><title><![CDATA[Performance testing with OpenAPI Spec and k6]]></title><link>https://defcon007.substack.com/p/performance-testing-with-openapi</link><guid isPermaLink="false">https://defcon007.substack.com/p/performance-testing-with-openapi</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sat, 01 Feb 2025 21:29:00 GMT</pubDate><content:encoded><![CDATA[<h2>Abstract</h2><p>Performance testing is often overlooked in API development, not because it isn&#8217;t important, but because keeping tests up to date as APIs evolve is a challenge. Many teams maintain OpenAPI specs for documentation, but writing and maintaining k6 performance tests manually can be tedious and error-prone.</p><p>To bridge this gap, we built <strong>openapi-to-k6</strong>, a CLI tool that <strong>converts OpenAPI specs into TypeScript clients</strong>, making it easy to generate and execute k6 performance tests. With this approach, developers can:</p><ul><li><p><strong>Leverage TypeScript for Strong Typing &amp; Autocompletion</strong> &#8211; making test scripts more maintainable and easier to work with.</p></li><li><p><strong>Automatically Generate API Clients</strong> &#8211; eliminating the need to manually write test logic for every API change.</p></li><li><p><strong>Ensure Performance Tests Stay Up to Date</strong> &#8211; as APIs evolve, test scripts can be regenerated with minimal effort.</p></li></ul><p>In this session, we&#8217;ll walk through how <strong>openapi-to-k6</strong> works, share the <strong>real-world challenges</strong> we faced while building it, and demonstrate how JavaScript/TypeScript developers can integrate it into their workflows. Whether you&#8217;re a backend engineer, tester, or DevOps professional, this talk will show you how to <strong>harness OpenAPI and TypeScript for automated, scalable performance testing</strong>.</p><h2><strong>Grafana &amp; Friends Meetup, London, UK</strong></h2><ul><li><p><a href="https://defcon007.com/talk-slides/perforamance_testing_with_k6_grafana_and_friends.pdf">Slides</a></p></li><li><p><a href="https://www.meetup.com/grafana-and-friends-london/events/305667358/?slug=grafana-and-friends-london&amp;eventId=305667358&amp;isFirstPublish=true">Archived Schedule</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Supercharging Performance Testing: Bridging the Gap Between Backend and Frontend with k6]]></title><link>https://defcon007.substack.com/p/supercharging-performance-testing</link><guid isPermaLink="false">https://defcon007.substack.com/p/supercharging-performance-testing</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Thu, 01 Feb 2024 17:18:00 GMT</pubDate><content:encoded><![CDATA[<h2>Abstract</h2><p>A very key aspect of software engineering is ensuring your application performs optimally under heavy load. In this talk, the speaker will introduce k6, an open-source tool that integrates protocol-based load testing and browser testing. The talk will start off by introducing the audience to the basics of protocol-based load testing and how it can empower developers to assess the resilience and scalability of backend systems. Next, we&#8217;ll dive deep into the nitty gritty of k6, learning how it can enable us to simulate real-world user scenarios and uncover bottlenecks. After that, we will see how k6 provides valuable insights about an application under heavy load and how it can bring backend and frontend performance evaluations together. By the end of this session, the audience will be armed with the knowledge and tools needed to supercharge your performance testing strategy, ensuring that applications not only withstand the most demanding conditions but also deliver an exceptional user experience.</p><h2><strong>DeveloperWeek 2024, Oakland, California</strong></h2><ul><li><p><a href="https://defcon007.com/talk-slides/supercharging_performance_testing_developerweek.pdf">Slides</a></p></li><li><p>Talk recoding - TBD</p></li><li><p><a href="https://developerweek2024.sched.com/event/1VpCK/pro-workshop-supercharging-performance-testing-bridging-the-gap-between-backend-and-frontend-with-k6?iframe=no">Archived Schedule</a></p></li></ul><h2><strong>ApiDays Helsinki, 2024</strong></h2><p>TBD</p>]]></content:encoded></item><item><title><![CDATA[Postman to OpenAPI online]]></title><description><![CDATA[An online utility to convert Postman collections to OpenAPI schema in browser without sending any data to anywhere]]></description><link>https://defcon007.substack.com/p/postman-to-openapi-online</link><guid isPermaLink="false">https://defcon007.substack.com/p/postman-to-openapi-online</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sun, 03 Jul 2022 21:13:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/500cf920-1001-417e-bdbe-d42cf43d4dc7_179x182.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CIn5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CIn5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 424w, https://substackcdn.com/image/fetch/$s_!CIn5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 848w, https://substackcdn.com/image/fetch/$s_!CIn5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 1272w, https://substackcdn.com/image/fetch/$s_!CIn5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CIn5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png" width="179" height="182" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:182,&quot;width&quot;:179,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23445,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196353401?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CIn5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 424w, https://substackcdn.com/image/fetch/$s_!CIn5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 848w, https://substackcdn.com/image/fetch/$s_!CIn5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 1272w, https://substackcdn.com/image/fetch/$s_!CIn5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5077a2cc-00fe-40b6-98ff-4023a60d1b90_179x182.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Hi folks! In this blog post, I&#8217;m going to introduce you to an easy way to convert Postman collections to OpenAPI schema in just one click. To see it in action, go to <a href="http://p2o.defcon007.com/">p2o.defcon007.com</a></p><h2><strong>What is OpenAPI schema?</strong></h2><p>According to <a href="https://en.wikipedia.org/wiki/OpenAPI_Specification">Wikipedia</a>, OpenAPI Specification, previously known as the Swagger Specification, is a specification for machine-readable interface files for describing, producing, consuming, and visualizing RESTful web services.</p><p>It provides a standard way to share your API designs with others, and even auto-generate documentations using various tools.</p><p>If you try to write an OpenAPI schema file for your service, one of the major challenges you will face is remembering the structure and ways in which different entities are described in the specification. Tools like <strong>Postman</strong>, makes it very easy to test your endpoints by writing requests and grouping them together inside collections. The ease of use and intuitiveness of the tool makes it very easy to define all the endpoints inside Postman collections, but creating an OpenAPI schema manually for all the endpoints is very cumbersome.</p><p>I always find it very easy to create a collection for my service and use it during the development itself for testing purpose. There are solutions already present to convert the collection to OpenAPI schema, but most of them are CLI tools. I wanted a quick way to convert the collection to OpenAPI schema. I was also reading about Next.js at the time and wanted to try it out.</p><p>Hence, <strong>Postman to OpenAPI online was born.</strong> It is a small online utility powered by Next.js to convert Postman collections to OpenAPI schema file. For data privacy reasons, all the conversion happens inside your browser keeping all of your data safe.</p><p>You can either load the collection from an exported JSON or directly use the collection URL.</p><p>Note: If your collection is not public, create an access token in Postman and add <code>?apikey=&lt;POSTMAN_API_KEY&gt;</code> at end of the URL to access it.</p><p>Now, to generate the OpenAPI schema</p><h1><strong>Demo</strong></h1><p><strong>Convert collection JSON file to OpenAPI schema</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3_s8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3_s8!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 424w, https://substackcdn.com/image/fetch/$s_!3_s8!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 848w, https://substackcdn.com/image/fetch/$s_!3_s8!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 1272w, https://substackcdn.com/image/fetch/$s_!3_s8!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3_s8!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!3_s8!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 424w, https://substackcdn.com/image/fetch/$s_!3_s8!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 848w, https://substackcdn.com/image/fetch/$s_!3_s8!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 1272w, https://substackcdn.com/image/fetch/$s_!3_s8!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9411e122-9dd9-452e-9905-14f0ff84d95f_800x450.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Convert collection via URL to OpenAPI schema</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iJhp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iJhp!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 424w, https://substackcdn.com/image/fetch/$s_!iJhp!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 848w, https://substackcdn.com/image/fetch/$s_!iJhp!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 1272w, https://substackcdn.com/image/fetch/$s_!iJhp!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iJhp!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!iJhp!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 424w, https://substackcdn.com/image/fetch/$s_!iJhp!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 848w, https://substackcdn.com/image/fetch/$s_!iJhp!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 1272w, https://substackcdn.com/image/fetch/$s_!iJhp!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0257112c-5b3a-4f62-9a26-bca1da2b3dc5_800x450.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Thank you for reading! Head over to <a href="https://github.com/DefCon-007/postman-to-openapi-online">https://github.com/DefCon-007/postman-to-openapi-online</a> to contribute to the source code.</p><h1><strong>Acknowledgements</strong></h1><ul><li><p>Thanks to <a href="https://github.com/joolfe">@joolfe</a> for the awesome <a href="https://github.com/joolfe/postman-to-openapi">postman-to-openapi</a> NPM package which made conversion easy.</p></li><li><p>Website design taken from <a href="https://codebushi.com/nextjs-website-starters/">codebushi</a> and theme name is Next.js Dimension</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Using Async API schema to define event driven architecture with AWS SNS(Simple Notification Service)]]></title><link>https://defcon007.substack.com/p/using-async-api-schema-to-define</link><guid isPermaLink="false">https://defcon007.substack.com/p/using-async-api-schema-to-define</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Mon, 01 Nov 2021 21:22:00 GMT</pubDate><content:encoded><![CDATA[<h2>Abstract</h2><p>In this talk, Ayush will talk about a real-world scenario in which he used the Async API schema to define event driven architecture that used AWS SNS as the principal component of the pipeline for communication between two different teams at Postman. He will cover the end-to-end development workflow. He will be defining the contract between the producers and consumers using the Async API schema that allows both the parties to work on their side of changes independently and afterwards, incorporating SNS in the pipeline to allow multiple consumers to subscribe to the events from a single producer.</p><h2><strong>AsyncAPI Online Conference - 2021</strong></h2><ul><li><p><a href="https://defcon007.com/talk-slides/using_async_api_schema_to_define_event_driven_architecture_with_aws_sns.pdf">Slides</a></p></li><li><p><a href="https://www.youtube.com/watch?v=3EeMHhbwyOQ&amp;t=7790s">Talk recording</a></p></li><li><p><a href="https://asyncapi2021.sched.com/event/pcxd/using-async-api-schema-to-define-event-driven-architecture-with-aws-snssimple-notification-service-ayush-goyal-postman">Archived Schedule</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Sleep — By Kaha Mind]]></title><description><![CDATA[Sleep &#8212; By Kaha Mind]]></description><link>https://defcon007.substack.com/p/sleep-by-kaha-mind-185ff7f48d45</link><guid isPermaLink="false">https://defcon007.substack.com/p/sleep-by-kaha-mind-185ff7f48d45</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Wed, 20 Oct 2021 08:04:56 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><h3>Sleep&#8202;&#8212;&#8202;By Kaha&nbsp;Mind</h3><blockquote><p>Disclaimer: Following views are my own and I am not affiliated with <a href="https://www.kahamind.com/">Kaha Mind</a></p></blockquote><p>Recently, Kaha mind organized a very awesome session on sleep hygiene. It was very informative, and I jotted down the key learnings I had from the session to easily comback and look again.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 424w, https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 848w, https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 1272w, https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.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://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 424w, https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 848w, https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 1272w, https://cdn-images-1.medium.com/max/800/1*mzoDQ4z02qB_5eAPVsLyWA.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>The session started with quick little trivia busting common myths people have on sleep. Following are some of them:</p><ol><li><p>A 20 minute power nap during the day will energize you.</p></li><li><p>If you have trouble falling asleep at night, it's helpful to get out of bed and do some &#8220;boring&#8221; task then just lying in the bed.</p></li><li><p>For a better sleep, it's better to have a cool dark room.</p></li></ol><h3>Culprits for Improper&nbsp;Sleep</h3><ul><li><p>Not taking enough breaks during the day</p></li><li><p>Having stress &amp; anxiety</p></li><li><p>Using screens like laptop or phone late into the night</p></li></ul><h3>Sleep Hormones and some&nbsp;biology</h3><ol><li><p><strong>Melatonin: </strong>Its production and release is increased in the dark and it is the main sleep hormone. It is what helps you sleep.</p></li><li><p><strong>Melanopsin: </strong>It is a photopigment found in cells which increases awareness and keeps us awake. It is triggered with blue light.</p></li></ol><p>So, Melatonin helps you sleep and Melanopsin keeps you awake. Also, in these two, Melanopsin over powers Melatonin. i.e. if you do any activity which increases Melanopsin, you are unlikely to get good sleep.</p><h3>Binaural Beats</h3><p>A binaural beat is an illusion created by the brain when you listen to two tones with slightly different frequencies at the same time.<br>Most of the sleep music/lucid dreaming music audios are actually binaural beats.</p>]]></content:encoded></item><item><title><![CDATA[Timeline is malleable]]></title><description><![CDATA[From family to nation, every human group is a society of island universes. &#8212; Aldous Huxley]]></description><link>https://defcon007.substack.com/p/timeline-is-malleable-e93da49ecdb9</link><guid isPermaLink="false">https://defcon007.substack.com/p/timeline-is-malleable-e93da49ecdb9</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Tue, 13 Apr 2021 14:19:37 GMT</pubDate><content:encoded><![CDATA[<div><hr></div><blockquote><p>From family to nation, every human group is a society of island universes.&#8202;&#8212;&#8202;Aldous&nbsp;Huxley</p></blockquote><p>A few days back I was back in Kharagpur for my convocation. There were a lot of places I went to and a lot of old friends I met. After coming back to Bangalore, I was sitting with one Kharagpur friend and he was telling me his convocation experience. We both had a lot of fun and enjoyed to the fullest but his experience was completely different than mine!</p><p>We were discussing a particular night when it rained so hard during convocation that half of the hostels ground floor rooms were flooded. He and I were in different parts of the campus and were doing completely different things. This struck me, as I thought I could also have been doing what he was doing at that time, or vice-versa. But we chose to do what we did.</p><p>According to the wildly popular multiverse theory, there are infinite parallel universes and for every choice you make there exists a parallel universe in which you made the opposite choice. This is a very old theory and helped a number of superhero comic stories, but for now no one is even close to prove it in real life. According to me, it is just a way by which people try to be happy with their wrong choices and think that somewhere out there is a place where they made the right choice.</p><p>Everywhere there are a lot of little universes living their lives and we can only be a part of one of them at a time so it's on the choices we make which decides the universes we will be part of and that's what makes all the difference.</p><p>In life also, every moment which we are living is part of a single universe out of infinite universes happening at the same time.</p>]]></content:encoded></item><item><title><![CDATA[Whatever happens, happens for the good]]></title><description><![CDATA[Whatever happens, happens for the good]]></description><link>https://defcon007.substack.com/p/whatever-happens-happens-for-the-good-c1cfdf38903a</link><guid isPermaLink="false">https://defcon007.substack.com/p/whatever-happens-happens-for-the-good-c1cfdf38903a</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sun, 04 Apr 2021 17:32:00 GMT</pubDate><content:encoded><![CDATA[<div><hr></div><h3>Whatever happens, happens for the&nbsp;good</h3><p>At some point or the other in your life you must have heard this phrase that &#8220;Whatever happened, happened for a better good&#8221;&nbsp;, &#8220;Everything will be fine&#8221;&nbsp;, &#8220;One day you are gonna be thankful that this happened &#8221; etc. Well I am not saying they are wrong, all these phrases are 100% correct but the way they are interpreted is wrong.</p><p>Like if you don&#8217;t get a job or meet with an accident or are in some sort of financial crises, then there is nothing good in it. However, if you stand strong at that time, after sometime you will surely succeed. But your failure has nothing to do the current success, you are successful today only because of your will power.</p><p>There is another phrase, &#8220;Darker the night, brighter will be the morning&#8221;. Now most people think of it as, if you are facing a lot of troubles right now then sooner or later you are going to have a lot of happy moments. Well that depends. Again those yet to come good times have nothing to do with your current bad times. I think that being in the worst situations make your mind so depressed that a small or normal happy moment seems to be big enough.</p><p>Following is a nice real life analogy for this:</p><p>Think of eating something sweet. So, if you eat something sweet just after eating something else sweet, it doesn&#8217;t taste sweet enough but eating same sweet after have something something bitter makes it more sweet!</p>]]></content:encoded></item><item><title><![CDATA[Harry potter and the philosopher’s stone — An insight]]></title><description><![CDATA[Harry potter and the philosopher&#8217;s stone &#8212; An insight]]></description><link>https://defcon007.substack.com/p/harry-potter-and-the-philosophers-stone-an-insight-f3571b7dbec6</link><guid isPermaLink="false">https://defcon007.substack.com/p/harry-potter-and-the-philosophers-stone-an-insight-f3571b7dbec6</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sat, 03 Apr 2021 19:08:44 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><h3>Harry potter and the philosopher&#8217;s stone&#8202;&#8212;&#8202;An&nbsp;insight</h3><p>So I have watched the harry potter series a lot of times. I binge-watched the complete series recently in the summers just before reading the Harry Potter and the Cursed Child. But then some of friends told me that the story in the original novels is quite different and a LOT of details are missed in the movie. So, I took kindle unlimited subscription and started with the very first book Harry Potter and Philosopher&#8217;s Stone.</p><p>So the first thing I noticed different was the name. I remembered seeing the name Harry Potter and the Sorcerer&#8217;s Stone but well the book was Harry Potter and Philosopher&#8217;s stone. After a quick google search, I found that it also recommends the movie as Harry Potter and the Sorcerer&#8217;s Stone. Even on amazon prime video the movie is listed as Harry Potter and the Sorcerer&#8217;s Stone.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 424w, https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 848w, https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 1272w, https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.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://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 424w, https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 848w, https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 1272w, https://cdn-images-1.medium.com/max/800/1*wBqfccnRwQ6oto3X1QPfEQ.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><div><hr></div><p>So now I started reading the book and trust me it was VERY different from the movie. Now I will list all the changes I found out in the book one by one. I will also add snapshots of the book for you to read&nbsp;!</p><ol><li><p>In the first scene when Albus Dumbledore, Professor McGonagall and Hagrid are at Privet Drive to leave young Harry at doorsteps of the Dursley&#8217;s&#8202;&#8212;&#8202;The worst muggles imaginable, in the movie it was a simple scene Hagrid bringing Harry and they all leaving him there with a letter to the Dursley&#8217;s but in the book there was a dialogue between McGonagall and Dumbledore which caught my attention. You can read it from the below snapshot of the book.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 424w, https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 848w, https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 1272w, https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.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;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 424w, https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 848w, https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 1272w, https://cdn-images-1.medium.com/max/800/1*aMhcfXt2gdQvHlU4AjiZWg.png 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">Page 13 of 309&nbsp;. Location 194 of&nbsp;3912</figcaption></figure></div><p>2. In the movie when we have the first glimpse of our most loved and fierce wizard it was quite simple scene, Harry&#8217;s Aunt Petunia waking him up and then big fat Dudley going up and down over the stairs which was spilling dust over Potter and then he coming out of the cupboard and cooking breakfast for all and being scolded for non sense things. But in the book this was quite different. The scene starts with Aunt Petunia waking up Harry and it also tells about Harry dreaming of a flying motorbike. And then he was instructed to cook bacon by his Aunt with a warning not burn them but in the movie what to cook for breakfast was not specified. This whole conversation was going on when Harry was still in the cupboard while in movie it was happening when he was inside the kitchen. Also afterwards in the book he looks for his sock and finds spider on them which he pulls off and it was also mentioned that he was used to spiders in cupboard but nothing of this sort was mentioned in the movie.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 424w, https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 848w, https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 1272w, https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.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;: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://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 424w, https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 848w, https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 1272w, https://cdn-images-1.medium.com/max/800/1*R3barnWDszdtF6xzdcZGqg.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Page 18 of 309&nbsp;. Location 248 of&nbsp;3912</figcaption></figure></div><p>3. After Hagrid delivered the Hogwarts Letter to Harry in the secluded light house they can be seen directly walking in the street next to the Leaking Cauldron and then on their way to Diagon Alley but according to the book when Hagrid arrives at the night after having some &#8220;fun&#8221; with the Dursleys he sleeps on the sofa and next morning harry wakes up seeing an owl dropping newspaper for Hagrid and then starting to tap its beak on Hagrid&#8217;s coat until Hagrid told Harry to pay him five Knuts (the small bronze ones) and then they pack their things and went out and Hagrid told Harry that he came flying but since he now got Harry he cannot use the magic so they uses the boat to cross the sea and then they walked to the station and boarded a train to London. Hagrid sat on the train taking up two seats and knitting something which looked like Canary-yellow circus tent. The Passers-by were staring at Hagrid a lot. And then Hagrid asks to take out the things he needed. Now in the movie Harry tells about only One standard size 2 Pewter Cauldron, and either an Owl, Cat or a Toad but in the book the whole list of essentials for a first year wizard was present which can be seen in the screenshot below.</p><p>You will be amazed to find that one of the text book was Fantastic Beasts and Where to Find Them by Newt Scamander.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 424w, https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 848w, https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 1272w, https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.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;: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://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 424w, https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 848w, https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 1272w, https://cdn-images-1.medium.com/max/800/1*JDhu3taZcCMDCE7v5vsHAg.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Page 61 of 309. Location 760 of&nbsp;3912</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 424w, https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 848w, https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 1272w, https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.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;: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://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 424w, https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 848w, https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 1272w, https://cdn-images-1.medium.com/max/800/1*jcMT6ipE3IeZau7EXUUsMg.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Page 64 of 309&nbsp;. Location 803 of&nbsp;3912</figcaption></figure></div><p>4. In the scene when Harry has boarded the Hogwarts Express from the platform 9&#190; of the King&#8217;s Cross Station and is sitting with Ron having bought a lot of the things from the smiling dimpled woman and eating Chocolate Frogs which contains card of a famous witch or wizard. Harry finds the card of Dumbledore. In the movie the scene is now completed but in the book there is more to the card. Harry turns over the card and starts reading&nbsp;:</p><blockquote><p>Albus Dumbledore, currently Headmaster of Hogwarts. Considered by many the greatest wizard of modern time, Professor Dumbledore is particularly famous for his defeat of the dark wizard Grindelwald in 1945, for the discovery of the twelve uses of dragon&#8217;s blood and his work on alchemy with his partner, Nicolas Flamel. Professor Dumbledore enjoys chamber music and tenpin bowling.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 424w, https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 848w, https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 1272w, https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.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;: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://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 424w, https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 848w, https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 1272w, https://cdn-images-1.medium.com/max/800/1*CRoLTLgmGuNffiwmYOtn4w.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Page 100 of 309&nbsp;. Location 1242 of&nbsp;3912</figcaption></figure></div><p>Now many of you guys who have followed the Harry Potter realm properly must know who Grindelwald is. I was astonished to see his reference this early in the series.</p><p>5. In the movie when Harry and Ron were still on Hogwarts Express and Ron was going to change the Scrabber&#8217;s colour and Hermoine walks in looking for Neville&#8217;s toad. She just slams Ron for his trick not working and then fixes Harry&#8217;s spectacles. She then advices them to change as they all will be reaching soon and then just leaves. But in the book after Hermoine got to know about Harry she tells that she had read everything about him and also that he is mentioned in <strong>Modern Magical History </strong>and <strong>The Rise and the Fall of the Dark Arts</strong> and <strong>The Great Wizarding Events of the Twentieth Century</strong>. She also talks a bit about they both knowing which house they will be in and then talking about how she would like to be in Gryffindor but Ravenclaw will also work. And then she leaves advising them to change. After this Harry and Ron talks and Ron tells Harry how everyone from his family was in Gryffindor and Harry enquired about the two of his brothers who completed their school. Now Ron tells Harry that&nbsp;:</p><p>Chalie&#8217;s in Romania studying dragons and Bills in Africa doing something to do with Gringotts.</p><p>We all know that the Charlie&#8217;s reference will have a comeback in the Goblet of Fire &#128540;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 424w, https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 848w, https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 1272w, https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.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;: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://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 424w, https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 848w, https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 1272w, https://cdn-images-1.medium.com/max/800/1*rYIGinncLJUyj8QBMUX-Ag.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Page 103 of 309&nbsp;. Location 1282 of&nbsp;3912</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 424w, https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 848w, https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 1272w, https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.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;: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://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 424w, https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 848w, https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 1272w, https://cdn-images-1.medium.com/max/800/1*X2BcZjwdkaTPZsYObJWmaQ.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Page 107 of 309&nbsp;. Location 1328 of&nbsp;3912</figcaption></figure></div><p>6. There were some differences in the sorting ceremony too. The grand hall was more elaborated in the book. Also in the movie Dumbledore gives the start-of-the-term notices before the sorting ceremony begins but in the book it was done after the ceremony. Also, in the book before the sorting began the sorting hat sing a song, which is as follows&nbsp;:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 424w, https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 848w, https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 1272w, https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.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;: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://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 424w, https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 848w, https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 1272w, https://cdn-images-1.medium.com/max/800/1*mhItoZCnB8wHojfXgZKN1A.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Page 117 of 309&nbsp;. Location 1449 of&nbsp;3912</figcaption></figure></div>]]></content:encoded></item><item><title><![CDATA[Py-WhatsApp: Unofficial python module for chat api]]></title><description><![CDATA[Python module to send WhatsApp messages without the official API]]></description><link>https://defcon007.substack.com/p/py-whatsapp-unofficial-python-module</link><guid isPermaLink="false">https://defcon007.substack.com/p/py-whatsapp-unofficial-python-module</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sun, 14 Mar 2021 22:10:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pTfU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pTfU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pTfU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 424w, https://substackcdn.com/image/fetch/$s_!pTfU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 848w, https://substackcdn.com/image/fetch/$s_!pTfU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 1272w, https://substackcdn.com/image/fetch/$s_!pTfU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pTfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png" width="500" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:318,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26177,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196353173?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pTfU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 424w, https://substackcdn.com/image/fetch/$s_!pTfU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 848w, https://substackcdn.com/image/fetch/$s_!pTfU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 1272w, https://substackcdn.com/image/fetch/$s_!pTfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f4aa1-b86e-4fc4-bb44-5b895556cb08_500x318.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Py-WhatsApp is the un-official python module for <a href="https://chat-api.com/">chat-api.com</a> and provides a pure pythonic way to communicate with WhatsApp programmatically without the official business API.</p><p>Github - <a href="https://github.com/DefCon-007/py-whatsapp">https://github.com/DefCon-007/py-whatsapp</a></p><p>PyPi - <a href="https://pypi.org/project/whatsapp-api/">https://pypi.org/project/whatsapp-api/</a></p><h2><strong>What is chat-api.com</strong></h2><p>It is a multifunctional rest api for WhatsApp accounts working on top of WhatsApp web. They offer a 3-day free trial to allow you to use the service before buying and this python package allows you to interface with most of its services directly.</p><h2><strong>Pitfalls of official WhatsApp API</strong></h2><ul><li><p>You first need to get approved from WhatsApp to start using the business API.</p></li><li><p>You are tied in with a third party provider to avail the services and has to pay their set prices which are generally low but depends on per incoming/outgoing message.</p></li><li><p>When someone contacts your number, you have to reply with in 24 hours. Post that, you can only send a template message to the contact.</p></li><li><p>You cannot send any message to a person who has not initiated a conversation with you, you can only send them a template message.<strong>What is template message?</strong> This is a message which has to be first approved by WhatsApp and then you can use it to contact potential customers or reply to conversations which are older than 24 hours.</p></li></ul><p>For more information head over to <a href="https://www.whatsapp.com/business/api/">https://www.whatsapp.com/business/api/</a>.</p><h2><strong>How to use</strong></h2><ul><li><p>Go to <a href="https://chat-api.com/">chat-api.com</a> and create a new account.</p></li><li><p>After successful account creation you will have a single instance active, copy the instanceId and token and keep them safe.</p></li><li><p>Install the module using pip install whatsapp-api.</p></li><li><p>Now use the following code snippet to send the message. <a href="https://github.com/DefCon-007/py-whatsapp">Click here</a> to read more in-depth details on using the library.</p><ul><li></li></ul></li></ul><pre><code><code>from whatsapp import WhatsApp

token = "xxxxxxx"
instance_id = "instancexxx"

object = WhatsApp(token, instance_id)

phone_number = "911234512345"
message = "This is a sample text message. *This will be bold*"

response = object.send_message(phone_number, message)</code></code></pre><ul><li><p>Keep in mind the phone number has to be in the international format, here the sample number is from India(country code +91).</p></li></ul><h2><strong>Disclaimer</strong></h2><p>I am in no way associated to WhatsApp or Chat-API. This post and the corresponding module is only for educational purpose.</p>]]></content:encoded></item><item><title><![CDATA[Using custom subdomain with GitHub repositories]]></title><description><![CDATA[A guide on how to use custom subdomain for your projects hosted on Github pages in different repositories]]></description><link>https://defcon007.substack.com/p/using-custom-subdomain-with-github-repositories-6fa15dbc39b4</link><guid isPermaLink="false">https://defcon007.substack.com/p/using-custom-subdomain-with-github-repositories-6fa15dbc39b4</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Tue, 24 Mar 2020 10:34:00 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/800/1*C6KqIOLCzoDpottbBxmEZA.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6l5X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6l5X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 424w, https://substackcdn.com/image/fetch/$s_!6l5X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 848w, https://substackcdn.com/image/fetch/$s_!6l5X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 1272w, https://substackcdn.com/image/fetch/$s_!6l5X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6l5X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png" width="800" height="665" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:665,&quot;width&quot;:800,&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_!6l5X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 424w, https://substackcdn.com/image/fetch/$s_!6l5X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 848w, https://substackcdn.com/image/fetch/$s_!6l5X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 1272w, https://substackcdn.com/image/fetch/$s_!6l5X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd65582b8-189a-43d6-80b0-cf45a3415f31_800x665.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>GitHub actually allows you to host websites for your projects directly from the repository itself. It will have URL something like <code>https://&lt;username&gt;.github.io</code>&nbsp;, you can add your custom domain to it too. If you haven&#8217;t done it, GitHub has pretty good documentation about it. You can read it <a href="https://help.github.com/en/github/working-with-github-pages/about-custom-domains-and-github-pages">here</a>.</p><p>Now, let's suppose you have already set up a custom domain and your default site is accessible through <a href="https://example.com."><code>https://example.com</code></a>&nbsp;. Now, if you create a new repository named <code>project</code>&nbsp;, and enable GitHub pages, it will be accessible through <code>https://example.com/project</code> but sometimes it makes more sense to have a custom sub-domain, like <code>https://project.example.com</code>&nbsp;. To do this, there are some additional configurations required. Just follow the steps below.</p><div><hr></div><p>To make the steps more clear, I will use my own, recent project example for which I set up the custom subdomain. My GitHub username is <code>DefCon-007</code> and my personal website which was available through GitHub pages at <a href="https://DefCon-007.github.io"><code>https://DefCon-007.github.io</code></a> is served from my custom domain with <a href="https://defcon007.com"><code>https://defcon007.com</code></a> and <code>https://www.defcon007.com</code>&nbsp;. I now had a new repository named <code>utilobot-website</code> which contained some HTML and was served at <code>https://defcon007.com/utilobot-website</code> and I wanted it to be served at <code>https://utilobot.defcon007.com</code></p><h3>Step 1: Configure DNS&nbsp;settings</h3><p>Go to your domain provider&#8217;s website and add a new CNAME record with a name as your subdomain and value as your GitHub root URL with a trailing dot(No it is not a typo). In my case the name was <code>utilobot</code> and the value was <code>defcon-007.github.io.</code></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2sEg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2sEg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 424w, https://substackcdn.com/image/fetch/$s_!2sEg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 848w, https://substackcdn.com/image/fetch/$s_!2sEg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 1272w, https://substackcdn.com/image/fetch/$s_!2sEg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2sEg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png" width="800" height="34" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:34,&quot;width&quot;:800,&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_!2sEg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 424w, https://substackcdn.com/image/fetch/$s_!2sEg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 848w, https://substackcdn.com/image/fetch/$s_!2sEg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 1272w, https://substackcdn.com/image/fetch/$s_!2sEg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ca104b-0c3c-458b-80ea-94e7c1f3e22b_800x34.png 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">Cloudflare DNS entry screenshot</figcaption></figure></div><h3>Step 2: Add CNAME&nbsp;file</h3><p>Now, add a new file named <code>CNAME</code> to your repository with just a single line in it, that is your complete URL.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gq2L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gq2L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 424w, https://substackcdn.com/image/fetch/$s_!Gq2L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 848w, https://substackcdn.com/image/fetch/$s_!Gq2L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 1272w, https://substackcdn.com/image/fetch/$s_!Gq2L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gq2L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png" width="800" height="73" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:73,&quot;width&quot;:800,&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_!Gq2L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 424w, https://substackcdn.com/image/fetch/$s_!Gq2L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 848w, https://substackcdn.com/image/fetch/$s_!Gq2L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 1272w, https://substackcdn.com/image/fetch/$s_!Gq2L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d995b3e-1c7f-4a17-a7ff-c7d414d55d1e_800x73.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">UtiloBot CNAME&nbsp;file</figcaption></figure></div><p>You can also go to the repository settings and enter your custom domain in the GitHub Pages section, it will automatically add the CNAME file.</p><p>That&#8217;s it, you have a custom domain for your GitHub project now. Try opening it with <code>http</code> first, and it is working fine, you can select <code>Enforce HTTPS option</code> in the repository settings page.</p><h3>Troubleshooting</h3><ol><li><p>If the custom sub-domain does not work, try after some time, so that the DNS records are propagated, also try removing the trailing period from the URL in step one, it works sometimes.</p></li><li><p>If you find that the Enforce HTTPS checkbox is disabled, and your custom domain is working fine with <code>http</code>&nbsp;, try deleting the CNAME file, push the changes, create the same CNAME file with the same content and push again. It should be enabled now.</p></li></ol><p>Thanks for reading.</p><blockquote><p>This article was originally published at <a href="http://www.defcon007.com/GitHub-Custom-Domain/">http://www.defcon007.com/GitHub-Custom-Domain/</a></p></blockquote>]]></content:encoded></item><item><title><![CDATA[Finances of real life]]></title><description><![CDATA[Finances of real life]]></description><link>https://defcon007.substack.com/p/finances-of-real-life-72480e74c604</link><guid isPermaLink="false">https://defcon007.substack.com/p/finances-of-real-life-72480e74c604</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Wed, 04 Dec 2019 04:18:07 GMT</pubDate><content:encoded><![CDATA[<div><hr></div><h3>Finances of real&nbsp;life</h3><p><em>Below are some of my 2 AM thoughts I had while trying to correlate some finance and life, and I just want to share them to see if there is someone else who can relate to this analogy of real life.</em></p><p>Most you have heard about the term &#8216;Depreciation&#8217; in terms of finance and know the meaning of it, for those of you who don&#8217;t, below is the definition form <a href="https://economictimes.indiatimes.com/definition/depreciation">Economic Times</a> website:</p><blockquote><p>The monetary value of an asset decreases over time due to use, wear and tear or obsolescence. This decrease is measured as depreciation.</p></blockquote><p>Now, those tangible assets depreciate overtime in the monetary world but have you thought how similar kind of thing happens with you in your real life too with the people you meet or things you like?</p><p>If you think about it, till now you have met countless people in life, and also possessed a number of things which at some point of time meant the world to you. If somehow you can quantify how much value they hold for you at any point in time and plot it against time itself you will notice that the curve will be declining! I am not saying that everything and everyone&#8217;s value will surely decrease, there are always outliers in every dataset, and some people and things will always hold a special value in your life but majority will follow this trend.</p><p>On the contrary, in finance, while making an investment the main thing you see is what is the return you will get on it, or in other words, the future value of your current money matters more. But in real life, I feel we tend to do the opposite! We are more focused on the current value and don&#8217;t give much thought about future returns, be that investment is in people or things. Like you never buy a new phone because you think it will make you happy in the future or be friends with someone just because you think you will like that person&#8217;s company in the future.</p><blockquote><p>In life, we invest in today but in finance, we invest in tomorrow.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[Histrock]]></title><description><![CDATA[A webapp for historical stock data analysis]]></description><link>https://defcon007.substack.com/p/histrock</link><guid isPermaLink="false">https://defcon007.substack.com/p/histrock</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sun, 30 Dec 2018 22:07:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/GxMvHH_aJm0" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j83i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j83i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 424w, https://substackcdn.com/image/fetch/$s_!j83i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 848w, https://substackcdn.com/image/fetch/$s_!j83i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 1272w, https://substackcdn.com/image/fetch/$s_!j83i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j83i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png" width="324" height="251" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:251,&quot;width&quot;:324,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4550,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196352959?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j83i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 424w, https://substackcdn.com/image/fetch/$s_!j83i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 848w, https://substackcdn.com/image/fetch/$s_!j83i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 1272w, https://substackcdn.com/image/fetch/$s_!j83i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0be9ea-9d34-4f0d-a4f5-1268ae8596c9_324x251.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Histrock was made as a submission for Societe Generale Brainwaves 2019 hackathon. It is a django application for historic stock data analysis along with real-time stock charts and economic calender.</p><p>The project made it to the all India finals from the <strong>10,200+ applicants</strong>.</p><p>Github - <a href="https://github.com/DefCon-007/histrock">https://github.com/DefCon-007/histrock</a>.</p><h2><strong>Features</strong></h2><ul><li><p>Check historical stock trend analysis on responsive charts which can be exported as png.</p></li><li><p>Realtime economic calender displaying latest events.</p></li><li><p>Automatically selects oldest or most records if start or end date not given.</p></li><li><p>Realtime stock chart.</p></li><li><p>Easy-to-implement REST API.</p></li></ul><div><hr></div><h2><strong>Demonstration</strong></h2><p>Below is a short video demonstration of the project.</p><div id="youtube2-GxMvHH_aJm0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;GxMvHH_aJm0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/GxMvHH_aJm0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Screenshots</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gDkh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gDkh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 424w, https://substackcdn.com/image/fetch/$s_!gDkh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 848w, https://substackcdn.com/image/fetch/$s_!gDkh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 1272w, https://substackcdn.com/image/fetch/$s_!gDkh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gDkh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png" width="728" height="410" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:410,&quot;width&quot;:728,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!gDkh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 424w, https://substackcdn.com/image/fetch/$s_!gDkh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 848w, https://substackcdn.com/image/fetch/$s_!gDkh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 1272w, https://substackcdn.com/image/fetch/$s_!gDkh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dde8e17-5116-42fa-80cb-94b7ce8f01c5_728x410.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qnoW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qnoW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!qnoW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!qnoW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!qnoW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qnoW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!qnoW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!qnoW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!qnoW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!qnoW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44eb61-45dd-4487-bcf1-7888dd798c18_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Trainman]]></title><description><![CDATA[A utility app to find alternate routes for IRCTC train bookings]]></description><link>https://defcon007.substack.com/p/trainman</link><guid isPermaLink="false">https://defcon007.substack.com/p/trainman</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sun, 30 Dec 2018 22:04:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ChzZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4SBV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4SBV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 424w, https://substackcdn.com/image/fetch/$s_!4SBV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 848w, https://substackcdn.com/image/fetch/$s_!4SBV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 1272w, https://substackcdn.com/image/fetch/$s_!4SBV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4SBV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png" width="128" height="128" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:128,&quot;width&quot;:128,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://defcon007.substack.com/i/196352653?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4SBV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 424w, https://substackcdn.com/image/fetch/$s_!4SBV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 848w, https://substackcdn.com/image/fetch/$s_!4SBV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 1272w, https://substackcdn.com/image/fetch/$s_!4SBV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2118de-938b-4a55-bd43-bcd58f67f4bd_128x128.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Trainman helps you to find alternate train bookings on the same route and train for Indian railways.</p><p>You can check it out at <a href="https://trainman.defcon007.com/">https://trainman.defcon007.com/</a></p><p>Github - <a href="https://github.com/DefCon-007/trainman">https://github.com/DefCon-007/trainman</a></p><h2><strong>How it works</strong></h2><p>Let&#8217;s say your train starts at source station A and ends at destination station F and follows the following path:</p><p>A -&gt; B -&gt; C -&gt; D -&gt; E -&gt; F</p><p>Now you want to travel from B to D, but there is no ticket available. Indian trains have ticket quotas on the basis of stations. So, even if tickets from B to D are fully booked, you may get a reservation from any of the following routes in the same train :</p><p>A-&gt;D A-&gt;E A-&gt;F . . .</p><p>TrainMan lists availability on these kind of alternate routes to make your journey hassel free.</p><div><hr></div><h2><strong>Screenshots</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ChzZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ChzZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 424w, https://substackcdn.com/image/fetch/$s_!ChzZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 848w, https://substackcdn.com/image/fetch/$s_!ChzZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 1272w, https://substackcdn.com/image/fetch/$s_!ChzZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ChzZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!ChzZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 424w, https://substackcdn.com/image/fetch/$s_!ChzZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 848w, https://substackcdn.com/image/fetch/$s_!ChzZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 1272w, https://substackcdn.com/image/fetch/$s_!ChzZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F949f53ea-6211-42eb-bd68-9da83101f478_3274x1726.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U48c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U48c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 424w, https://substackcdn.com/image/fetch/$s_!U48c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 848w, https://substackcdn.com/image/fetch/$s_!U48c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 1272w, https://substackcdn.com/image/fetch/$s_!U48c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U48c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!U48c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 424w, https://substackcdn.com/image/fetch/$s_!U48c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 848w, https://substackcdn.com/image/fetch/$s_!U48c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 1272w, https://substackcdn.com/image/fetch/$s_!U48c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb124e40-3d2d-48e5-a2b9-a7b53b62b3ca_3360x2100.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Using a GPS module(neo-7m) with Raspberry Pi 3]]></title><description><![CDATA[Using a GPS module(neo-7m) with Raspberry Pi 3]]></description><link>https://defcon007.substack.com/p/using-a-gps-module-neo-7m-with-raspberry-pi-3-45100bc0bb41</link><guid isPermaLink="false">https://defcon007.substack.com/p/using-a-gps-module-neo-7m-with-raspberry-pi-3-45100bc0bb41</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Wed, 10 Oct 2018 13:03:13 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><h3>Using a GPS module(neo-7m) with Raspberry Pi&nbsp;3</h3><p>Recently, I got an opportunity to work on an awesome project which included hardware and software development. The project was about <strong>Tractor Telematics</strong>. For starters, we needed to track the location of a tractor in real time. So, we the one and only way for it was to use Raspberry Pi and a GPS module. While trying to make things work, I faced a lot of problems in the configuration and there was no one-stop guide for it. Hence, I decided that I will write a blog about how I did it and what problems I faced along with their solutions.</p><p>NOTE: All of these steps were done on a Raspberry Pi 3 model B and ublox neo-7m GPS module but it should work on other models too.</p><div><hr></div><h3>Configuring UART</h3><pre><code>sudo raspi-config</code></pre><p>Select -&gt; <strong>Interfacing Options</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 424w, https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 848w, https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 1272w, https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq&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://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 424w, https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 848w, https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 1272w, https://cdn-images-1.medium.com/max/800/0*SF8TOpjnbU8QUZeq 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>After selecting Interfacing option, select <strong>Serial</strong> option to enable UART</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 424w, https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 848w, https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 1272w, https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e&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://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 424w, https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 848w, https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 1272w, https://cdn-images-1.medium.com/max/800/0*ifQx_YP0kb945z_e 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Then it will ask for login shell to be accessible over Serial, select <strong>No </strong>shown as follows.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 424w, https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 848w, https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 1272w, https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28&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://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 424w, https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 848w, https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 1272w, https://cdn-images-1.medium.com/max/800/0*psssF9nE1Rh_Ex28 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>At the end, it will ask for enabling Hardware Serial port, select <strong>Yes</strong>,</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 424w, https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 848w, https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 1272w, https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo&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://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 424w, https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 848w, https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 1272w, https://cdn-images-1.medium.com/max/800/0*RMHpr3hHn3qV2Suo 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Finally, our UART is enabled for Serial Communication on RX and TX pin of Raspberry Pi 3.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3-" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 424w, https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 848w, https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 1272w, https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3-" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3-&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://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 424w, https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 848w, https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 1272w, https://cdn-images-1.medium.com/max/800/0*NXc4KntnWq5Ok_3- 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Then, reboot the Raspberry Pi.</p><h3>Hardware connections</h3><p>In the GPS module I have there were total 4 connections to be made as follows:</p><ol><li><p>VCC&#8202;&#8212;&#8202;5v(pin 2)</p></li><li><p>GND&#8202;&#8212;&#8202;Pi&#8217;s ground(pin 6)</p></li><li><p>RX&#8202;&#8212;&#8202;Pi&#8217;s TX</p></li><li><p>TX&#8202;&#8212;&#8202;Pi&#8217;s RX</p></li></ol><p>Note that Pin 1 is the one facing the memory card slot and Pin2 is just adjacent to it. Refer to following images for better understanding.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.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://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*cTdDA8O3GxSY5__1AX2yHQ.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">GPIO Pins numbering</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.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://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*LbAdyOGN7dXpoFVSszvA6A.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.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://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*lMCWExyCudD7A1rrQMV_PQ.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>Installing GPS Applications</h3><pre><code>sudo apt-get install gpsd gpsd-clients</code></pre><p>Now, run the GPSD client</p><pre><code>sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock</code></pre><p>Here, ttyS0 is my serial port where GPS data is received, for other Raspberry Pi models this might be different. So, just replace &#8216;XXX&#8217; in ttyXXX with appropriate name.</p><p>Now, type the following code to check the connections.</p><pre><code>cat /dev/ttyS0</code></pre><p>You should see a continuous stream of data. It is raw GPS data in NMEA format. If you see something like <em>$GPTXT,01,01,01,NMEA unknown msg*58 </em>a lot then check your serial port configuration. If the &#8216;echo&#8217; option is enabled that will cause this problem. Just do <code>stty -F /dev/ttyS0 -echo</code> to disable echo then cat the gps serial device and those messages should stop.</p><p>Now, after this type <code>cgps</code> and you should see something like below.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 424w, https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 848w, https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 1272w, https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.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;: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://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 424w, https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 848w, https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 1272w, https://cdn-images-1.medium.com/max/800/1*hbfmLOtYdHdBT9cJcTjYhw.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>After some time the data will be shown here.</p><p>If the cat command shows data but you get nothing in cgps at all do the following&nbsp;:</p><ol><li><p>Check if port 2947 is open in firewall.</p></li><li><p>Open the file<code> /etc/default/gps </code>in sudo with any text editor and change DEVICES=&#8221;&#8221; to DEVICES=&#8221;/dev/ttyS0" and then type <code>sudo systemctl restart gpsd</code></p></li></ol><p>Note&nbsp;: It may take sometime for GPS module to receive data. So it time or anything else is shown in <code>cgps </code>that means configurations are all ok but module is not receiving GPS signals. So, just wait for sometime.</p><h3>Some troubleshooting steps if cgps does not get a&nbsp;fix</h3><p>1. Check GPS data stream</p><pre><code>cat /dev/ttyS0</code></pre><p>You should see the NMEA stream</p><p>2. Check GPS data with gpsmon</p><pre><code>gpsmon /dev/ttyS0</code></pre><p>It should run properly with the data stream</p><p>Note&nbsp;: It first two steps didn&#8217;t work, check you connections and configurations properly.</p><p>3. Run gpsd in debug mode</p><pre><code>sudo gpsd /dev/ttyS0 -N -D3 -F /var/run/gpsd.sock</code></pre><p>It should say that it is already running</p><p>4. Now type the following lines.</p><pre><code>sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket</code></pre><p>5. Now, launch gpsd again</p><pre><code>sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock</code></pre><p>Now, cgps should get a fix and no timeout.</p><p>After all the proper configurations, you need to run <code>sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock</code> every time the pi is rebooted. If you are using it as an IOT project you might want to automate everything.</p><h3>Automating</h3><p>Create a file at /etc/rc.local</p><pre><code>sudo nano /etc/rc.local</code></pre><p>Add following contents to the file</p><pre><code>#!/bin/sh -e
sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock
exit 0</code></pre><p>This will run our sudo command on every boot.</p><h3>Using python to get Latitude and Longitude</h3><p>I used a simple python script to get latitude and longitude from the gps module.</p><p>Here, I print the Latitude and Longitude but you can actually do whatever you like with them and later on make this script to run every time on boot using cron job.</p><p>To make a cron job first type <code>crontab -e</code> and in the window that appears write the following command.</p><pre><code>@reboot cd /home/pi/ &amp;&amp; python sendCoordinate.py</code></pre><p>Change the path and file name accordingly.</p><h3>Small Issue</h3><p>Now, after everything was setup the system was working pretty nice. But after 2&#8211;3 trial runs I found that something was crashing and I was not able to get the coordinates on my web server.</p><p>Now, there could be only two problems, either the GPS module is not configuring properly on every startup or my internet connection had some issues on boot. After hours of hit-and-try, and trying several permutations and combinations of different things on the internet I did the following to make it work.</p><p>I made a shell script <code>startup.sh</code> and added the following lines of code to it.</p><pre><code>sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock
stty -F /dev/ttyS0 -echo
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
sudo killall gpsd
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock
sleep 10s
nohup python /home/pi/sendCoordinate.py &gt; pylog.test &amp;</code></pre><p>Then I made it an executable.</p><pre><code>sudo chmod 755 ./startup.sh</code></pre><p>After added it as cronjob to be executed on every startup and everything ran without any problems. My crontab file looked like this.</p><pre><code>@reboot cd /home/pi/ &amp;&amp; sh startup.sh</code></pre><p>Note&nbsp;: I know some of the lines in startup.sh are redundant and may not be necessary but due to time crunch I was not able to further test it and make it more simpler. If you are reading this and have a more optimal foolproof solution kindly let me know in the comments or at <a href="mailto:ayushgoyal.iitkgp@gmail.com?Subject=Medium%20Python%20GPS%Module">ayushgoyal.iitkgp@gmail.com</a>&nbsp;.</p>]]></content:encoded></item><item><title><![CDATA[Django redirect with custom context]]></title><description><![CDATA[Django redirect with custom context]]></description><link>https://defcon007.substack.com/p/django-redirect-with-custom-context-88d256bb5c98</link><guid isPermaLink="false">https://defcon007.substack.com/p/django-redirect-with-custom-context-88d256bb5c98</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sat, 01 Sep 2018 17:42:13 GMT</pubDate><content:encoded><![CDATA[<div><hr></div><h3>Django redirect with custom&nbsp;context</h3><p>While working on a recent Django project, I was stuck when I needed to send custom context in redirect request. I googled a lot and still didn&#8217;t find any way to do so. Hence I devised my way to do so.</p><p>This blog is more of a reminder of how I managed to do so.</p><p>Since you are facing this issue, I am assuming you have a basic idea on the working of Django. So, we will not go into details.</p><div><hr></div><p>Assuming you following two views in your views file.</p><pre><code>def view1(request) : 
 ..
 context = {
 ..
 }
 ..
 return render(request, "../../xyz.html", context=context)</code></pre><pre><code>def view2(request) : 
 ..
 context = {
 ..
 }
 ..
 return render(request, "../../abc.html", context=context)</code></pre><p>Now, if you want to redirect to view1 from view2 along with its context, you can modify your functions like this.</p><pre><code>def view1(request, newContext={}) : 
 ..
 ..
 context = {
 ..
 }
 context.update(newContext)
 ..
 return render(request, "../../xyz.html", context=context)

</code></pre><pre><code>def view2(request) : 
 ..
 context = {
 ..
 }
 ..
 response = view1(request, context)
 return response</code></pre><p>So, what happens here is, since in <em>view1 </em>the newContext parameter is already initialised, the normal calling of it in the Django architecture will not be hampered and the context.update(newContext) has no effect and when <em>view2</em> calls <em>view1</em>, a response is returned so it can be directly returned from <em>view2</em>.</p><p>Note that this will not change the URL.</p>]]></content:encoded></item><item><title><![CDATA[Importance of Things!]]></title><description><![CDATA[Importance of Things!]]></description><link>https://defcon007.substack.com/p/importance-of-things-995ae39c33e1</link><guid isPermaLink="false">https://defcon007.substack.com/p/importance-of-things-995ae39c33e1</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Tue, 17 Apr 2018 19:41:10 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><h3>Importance of&nbsp;Things!</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.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;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 424w, https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 848w, https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 1272w, https://cdn-images-1.medium.com/max/800/1*oNxPGXWULCBYG79b-fIqmg.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Today, I was thinking about how quickly and how vastly our priorities, importance of things and people, change over time. Personally, I have seen that one thing which was once very important in my life now is just speck of sand in a desert.</p><p>The reason today I started writing about it was very trivial; my end semester examinations commence from tomorrow.<br>&nbsp;I still remember the exam time from my first semester, I was terrified (of course a lot less from the time I was in my high school) mugging up the formulas, solving the tutorial sheets, looking over the solved examples again and again, etc. But today just one day for the examinations, knowing that I have not attended a single class attentively, not even aware of the syllabus, I am Ok! In fact more better than that.<br>&nbsp;<br>I actually feel that over time our way to perceive &#8220;important&#8221; things in life changes a lot. One thing which is currently so important to you that you will push yourself more than your limits may be rendered entirely useless in some time.&nbsp;<br>For example, I worked my ass off during the examinations in school, but now when I look back to those grades which I secured in school, they are unquestionably useless, they have zero significance in my life right now. So, the point is should I be worried about anything which is going in my life right now knowing that after some time I will look back and say that it was just waste of time and I could have done something else more productive or enjoyed that time of my life more peacefully?</p><p>Now, the significant thing to closely see is that it&#8217;s not like those events never actually had any importance, it&#8217;s just over the time I am forgetting or don&#8217;t want to acknowledge what their significance was. Retaking the example of exams, during those school times, the marks in those exams were essential. Because, if I didn&#8217;t study hard, I would not be able to get a good college and which will lead to a low paying job, and thus I will be making compromises at every facet of my life, and the list goes on and on. But now when I am in a good college, I feel those marks are useless.</p><p>So, it&#8217;s not that nothing is worth the efforts, but after achieving the importance of them, we tend to think of those events as useless. For example, most of the people are worried about exams in college because they know if they fuck these up they are not going to beg a proper placement. But since I know these grades are not going to help me in my placements, so I give zero fucks to the exams. Contrary to my first semester where I had no such backup, so I prepared hard for the exams and was worried too.</p>]]></content:encoded></item><item><title><![CDATA[KGP developer’s Meet]]></title><description><![CDATA[Summary of KGP developers meet held by the student developer community of IIT Kharagpur and the institute administration]]></description><link>https://defcon007.substack.com/p/kgp-developers-meet-73f2980b0c30</link><guid isPermaLink="false">https://defcon007.substack.com/p/kgp-developers-meet-73f2980b0c30</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Thu, 22 Mar 2018 08:57:48 GMT</pubDate><content:encoded><![CDATA[<p>On 18th March 2018, KGP witnessed its first ever developers meet[1]. The initiative was taken up by Ksheera Sagar the UG Representative to the Senate. He got to know about the MetaKGP hack day[2], and he thought of a bigger version of it to bring all the developers in the campus on a single platform and also welcome students who are interested in becoming developers.</p><p>Following were the goals he thought of&nbsp;:</p><p>1. To give a brief idea of works done by MetaKGP and the open source community on campus&nbsp;<br>2. Ongoing key projects and initiatives&nbsp;<br>3. Discussing the potential projects for the upcoming and existing developers&nbsp;<br>4. Explaining the necessity of ERP API&nbsp;<br>5. Presentation of 2&#8211;3 student wellness projects by myself and Krushi (G.Sec Students Welfare TSG) which needs developers&nbsp;<br>6. Encouraging women from STEM areas to start with dev&nbsp;<br>7. Requesting the professors (like PPD, PDG, PPC&#8230;.) to speak on this occasion&nbsp;<br>8. Requesting office/ lab space for developers</p><p>Metakgp[3], Lean In[4], Kharagpur Open Source Society[5], Institute Wellness Group[6] came together to make the event a success.</p><p>The event started with Naresh and Nishant giving an introduction of MetaKGP and its various projects. After that Kshitij gave a presentation about the initiatives of KOSS to promote the opensource culture in the campus.&nbsp;<br>Siddharth took the opportunity to bring to the notice of the administration on how providing some open endpoints to the data in ERP can help developer community build cool projects around the ERP and benefits of enabling an OAuth 2.0 authentication for the ERP to make it more developer friendly.</p><p>One of the most frustrating and time-consuming thing for all the final and pre-final year students in building their CV on ERP. Ksheera Sagar pointed out the problems in the CV module and proposed a solution for the same.&nbsp;<br>We all know how bad the gender ratio is in IITs and it is worst in the tech community of the IITs, Ayushi Mrigen gave an introduction about Lean In and also an insight of the perspective of girls community on why they think this problem exists and what are their steps to improve this situation.</p><p>Prof Sriman Kumar Bhattacharyya, Prof Pallab Dasgupta, Prof Adrijit Goswami shared their views on the open source movement currently prevailing in the campus and about the steps already taken by the administration and their plans of the future to help the developer community.</p><p>Prof Sriman Kumar Bhattacharyya, Deputy Director, IIT Kharagpur briefed the students about the opportunities for the funding of projects and lab spaces from the administration side.</p><p>Professor PDG of Computer Science and Technology Department, an alumnus of the batch of &#8217;90, shared the story from his college time. Since we all know, it was the time of genesis of open source. He shared how they were just shifting to UNIX systems and how Donald Knuth developed Tex and open sourced it, but due to complications, no one was able to use it and later came Latex a more user-friendly version of Tex which was again open sourced. His talk was very insightful and inspired a lot of people sitting there.</p><p>Prof Adrijit Goswami, ERP Chairman, talked about how the ERP functioning is different in Kharagpur than other IITs and the autonomous structure of ERP in our institute. He also told about the current problems faced in ERP and how students can help in overcoming them. Though, he didn&#8217;t talk much related to the presentation given by Siddharth on OAuth for ERP which was quite disheartening.</p><p>Thanks to Himanshu, the whole event was video recorded, and the video for the same can be found <a href="https://www.youtube.com/watch?v=fI6FQjFzAco">here</a>.</p><p>All the presentations from the event can be found <a href="https://archive.org/details/kgpdevmeet2018">here</a>.</p><p>[1] <a href="https://www.facebook.com/events/181539055903174/">https://www.facebook.com/events/181539055903174/</a></p><p>[2] <a href="https://www.facebook.com/metakgp/posts/1714405645479506">https://www.facebook.com/metakgp/posts/1714405645479506</a></p><p>[3] <a href="https://www.facebook.com/metakgp/">https://www.facebook.com/metakgp/</a></p><p>[4] <a href="https://www.facebook.com/leaniniitkgp/">https://www.facebook.com/leaniniitkgp/</a></p><p>[5] <a href="https://www.facebook.com/kossiitkgp/">https://www.facebook.com/kossiitkgp/</a></p><p>[6] <a href="https://www.facebook.com/iwg.iitkgp/">https://www.facebook.com/iwg.iitkgp/</a></p>]]></content:encoded></item><item><title><![CDATA[Why Facebook ?]]></title><description><![CDATA[My thoughts on why I reactivated my Facebook account after almost 1 year]]></description><link>https://defcon007.substack.com/p/why-facebook-ac2f0ccd72ea</link><guid isPermaLink="false">https://defcon007.substack.com/p/why-facebook-ac2f0ccd72ea</guid><dc:creator><![CDATA[Ayush Goyal]]></dc:creator><pubDate>Sat, 17 Feb 2018 03:27:35 GMT</pubDate><content:encoded><![CDATA[<h3>Why Facebook&nbsp;?</h3><p>So, some time back I deactivated my facebook account and was cut-off from the social network realm entirely. I thought it was the best decision I could make because now I had a lot of free time with me which I was previously wasting in scrolling through unnecessary feeds.</p><p>The reason why I deactivated my account is mentioned in my previous post[1]. It was also not the first time I tried staying away from Facebook, I have deactivated my facebook account before too.</p><p>The problem nowadays is, Facebook has spread its roots so deep in the life of people that even if a single individual wants to stay away from it, he/she could not.&nbsp;<br>In my case, I am not returning to facebook because of some addiction. I am returning because I <em>had</em> to.&nbsp;<br>In the absence of Facebook, I was missing out a lot of things. All of the people from my department primarily share information, notes, books, etc., on the facebook group only. And I was missing out all the things. I had to repeatedly tell people to share stuff from the group to me via E-mail, but how can I ask for something which I don&#8217;t even know is shared in the group.&nbsp;<br>For example, yesterday only we were supposed to have our Tractor and Power Systems Lab class and since I had till now not submitted a single lab report I wrote everything till night and was prepared for the submission. But just a few hours before the lab my friend told that lab class was cancelled&nbsp;!<br>I was so frustrated that if I has this information this beforehand, I could have done some other important work the day before instead of copying the lab manual. It was the time I decided I have to go back to the facebook!</p><h3>References&nbsp;:</h3><p>[1]<a href="https://medium.com/@DefCon_007/leaving-the-real-of-social-media-again-ae8d071b5765">Leaving the realm of social media, again&nbsp;!</a></p>]]></content:encoded></item></channel></rss>