WEBVTT

00:00:00.000 --> 00:00:03.600
Imagine you're dropped, completely blindfolded,

00:00:03.600 --> 00:00:06.660
into this massive, just infinitely expanding

00:00:06.660 --> 00:00:08.560
office building. Oh, that sounds terrifying.

00:00:08.679 --> 00:00:10.580
Right. I mean, you have absolutely no idea what

00:00:10.580 --> 00:00:13.480
floor you're on, what wing you're in, or which

00:00:13.480 --> 00:00:15.679
department even surrounds you. You're just totally

00:00:15.679 --> 00:00:18.120
lost. Exactly. So you take off the blindfold,

00:00:18.440 --> 00:00:21.059
but every single hallway looks exactly the same.

00:00:21.420 --> 00:00:24.239
Yeah, the classic maze. Yeah. And you need a

00:00:24.239 --> 00:00:27.280
way to figure out where you are before you can,

00:00:27.280 --> 00:00:29.719
you know, actually do any work at all. You need

00:00:29.719 --> 00:00:32.079
the digital equivalent of finding that giant,

00:00:32.079 --> 00:00:35.340
you are here, red dot on a mall map. Which is

00:00:35.340 --> 00:00:38.119
so crucial. Right. And for you, sitting right

00:00:38.119 --> 00:00:40.119
there at your computer today, that red dot is

00:00:40.119 --> 00:00:43.259
actually a seemingly simple string of just three

00:00:43.259 --> 00:00:47.159
lowercase letters. PWD. Right. Which stands for

00:00:47.159 --> 00:00:50.289
Print Working Directory. And welcome to today's

00:00:50.289 --> 00:00:52.429
dupe dive, by the way. Our mission today is to

00:00:52.429 --> 00:00:55.009
take this single Wikipedia article about a basic

00:00:55.009 --> 00:00:58.549
terminal command and we'll extract a really profound

00:00:58.549 --> 00:01:00.990
exploration of how we orient ourselves in digital

00:01:00.990 --> 00:01:04.689
spaces. It's such a great topic because those

00:01:04.689 --> 00:01:08.150
three keystrokes, they carry like the entire

00:01:08.150 --> 00:01:11.870
weight of user orientation and actually looking

00:01:11.870 --> 00:01:14.530
at the backdrop we have of today, this massive

00:01:14.530 --> 00:01:17.469
sprawling blueprint of a digital file system.

00:01:18.269 --> 00:01:20.769
You can really see why it's necessary. It's huge.

00:01:21.150 --> 00:01:22.909
Yeah. Because a digital file system isn't just

00:01:22.909 --> 00:01:26.390
a simple list. It is a labyrinth. Without establishing

00:01:26.390 --> 00:01:29.329
your current context, navigation is just impossible.

00:01:29.510 --> 00:01:32.329
You're flying blind. Exactly. You can't safely,

00:01:32.329 --> 00:01:35.390
you know, move a file or delete a document or

00:01:35.390 --> 00:01:38.150
even run a program if you don't possess absolute

00:01:38.150 --> 00:01:40.549
certainty about your current location of that

00:01:40.549 --> 00:01:42.909
architecture. Okay, let's unpack this. Because

00:01:42.909 --> 00:01:45.049
we use this command, or at least it's graphical

00:01:45.049 --> 00:01:47.209
equivalence, like folders on a desktop every

00:01:47.209 --> 00:01:49.150
single day, right? Usually without a second thought.

00:01:49.209 --> 00:01:50.930
Oh, totally. We just take it for granted. We

00:01:50.930 --> 00:01:54.030
do. But to understand why we still rely on this

00:01:54.030 --> 00:01:56.390
you are here dot today, we really have to look

00:01:56.390 --> 00:01:59.189
back at exactly when and why it was first drawn.

00:01:59.609 --> 00:02:01.329
Because solving the whole where am I problem

00:02:01.329 --> 00:02:03.549
is like one of the oldest challenges in computing.

00:02:03.650 --> 00:02:05.569
It really is. And the source material actually

00:02:05.569 --> 00:02:09.370
traces this specific solution back exactly 51

00:02:09.370 --> 00:02:14.939
years. So we're talking June 1974. Wow, 1974.

00:02:15.240 --> 00:02:17.080
Yeah. We're looking at the laboratories of AT

00:02:17.080 --> 00:02:19.919
&T Bell Labs. And the command actually inherited

00:02:19.919 --> 00:02:22.740
its DNA from an even older operating system called

00:02:22.740 --> 00:02:26.360
Multics. Oh, right. Multics. Yeah. In Multics,

00:02:26.520 --> 00:02:29.639
they utilized a longer command. It's called print

00:02:29.639 --> 00:02:32.819
underscore jubierre. Print underscore jubierre,

