<?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[Navdeep’s reading list]]></title><description><![CDATA[Somethings in tech that were too exciting to keep to myself. These are either articles that I enjoyed reading or even writing!]]></description><link>https://nsrcodes.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!tLjE!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F70cf487c-0d1a-4dbd-9f88-a65dddd22811_177x177.png</url><title>Navdeep’s reading list</title><link>https://nsrcodes.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 14 Apr 2026 02:50:19 GMT</lastBuildDate><atom:link href="https://nsrcodes.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Navdeep Singh Rathore]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[nsrcodes@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[nsrcodes@substack.com]]></itunes:email><itunes:name><![CDATA[Navdeep Singh Rathore]]></itunes:name></itunes:owner><itunes:author><![CDATA[Navdeep Singh Rathore]]></itunes:author><googleplay:owner><![CDATA[nsrcodes@substack.com]]></googleplay:owner><googleplay:email><![CDATA[nsrcodes@substack.com]]></googleplay:email><googleplay:author><![CDATA[Navdeep Singh Rathore]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[A few interesting articles]]></title><description><![CDATA[A detailed tutorial on how to build a generic TCP proxy and a wellwritten article explaining how Redis works and how it is commonly used.]]></description><link>https://nsrcodes.substack.com/p/a-few-interesting-articles</link><guid isPermaLink="false">https://nsrcodes.substack.com/p/a-few-interesting-articles</guid><dc:creator><![CDATA[Navdeep Singh Rathore]]></dc:creator><pubDate>Fri, 19 Aug 2022 11:35:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tDyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>Hello,</p><p>I know it has been a while since the last issue, and in case you are clueless, this is a newsletter where I share a few interesting reads that I find online. Most of them are usually technical but there can be some variations from time to time. Hope that is something that you are still interested in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tDyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tDyd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tDyd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tDyd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tDyd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tDyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png" width="727.9971313476562" height="727.9971313476562" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:727.9971313476562,&quot;bytes&quot;:1956645,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tDyd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tDyd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tDyd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tDyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F51feca81-7998-435e-875b-3bdf576da8d3_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Here are two articles that I really enjoyed reading through last week. </p><h1>How to build a TCP proxy (4-part series)</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZqaQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png 424w, https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png 848w, https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png 1272w, https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/cb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;What is a Proxy Server? In English, Please.&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="What is a Proxy Server? In English, Please." title="What is a Proxy Server? In English, Please." srcset="https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png 424w, https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png 848w, https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.png 1272w, https://substackcdn.com/image/fetch/$s_!ZqaQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7343f1-41f5-4828-ba5d-9dc2b61ca025_1200x628.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>I work at Requestly which is an easy-to-use proxy for frontend developers. Think of it like burp but for QA engineers rather than bug hunters. So I am always eager to learn more about proxies.</p><p>Tools like Burp, Requestly, Charles Proxy, etc. all act as HTTP proxies (layer 7 proxies). This is usually enough for most use cases because most of the web that we use day to day is built on top of HTTP.</p><p>To intercept your HTTP traffic with any of these proxies, you need to add the proxy&#8217;s IP and port to your system/app&#8217;s proxy settings. Even if you are integrating it inside your source code, most HTTP clients like Axios (for NodeJS) or RetroFit (for android) accept a proxy attribute to alter this setting across your app with just a few lines of code (Basically, you are changing the destination for all your requests)</p><p>In the case of a TCP (layer 4) proxy, you need to find a different way to redirect your requests to the proxy.</p><p>This article goes through all the details of building a generic TCP proxy and provides an interesting solution for forwarding all your TCP traffic to a proxy.</p><p>The author does so by creating a simple fake DNS server, running it along with the proxy and changing the default Domain server that his mobile uses to resolve domain names (which seems surprisingly easy to do).</p><p>We know that every request on the web first goes to a DNS server so that we can resolve easily recognisable URLs like &#8220;nsrcodes.com&#8221; to their IP address (which is what your browser needs to make the request).</p><p>Now, if you can control which IPs the domain names map to, you have essentially got control of redirecting any request to wherever you wish to send it, which in our case is our PROXY server.</p><p>So, all the requests first go to this fake DNS server and this server decides whether it wants to send these requests to the proxy or hit an actual DNS server and return a response. Genius!</p><p>Along with the implementation for this, the article also contains simple-to-follow explanations on how to build a TCP proxy from scratch.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://robertheaton.com/2018/08/31/how-to-build-a-tcp-proxy-1/&quot;,&quot;text&quot;:&quot;Read the article&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://robertheaton.com/2018/08/31/how-to-build-a-tcp-proxy-1/"><span>Read the article</span></a></p><p></p><h1>Redis Explained</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AVhI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AVhI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png 424w, https://substackcdn.com/image/fetch/$s_!AVhI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png 848w, https://substackcdn.com/image/fetch/$s_!AVhI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png 1272w, https://substackcdn.com/image/fetch/$s_!AVhI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AVhI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png" width="715" height="493" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:493,&quot;width&quot;:715,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142891,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AVhI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png 424w, https://substackcdn.com/image/fetch/$s_!AVhI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png 848w, https://substackcdn.com/image/fetch/$s_!AVhI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.png 1272w, https://substackcdn.com/image/fetch/$s_!AVhI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7cce04d0-6b1b-49df-8622-21a6f54fe6ae_715x493.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>For those unfamiliar with Redis, it is a general-purpose database that stores data directly inside the main memory</p><p>I recently had the chance of using Redis inside our infrastructure. We used it as a simple time-based cache for frequently accessed data. Since then I have been eager to know what else Redis is capable of and more importantly, how it actually works &#8220;in-memory&#8221;</p><p>The problem with an in-memory database is how you handle the persistence of data. Since the data is all in memory, shutting the system down (either because of faults; which are bound to happen; or just regular redeployment) will lead to loss of data. Redis handles this quite well with an async process that runs periodically to save snapshots or append-only files (file with a log of all write operations on the database for easy recreation of the current state).</p><p>My favourite part is at the end where it describes how Redis (which is inherently single-threaded) spawns forks of its main process to run this async persistence workflow (I had no clue how these two processes would share the addresses of the complete memory, and not cause conflicts)</p><p>Another problem is the hardware limitation. Since this is an in-memory database, you can only have so much ram. The obvious answer is to shard the data across several nodes, but since I had never actually worked with databases that much, I never understood how sharding works. This article explains how Redis handles sharding when deployed as a cluster of Redis nodes</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://architecturenotes.co/redis/&quot;,&quot;text&quot;:&quot;Read The article&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://architecturenotes.co/redis/"><span>Read The article</span></a></p><div><hr></div><p>Hope this was useful, let me know your thoughts on anything that you find interesting from the above two articles. Until then&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mz8j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mz8j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif 424w, https://substackcdn.com/image/fetch/$s_!mz8j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif 848w, https://substackcdn.com/image/fetch/$s_!mz8j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif 1272w, https://substackcdn.com/image/fetch/$s_!mz8j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mz8j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif" width="480" height="270" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:270,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2672302,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mz8j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif 424w, https://substackcdn.com/image/fetch/$s_!mz8j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif 848w, https://substackcdn.com/image/fetch/$s_!mz8j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.gif 1272w, https://substackcdn.com/image/fetch/$s_!mz8j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6708e3cf-341c-422c-ac29-6f8ee1ff7b95_480x270.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></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://nsrcodes.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Navdeep&#8217;s reading list! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Debugging to Learn]]></title><description><![CDATA[A story on how a bug taught me I have a lot to learn]]></description><link>https://nsrcodes.substack.com/p/debugging-to-learn</link><guid isPermaLink="false">https://nsrcodes.substack.com/p/debugging-to-learn</guid><dc:creator><![CDATA[Navdeep Singh Rathore]]></dc:creator><pubDate>Mon, 07 Mar 2022 04:51:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tLjE!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F70cf487c-0d1a-4dbd-9f88-a65dddd22811_177x177.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whenever I build a new feature or do a major code rewrite, it always starts off exciting but gets a bit daunting towards the end. </p><p>Although the task remains equally challenging throughout, it is towards the end of it that I realize that I have to make sure that this does not break everything. I might get better at recognizing this at the start but for now, this is a habit I need to fix.</p><p>But this has also helped me sometimes because I have learned that bugs aren&#8217;t always an overlooked edge case or an embarrassing typo. Sometimes they are there to highlight specifically what I do not know about. And I don&#8217;t mean that in the context of a codebase. These special bugs tell me what more I have to learn in the domain I have been working in.</p><h1>Here&#8217;s an example&#8230;</h1><p>We recently had a user tell us that our most basic feature is giving an unusual bug. Our whole team had not seen this bug before. This was a special bug that I mentioned earlier and <a href="https://www.nsrcodes.com/request-credentials-and-307-redirect">here is my debugging story</a>.</p><div><hr></div><p><strong>Do you have any such bugs that you are glad you encountered?</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://nsrcodes.substack.com/p/debugging-to-learn/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://nsrcodes.substack.com/p/debugging-to-learn/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[I am about to come back!]]></title><description><![CDATA[Just a heads up that I will be writing again]]></description><link>https://nsrcodes.substack.com/p/i-am-about-to-come-back</link><guid isPermaLink="false">https://nsrcodes.substack.com/p/i-am-about-to-come-back</guid><dc:creator><![CDATA[Navdeep Singh Rathore]]></dc:creator><pubDate>Thu, 03 Mar 2022 05:29:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tLjE!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F70cf487c-0d1a-4dbd-9f88-a65dddd22811_177x177.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I wasn&#8217;t going to send this email, but I just shifted to substack and it won&#8217;t let me go ahead until I write an issue. So I took this opportunity to officially declare to myself and the one other person part of my email list that I am going to get back to writing.</p><p>I generally have a plan about such drastic descisions but this time I don&#8217;t. I just know that I always wanted to have a blog (my corner on this beautiful internet) and a channel for openly expressing my thoughts. I have embarrasingly not done anything to move forward in that direction and I plan to change that this year. </p><p>All this starts with the blog being updated and me personally making a few changes in my routine to incorporate a writing schedule. I don&#8217;t expect it to be easy, but I do expect to stick with it this time.</p><p></p><p>So to the one other person reading this, thanks for sticking around. I will try not to disappoint!</p>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is Navdeep&#8217;s reading list, a newsletter about Somethings in tech that were too exciting to keep to myself..]]></description><link>https://nsrcodes.substack.com/p/coming-soon</link><guid isPermaLink="false">https://nsrcodes.substack.com/p/coming-soon</guid><dc:creator><![CDATA[Navdeep Singh Rathore]]></dc:creator><pubDate>Thu, 03 Mar 2022 05:17:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tLjE!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F70cf487c-0d1a-4dbd-9f88-a65dddd22811_177x177.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>This is Navdeep&#8217;s reading list</strong>, a newsletter about Somethings in tech that were too exciting to keep to myself..</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://nsrcodes.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://nsrcodes.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>