<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Systems-Programming on Tachera W Sasi</title><link>https://tacherasasi.github.io/tags/systems-programming/</link><description>Recent content in Systems-Programming on Tachera W Sasi</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 02 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tacherasasi.github.io/tags/systems-programming/index.xml" rel="self" type="application/rss+xml"/><item><title>I Want to Understand Computers, Not Just Use Them</title><link>https://tacherasasi.github.io/posts/i-want-to-understand-computers-not-just-use-them-b94385de2ffb/</link><pubDate>Fri, 02 Oct 2026 00:00:00 +0000</pubDate><guid>https://tacherasasi.github.io/posts/i-want-to-understand-computers-not-just-use-them-b94385de2ffb/</guid><description>&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/1024/1*Z-4jE3q_hWwAJq4NPpkbrw.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;I’ve spent a lot of time writing software.&lt;/p&gt;
&lt;p&gt;Web applications. Mobile apps. APIs. Backends. Databases. Deployment systems. Developer tools. And lately, more and more infrastructure and very, very low-level stuff, mostly in Zig.&lt;/p&gt;
&lt;p&gt;And honestly, I’m starting to suspect that I have a problem.&lt;/p&gt;
&lt;p&gt;At some point, I realized something had changed.&lt;/p&gt;
&lt;p&gt;I don’t just want to build software anymore.&lt;/p&gt;
&lt;p&gt;I want to understand the computer underneath it.&lt;/p&gt;
&lt;p&gt;I want to know what happens when a process starts, how memory actually gets used, why a network connection fails, what the operating system is doing, how filesystems work, what happens when a server runs out of resources, and why a distributed system behaves differently from the beautiful little diagram I drew on a whiteboard.&lt;/p&gt;
&lt;p&gt;The diagram, of course, assumes everything works.&lt;/p&gt;
&lt;p&gt;The real system apparently did not receive the memo.&lt;/p&gt;
&lt;p&gt;I want to understand the machine, not just the framework sitting on top of it.&lt;/p&gt;
&lt;h3 id="the-abstraction-is-useful-until-itisnt"&gt;The abstraction is useful until it isn’t&lt;/h3&gt;
&lt;p&gt;Modern software development is incredibly good at hiding complexity.&lt;/p&gt;
&lt;p&gt;That’s one of its greatest strengths.&lt;/p&gt;
&lt;p&gt;I can create an HTTP server without thinking about TCP. I can use a database without thinking about disk pages. I can deploy an application without manually configuring a server. I can create a mobile interface without thinking about how pixels eventually reach a display.&lt;/p&gt;
&lt;p&gt;That’s great.&lt;/p&gt;
&lt;p&gt;Abstraction exists for a reason.&lt;/p&gt;
&lt;p&gt;I don’t want to manually implement TCP every time I build a todo app. That sounds like a terrible Tuesday.&lt;/p&gt;
&lt;p&gt;But there is a point where abstraction becomes a ceiling.&lt;/p&gt;
&lt;p&gt;You can spend years knowing React, Laravel, Next.js, Docker, Kubernetes, or whatever the industry is excited about this month without understanding much about what actually happens underneath them.&lt;/p&gt;
&lt;p&gt;And then something breaks.&lt;/p&gt;
&lt;p&gt;A connection starts timing out.&lt;/p&gt;
&lt;p&gt;A process consumes all the memory.&lt;/p&gt;
&lt;p&gt;A deployment works on one machine but not another.&lt;/p&gt;
&lt;p&gt;A filesystem fills up.&lt;/p&gt;
&lt;p&gt;A request occasionally takes five seconds instead of fifty milliseconds.&lt;/p&gt;
&lt;p&gt;A queue gets backed up.&lt;/p&gt;
&lt;p&gt;Your logs say absolutely nothing useful.&lt;/p&gt;
&lt;p&gt;You stare at the terminal.&lt;/p&gt;
&lt;p&gt;The terminal stares back.&lt;/p&gt;
&lt;p&gt;Suddenly the abstraction isn’t enough anymore.&lt;/p&gt;
&lt;p&gt;You have to go one layer deeper.&lt;/p&gt;
&lt;p&gt;And I want to be comfortable there.&lt;/p&gt;
&lt;h3 id="i-started-caring-about-the-layers-underneath"&gt;I started caring about the layers underneath&lt;/h3&gt;
&lt;p&gt;This is probably why I’ve become increasingly interested in Go, Zig, Rust, Linux, networking, distributed systems, infrastructure, and developer tooling.&lt;/p&gt;
&lt;p&gt;They force me to think differently.&lt;/p&gt;
&lt;p&gt;When I’m building something in Go, I find myself thinking about processes, concurrency, memory, networking, files, system calls, binaries, and failure modes.&lt;/p&gt;
&lt;p&gt;When I’m writing Zig, I have considerably fewer layers between me and the machine.&lt;/p&gt;
&lt;p&gt;Sometimes that’s beautiful.&lt;/p&gt;
&lt;p&gt;Sometimes it feels like the computer has finally decided to stop protecting me from my own decisions.&lt;/p&gt;
&lt;p&gt;Either way, I’m learning.&lt;/p&gt;
&lt;p&gt;When I’m working with Linux, I can’t pretend the operating system doesn’t exist.&lt;/p&gt;
&lt;p&gt;When I’m building infrastructure, I have to think about what happens when something goes wrong.&lt;/p&gt;
&lt;p&gt;And that’s exactly what I want.&lt;/p&gt;
&lt;p&gt;I don’t want software to feel like magic.&lt;/p&gt;
&lt;p&gt;I want to understand the magic trick.&lt;/p&gt;
&lt;p&gt;Preferably before production catches fire.&lt;/p&gt;
&lt;h3 id="this-is-also-why-i-build-things-fromscratch"&gt;This is also why I build things from scratch&lt;/h3&gt;
&lt;p&gt;I’ve always had a tendency to build things I probably could have just downloaded.&lt;/p&gt;
&lt;p&gt;Sometimes that’s objectively inefficient.&lt;/p&gt;
&lt;p&gt;If I need file storage, there are dozens of existing products.&lt;/p&gt;
&lt;p&gt;If I need deployment infrastructure, there are already massive platforms.&lt;/p&gt;
&lt;p&gt;If I need a programming language, there are hundreds of them.&lt;/p&gt;
&lt;p&gt;And yet I keep building.&lt;/p&gt;
&lt;p&gt;VintLang started because I wanted to understand what it actually means to build a programming language.&lt;/p&gt;
&lt;p&gt;BeamDrop exists because I wanted to build a self-hosted storage system.&lt;/p&gt;
&lt;p&gt;Ekilie exists because I wanted to understand the infrastructure behind deploying and managing software.&lt;/p&gt;
&lt;p&gt;At this point, I should probably learn to leave perfectly good software alone.&lt;/p&gt;
&lt;p&gt;But there is something different about building a thing yourself.&lt;/p&gt;
&lt;p&gt;You don’t just read about the problem.&lt;/p&gt;
&lt;p&gt;You run directly into it.&lt;/p&gt;
&lt;p&gt;You discover why the boring decisions matter.&lt;/p&gt;
&lt;p&gt;You discover where systems become complicated.&lt;/p&gt;
&lt;p&gt;You discover what breaks.&lt;/p&gt;
&lt;p&gt;You discover that your beautiful architecture diagram did not account for the disk being full.&lt;/p&gt;
&lt;p&gt;And, most importantly, you develop an intuition that you can’t get from reading API documentation alone.&lt;/p&gt;
&lt;p&gt;I don’t necessarily expect every project to become a massive company.&lt;/p&gt;
&lt;p&gt;Sometimes the project itself is the education.&lt;/p&gt;
&lt;p&gt;Sometimes you spend three days building something that already exists because you wanted to know how it works.&lt;/p&gt;
&lt;p&gt;That’s not always good engineering.&lt;/p&gt;
&lt;p&gt;But it’s excellent curiosity.&lt;/p&gt;
&lt;h3 id="i-dont-want-to-memorize-moreapis"&gt;I don’t want to memorize more APIs&lt;/h3&gt;
&lt;p&gt;There is a strange trap in software engineering where becoming more experienced can sometimes mean becoming better at remembering abstractions.&lt;/p&gt;
&lt;p&gt;You learn another framework.&lt;/p&gt;
&lt;p&gt;Another library.&lt;/p&gt;
&lt;p&gt;Another cloud service.&lt;/p&gt;
&lt;p&gt;Another ORM.&lt;/p&gt;
&lt;p&gt;Another deployment platform.&lt;/p&gt;
&lt;p&gt;Another programming language.&lt;/p&gt;
&lt;p&gt;Another JavaScript build tool whose name you will forget in approximately six months.&lt;/p&gt;
&lt;p&gt;And suddenly your definition of progress becomes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;How many technologies do I know?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’m becoming less interested in that question.&lt;/p&gt;
&lt;p&gt;I’d rather ask:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;How much of the system do I actually understand?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If I know five frameworks but don’t understand networking, that’s a problem.&lt;/p&gt;
&lt;p&gt;If I know three cloud platforms but can’t explain what happens when a Linux process runs out of memory, that’s a problem.&lt;/p&gt;
&lt;p&gt;If I can deploy a Kubernetes cluster but don’t understand why I needed one in the first place, that’s a particularly interesting problem.&lt;/p&gt;
&lt;p&gt;Tools are useful.&lt;/p&gt;
&lt;p&gt;Understanding is more valuable.&lt;/p&gt;
&lt;h3 id="the-deeper-i-go-the-more-interesting-softwarebecomes"&gt;The deeper I go, the more interesting software becomes&lt;/h3&gt;
&lt;p&gt;The funny thing is that learning the lower layers hasn’t made higher-level development less interesting.&lt;/p&gt;
&lt;p&gt;It has made it more interesting.&lt;/p&gt;
&lt;p&gt;When I write an API now, I think differently about it.&lt;/p&gt;
&lt;p&gt;When I deploy an application, I think about the machine running it.&lt;/p&gt;
&lt;p&gt;When I write concurrent code, I think about what the runtime and operating system are actually doing.&lt;/p&gt;
&lt;p&gt;When I design a system, I think more about failure instead of just the happy path.&lt;/p&gt;
&lt;p&gt;The layers aren’t separate.&lt;/p&gt;
&lt;p&gt;They’re connected.&lt;/p&gt;
&lt;p&gt;A web request eventually becomes bytes.&lt;/p&gt;
&lt;p&gt;Those bytes travel through networks.&lt;/p&gt;
&lt;p&gt;Processes consume resources.&lt;/p&gt;
&lt;p&gt;Data ends up somewhere on storage.&lt;/p&gt;
&lt;p&gt;The operating system manages all of it.&lt;/p&gt;
&lt;p&gt;And underneath all of that is hardware executing instructions.&lt;/p&gt;
&lt;p&gt;Which is slightly insane when you think about it.&lt;/p&gt;
&lt;p&gt;You can write:&lt;/p&gt;
&lt;p&gt;fetch(&amp;quot;/users&amp;quot;)&lt;/p&gt;
&lt;p&gt;and somehow that eventually involves electricity moving around inside a machine, packets travelling through networks, operating systems scheduling work, and hardware executing instructions.&lt;/p&gt;
&lt;p&gt;And I used to think the interesting part was the React component.&lt;/p&gt;
&lt;p&gt;The React component is still pretty cool, though.&lt;/p&gt;
&lt;h3 id="im-not-trying-to-become-a-10x-engineer"&gt;I’m not trying to become a “10x engineer”&lt;/h3&gt;
&lt;p&gt;I’ve never been particularly interested in that idea.&lt;/p&gt;
&lt;p&gt;I don’t want to optimize myself into a machine that produces pull requests.&lt;/p&gt;
&lt;p&gt;I want to become the kind of engineer who can sit in front of an unfamiliar system and eventually figure it out.&lt;/p&gt;
&lt;p&gt;Give me a strange codebase.&lt;/p&gt;
&lt;p&gt;Give me a broken server.&lt;/p&gt;
&lt;p&gt;Give me an unfamiliar protocol.&lt;/p&gt;
&lt;p&gt;Give me a performance problem.&lt;/p&gt;
&lt;p&gt;Give me a system with terrible documentation.&lt;/p&gt;
&lt;p&gt;I want my first reaction to be curiosity instead of panic.&lt;/p&gt;
&lt;p&gt;Although some panic is probably acceptable.&lt;/p&gt;
&lt;p&gt;That’s the skill I’m actually chasing.&lt;/p&gt;
&lt;p&gt;Not knowing everything.&lt;/p&gt;
&lt;p&gt;Knowing how to find out.&lt;/p&gt;
&lt;h3 id="maybe-thats-what-engineering-reallyis"&gt;Maybe that’s what engineering really is&lt;/h3&gt;
&lt;p&gt;The older I get as a developer, the less impressive syntax feels.&lt;/p&gt;
&lt;p&gt;Writing code is important, but code is only one part of the job.&lt;/p&gt;
&lt;p&gt;The interesting part is understanding why the system behaves the way it does.&lt;/p&gt;
&lt;p&gt;Understanding constraints.&lt;/p&gt;
&lt;p&gt;Understanding trade-offs.&lt;/p&gt;
&lt;p&gt;Understanding failure.&lt;/p&gt;
&lt;p&gt;Understanding the environment your software lives in.&lt;/p&gt;
&lt;p&gt;And understanding enough of the underlying machine that you aren’t completely helpless when an abstraction breaks.&lt;/p&gt;
&lt;p&gt;That’s where I want to go.&lt;/p&gt;
&lt;p&gt;I still love building web applications.&lt;/p&gt;
&lt;p&gt;I still enjoy React.&lt;/p&gt;
&lt;p&gt;I still write APIs.&lt;/p&gt;
&lt;p&gt;I still use frameworks.&lt;/p&gt;
&lt;p&gt;I’m not abandoning abstraction.&lt;/p&gt;
&lt;p&gt;I’m just becoming more interested in what exists underneath it.&lt;/p&gt;
&lt;p&gt;Because eventually, I don’t want to just be someone who knows how to use computers.&lt;/p&gt;
&lt;p&gt;I want to be someone who understands them.&lt;/p&gt;
&lt;p&gt;Even if that means occasionally spending six hours debugging something that turns out to be a typo.&lt;/p&gt;
&lt;p&gt;And I think that’s a much more interesting journey.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://medium.com/_/stat?event=post.clientViewed&amp;amp;referrerSource=full_rss&amp;amp;postId=b94385de2ffb" alt=""&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@tacherasasi/i-want-to-understand-computers-not-just-use-them-b94385de2ffb?source=rss-9a41d7ec29fb------2"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>