00:02:32.879 --> 00:02:34.689
which is just... I mean, that's a bit clunky

00:02:34.689 --> 00:02:36.969
to type out dozens of times a day. John, nobody

00:02:36.969 --> 00:02:38.949
wants to type that. Which is why, when it made

00:02:38.949 --> 00:02:41.469
the jump to version 5 Unix, it was streamlined

00:02:41.469 --> 00:02:44.949
down to just PWD. Three highly efficient letters.

00:02:45.189 --> 00:02:47.110
Much better. But if we connect this to the bigger

00:02:47.110 --> 00:02:49.389
picture. The pivotal moment in this command's

00:02:49.389 --> 00:02:51.349
history wasn't actually just its invention in

00:02:51.349 --> 00:02:53.990
1974. It was its standardization. Standardization.

00:02:54.110 --> 00:02:57.610
Yeah. By 1987, PWD was incorporated into the

00:02:57.610 --> 00:03:00.090
XOpen Portability Guide, and then it subsequently

00:03:00.090 --> 00:03:03.729
became a core part of PSX .1 and the single -unit

00:03:03.729 --> 00:03:05.610
specification. OK, wait. I have to pause you

00:03:05.610 --> 00:03:08.030
there because that feels like a massive overcomplication.

00:03:08.110 --> 00:03:10.669
How so? Well, if this command is literally just

00:03:10.669 --> 00:03:13.349
printing a location, like just spitting out the

00:03:13.349 --> 00:03:15.030
text of the folder you're currently sitting in,

00:03:15.659 --> 00:03:18.400
Why did it require an international official

00:03:18.400 --> 00:03:20.860
standard like the single -unit specification?

00:03:21.240 --> 00:03:24.620
I mean, isn't here just here? See, that's the

00:03:24.620 --> 00:03:27.439
trap. We take the concept of here completely

00:03:27.439 --> 00:03:30.539
for granted because, well, we experience physical

00:03:30.539 --> 00:03:32.740
space continuously. Right. I can look around.

00:03:32.860 --> 00:03:34.520
Exactly. You look around. You see the walls.

00:03:34.639 --> 00:03:36.919
You feel the chair you're sitting in. A computer

00:03:36.919 --> 00:03:39.840
doesn't possess innate spatial awareness. for

00:03:39.840 --> 00:03:43.819
a machine here is an incredibly complex abstraction

00:03:43.819 --> 00:03:45.979
to track. Oh, I see, because it's just data.

00:03:46.360 --> 00:03:49.580
Right. And when we discuss POSACACS, which is

00:03:49.580 --> 00:03:52.180
the Portable Operating System Interface, we have

00:03:52.180 --> 00:03:55.180
to remember the landscape of the 1980s. Computing

00:03:55.180 --> 00:03:57.900
back then was wildly fragmented. Like the Wild

00:03:57.900 --> 00:04:00.539
West. Total Wild West. You had dozens of different

00:04:00.539 --> 00:04:02.219
vendors building different machines, running

00:04:02.219 --> 00:04:04.699
different proprietary operating systems, handling

00:04:04.699 --> 00:04:07.099
file hierarchies in completely different ways.

00:04:07.340 --> 00:04:10.689
So if I wrote like, a script to automate some

00:04:10.689 --> 00:04:14.210
work, and I told it to save a file here, moving

00:04:14.210 --> 00:04:18.149
that script from an AT &T machine to, say, a

00:04:18.149 --> 00:04:20.470
Sun Microsystems machine might just cause the

00:04:20.470 --> 00:04:23.389
whole thing to crash. The script would be hopelessly

00:04:23.389 --> 00:04:26.290
lost. It wouldn't know what here meant on the

00:04:26.290 --> 00:04:30.250
new machine. So standardizing PWD via P06 wasn't

00:04:30.250 --> 00:04:33.009
just about handing the user a convenient flashlight.

00:04:33.050 --> 00:04:35.269
It was bigger than that. Yeah, it was about creating

00:04:35.269 --> 00:04:37.689
a universal foundational language for digital

00:04:37.689 --> 00:04:40.250
location. By including it in the single UNIX

00:04:40.250 --> 00:04:42.689
specification, the architects of modern computing

00:04:42.689 --> 00:04:44.850
were mandating that no matter who built the operating

00:04:44.850 --> 00:04:46.970
system, there had to be an identical mechanism

00:04:46.970 --> 00:04:50.470
to answer the question, where am I? Which naturally

00:04:50.470 --> 00:04:52.430
brings up the actual mechanics of that question,

00:04:52.649 --> 00:04:55.009
right? Because how a computer retrieves this

00:04:55.009 --> 00:04:57.829
information under the hood is fascinating. It

