Teleporting Through the Code: Why I Traded Spatial Maps for Semantic Logic
Posted on Wed 08 April 2026 in Technology • 14 min read
Table of Contents
The Broken Autopilot: Defining the Terrain
Have you ever considered how much of your life is handled by background processes? For most people, basic functions like swallowing and breathing are automatic, handled by the system's kernel without any conscious input. For me, these are manual system calls. I call this "Manual Mode." I don’t have a background thread for swallowing. Every single swallow is a conscious execution; if I lose focus, I find myself choking or realizing I’ve stopped clearing my throat entirely. My breathing follows a similar logic. While my body technically keeps me alive, it doesn't do it efficiently. If I’m deep in a coding problem, I forget the instruction to breathe deeply. My system starts running on shallow air, my intracranial pressure spikes, and I end up with a system crash in the form of a debilitating headache. Every breath is a manual command, and the CPU cycles required to keep my physical hardware running are cycles I can't use for anything else.
This "Manual Mode" isn't just about my physical body; it extends to the very space I inhabit. If navigating my own skin requires a manual override, navigating my own home requires a total recalculation. This is where Topographical Agnosia begins.
The Logic Tax of Space
If the manual effort of breathing and swallowing is the physical tax I pay to keep my body running, Topographical Agnosia (TA) is the logic tax I pay to exist in space. Most people have an internal sense of direction that automatically knows the layout of a building. My brain doesn't store that data. For me, living in a house, even one I’ve lived in for three years, is like following a set of text-based directions where I can only see one line at a time. As soon as I act on a direction, the instruction disappears.
There's a profound irony in being a stranger in your own home. Knowing where the kitchen is isn't automatic; I solve a complex puzzle to get there every time I stand up. Success depends on finding a landmark, like the specific texture of a rug or the edge of a bookshelf, to logically deduce my location. Rather than walking through my house, I'm manually navigating a series of if/then statements. When I open a door, it's a brand-new discovery. Every trip for a glass of water is a manual mission that drains the same precious energy I need just to keep my physical system stable.
Topographical Agnosia provides the missing map, but my neurological "Manual Mode" provides the dead battery.
Together, they create a reality where I can't afford the luxury of spatial navigation. I simply don't have the spare cycles to spend on a world that refuses to stay still.
Most parts of the world are designed for people with the ability to build mental maps, or at least to be able to glance around and use visual cues to deduce their location. As a totally blind person with TA, this is a constant source of anxiety and exhaustion. The world is a maze without landmarks, and every step is a gamble. However, in the realm of programming, especially with tools like the Command Line Interface (CLI), I found a refuge. In programming, you don't have to walk through a directory structure or visually scan for files. You can call a name, and the data appears. In a terminal, a file's location isn't a point in space; it’s a string of characters. I don't need a map to find it; I just need its name. This is what I call teleportation. The logic of code allows me to bypass the need for spatial navigation entirely. Instead of trying to build a mental map of my codebase, I can rely on semantic logic to get me where I need to go. This is why I transitioned from frontend development, which relies heavily on spatial metaphors, to backend development and CLI tools that allow for this kind of teleportation.
The Frontend Trap: A Map with No Landmarks
The Semantic Anchor of HTML
My early days with web development were deceptively comfortable because of HTML. To a screen reader, and to my brain,
HTML is just a nested list of facts. An <h1> isn't "big text at the top of the page"; it's simply the First Important
Thing. An <ul> isn't a vertical list on the left sidebar; it’s a Collection of Related Items. A <main> element feels
like a labeled container for the main content. A <nav> is a container for navigation links, something that as a screen
reader user, I can easily understand and identify. HTML leverages my verbal memory. I don't need to visualize where a
button sits on a screen; I just need to know what that button is. In this world, everything has a name and a role.
It’s a predictable environment where "what" is always more important than "where." As long as I stayed within the semantic lines of well-structured HTML, the digital world felt like a place I could finally navigate without a manual override.
The Shifting Maze of CSS
When I ventured into CSS and JavaScript, the illusion of stability shattered. The Box Model isn't a box; it's a set of invisible layers that can change based on the content inside them. The z-index isn't a stack; it's a constantly shifting hierarchy that can rearrange itself based on the smallest change.
Responsive design isn't a layout; it's a shape-shifting entity that can look completely different on various devices. These concepts aren't just difficult to understand; they're impossible to map in my brain. They feel like a maze that changes its walls every time I try to navigate it. The spatial metaphors that these technologies rely on are completely inaccessible to me. I can't build a mental model of how elements relate to each other in space, and the constant changes mean that even if I could, it would be outdated the moment I try to use it. This is why I found myself increasingly frustrated with frontend development and drawn to the more stable, logic-based world of backend development and CLI tools.
The Jackhammer of Change
The rapid pace of change in frontend development is a kind of virtual construction noise for me. When I attended school at the Texas School for the Blind and Visually Impaired (TSBVI), I had regular orientation and mobility (O&M) training lessons to help me learn how to navigate physical spaces. These lessons were extremely difficult at the best of times. The teacher would try to teach me a route, sometimes 15 or more times, but when they asked me to walk it with minimal guidance, I would often fail. If I had any clue where I was going, and we walked into a construction zone, the noise and chaos would completely disrupt my ability to orient myself.
The constant changes in frontend development feel like that construction noise. Every new framework, every new design trend, every new tool is like a jackhammer blasting through the mental map I’m trying to build. It’s not just overwhelming; it’s actively disruptive to my ability to learn and navigate the space of frontend development.
The "C" Friction: The Neighborhood of Addresses
If frontend development is a shifting maze, programming in C is like being given a neighborhood of street signs without ever being able to see the neighborhood itself. In C, you have memory addresses and pointers that allow you to access specific locations in memory. For most programmers, this is a powerful tool that allows for efficient memory management. For me, it’s like being handed a list of street names and house numbers without ever being able to visualize the layout of the neighborhood. I can understand that a pointer is a reference to a specific memory address, but I have no mental map of where that address is in relation to anything else.
It’s a constant struggle to keep track of these coordinates in my head, and it feels like trying to navigate a city with no landmarks, no sense of direction, and no capacity to visualize the layout. This is why I found C to be particularly challenging and why I gravitated towards languages and tools that allow for more semantic navigation rather than spatial navigation.
Bit-Level Blindness
This issue also shows when trying to work with bitwise operations. For example, earlier today I was working on the Grains exercise on Exercism, which requires you to calculate the number of grains of wheat on a chessboard. One way to do this is using bitwise shifts to calculate powers of 2. I was able to do this in Python without any issues because I could focus on the logic of the calculation, but in C, when I tried to shift 1 by 64 bits to calculate the total number of grains on the board, the number overflowed, and I was unable to understand the output because I had no mental model of how the bits were being manipulated in memory. This was like trying to understand a complex machine without ever being able to see its inner workings.
The Cost of Emulation: Resource Conflicts
Recognizing that my struggle with C pointers or CSS layouts isn't just a math problem is crucial. It's a Resource Conflict. Because of my Topographical Agnosia, my brain can't see space. To compensate, I have to use raw, conscious logic to build a temporary, fragile mental model of where a pointer or a div might be. This emulation of spatial awareness is a high-power process. It drains the same limited energy bank I use for my "Manual Mode" physical survival.
When I'm forced to act as the "Manual Memory Manager," I'm effectively stealing CPU cycles from my own physical safety. If I spend thirty minutes trying to visualize how 64 bits are arranged in a register, I'm not just doing math; I'm exhausting the neurons that tell me how to stay upright and keep my airway clear. For me, a system overload in code can lead to a literal system crash in my body.
The Backend Haven: Teleporting with Logic
Teleporting with Python and SQL
If memory management in C is like walking to an address, Python and SQL are like teleportation. In Python, I can import a module or call a function by name, and the logic of the codebase allows me to access the functionality I need without ever having to walk through a directory structure. In SQL, I can query a database by specifying the table and conditions, and the data appears without me having to navigate through a file system.
This is the kind of teleportation that I find incredibly liberating. It allows me to bypass the need for spatial navigation entirely and rely on semantic logic to get me where I need to go. Where C relies on manual memory management, Python has automatic garbage collection. This means I don't have to keep track of memory addresses or worry about freeing memory; I can just focus on the logic of my code. Similarly, SQL abstracts away the underlying data storage and allows me to interact with data using a high-level query language. These tools allow me to teleport to the functionality I need without having to navigate through a spatial representation of the codebase. This is why I transitioned from frontend development, which relies heavily on spatial metaphors, to backend development and CLI tools that allow for this kind of teleportation.
The Sanctuary of the Shell
To function at my best, I need quiet, both literally and figuratively. The Command Line Interface (CLI) provides that
quiet, and I often think of it as my Quiet Room. Fuzzy searching with fzf lets me jump to a file by name and open it
directly. When I need to find text, ripgrep searches the entire codebase to locate specific strings instantly. Using
fd allows me to find files by extension quickly without ever having to scan through directories. These tools allow me
to bypass the need for spatial navigation and rely on semantic logic to get me where I need to go. Instead of trying to
build a mental map of my codebase, I can use these tools to teleport directly to the functionality I need, which is a
much more efficient and accessible way for me to work.
The Spatial Trap of Sound
Audiogames are often held up as the gold standard for blind accessibility, but for me, they represent another spatial trap. Most of these games rely on directional audio, requiring the player to hear a sound and immediately understand its exact coordinates in a 3D environment. You're expected to tell where a noise is coming from and act on it instantly. My brain can't process this data. Because I lack the internal mapping driver to handle directional cues, I often move my character the wrong way. A sound to the left requires a manual calculation rather than an intuitive movement.
When a game layers multiple sounds at once, it creates a literal sensory overload. It's a buffer overflow for my mind. My CPU cycles are so busy trying to sort the "Where" of the noise that I lose the ability to manage my own physical system. This is why I find refuge in incremental, text-based games like Trimps or Evolve. They offer complexity and progress through pure facts and data points, demanding no spatial awareness and offering total semantic stability.
The Barrier of Voice Interfaces
Voice interfaces present a similar barrier. Between word-finding issues and the energy required to maintain the "Manual Mode" of my breathing and speech, real-time voice commands are a huge neurological challenge.
Text-based programming is the solution. It provides a persistent, stable environment where I can read and re-read at my own pace. Using comments as landmarks and relying on the logical structure of the code allows me to connect the dots. The code stays still on the screen long enough for me to understand the logic, which is crucial for my ability to function effectively.
Redefining Independence
In the world of blind education, specifically within organizations like the National Federation of the Blind (NFB) or schools like TSBVI, there's a heavy emphasis on "Independence" at all costs. The goal is often to prove that a blind person can do exactly what a sighted person does, in exactly the same way. We're taught that success is walking a route alone, 15 times over, until it's memorized.
But for someone with Topographical Agnosia and a physical "Manual Mode," this version of independence is a resource leak. When I'm told that I must be able to navigate a complex spatial environment or a shifting frontend layout to be independent, I'm being told to ignore my own hardware limitations. Trying to force a brain without a mapping driver to act like a cartographer doesn't lead to independence; it leads to a total system crash.
Success Through Interdependence
Redefining success was a necessity. In the physical world, I was taught that independence meant walking the route; in the digital world, I learned that success means teleporting. I don't walk alone anymore, choosing instead to collaborate with my tools to offload the spatial work. They handle the file finding and memory management, which frees up my limited CPU cycles to do what I do best: solve problems. Using a CLI isn't a crutch or a lesser way of working; it's an optimized workflow that offloads the spatial "where" so I can focus on the logical "what." This is Interdependence, and for me, it's the only sustainable way to live.
Conclusion: The Logician's Victory
If you can't read the map, stop trying to be a cartographer; start being a logician. We spend so much energy trying to fix our broken parts to fit a spatial world, but code doesn't require us to be spatial. It only requires us to be logical. When I stopped trying to visualize the neighborhood of C pointers and started teleporting through Python and the CLI, I didn't just become a better developer. I became a person who could finally breathe.
To my fellow multiply-disabled individuals who feel like they're failing at standard accessibility: maybe the tools aren't built for your nervous system. Standard accessibility often still relies on the metaphor of a map. If that map exhausts you, come to the Quiet Room of the terminal. In the CLI, you aren't lost. You're exactly where you need to be, just one command away from anywhere else.