<?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[DeepCode: INSIGHT LOGS]]></title><description><![CDATA[I turn experience into understanding.

INSIGHT LOGS are where I explain what I’ve learned from building and breaking things, in simple, clear terms.

Not textbook definitions. Not theory.

Just real explanations based on real problems I’ve actually faced while coding.

These posts are where confusion turns into clarity.]]></description><link>https://lucybatten.substack.com/s/insight-logs</link><image><url>https://substackcdn.com/image/fetch/$s_!URzi!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc0edc-36ee-4e4d-8fda-9950426d1c80_665x665.png</url><title>DeepCode: INSIGHT LOGS</title><link>https://lucybatten.substack.com/s/insight-logs</link></image><generator>Substack</generator><lastBuildDate>Sat, 09 May 2026 18:41:31 GMT</lastBuildDate><atom:link href="https://lucybatten.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Lucy Batten]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[lucybatten@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[lucybatten@substack.com]]></itunes:email><itunes:name><![CDATA[Lucy Batten]]></itunes:name></itunes:owner><itunes:author><![CDATA[Lucy Batten]]></itunes:author><googleplay:owner><![CDATA[lucybatten@substack.com]]></googleplay:owner><googleplay:email><![CDATA[lucybatten@substack.com]]></googleplay:email><googleplay:author><![CDATA[Lucy Batten]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[INSIGHT LOG #01: The Full-Stack Request–Response Loop Explained]]></title><description><![CDATA[The core loop behind every full-stack app]]></description><link>https://lucybatten.substack.com/p/insight-log-01-the-full-stack-requestresponse</link><guid isPermaLink="false">https://lucybatten.substack.com/p/insight-log-01-the-full-stack-requestresponse</guid><dc:creator><![CDATA[Lucy Batten]]></dc:creator><pubDate>Thu, 16 Apr 2026 08:01:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fee0ea2d-eeec-477d-96c8-836dd2f341e8_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I didn&#8217;t properly understand how full-stack development worked, until my first project completely fell apart. Before that, I had an overly simple mental model of how everything worked: there was the frontend, the backend, and the database, three separate systems that you build separately and &#8216;connect&#8217; at the end, almost like plugging cables into a finished machine. </p><p>But that idea dissolves the moment you actually try to build something real, because full-stack development isn&#8217;t simply 3 systems sitting next to each other, it is a continuous loop of communication, which only properly works if every part understands exactly how the others behave.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://lucybatten.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">DeepCode is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>At the highest level, the entire system can be reduced to this one flow: the frontend sends a request, the backend sends a response, and the frontend uses that response to update what the user sees. That loop is all it is. Every framework, tool, or choice of architecture is just a slightly more complex way of managing that cycle, but the cycle itself never actually changes.</p><div><hr></div><p>It starts with the frontend, which is where the user interacts with the application. When a button gets clicked, a form gets submitted, or a page loads, the frontend doesn&#8217;t &#8216;talk&#8217; directly with the backend: it constructs a very specific HTTP request and sends it across the network. That request contains a destination, which is usually a URL or an endpoint, an intention, e.g. GET or POST, depending on whether data is being retrieved or sent, and optionally, also a payload of data, if the backend needs information to process the request.</p><p>At this point, nothing has been processed or understood yet, it is simply a structured message leaving the frontend, heading towards a system that is waiting to receive it. On the backend, nothing happens unless that request matches something ti recognises. </p><p>The backend is built around routes, which are like predefined entry points e.g. /login, /users, or /api/data, and when a request arrives, it gets checked against these routes, to see if there is a corresponding piece of logic that could handle it. If there isn&#8217;t a match, the backend doesn&#8217;t attempt to interpret it, it returns an error like 404, which is why routing is one of the most fundamental parts os how full-stack systems stay predictable and structured.</p><div><hr></div><p>Once a request successfully matches a route, the backend begins processing logic, which is where the real system work happens. The backend could validate the incoming data to make sure it&#8217;s in the correct format, run business logic to determine what should happen next, check auth or permissions to verify the user can perform the action, or communicate with a database if persistent data is involved.</p><p>This is essentially the decision-making layer of the application, and it is also where the complexity lives, as the backend is responsible for turning a simple request into meaningful outcomes.</p><p>If the request requires data storage or retrieval, the backend interacts directly with the database, sending queries to read/write information then receiving results back. A crucial point to mention, is that the frontend never touches the database directly: everything goes through the backend, which acts as a controlled gateway between user interaction and stored data, which is what helps to keep the system secure and structured.</p><div><hr></div><p>After all the processing is complete, the backend sends a response back to the frontend. It might contain data formatted as JSON, a success confirmation, or an error message explaining what went wrong, but regardless of what happened internally, everything sent to the frontend is reduced down into a single response object.</p><p>From there, control shifts back to the frontend, which takes that response and updates the UI accordingly, whether that is rendering data on the screen, updating it&#8217;s internal state or displaying a message to the user.</p><p> This is the step that creates an illusion of interactivity, even though what is actually happening underneath is just a repeated cycle of requests and responses moving through an incredibly structured pipeline.</p><div><hr></div><p>Once you are able to see this clearly, full-stack development stops feeling like a collection of separate parts, and more like a single predictable system built around a single idea: communication. It isn&#8217;t frontend + backend + database, it is request, process, response, update, repeated again and again.</p><p>The reason my first project failed wasn&#8217;t because any individual part was wrong, but because I didn&#8217;t properly understand the flow between them, so I built components that worked in isolation, but couldn&#8217;t actually form a functioning system.</p><p>That shift in thinking is the real turning point, because once you can understand the loop, debugging stops being guesswork and starts to become something you can trace step by step through a system that finally makes sense.</p><div><hr></div><p>If this helped you see things differently, consider subscribing to <strong>DeepCode</strong>.</p><p>This is part of the <strong>Insight Logs</strong> series, where I turn real building experience into clear mental models and explanations.</p><p>This concept comes directly from my other series:</p><ul><li><p>Ship Logs &#8594; the project it emerged from</p></li><li><p>Error Logs &#8594; the problems that exposed it</p></li></ul><p>Build &#8594; Break &#8594; Understand.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://lucybatten.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">DeepCode is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[From URL to Website: What Happens Behind the Scenes]]></title><description><![CDATA[Clear explanation of how a URL becomes a website, covering web hosting, servers, and browsers to show how web pages are loaded and displayed.]]></description><link>https://lucybatten.substack.com/p/from-url-to-website-what-happens</link><guid isPermaLink="false">https://lucybatten.substack.com/p/from-url-to-website-what-happens</guid><dc:creator><![CDATA[Lucy Batten]]></dc:creator><pubDate>Fri, 10 Apr 2026 08:01:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7bb0626d-20bf-40e3-bce7-a90a1849985a_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most people use the Internet every day, without ever thinking about what&#8217;s actually happening behind the scenes. You type a URL into your browser, press enter, and within a second a website appears. It feels instant, almost magical. </p><p>But underneath that apparent simplicity is a chain of systems, requests and processes working together to deliver that page to your screen.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://lucybatten.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">Build &amp; Ship is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Understanding what happens in that moment is one of the best ways to demystify how the Internet actually works, because what looks like a single action is actually a whole sequence of steps involving multiple layers of communication between your device and servers around the globe.</p><div><hr></div><p>The process begins the moment you type a URL into your browser, e.g. https://example.com.</p><p>At this point, your browser&#8217;s first job is not to load the website, but to figure out where that website lives. The Internet doesn&#8217;t understand names like &#8216;example.com&#8217; directly, it understands IP addresses, which are numerical identifiers for servers.</p><p>So, before anything else happens, your browser needs to translate the domain name into an IP address, which is where the Domain Name Server, or DNS, comes in.</p><div><hr></div><p>DNS works like a huge, distributed phonebook for the Internet.</p><p>When you first enter the URL, your browser first checks whether it already knows the IP address from previous visits. If it doesn&#8217;t, it sends a request to a DNS resolver, which is usually provided by your ISP (Internet Service Provider) or a public DNS service.</p><p>That resolver then begins to search through different DNS servers until it finds the correct IP address associated with the domain. Once it finds it, it sends that IP address back to your browser so it knows exactly where to connect.</p><p>Without DNS, you would need to remember long strings of numbers in order to visit any website.</p><div><hr></div><p>Once your browser has the IP address, the next step is to establish a connection with the server that owns that address.</p><p>This happens through a process called a TCP handshake. Your device and the server essentially agree on how they will communicate with each other by exchanging a series of small messages, which confirm both sides are ready to send and receive data.</p><p>If the website uses HTTPS, which is used nowadays by most modern websites, this connection also includes an additional layer of security called TLS encryption. This ensures that any data that is sent between your browser and the server is encrypted, so it cannot be easily intercepted then read by outsiders.</p><p>At this point, a secure communication channel has now been established.</p><div><hr></div><p>Now that the connection exists, your browser sends a HTTP request to the server. This basically is your browser saying, &#8216;I want the data for this webpage.&#8217; It includes information such as what type of content it can accept, what browser you&#8217;re using, and what page you&#8217;re trying to access.</p><p>The server receives this request, processes it and begins to prepare a response. This usually includes HTML, CSS, JavaScript files, images, and any other assets that are needed to construct the page.</p><p>Once the server sends its response back, your browser receives a stream of data. However, at this stage, it doesn&#8217;t look like a website yet. It is simply raw code and resources, that the browser has to interpret and turn into something visual.</p><p>First, it reads the HTML, and build what is called the DOM (Document Object Model). This is essentially a structured representation  of the page, that the browser can understand and manipulate.</p><p>Then, it processes the CSS to determine how everything should look, including layout, colors, styling and spacing. </p><p>After that it runs any of the JavaScript, which can modify the page, add interactivity, or fetch additional data, and only after all of this does the page actually become something that you can see and interact with.</p><div><hr></div><p>Even after the page is visible, the process doesn&#8217;t always stop there. Modern websites often keep on loading additional data in the background. For example, images might load after the text appears, and JavaScript might continue running to update content dynamically. Some websites constantly communicate with servers to keep data up to date, without requiring a full reload.</p><p>What you see isn&#8217;t a finished object, it&#8217;s a constantly updating system.</p><div><hr></div><p>The entire process, from typing a URL to seeing a fully rendered page, often happens in a fraction of a second. But behind that speed is a highly co-ordinated sequence of systems: DNS resolution, network routing, secure connections, server processing and browser rendering.</p><p>Each layer has a specific role, and it requires all of them to work correctly for a simple webpage to appear.</p><p>So, the next time you type a URL into your browser, it&#8217;s always worth remembering that you&#8217;re not just &#8216;opening a website&#8217;, you&#8217;re triggering a complex chain of global communication, that quietly turns a domain name into data, then that data into structure, and finally, that structure into something that you can see, click, and interact with&#8230; all in an instant.</p><div><hr></div><p>If you enjoyed this post, make sure to subscribe for more deep dives into how things actually work behind the scenes.</p><p><em>Inside the Code</em> breaks down the systems you use every day: APIs, authentication, databases, performance, and more, without overcomplicating it. The goal is to help you move from &#8220;using&#8221; tools to actually understanding them.</p><p>If you want to understand what&#8217;s really happening under the hood, check out the rest of the posts in this series.</p><p>More breakdowns coming.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://lucybatten.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">Build &amp; Ship is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>