00:04:57.829 --> 00:04:59.769
means the machine has to somehow look at itself.

00:04:59.889 --> 00:05:01.769
It does. It has to investigate its own state.

00:05:01.870 --> 00:05:03.750
Right. And the architecture of location is where

00:05:03.750 --> 00:05:06.230
the engineering gets truly elegant. According

00:05:06.230 --> 00:05:08.370
to the sources, the standalone command is actually

00:05:08.370 --> 00:05:10.750
written in the C programming language. Yep, good

00:05:10.750 --> 00:05:14.029
ol' C. And the version bundled in the GNU core

00:05:14.029 --> 00:05:16.709
utilities, which is basically the backbone of

00:05:16.709 --> 00:05:19.610
countless modern systems, was authored by a developer

00:05:19.610 --> 00:05:22.350
named Jim Meiering. And under the hood, this

00:05:22.350 --> 00:05:25.910
C program relies heavily on POCX system functions,

00:05:26.529 --> 00:05:29.569
specifically one called GetCode. Right, which

00:05:29.569 --> 00:05:32.180
stands for Get Current Working Directory. Let's

00:05:32.180 --> 00:05:34.220
get into the gears of that, because when that

00:05:34.220 --> 00:05:37.300
C program calls GetCrewed, what is actually happening?

00:05:37.379 --> 00:05:39.519
If the computer doesn't have eyes to look around,

00:05:39.620 --> 00:05:42.339
how does it build the map? Well, it has to interrogate

00:05:42.339 --> 00:05:45.100
the operating system's churnal. And it does so

00:05:45.100 --> 00:05:47.699
by essentially walking backward. Walking backward.

00:05:47.779 --> 00:05:51.519
Yeah. So every file and folder on a Unix -like

00:05:51.519 --> 00:05:54.279
system has an underlying identifier called an

00:05:54.279 --> 00:05:57.839
inode, an index node. OK. When GetCrewed is triggered,

00:05:57.980 --> 00:05:59.800
the system looks at the inode of the directory

00:05:59.800 --> 00:06:02.230
you are currently sitting in. But the catch is,

00:06:02.529 --> 00:06:04.629
it doesn't know the full path yet. It only knows

00:06:04.629 --> 00:06:06.050
the number of the room it's currently standing

00:06:06.050 --> 00:06:08.550
in. So it has to, what, open the door and look

00:06:08.550 --> 00:06:10.410
down the hallway? Basically, yeah. It looks at

00:06:10.410 --> 00:06:12.250
the parent directory, which is represented by

00:06:12.250 --> 00:06:14.529
two dots, you know, dot dot in Unix. Right, the

00:06:14.529 --> 00:06:17.269
dot dot. It checks the parents in Ode, then it

00:06:17.269 --> 00:06:20.069
scans that parent's contents to find the name

00:06:20.069 --> 00:06:22.870
that matches the original rooms in Ode. Oh, wow.

00:06:23.129 --> 00:06:25.310
And once it finds the name, it steps into the

00:06:25.310 --> 00:06:28.009
parent. looks at the grandparent directory, finds

00:06:28.009 --> 00:06:30.610
the name matching the parent's inode, and repeats

00:06:30.610 --> 00:06:33.610
this entire process. It literally climbs up the

00:06:33.610 --> 00:06:37.410
directory tree. Piece by piece, translating abstract

00:06:37.410 --> 00:06:40.290
inode numbers into human -readable text strings

00:06:40.290 --> 00:06:42.730
until it finally hits the root of the entire

00:06:42.730 --> 00:06:45.209
drive. That's incredible. It's piecing together

00:06:45.209 --> 00:06:47.670
the breadcrumbs in reverse. It starts where I

00:06:47.670 --> 00:06:50.209
am and just asks every single folder above me,

00:06:50.410 --> 00:06:52.430
who are you and how do I relate to you, until

00:06:52.430 --> 00:06:54.990
it reaches the absolute top. That's exactly how

00:06:54.990 --> 00:06:58.180
it works. But wait! If it has to do that recursive

00:06:58.180 --> 00:07:01.240
climb like querying the kernel and reading disk

00:07:01.240 --> 00:07:03.519
in nodes every single time I ask where I am,

00:07:03.740 --> 00:07:06.560
isn't that incredibly slow? It's very computationally

00:07:06.560 --> 00:07:09.000
expensive, yes. I mean, if I'm navigating through

00:07:09.000 --> 00:07:11.500
20 nested folders, I don't want my computer doing

00:07:11.500 --> 00:07:13.879
a massive reverse search just to print my location,

00:07:13.879 --> 00:07:17.199
you know? And that exact realization leads to

00:07:17.199 --> 00:07:19.639
a crucial divergence in how podode is actually

