<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Fundamentals on Artur Rios Lab</title><link>https://artur-rios.github.io/personal-lab/fundamentals/</link><description>Recent content in Fundamentals on Artur Rios Lab</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 21 Oct 2026 20:00:00 +0000</lastBuildDate><atom:link href="https://artur-rios.github.io/personal-lab/fundamentals/index.xml" rel="self" type="application/rss+xml"/><item><title>String Similarity: Levenshtein, Jaro and Jaro–Winkler</title><link>https://artur-rios.github.io/personal-lab/fundamentals/string-similarity/</link><pubDate>Wed, 21 Oct 2026 20:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/string-similarity/</guid><description>&lt;p&gt;Two strings are equal or they are not, and for a computer that is the end of&#10;it: &lt;code&gt;&amp;quot;Smith&amp;quot;&lt;/code&gt; and &lt;code&gt;&amp;quot;Smyth&amp;quot;&lt;/code&gt; differ, and so do &lt;code&gt;&amp;quot;recieve&amp;quot;&lt;/code&gt; and &lt;code&gt;&amp;quot;receive&amp;quot;&lt;/code&gt;. For&#10;the person who typed them, though, they are almost the same, and a lot of&#10;software has to act on that &amp;ldquo;almost&amp;rdquo;. A spell checker has to find the word&#10;that was meant. A search box has to forgive a typo. A company merging two&#10;customer lists has to notice that &amp;ldquo;Jon Smyth, 12 Main St&amp;rdquo; and &amp;ldquo;John Smith,&#10;12 Main Street&amp;rdquo; are probably the same person. A &lt;strong&gt;string similarity measure&lt;/strong&gt;&#10;puts a number on how close two strings are, so a program can make those calls.&lt;/p&gt;</description></item><item><title>What Is a Unit Test? Where Unit Testing Came From and How to Write Good Ones</title><link>https://artur-rios.github.io/personal-lab/fundamentals/unit-tests/</link><pubDate>Tue, 20 Oct 2026 22:30:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/unit-tests/</guid><description>&lt;p&gt;You change one line in a pricing function and want to know whether anything&#10;broke. You could start the whole application, log in, fill a cart and look at&#10;the total, for every kind of cart you can think of. Or you could run a few&#10;hundred small programs that each call the pricing function with one input and&#10;check the answer, and know in under a second. Those small programs are &lt;strong&gt;unit&#10;tests&lt;/strong&gt;, and the second way of working is one of the biggest changes in how&#10;software has been written in the last thirty years: from testing as a phase at&#10;the end of a project, done by someone else, to testing as something every&#10;programmer does every few minutes.&lt;/p&gt;</description></item><item><title>How Do Programs Talk to Each Other? JSON, XML, Protobuf, RPC, REST, gRPC, GraphQL and Messaging</title><link>https://artur-rios.github.io/personal-lab/fundamentals/communication-techniques/</link><pubDate>Tue, 20 Oct 2026 20:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/communication-techniques/</guid><description>&lt;p&gt;A mobile app asks a server for a user&amp;rsquo;s orders. The server asks a payment&#10;service whether an order was paid, tells a warehouse system to ship it, and&#10;announces to anyone interested that it has shipped. A code editor asks a&#10;language server where a function is defined; an AI agent asks a tool to read a&#10;file. All of these are programs talking to other programs, and every one of&#10;those conversations rests on two decisions: &lt;strong&gt;how the data is encoded&lt;/strong&gt; into&#10;bytes, and &lt;strong&gt;how the conversation is shaped&lt;/strong&gt;, as a function call, a request&#10;for a resource, a query, a stream or a message dropped in a queue.&lt;/p&gt;</description></item><item><title>How Do Computer Networks Work? TCP/IP, the OSI Model and the Protocols Every Programmer Uses</title><link>https://artur-rios.github.io/personal-lab/fundamentals/computer-networks/</link><pubDate>Tue, 20 Oct 2026 18:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/computer-networks/</guid><description>&lt;p&gt;Very few programs work alone. A web page fetches data from an API, the API&#10;queries a database on another machine, the database replicates to a third, and&#10;all of them ask a time server what time it is and a name server where everyone&#10;else lives. Every one of those conversations crosses a network, and every one&#10;of them can be slow, fail halfway or arrive in pieces. A programmer who&#10;understands what happens between &lt;code&gt;connect()&lt;/code&gt; and the reply can tell a DNS&#10;problem from a TLS problem from a congested link, and can write code that&#10;copes with all three.&lt;/p&gt;</description></item><item><title>How Does a Web Browser Work? From a URL to Pixels on the Screen</title><link>https://artur-rios.github.io/personal-lab/fundamentals/how-browsers-work/</link><pubDate>Tue, 20 Oct 2026 17:30:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/how-browsers-work/</guid><description>&lt;p&gt;A web browser is probably the most complex program most people use every day.&#10;In a few hundred milliseconds it turns a line of text in an address bar into&#10;a network connection, a stream of bytes, a tree of objects, a set of styled and&#10;measured boxes, and finally pixels, then keeps all of that live while scripts&#10;change it and the user scrolls, types and clicks. It is also a small operating&#10;system in its own right (&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/operating-systems/"&gt;What Is an Operating System?&lt;/a&gt;),&#10;running untrusted code from every site you visit and keeping those sites apart.&lt;/p&gt;</description></item><item><title>What Is Text Encoding? From Telegraph Codes to Unicode and UTF-8</title><link>https://artur-rios.github.io/personal-lab/fundamentals/text-encoding/</link><pubDate>Tue, 20 Oct 2026 17:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/text-encoding/</guid><description>&lt;p&gt;A computer stores nothing but numbers. Every letter you read on a screen, every&#10;name in a database and every line of source code is held as a sequence of&#10;numbers, and something has to agree on which number means which character.&#10;That agreement is a &lt;strong&gt;text encoding&lt;/strong&gt;. When it works, nobody notices. When two&#10;programs disagree, &amp;ldquo;café&amp;rdquo; turns into &amp;ldquo;cafÃ©&amp;rdquo;, a customer&amp;rsquo;s name is rejected as&#10;invalid, or an emoji crashes a database insert. This article explains what a&#10;text encoding is, how the world got from telegraph codes to Unicode, how the&#10;modern encodings work bit by bit, and where text still goes wrong. The examples&#10;were run with Python 3.10 and Node.js 12, and their output is shown as printed.&lt;/p&gt;</description></item><item><title>What Are Data Structures? From Arrays to Hash Tables, and How to Choose One</title><link>https://artur-rios.github.io/personal-lab/fundamentals/data-structures/</link><pubDate>Tue, 20 Oct 2026 16:30:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/data-structures/</guid><description>&lt;p&gt;Niklaus Wirth titled a 1976 book &lt;em&gt;Algorithms + Data Structures =&#10;Programs&lt;/em&gt;,&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; and &lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/what-is-programming/"&gt;What Is Programming?&lt;/a&gt;&#10;quoted it: choosing how to represent information is as much a part of&#10;programming as choosing the steps that work on it. This article is about the&#10;second half of that equation. It explains what a data structure is, where the&#10;classic ones came from, how each works and what it costs, and how to choose&#10;between them. The examples were run with Python 3.10 on an Intel Core&#10;i9-13900K, and their output is shown exactly as printed.&lt;/p&gt;</description></item><item><title>What Is a Compiler? How Source Code Becomes a Running Program</title><link>https://artur-rios.github.io/personal-lab/fundamentals/compilers/</link><pubDate>Tue, 20 Oct 2026 16:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/compilers/</guid><description>&lt;p&gt;&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/what-is-programming/"&gt;What Is Programming?&lt;/a&gt; ended with&#10;high-level languages taking over from machine code, and&#10;&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/processors/"&gt;What Is a Processor?&lt;/a&gt; described the machine&#10;instructions a CPU actually runs. Between the two sits the compiler: the&#10;program that turns one into the other. This article explains what a compiler&#10;is, where compilers came from, how each of their phases works, how a C file&#10;becomes an executable on a real system, and how to build a small compiler of&#10;your own. Every compiler output shown here was produced by running the tools&#10;on Ubuntu 22.04 with GCC 11.4 and Python 3.10, not written by hand.&lt;/p&gt;</description></item><item><title>Processes and Threads: What They Are, Where They Came From and How They Work</title><link>https://artur-rios.github.io/personal-lab/fundamentals/processes-and-threads/</link><pubDate>Tue, 20 Oct 2026 15:30:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/processes-and-threads/</guid><description>&lt;p&gt;&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/operating-systems/"&gt;What Is an Operating System?&lt;/a&gt; introduced&#10;processes and threads in a few paragraphs, and&#10;&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/processors/"&gt;What Is a Processor?&lt;/a&gt; showed the hardware they run&#10;on. This article gives them the space they deserve. Almost every question about&#10;how a program behaves when it does more than one thing at a time, from &amp;ldquo;why did&#10;my server run out of memory?&amp;rdquo; to &amp;ldquo;why does this counter come out wrong?&amp;rdquo;, comes&#10;down to the difference between a process and a thread.&lt;/p&gt;</description></item><item><title>What Is a Processor? History, Architectures and How a CPU Works</title><link>https://artur-rios.github.io/personal-lab/fundamentals/processors/</link><pubDate>Tue, 20 Oct 2026 15:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/processors/</guid><description>&lt;p&gt;&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/what-is-programming/"&gt;What Is Programming?&lt;/a&gt; described programs as&#10;precise descriptions of a process, and&#10;&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/operating-systems/"&gt;What Is an Operating System?&lt;/a&gt; described the&#10;software that shares a machine between them. This article goes one level&#10;further down, to the part that does the work: the processor. It covers what a&#10;processor is, how it got from vacuum tubes to tens of billions of transistors,&#10;the main ways processors are designed, and, in some detail, how a modern CPU&#10;turns instructions into results.&lt;/p&gt;</description></item><item><title>What Is an Operating System? History, Architectures and How It Works</title><link>https://artur-rios.github.io/personal-lab/fundamentals/operating-systems/</link><pubDate>Tue, 20 Oct 2026 09:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/operating-systems/</guid><description>&lt;p&gt;Every program you have ever written leaned on an operating system without&#10;asking. Printing a line, opening a file, allocating memory, waiting for a key&#10;press: none of these is something a processor knows how to do. The operating&#10;system does them on the program&amp;rsquo;s behalf, and does them for hundreds of other&#10;programs at the same time without letting any of them trample the others.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://artur-rios.github.io/personal-lab/fundamentals/what-is-programming/"&gt;What Is Programming?&lt;/a&gt; followed the history&#10;of telling machines what to do. This article follows the program that stands&#10;between every other program and the machine: what it is, how it came to exist,&#10;the main ways it can be built, and, in some detail, how it actually works.&lt;/p&gt;</description></item><item><title>What Is Programming? A Short History of Telling Machines What to Do</title><link>https://artur-rios.github.io/personal-lab/fundamentals/what-is-programming/</link><pubDate>Mon, 19 Oct 2026 09:00:00 +0000</pubDate><guid>https://artur-rios.github.io/personal-lab/fundamentals/what-is-programming/</guid><description>&lt;p&gt;Ask ten developers what programming is and you will get ten answers: &amp;ldquo;writing&#10;code&amp;rdquo;, &amp;ldquo;solving problems&amp;rdquo;, &amp;ldquo;telling a computer what to do&amp;rdquo;. All of them are&#10;true, and none of them is quite enough. This article tries to pin the idea down,&#10;and then follows it through roughly two centuries of history — because most of&#10;what feels arbitrary about programming today makes sense once you know where it&#10;came from.&lt;/p&gt;</description></item></channel></rss>