00:07:19.639 --> 00:07:22.240
implemented on your machine today. While that

00:07:22.240 --> 00:07:26.189
standalone GNUC program exists, The PIDOE you

00:07:26.189 --> 00:07:28.709
use in everyday navigation is almost certainly

00:07:28.709 --> 00:07:31.129
not that program. Right. The source has mentioned

00:07:31.129 --> 00:07:33.970
this explicitly. It's a shell built in for modern

00:07:33.970 --> 00:07:38.810
Unix shells, like sh, ash, bash, ksh, and zh.

00:07:38.990 --> 00:07:41.389
Which is a vital architectural distinction. The

00:07:41.389 --> 00:07:44.569
actual command line interface you're typing into

00:07:44.569 --> 00:07:46.889
doesn't want to spawn a whole external process

00:07:46.889 --> 00:07:49.029
just to find out where it is. Let me try a mechanical

00:07:49.029 --> 00:07:51.509
analogy here to see if I've got this. OK. Calling

00:07:51.509 --> 00:07:55.129
the external standalone C program is like, If

00:07:55.129 --> 00:07:57.089
someone asks me where I am and I've completely

00:07:57.089 --> 00:07:59.529
lost my memory, I'd have to pull out my smartphone,

00:07:59.889 --> 00:08:02.470
open a GPS app, wait for it to ping the satellites,

00:08:02.670 --> 00:08:04.610
and read the coordinates back to you. Had to

00:08:04.610 --> 00:08:06.529
use an external tool to figure out my own location.

00:08:06.649 --> 00:08:08.649
Right, that's calling the C program. But a shell

00:08:08.649 --> 00:08:11.149
built in is like simply knowing my home address

00:08:11.149 --> 00:08:13.949
by heart. The shell program itself just perpetually

00:08:13.949 --> 00:08:16.209
knows where it is. That is a perfect analogy.

00:08:16.350 --> 00:08:18.610
Right. And the way it knows it by heart is by

00:08:18.610 --> 00:08:21.339
maintaining its own internal ledger. The shell

00:08:21.339 --> 00:08:24.759
relies on environment variables. Like PWD. Exactly.

00:08:25.319 --> 00:08:28.540
POSIX compliant shells set and constantly update

00:08:28.540 --> 00:08:30.639
two key variables whenever you navigate using

00:08:30.639 --> 00:08:34.230
the CD or change directory command. Gotcha. So

00:08:34.230 --> 00:08:37.929
there's the PWD variable, which caches the absolute

00:08:37.929 --> 00:08:40.529
path of your current working directory. And then

00:08:40.529 --> 00:08:43.269
there's old EPWD, which caches your previous

00:08:43.269 --> 00:08:45.570
working directory. Oh, so the shell is basically

00:08:45.570 --> 00:08:47.950
acting as its own cartographer. Every time I

00:08:47.950 --> 00:08:50.269
type a command to move to a new folder, before

00:08:50.269 --> 00:08:52.450
it even moves me, it crosses out the old address

00:08:52.450 --> 00:08:54.629
in its ledger and writes down the new one. Exactly.

00:08:54.730 --> 00:08:57.750
It updates old EPWD, writes the new location

00:08:57.750 --> 00:09:01.279
to PWD, and only then executes the move. It creates

00:09:01.279 --> 00:09:03.500
a perfectly seamless experience. So when I type

00:09:03.500 --> 00:09:06.799
PWD, the shell just intercepts it. Yep. It doesn't

00:09:06.799 --> 00:09:09.259
run Jim Meiering C program. It doesn't trigger

00:09:09.259 --> 00:09:11.759
the kernel to walk the NO tree. It just reads

00:09:11.759 --> 00:09:13.580
the text string it already has stored in the

00:09:13.580 --> 00:09:16.820
PWD variable and prints it to your screen. Instantaneous.

00:09:17.200 --> 00:09:19.919
Zero overhead. OK. Here's where it gets really

00:09:19.919 --> 00:09:22.970
interesting. Because relying entirely on this

00:09:22.970 --> 00:09:25.669
internal diary creates a massive blind spot,

00:09:25.830 --> 00:09:28.110
doesn't it? Oh, absolutely. If the shell is just

00:09:28.110 --> 00:09:30.309
trusting a text variable in its memory to tell

00:09:30.309 --> 00:09:32.950
me where I am, what happens when that memory

00:09:32.950 --> 00:09:34.769
conflicts with the physical architecture of the

00:09:34.769 --> 00:09:37.279
hard drive? Well, you've just isolated the tension

00:09:37.279 --> 00:09:40.340
between logical paths and physical paths. This

00:09:40.340 --> 00:09:43.159
is where the concept of location becomes highly

00:09:43.159 --> 00:09:45.679
philosophical. The sources highlight this tension

00:09:45.679 --> 00:09:48.899
using symbolic links. And a symbolic link, or

00:09:48.899 --> 00:09:51.460
a symlink, basically operates like a redirect.

00:09:51.740 --> 00:09:53.480
Right. The article gives a very clear example.

00:09:54.240 --> 00:09:56.259
Let's say you navigate into a directory called

00:09:56.259 --> 00:09:59.559
slash home slash symlinked. But structurally,

00:09:59.799 --> 00:10:02.350
on the actual spinning disk, That folder doesn't

00:10:02.350 --> 00:10:05.230
contain any data. It's merely a pointer, redirecting

00:10:05.230 --> 00:10:07.169
the system to a completely different physical

00:10:07.169 --> 00:10:10.049
location, like slash home slash Realtor. So the

00:10:10.049 --> 00:10:12.269
shellager says you walked into semlinked. Oh.

00:10:12.370 --> 00:10:14.590
But the actual read -write head of the hard drive

00:10:14.590 --> 00:10:17.690
is pulling data from Realtor. Exactly. And according

00:10:17.690 --> 00:10:20.850
to PSEX standards, the default behavior of PDODE

00:10:20.850 --> 00:10:22.929
is to display the directory with the symbolic

00:10:22.929 --> 00:10:26.289
link info intact. Yes, the logical path. Right.

00:10:26.330 --> 00:10:28.590
It acts as if you passed it the dash L switch.

00:10:28.960 --> 00:10:32.360
L for logical. So it explicitly tells you that

00:10:32.360 --> 00:10:36.360
you are in slash home slash symlinked. It affirms

00:10:36.360 --> 00:10:38.940
the shortcut. And if you want the physical truth,

00:10:39.320 --> 00:10:41.779
you have to force its hand by giving it the dash

00:10:41.779 --> 00:10:45.980
P switch. P for physical, that bypasses the symbolic

00:10:45.980 --> 00:10:49.259
link, queries the actual disk, and reveals you're

00:10:49.259 --> 00:10:52.779
physically sitting in slash home slash realtor.

00:10:52.899 --> 00:10:55.539
Which forces the system to drop the ledger, call

00:10:55.539 --> 00:10:57.720
the kernel, and actually walk that inno tree

00:10:57.720 --> 00:10:59.960
we talked about to find the raw geography of

00:10:59.960 --> 00:11:02.279
the hardware. Wait. Think about what that means.

00:11:02.340 --> 00:11:05.559
By defaulting to dash L, POCX requires the computer

00:11:05.559 --> 00:11:07.980
to essentially lie to me. Well, lie is a strong

00:11:07.980 --> 00:11:10.940
word, but yes. It mandates that the system maintain

00:11:10.940 --> 00:11:13.190
an illusion. Let's ground this in the real world.

00:11:13.350 --> 00:11:15.210
Think of a massive corporate headquarters. Yeah,

00:11:15.330 --> 00:11:17.629
I'm picturing it. I walk into the lobby, look

00:11:17.629 --> 00:11:19.250
at the directory on the wall, and it says the

00:11:19.250 --> 00:11:21.809
prestigious executive suite is in room 100. That's

00:11:21.809 --> 00:11:24.750
the logical dash L path. So I walk through the

00:11:24.750 --> 00:11:27.590
door labeled 100, feeling very important. But

00:11:27.590 --> 00:11:29.649
behind the scenes, the architectural blueprints

00:11:29.649 --> 00:11:32.250
of the building, the physical dash P path show

00:11:32.250 --> 00:11:34.809
that room 100 is actually just an annex built

00:11:34.809 --> 00:11:37.269
over the loading dock across town. That's a great

00:11:37.269 --> 00:11:40.289
way to look at it. By default, PWD looks at the

00:11:40.289 --> 00:11:42.629
lobby directory and tells me I'm in the executive

00:11:42.629 --> 00:11:45.149
suite. It intentionally hides the blueprints

00:11:45.149 --> 00:11:47.750
from me. What's fascinating here is that this

00:11:47.750 --> 00:11:50.389
choice reveals a core philosophy in computing.

00:11:51.100 --> 00:11:55.299
user convenience and mental continuity must supersede

00:11:55.299 --> 00:11:58.519
system reality. That's wild! The default dash

00:11:58.519 --> 00:12:01.899
L behavior prioritizes the human being's fragile

00:12:01.899 --> 00:12:04.559
mental map over the machine's absolute physical

00:12:04.559 --> 00:12:06.860
state. But why is the truth considered fragile?

00:12:07.000 --> 00:12:08.820
I mean, if the computer knows I'm actually in

00:12:08.820 --> 00:12:11.360
real day, why not just tell me? Consider the

00:12:11.360 --> 00:12:14.039
cognitive load on the user. You deliberately

00:12:14.039 --> 00:12:17.039
typed a command to enter a folder named simlinked.

00:12:17.230 --> 00:12:19.649
In your mind, you've opened that specific drawer

00:12:19.649 --> 00:12:21.990
in your filing cabinet. Right. I expect to be

00:12:21.990 --> 00:12:25.230
in SimLinked. If you immediately typed PWD to

00:12:25.230 --> 00:12:28.169
confirm your location and the computer scat out

00:12:28.169 --> 00:12:31.590
a completely different path, real D, a path you

00:12:31.590 --> 00:12:34.649
never explicitly typed or requested, what's your

00:12:34.649 --> 00:12:37.649
immediate reaction? Panic. I'd assume the system

00:12:37.649 --> 00:12:39.950
had been compromised or I'd made a catastrophic

00:12:39.950 --> 00:12:41.889
typo. I'd be like, how did I get here? What did

00:12:41.889 --> 00:12:45.610
I break? Exactly. The system maintains the logical

00:12:45.610 --> 00:12:48.190
illusion because the logical path is the only

00:12:48.190 --> 00:12:50.769
thing that matters to your workflow. It protects

00:12:50.769 --> 00:12:53.049
you from the underlying chaos of the machine.

00:12:53.269 --> 00:12:55.169
It's saying, yes, your command worked perfectly.

00:12:55.289 --> 00:12:57.250
You are exactly where you're meant to go, even

00:12:57.250 --> 00:12:59.750
if the data is physically fragmented across multiple

00:12:59.750 --> 00:13:02.970
drives elsewhere. Right. However, the engineers

00:13:02.970 --> 00:13:05.350
knew they couldn't permanently obscure the truth.

00:13:05.809 --> 00:13:08.429
They built in that dash P switch for administrators,

00:13:08.750 --> 00:13:11.029
for troubleshooting, and for complex scripting.

00:13:11.190 --> 00:13:13.529
Because sometimes you need reality. Exactly.

00:13:14.269 --> 00:13:17.049
When a script needs to calculate exact disk usage,

00:13:17.549 --> 00:13:20.039
it can't rely on illusions. It needs the cold

00:13:20.039 --> 00:13:22.320
physical reality of the hard drive. So the dash

00:13:22.320 --> 00:13:25.019
L flag is the map you draw for a tourist and

00:13:25.019 --> 00:13:27.600
the dash P flag is the map you give to the structural

00:13:27.600 --> 00:13:31.019
engineer. That's brilliant. Yes. And because

00:13:31.019 --> 00:13:33.980
this need to manage the user's mental map, this

00:13:33.980 --> 00:13:36.259
absolute necessity of establishing a baseline,

00:13:36.740 --> 00:13:39.840
where am I, is so deeply ingrained in how humans

00:13:39.840 --> 00:13:42.240
interact with machines, it makes perfect sense

00:13:42.240 --> 00:13:44.620
that the concept couldn't remain confined strictly

00:13:44.620 --> 00:13:47.639
to Unix. No, it had to spread. The anxiety of

00:13:47.639 --> 00:13:50.740
being lost isn't just an AT &T Bell Labs problem,

00:13:50.820 --> 00:13:53.460
it is a fundamental computing problem. Which

00:13:53.460 --> 00:13:56.100
totally explains why the source material documents,

00:13:56.299 --> 00:13:59.980
PWD, escaping its original ecosystem to... an

00:13:59.980 --> 00:14:02.600
incredible array of diverse platforms. Yeah,

00:14:02.700 --> 00:14:04.960
the section detailing its presence across other

00:14:04.960 --> 00:14:07.639
operating systems is a fascinating historical

00:14:07.639 --> 00:14:10.799
cross -section. It lists the command in incredibly

00:14:10.799 --> 00:14:13.379
obscure environments. Oh yeah, like Spardados

00:14:13.379 --> 00:14:16.259
X. Yes, an operating system for 8 -bit Atari

00:14:16.259 --> 00:14:19.960
computers, Panos, Calibrios, even Windows CE

00:14:19.960 --> 00:14:22.519
5 .0, the software that ran on those early chunky

00:14:22.519 --> 00:14:25.480
enterprise PDAs and mobile barcode scanners.

00:14:25.559 --> 00:14:28.220
Its command line included PW. The syntax might

00:14:28.220 --> 00:14:30.179
fluctuate across these, but the function remains

00:14:30.179 --> 00:14:33.000
really rigid. Even in Microsoft's modern PowerShell

00:14:33.000 --> 00:14:36.120
environment, PW isn't a standalone tool, but

00:14:36.120 --> 00:14:38.559
it's implemented as a standard alias for their

00:14:38.559 --> 00:14:41.600
own C tool called Get Location. And in older

00:14:41.600 --> 00:14:44.259
Microsoft environments, like command .com and

00:14:44.259 --> 00:14:46.700
the Windows command prompt, the equivalent is

00:14:46.700 --> 00:14:49.779
typing CD with no arguments. Instead of changing

00:14:49.779 --> 00:14:52.179
the directory, it just prints your current location.

00:14:52.340 --> 00:14:55.440
And OpenVMS, which is an entirely different lineage

00:14:55.440 --> 00:14:58.330
of operating systems, uses the phrase Show default.

00:14:58.509 --> 00:15:01.830
Show default context. It's a very precise way

00:15:01.830 --> 00:15:04.570
to articulate what we're actually asking the

00:15:04.570 --> 00:15:07.110
machine to do. It really is. But you know, the

00:15:07.110 --> 00:15:08.750
implementation that really caught my attention

00:15:08.750 --> 00:15:10.950
wasn't in an operating system at all. It was

00:15:10.950 --> 00:15:13.009
in numerical computing environments. Oh, like

00:15:13.009 --> 00:15:16.350
MATLAB. Yeah. Software used by scientists, researchers,

00:15:16.450 --> 00:15:19.909
and engineers for heavy data -intensive mathematics.

00:15:20.610 --> 00:15:23.809
Both MATLAB and GANU Octave include a P2D function

00:15:23.809 --> 00:15:26.710
with nearly identical functionality to the 1974

00:15:26.710 --> 00:15:28.929
original. Because when a researcher is executing

00:15:28.929 --> 00:15:32.649
complex matrix algebra or like analyzing gigabytes

00:15:32.649 --> 00:15:35.509
of fluid dynamics data, the underlying operating

00:15:35.509 --> 00:15:37.710
system fades into the background. The application

00:15:37.710 --> 00:15:40.370
itself becomes the universe. Precisely. So what

00:15:40.370 --> 00:15:42.590
does this all mean? I mean, if I'm running a

00:15:42.590 --> 00:15:45.289
massive simulation in MATLAB and I execute a

00:15:45.289 --> 00:15:47.590
script to save the output graphs, I still need

00:15:47.590 --> 00:15:50.090
to know exactly which folder those files are

00:15:50.090 --> 00:15:52.009
going to drop into. I need an anchor point. You

00:15:52.009 --> 00:15:54.269
have to have an anchor. It just marvels me that

00:15:54.269 --> 00:15:57.139
a tiny three -letter concept born out of Multics

00:15:57.139 --> 00:15:59.879
half a century ago has infiltrated everything

00:15:59.879 --> 00:16:04.399
from 8 -bit Ataris to raw math software to modern

00:16:04.399 --> 00:16:07.059
enterprise servers running PowerShell. It's everywhere.

00:16:07.279 --> 00:16:10.240
Whether you type P or UD or get location or show

00:16:10.240 --> 00:16:12.940
default, you're participating in a universal

00:16:12.940 --> 00:16:15.440
human ritual of seeking spatial confirmation.

00:16:16.039 --> 00:16:18.340
And seeing this exact functionality replicated

00:16:18.340 --> 00:16:21.960
across wildly different paradigms proves that

00:16:21.960 --> 00:16:24.860
establishing a baseline of current state is the

00:16:24.860 --> 00:16:27.080
absolute prerequisite for computation. You can't

00:16:27.080 --> 00:16:29.100
do anything without it. Right. You cannot manipulate

00:16:29.100 --> 00:16:31.220
data, you cannot calculate formulas, and you

00:16:31.220 --> 00:16:33.840
cannot execute code if you do not first establish

00:16:33.840 --> 00:16:36.129
your anchor point in the digital sea. The underlying

00:16:36.129 --> 00:16:38.649
hardware has evolved from room -sized mainframes

00:16:38.649 --> 00:16:41.450
reading magnetic tape to microscopic solid -state

00:16:41.450 --> 00:16:45.370
drives. But the human need for a simple textual

00:16:45.370 --> 00:16:48.870
confirmation of, you are here, hasn't shifted

00:16:48.870 --> 00:16:52.259
one inch. We have covered immense ground today,

00:16:52.259 --> 00:16:54.899
exploring a single terminal command. We traced

00:16:54.899 --> 00:16:58.360
its origins from the 1974 laboratories of Multics

00:16:58.360 --> 00:17:01.100
and version 5 Unix. A long journey. Definitely.

00:17:01.559 --> 00:17:04.519
And we examined the massive effort to standardize

00:17:04.519 --> 00:17:07.200
digital location through POSAX, ending that whole

00:17:07.200 --> 00:17:10.079
fragmentation of the 1980s. We opened up the

00:17:10.079 --> 00:17:12.559
C code to watch GetForward exhaustively walk

00:17:12.559 --> 00:17:15.619
the InnoTree and contrasted that with the elegant

00:17:15.619 --> 00:17:17.900
efficiency of modern shell built -ins keeping

00:17:17.900 --> 00:17:21.099
an internal diary with the PWD variable. And

00:17:21.099 --> 00:17:23.440
we dug into the deep philosophical tension between

00:17:23.440 --> 00:17:25.640
the dash L logical illusion that comforts the

00:17:25.640 --> 00:17:28.440
user's mental map and the dash P physical reality

00:17:28.440 --> 00:17:30.680
of the actual disk structure. So for you, the

00:17:30.680 --> 00:17:32.559
listener, the next time you open a folder on

00:17:32.559 --> 00:17:34.140
your computer, whether you're clicking a graphical

00:17:34.140 --> 00:17:36.799
icon on a Mac, navigating a PC file explorer

00:17:36.799 --> 00:17:39.660
or SSShing into a remote Linux server, remember

00:17:39.660 --> 00:17:42.519
that there is a 51 year lineage quietly working

00:17:42.519 --> 00:17:45.849
behind the glass. Always watching. Yeah. It is

00:17:45.849 --> 00:17:48.670
constantly updating variables, tracking your

00:17:48.670 --> 00:17:51.589
every mood, actively managing illusion so you

00:17:51.589 --> 00:17:53.930
never have to feel the anxiety of being lost

00:17:53.930 --> 00:17:56.950
in an infinitely expanding digital office building.

00:17:57.549 --> 00:18:00.109
It is your primary flashlight in the dark. Before

00:18:00.109 --> 00:18:02.109
we close out this deep dive, though, there's

00:18:02.109 --> 00:18:04.329
one final detail from the source material that

00:18:04.329 --> 00:18:06.990
demands attention. Oh, what's that? Tucked away

00:18:06.990 --> 00:18:09.230
at the bottom of the page, in the see also section,

00:18:09.529 --> 00:18:12.289
there's a link to the concept of a breadcrumb

00:18:12.289 --> 00:18:15.869
navigation trail. Oh, a breadcrumb trail. Navigational

00:18:15.869 --> 00:18:17.809
markers left behind like the old fairy tale.

00:18:18.230 --> 00:18:21.849
Exactly. See, PDUDD provides an absolute definitive

00:18:21.849 --> 00:18:24.809
statement of where you are right in this exact

00:18:24.809 --> 00:18:26.990
millisecond. It's a static dot on the map. Right.

00:18:27.029 --> 00:18:30.069
You are here. But a breadcrumb trail, which has

00:18:30.069 --> 00:18:32.589
become the standard in modern graphical file

00:18:32.589 --> 00:18:34.990
explorers and web design, tells you the story

00:18:34.990 --> 00:18:37.799
of how you got there. It displays the entire

00:18:37.799 --> 00:18:40.119
hierarchical sequence of folders you click through

00:18:40.119 --> 00:18:42.759
to arrive at your current destination. I see.

00:18:43.019 --> 00:18:45.420
So PUD is the destination. The breadcrumb is

00:18:45.420 --> 00:18:47.759
the journey. Which leaves us with a really compelling

00:18:47.759 --> 00:18:50.319
question about the future of user interfaces.

00:18:51.640 --> 00:18:54.359
As our digital environments grow infinitely more

00:18:54.359 --> 00:18:57.420
complex, incorporating decentralized cloud storage,

00:18:57.759 --> 00:19:00.380
virtual drives, and collaborative workspaces,

00:19:00.619 --> 00:19:03.279
we're simply knowing where we are in the moment.

00:19:03.529 --> 00:19:05.930
continue to be enough. That's a good point. Or

00:19:05.930 --> 00:19:07.930
will the sheer scale of the labyrinth require

00:19:07.930 --> 00:19:10.369
us to always remember the precise trail of exactly

00:19:10.369 --> 00:19:13.089
how we arrived? Is the destination enough, or

00:19:13.089 --> 00:19:15.289
is the story of the journey now required to keep

00:19:15.289 --> 00:19:18.049
us grounded? We will let you, the listener, mull

00:19:18.049 --> 00:19:20.049
over that the next time you find yourself deep

00:19:20.049 --> 00:19:23.170
down a rabbit hole of nested folders. Thank you

00:19:23.170 --> 00:19:25.670
for joining us on this deep dive into the architecture

00:19:25.670 --> 00:19:28.670
of location. Stay curious, keep exploring, and

00:19:28.670 --> 00:19:30.549
we will catch you on the next deep dive.
