WEBVTT

00:00:00.000 --> 00:00:03.279
Imagine for a second that you are completely

00:00:03.279 --> 00:00:05.900
utterly lost. Oh, that's never a good feeling.

00:00:05.900 --> 00:00:09.019
Right. But you aren't wandering through, like,

00:00:09.400 --> 00:00:11.599
a dense forest. And you aren't turned around

00:00:11.599 --> 00:00:14.660
in some sprawling, unfamiliar city. OK, so where

00:00:14.660 --> 00:00:17.359
are we? You are staring at a completely blank

00:00:17.359 --> 00:00:20.079
screen. In the top left corner, there's just

00:00:20.079 --> 00:00:23.579
a single blinking cursor. Ah, the classic command

00:00:23.579 --> 00:00:27.199
line. Exactly. That's it. You are deep inside

00:00:27.199 --> 00:00:30.920
a massive, sprawling digital file system. There

00:00:30.920 --> 00:00:34.460
are no colorful folder icons to click, no windows

00:00:34.460 --> 00:00:36.479
to drag around. Zero visual cues whatsoever.

00:00:36.640 --> 00:00:39.479
None at all. You're just suspended in this dark,

00:00:39.759 --> 00:00:43.039
infinite void of data. So, in that moment of

00:00:43.039 --> 00:00:45.520
total digital disorientation, how do you find

00:00:45.520 --> 00:00:47.600
out where you actually are? Well, you type three

00:00:47.600 --> 00:00:51.119
little letters. P -W -D. Yeah. It acts as the

00:00:51.119 --> 00:00:53.600
ultimate digital compass. Welcome to the deep

00:00:53.600 --> 00:00:55.600
dive. Today we're decoding those three little

00:00:55.600 --> 00:00:57.460
letters that serve as the absolute center of

00:00:57.460 --> 00:00:59.579
gravity for your computer print working directory.

00:00:59.799 --> 00:01:02.700
It sounds almost too basic to warrant a deep

00:01:02.700 --> 00:01:04.420
dive, doesn't it? Like, just a tool that tells

00:01:04.420 --> 00:01:06.840
you where you are standing. Yeah, exactly. But,

00:01:06.939 --> 00:01:09.719
you know, PWD is not just a command. It is a

00:01:09.719 --> 00:01:12.780
foundational artifact of modern computing. We

00:01:12.780 --> 00:01:15.140
are talking about a piece of code that has literally

00:01:15.140 --> 00:01:18.260
shaped how digital environments are navigated,

00:01:18.620 --> 00:01:21.500
standardized, and, well, conceptualized for half

00:01:21.500 --> 00:01:23.900
a century. OK, let's unpack this. Because to

00:01:23.900 --> 00:01:26.099
understand why those three letters are so magical,

00:01:26.519 --> 00:01:29.939
we have to travel back in time to the moment

00:01:29.939 --> 00:01:32.400
this digital compass was forged. Right, that's

00:01:32.400 --> 00:01:34.000
the beginning. Yeah, we are tracing this back

00:01:34.000 --> 00:01:37.219
to AT &T Bell Laboratories. The date is June

00:01:37.219 --> 00:01:41.569
1974, that is 51 years ago. Tracing this back

00:01:41.569 --> 00:01:44.609
to Bell Labs in 74 means this single piece of

00:01:44.609 --> 00:01:47.469
C programming code has survived five decades

00:01:47.469 --> 00:01:50.209
of technological upheaval, essentially unchanged.

00:01:50.530 --> 00:01:52.510
Which is crazy to think about. It really is.

00:01:52.870 --> 00:01:55.609
That level of software durability is almost unheard

00:01:55.609 --> 00:01:58.189
of in an industry that, let's be honest, reinvents

00:01:58.189 --> 00:02:00.829
itself every six months. It appeared in version

00:02:00.829 --> 00:02:03.390
5 Unix. Yeah, and I was actually fascinated to

00:02:03.390 --> 00:02:06.010
learn that the concept predates Unix entirely.

00:02:06.230 --> 00:02:09.110
Oh, absolutely. The predecessor to Unix was this

00:02:09.110 --> 00:02:11.629
massive, highly complex operating system called

00:02:11.629 --> 00:02:14.310
Multics. And Multics had a command that did the

00:02:14.310 --> 00:02:17.110
exact same thing, but it was called print underscore

00:02:17.110 --> 00:02:19.750
do -it -er. Right. A bit of a mouthful compared

00:02:19.750 --> 00:02:22.389
to what we use now. Totally. The evolution from

00:02:22.389 --> 00:02:25.689
print underscore do -it -er to PWD makes perfect

00:02:25.689 --> 00:02:28.310
sense to me, though. It's how human language

00:02:28.310 --> 00:02:30.710
naturally evolves to be more efficient. It's

00:02:30.710 --> 00:02:33.129
a natural progression. Yeah, it is like how we

00:02:33.129 --> 00:02:36.349
took the clunky phrase Electronic mail and just

00:02:36.349 --> 00:02:38.349
shrunk it down to email or you know It's like

00:02:38.349 --> 00:02:40.969
the you are here red dot on a confusing shopping

00:02:40.969 --> 00:02:43.520
mall map. You just want it instantly That's true,

00:02:43.699 --> 00:02:46.080
but it wasn't just about linguistic convenience.

00:02:46.159 --> 00:02:49.080
It was actually born out of intense physical

00:02:49.080 --> 00:02:51.900
and mechanical limitations. Really? Like hardware

00:02:51.900 --> 00:02:55.280
limitations? Exactly. In the early 1970s, you

00:02:55.280 --> 00:02:57.759
have to picture what interacting with a computer

00:02:57.759 --> 00:03:00.750
actually looked and felt like. We are not talking

00:03:00.750 --> 00:03:03.210
about sleek, backlit keyboards here. Right, no

00:03:03.210 --> 00:03:05.990
touch screens. Not even close. People were interacting

00:03:05.990 --> 00:03:08.650
with these massive mainframe computers using

00:03:08.650 --> 00:03:13.030
teletype machines. Imagine a heavy, loud, mechanical

00:03:13.030 --> 00:03:16.210
typewriter that is literally stamping ink onto

00:03:16.210 --> 00:03:19.169
a continuous roll of physical paper. Oh, wow.

00:03:19.169 --> 00:03:21.169
So it was literally printing the output. Yes.

00:03:21.409 --> 00:03:24.569
Or you had very early terminal screens that rendered

00:03:24.569 --> 00:03:28.009
text at an agonizingly slow rate. You were perhaps

00:03:28.009 --> 00:03:31.580
transmitting data at like 10 characters per second

00:03:31.580 --> 00:03:34.419
over a screeching acoustic coupler modem. So

00:03:34.419 --> 00:03:36.580
every single character you typed and every single

00:03:36.580 --> 00:03:38.539
character the computer printed back to you had

00:03:38.539 --> 00:03:41.439
an actual physical cost and time and noise. Precisely.

00:03:41.659 --> 00:03:44.039
In that environment. Every single keystroke was

00:03:44.039 --> 00:03:46.780
precious. You absolutely did not want to type

00:03:46.780 --> 00:03:49.520
print underscore wyverdeer 50 times a day. I

00:03:49.520 --> 00:03:50.979
mean, my fingers would get tired just thinking

00:03:50.979 --> 00:03:52.719
about that. And you didn't want to wait for the

00:03:52.719 --> 00:03:55.159
machine to clack out a long, verbose response

00:03:55.159 --> 00:03:57.840
either. So the developers at Bell Labs, pioneers

00:03:57.840 --> 00:04:00.000
like Ken Thompson and Dennis Ritchie, they were

00:04:00.000 --> 00:04:02.300
building Unix and the C programming language

00:04:02.300 --> 00:04:04.960
to be minimalist. They prioritize raw utility.

00:04:05.400 --> 00:04:08.419
Yes. They ruthlessly stripped away unnecessary

00:04:08.419 --> 00:04:11.979
vowels and words to create a command line vocabulary

00:04:11.979 --> 00:04:14.580
that was incredibly terse. Like I said before,

00:04:15.080 --> 00:04:17.540
you want that you're here red dot on the map

00:04:17.540 --> 00:04:20.100
and you want it instantly. If I'm lost near the

00:04:20.100 --> 00:04:22.220
food court, I don't want to type out a full sentence

00:04:22.220 --> 00:04:25.160
to request a map overlay. Exactly. I just want

00:04:25.160 --> 00:04:27.259
to hit three keys and get my location so I can

00:04:27.259 --> 00:04:29.740
get back to work. And that minimalist survival

00:04:29.740 --> 00:04:33.019
instinct is exactly why it endured. But, you

00:04:33.019 --> 00:04:35.540
know, its survival wasn't just a matter of people

00:04:35.540 --> 00:04:39.000
liking the abbreviation. PWD transitioned from

00:04:39.000 --> 00:04:42.269
being a neat little eunuch shortcut into Well,

00:04:42.550 --> 00:04:44.709
a universal law of physics for the digital world.

00:04:44.930 --> 00:04:46.430
And that happened because of standardization.

00:04:46.709 --> 00:04:48.389
Exactly, because of standardization. Because

00:04:48.389 --> 00:04:50.910
by the 1980s, you had this massive explosion

00:04:50.910 --> 00:04:53.430
of different computer systems. The industry was

00:04:53.430 --> 00:04:55.790
kind of a mess of competing standards. It was

00:04:55.790 --> 00:04:58.629
the era often referred to as the Unix Wars. You

00:04:58.629 --> 00:05:01.850
had IBM pushing AIX, Hewlett -Packard pushing

00:05:01.850 --> 00:05:06.269
HPUX, Sun Microsystems with SunOS. Early computing

00:05:06.269 --> 00:05:08.050
had become the Wild West. Everyone had their

00:05:08.050 --> 00:05:11.680
own flavor. Right. Different machines spoke entirely

00:05:11.680 --> 00:05:13.920
different dialects. If you wrote a script to

00:05:13.920 --> 00:05:17.519
navigate a file system on an HP machine, it might

00:05:17.519 --> 00:05:20.399
completely break on an IBM machine. That sounds

00:05:20.399 --> 00:05:22.839
like a nightmare for developers. It was. The

00:05:22.839 --> 00:05:25.220
fragmentation was threatening to stall the entire

00:05:25.220 --> 00:05:27.639
software industry. Which brings us to the Digital

00:05:27.639 --> 00:05:30.879
Geneva Convention. The industry had to sit down

00:05:30.879 --> 00:05:34.129
and agree on basic rules of engagement. I noticed

00:05:34.129 --> 00:05:37.810
the x slash open portability guide from 1987

00:05:37.810 --> 00:05:40.350
in the research. Yes, that was a big step. And

00:05:40.350 --> 00:05:44.189
then the crucial one, POSX .1. Right, POSX. If

00:05:44.189 --> 00:05:47.089
we connect this to the bigger picture, POSX is

00:05:47.089 --> 00:05:50.449
the key. It stands for Portable Operating System

00:05:50.449 --> 00:05:53.649
Interface. It was essentially a treaty that ensured

00:05:53.649 --> 00:05:55.709
all these competing operating systems played

00:05:55.709 --> 00:05:57.750
by the same basic rules. So it forced them to

00:05:57.750 --> 00:06:00.290
agree on the basics. Exactly. By standardizing

00:06:00.290 --> 00:06:03.810
PWD within POSEX and the single UNIX specification,

00:06:04.170 --> 00:06:06.089
the industry agreed that no matter whose computer

00:06:06.089 --> 00:06:08.110
you sat down at, the machine would always answer

00:06:08.110 --> 00:06:11.250
the fundamental question. Where am I in the exact

00:06:11.250 --> 00:06:13.329
same way? But wait, let me push back on the mechanics

00:06:13.329 --> 00:06:15.269
of this for a second. Sure, go ahead. When I

00:06:15.269 --> 00:06:18.370
typed those three letters, is PWD a standalone

00:06:18.370 --> 00:06:20.870
software program that my computer fetches and

00:06:20.870 --> 00:06:23.689
runs, like a calculator app? Or is it just a

00:06:23.689 --> 00:06:26.050
feature baked directly into the shell's brain?

00:06:26.170 --> 00:06:28.129
That's a really good question. Because you have

00:06:28.129 --> 00:06:30.550
developers like Jim Meiering writing a specific

00:06:30.550 --> 00:06:32.670
version of it bundled in the GNU core utilities.

00:06:33.129 --> 00:06:35.889
So is it a separate app? It's a vital distinction.

00:06:36.050 --> 00:06:39.310
And the reality is that it's actually both. Today,

00:06:39.819 --> 00:06:42.839
PWD is largely implemented as a shell built -in

00:06:42.839 --> 00:06:47.000
in environments like ash, bash, k -ish, and zh.

00:06:47.180 --> 00:06:48.980
A built -in meaning it's just part of the shell

00:06:48.980 --> 00:06:51.370
itself. Right. Being a built -in means the shell

00:06:51.370 --> 00:06:53.310
doesn't have to waste time searching your hard

00:06:53.310 --> 00:06:56.149
drive to load an external program. It's a reflex.

00:06:56.310 --> 00:06:58.910
It just knows. But the standalone utility version,

00:06:59.089 --> 00:07:00.870
like the one Meiering wrote for the gene core

00:07:00.870 --> 00:07:03.310
utilities, that still exists on your system as

00:07:03.310 --> 00:07:06.029
a fallback. OK, so whether it's a reflex or a

00:07:06.029 --> 00:07:08.290
standalone tool, how is it actually figuring

00:07:08.290 --> 00:07:10.589
out where I am? Does the folder just have a name

00:07:10.589 --> 00:07:12.750
tag on it? This is where we get to the absolute

00:07:12.750 --> 00:07:15.110
genius of how early file systems were designed.

00:07:15.519 --> 00:07:17.560
Under the hood, whether it's the built -in or

00:07:17.560 --> 00:07:21.560
the utility, it relies on POC XC functions like

00:07:21.560 --> 00:07:24.680
getFRED or getFRED. GetFRED standing for Get

00:07:24.680 --> 00:07:27.259
Current Working Directory. Exactly. And no, the

00:07:27.259 --> 00:07:29.560
directory does not simply have a name tag. The

00:07:29.560 --> 00:07:31.920
computer actually has to play detective to figure

00:07:31.920 --> 00:07:34.620
out its own location. Hold on. You're telling

00:07:34.620 --> 00:07:36.379
me the folder doesn't even know its own name.

00:07:36.459 --> 00:07:39.300
It does not. In a Unix file system, a directory

00:07:39.300 --> 00:07:42.360
is essentially just a list of contents. It only

00:07:42.360 --> 00:07:44.939
knows its inode number. An inode number? Yeah.

00:07:44.980 --> 00:07:47.439
Think of an inode as a unique digital serial

00:07:47.439 --> 00:07:50.779
number or like a fingerprint for that specific

00:07:50.779 --> 00:07:53.300
chunk of data on the hard drive. Okay. I'm with

00:07:53.300 --> 00:07:55.259
you. So when you ask the computer, where am I,

00:07:55.500 --> 00:07:57.740
the system looks at the current directory's inode.

00:07:58.100 --> 00:08:00.519
Then it looks at the parent directory above it.

00:08:00.600 --> 00:08:03.319
It scans that parent's list of contents until

00:08:03.319 --> 00:08:06.139
it finds the matching inode fingerprint. Oh wow.

00:08:06.439 --> 00:08:08.519
So it finds the matching fingerprint in the parent's

00:08:08.519 --> 00:08:10.480
list and next to that fingerprint is the actual

00:08:10.480 --> 00:08:12.920
texturing of the name. Exactly. But it doesn't

00:08:12.920 --> 00:08:15.600
stop there. It then takes the parent's inode,

00:08:15.879 --> 00:08:18.819
moves up to the grandparent directory, and searches

00:08:18.819 --> 00:08:21.259
that list to find the parent's name. So it just

00:08:21.259 --> 00:08:23.240
keeps climbing the ladder. It recursively walks

00:08:23.240 --> 00:08:26.620
backward, step by agonizing step, building the

00:08:26.620 --> 00:08:29.160
path string piece by piece until it finally hits

00:08:29.160 --> 00:08:31.759
the very root of the entire file system, the

00:08:31.759 --> 00:08:34.759
ultimate slash directory. That is mind -blowing.

00:08:34.980 --> 00:08:38.200
It's literally tracing its own ancestry all the

00:08:38.200 --> 00:08:40.440
way back to the dawn of the hard drive. just

00:08:40.440 --> 00:08:42.480
to answer a simple three -letter question. And

00:08:42.480 --> 00:08:45.240
it does this in milliseconds. That's incredible.

00:08:45.700 --> 00:08:49.539
So PiosysX created this universal law that the

00:08:49.539 --> 00:08:52.200
computer must always tell you where you are and

00:08:52.200 --> 00:08:54.139
GetCrew does the detective work to build that

00:08:54.139 --> 00:08:56.259
path. That's the mechanism, yes. But that created

00:08:56.259 --> 00:08:58.659
a massive philosophical problem for developers.

00:08:59.340 --> 00:09:02.179
What if where you think you are isn't where your

00:09:02.179 --> 00:09:04.419
data actually lives? Here's where it gets really

00:09:04.419 --> 00:09:07.500
interesting. Ah, yes. The Sim -linked conundrum.

00:09:07.710 --> 00:09:10.750
This is where the strict logic of computing collides

00:09:10.750 --> 00:09:13.129
directly with human psychology. Right, because

00:09:13.129 --> 00:09:16.549
a symbolic link, or a symlink, is basically a

00:09:16.549 --> 00:09:19.870
redirect. Let's say you have a directory at slash

00:09:19.870 --> 00:09:22.909
home slash symlinked, but that directory doesn't

00:09:22.909 --> 00:09:25.309
actually contain any files. It's just a pointer.

00:09:25.549 --> 00:09:27.590
Exactly. It's a pointer to a totally different

00:09:27.590 --> 00:09:29.850
physical location on the hard drive. Let's say

00:09:29.850 --> 00:09:32.850
slack home slash realtor. I like to think of

00:09:32.850 --> 00:09:35.029
it as a teleportation portal in a video game.

00:09:35.169 --> 00:09:37.190
I love that analogy. You step through the door,

00:09:37.720 --> 00:09:40.980
labeled slash home slash simlinked, and instantly

00:09:40.980 --> 00:09:43.259
you are standing in a different room across the

00:09:43.259 --> 00:09:45.559
map. That's a great way to visualize it. And

00:09:45.559 --> 00:09:47.860
this is where the command has to make a choice

00:09:47.860 --> 00:09:50.820
about what truth it reports back to you. The

00:09:50.820 --> 00:09:54.220
command actually has specific switches or flags

00:09:54.220 --> 00:09:56.539
that govern this behavior. How did that work?

00:09:56.720 --> 00:09:58.799
Well, I'll outline the mechanics. If you append

00:09:58.799 --> 00:10:01.519
the dash L flag, which stands for logical, the

00:10:01.519 --> 00:10:03.559
computer plays along with the illusion. It prints

00:10:03.559 --> 00:10:06.759
out slash home slash simlinked. Got it. It tells

00:10:06.759 --> 00:10:08.460
me the name of the portal I just walked through.

00:10:08.600 --> 00:10:11.279
Right. But if you append the dash P flag, which

00:10:11.279 --> 00:10:14.100
stands for physical, the computer drops the illusion

00:10:14.100 --> 00:10:16.840
entirely. It ignores the teleportation portal.

00:10:17.139 --> 00:10:20.159
Oh, so it exposes the trick. Yes. It looks at

00:10:20.159 --> 00:10:22.840
the raw hardware, queries the physical disk structure,

00:10:23.200 --> 00:10:26.539
and prints the true directory slash home slash

00:10:26.539 --> 00:10:29.169
realtor. It gives you your absolute physical

00:10:29.169 --> 00:10:30.970
coordinates. Wait, let me make sure I'm getting

00:10:30.970 --> 00:10:34.110
this. The dash L flag respects my experience,

00:10:34.269 --> 00:10:37.570
but the dash P flag strips away the matrix and

00:10:37.570 --> 00:10:39.669
shows me the raw code of the server. That is

00:10:39.669 --> 00:10:42.289
the exact dichotomy. Yeah. And what's fascinating

00:10:42.289 --> 00:10:46.149
here is why POCX mandates the default behavior.

00:10:46.289 --> 00:10:49.710
Which is. If you just type PWD without any flags,

00:10:50.250 --> 00:10:52.950
the POCX standard requires the system to act

00:10:52.950 --> 00:10:55.730
as if you use the dash L switch. Really? So it

00:10:55.730 --> 00:10:58.210
defaults to the logical path? Yes. It actively

00:10:58.210 --> 00:11:00.330
chooses to prioritize your perceived journey

00:11:00.330 --> 00:11:03.549
over the machine's literal physical truth. Why

00:11:03.549 --> 00:11:05.929
would a computer system, which is built on absolute

00:11:05.929 --> 00:11:08.669
mathematical truths, deliberately lie to me about

00:11:08.669 --> 00:11:10.909
where my data is physically spinning on the hard

00:11:10.909 --> 00:11:13.230
drive? Because the engineers realized that absolute

00:11:13.230 --> 00:11:15.250
truth is incredibly jarring to the human mind.

00:11:15.289 --> 00:11:18.250
Think about it. You, the user, conceptually walked

00:11:18.250 --> 00:11:21.210
down a path called slash home slash simlinked

00:11:21.210 --> 00:11:22.970
and then you asked the computer where you were

00:11:22.970 --> 00:11:25.629
and it suddenly replied slash home slash realtor.

00:11:25.889 --> 00:11:28.809
It would break my mental map of the system. Exactly.

00:11:28.889 --> 00:11:30.690
You would think you had made a mistake or that

00:11:30.690 --> 00:11:32.649
the system was broken. So it's protecting my

00:11:32.649 --> 00:11:35.549
sanity. It's prioritizing my human intuition

00:11:35.549 --> 00:11:38.330
over the rigid architecture of the silicon. It

00:11:38.330 --> 00:11:40.950
makes navigation intuitive rather than strictly

00:11:40.950 --> 00:11:44.190
literal. The machine accommodates the human mind

00:11:44.190 --> 00:11:46.809
rather than forcing the human mind to accommodate

00:11:46.809 --> 00:11:49.029
the physical architecture of the hard drive.

00:11:49.769 --> 00:11:52.649
It's a profound moment of user -centric design

00:11:52.649 --> 00:11:55.830
buried inside a 50 -year -old command line interface.

00:11:56.409 --> 00:11:59.129
And that intuitive approach to navigation was

00:11:59.129 --> 00:12:02.090
so conceptually vital that it couldn't be contained

00:12:02.090 --> 00:12:05.129
to just Unix. It bled out into almost every other

00:12:05.129 --> 00:12:08.169
digital ecosystem imaginable. I was looking into

00:12:08.169 --> 00:12:10.049
some of the more obscure places this concept

00:12:10.049 --> 00:12:13.289
shows up. Like Spartados X and Panos. Yes, and

00:12:13.289 --> 00:12:16.009
Calibrio S. Calibrio S is this incredibly niche

00:12:16.009 --> 00:12:18.350
operating system that is written entirely from

00:12:18.350 --> 00:12:21.029
scratch in raw assembly language. It is so tiny

00:12:21.029 --> 00:12:23.169
it can fit on a single floppy disk. Oh, wow.

00:12:23.350 --> 00:12:25.909
Yeah. But even there, developers writing in raw

00:12:25.909 --> 00:12:28.289
punishing assembly code feel so compelled by

00:12:28.289 --> 00:12:30.759
this concept that they included it. It just proves

00:12:30.759 --> 00:12:33.080
that the need for a digital anchor transcends

00:12:33.080 --> 00:12:35.460
the programming language or the specific operating

00:12:35.460 --> 00:12:39.460
system. You see it in Windows CE 5 .0's command

00:12:39.460 --> 00:12:43.179
prompt. You see it in OpenVMS where the equivalent

00:12:43.179 --> 00:12:46.200
is show default. It's everywhere. And in modern

00:12:46.200 --> 00:12:49.940
Microsoft PowerShell, if you type PWD, it works

00:12:49.940 --> 00:12:52.379
instantly. because Microsoft specifically set

00:12:52.379 --> 00:12:54.500
it up as an alias for their own get location

00:12:54.500 --> 00:12:57.340
cmdlet, they knew millions of developers would

00:12:57.340 --> 00:12:59.159
just instinctively type those three letters.

00:12:59.179 --> 00:13:02.080
With muscle memory. But I noticed that older

00:13:02.080 --> 00:13:04.120
Microsoft systems do this completely differently.

00:13:05.120 --> 00:13:08.100
In MS -DOS and the classic Windows command prompt,

00:13:08.460 --> 00:13:10.940
to find your location, you actually type the

00:13:10.940 --> 00:13:13.840
CD command. Right, which stands for change directory.

00:13:13.940 --> 00:13:15.919
Yeah, you type it with no arguments. Yeah. Just

00:13:15.919 --> 00:13:18.960
CD and hit Enter. So if the Bell Labs concept

00:13:18.960 --> 00:13:21.629
was so perfect, Why did DOS combine them? Isn't

00:13:21.629 --> 00:13:23.370
asking the change directory command to tell you

00:13:23.370 --> 00:13:24.870
where you're at kind of like asking a steering

00:13:24.870 --> 00:13:26.730
wheel to tell you where your car is parked? That

00:13:26.730 --> 00:13:29.230
is a very sharp analogy. The steering wheel is

00:13:29.230 --> 00:13:32.370
for moving. The GPS is for locating. This raises

00:13:32.370 --> 00:13:34.649
an important question about how different engineering

00:13:34.649 --> 00:13:38.649
cultures solve the exact same human need. Microsoft's

00:13:38.649 --> 00:13:41.090
early engineers clearly viewed navigation as

00:13:41.090 --> 00:13:44.870
a single unified domain. How so? To them, the

00:13:44.870 --> 00:13:47.509
tool you use to move should logically also be

00:13:47.509 --> 00:13:49.529
the tool you use to check your current state.

00:13:49.639 --> 00:13:52.820
It's a fundamentally different design philosophy,

00:13:53.500 --> 00:13:55.899
combining action and state reporting into one

00:13:55.899 --> 00:13:58.759
single tool to save mental overhead for the user.

00:13:58.919 --> 00:14:00.700
I guess that makes sense. Like, I only want to

00:14:00.700 --> 00:14:03.039
remember one command for anything related to

00:14:03.039 --> 00:14:05.639
moving. Exactly. But what's truly remarkable

00:14:05.639 --> 00:14:08.039
isn't the difference in syntax between Microsoft

00:14:08.039 --> 00:14:11.639
and Unix. It's the absolute inescapable necessity

00:14:11.639 --> 00:14:14.549
of the function itself. Consider the numerical

00:14:14.549 --> 00:14:16.549
computing environments mentioned in the research,

00:14:16.730 --> 00:14:19.090
like MATLAB and GANU Octave. Right, those aren't

00:14:19.090 --> 00:14:21.490
even operating systems. Those are hardcore mathematics

00:14:21.490 --> 00:14:24.169
and data analysis platforms used by scientists

00:14:24.169 --> 00:14:27.909
and engineers. Yet, they both include a PWD function

00:14:27.909 --> 00:14:30.009
with identical functionality. Even when you are

00:14:30.009 --> 00:14:32.309
deep in the wheeze of complex matrix algebra

00:14:32.309 --> 00:14:35.269
or rendering 3D fluid dynamics, the user must

00:14:35.269 --> 00:14:37.549
be grounded in a specific working directory for

00:14:37.549 --> 00:14:39.590
the software to function correctly. It needs

00:14:39.590 --> 00:14:41.509
to know where it is. Without a sense of place,

00:14:41.669 --> 00:14:43.539
the application doesn't know where to save your

00:14:43.539 --> 00:14:45.720
rendered results, and it doesn't know where to

00:14:45.720 --> 00:14:48.779
load your raw data from. It's the ultimate anger.

00:14:49.039 --> 00:14:51.679
You have to be standing on solid ground to lift

00:14:51.679 --> 00:14:54.139
a heavy weight. Beautifully put. And it's not

00:14:54.139 --> 00:14:55.899
just about where you are standing right this

00:14:55.899 --> 00:14:59.100
second either. There are related standard POSIX

00:14:59.100 --> 00:15:02.200
commands like pushed and popped that actually

00:15:02.200 --> 00:15:04.519
let you save directories on a stack and jump

00:15:04.519 --> 00:15:06.980
back to them. But even if you don't use those,

00:15:07.399 --> 00:15:09.700
the shell is automatically remembering your movements.

00:15:10.059 --> 00:15:12.940
Ah yes, the environment variables. This is where

00:15:12.940 --> 00:15:15.620
the concept of location expands into the concept

00:15:15.620 --> 00:15:18.659
of time. Yeah, this blew my mind. When you are

00:15:18.659 --> 00:15:22.419
using a POSIC shell and you use the CD command

00:15:22.419 --> 00:15:24.879
to move from one folder to another, the shell

00:15:24.879 --> 00:15:27.820
is quietly taking notes in the background. It

00:15:27.820 --> 00:15:30.379
sets an environment variable simply called PWD,

00:15:30.440 --> 00:15:33.019
all caps, which stores your current working directory.

00:15:33.519 --> 00:15:35.919
Right. But crucially, it also sets a variable

00:15:35.919 --> 00:15:39.440
called OLDPWD, which stores the previous working

00:15:39.440 --> 00:15:41.659
directory. It's the footprint you just left behind.

00:15:42.019 --> 00:15:43.779
So what does this all mean? We started by talking

00:15:43.779 --> 00:15:45.919
about a simple three -letter command, a relic

00:15:45.919 --> 00:15:49.100
from the teletype era of 1974. Half a century

00:15:49.100 --> 00:15:51.919
ago. But when you look at how it operates, how

00:15:51.919 --> 00:15:54.600
it walks the inodes, how it navigates the illusions

00:15:54.600 --> 00:15:58.759
of siblings, whether you are a software engineer

00:15:58.759 --> 00:16:01.639
compiling code or just someone trying to find

00:16:01.639 --> 00:16:04.870
where a downloaded PDF went, understanding the

00:16:04.870 --> 00:16:07.710
concept of the working directory is fundamental

00:16:07.710 --> 00:16:10.669
to mastering your digital space. Absolutely.

00:16:10.909 --> 00:16:13.269
It's not just a static dot on a map. Because

00:16:13.269 --> 00:16:16.629
of variables like oldpwd, the system actually

00:16:16.629 --> 00:16:18.610
possesses a memory of the step you just took.

00:16:19.129 --> 00:16:21.769
It knows not just your location, but your immediate

00:16:21.769 --> 00:16:23.789
history. And you know, that concept of history

00:16:23.789 --> 00:16:25.889
brings us to a really compelling idea regarding

00:16:25.889 --> 00:16:29.350
how we visualize our digital spaces today. There

00:16:29.350 --> 00:16:31.450
is an alternative way of displaying the working

00:16:31.450 --> 00:16:34.710
directory, known in interface design as breadcrumb

00:16:34.710 --> 00:16:36.929
navigation. Oh, like Hansel and Gretel dropping

00:16:36.929 --> 00:16:39.029
crumbs in the forest. Exactly like the fairy

00:16:39.029 --> 00:16:41.330
tale. A breadcrumb trail doesn't just give you

00:16:41.330 --> 00:16:43.509
a single isolated coordinate, it shows you the

00:16:43.509 --> 00:16:45.789
hierarchy. It displays home, then documents,

00:16:45.990 --> 00:16:48.289
then projects, then the specific file you are

00:16:48.289 --> 00:16:50.690
looking at. It is a visual representation of

00:16:50.690 --> 00:16:54.190
your journey. Right. PWD gives you your absolute

00:16:54.190 --> 00:16:57.230
current location, a single definitive destination.

00:16:57.870 --> 00:17:00.230
But breadcrumb navigation shows you the entire

00:17:00.230 --> 00:17:02.850
path of how you got there. The journey versus

00:17:02.850 --> 00:17:06.009
the destination. Precisely. So as you navigate

00:17:06.009 --> 00:17:08.410
your own digital life, jumping through SimLink

00:17:08.410 --> 00:17:11.509
portals, executing commands, moving from folder

00:17:11.509 --> 00:17:14.589
to folder, it's worth pondering this. How's that?

00:17:15.029 --> 00:17:18.109
In the sprawling infinite dark of our file system.

00:17:18.119 --> 00:17:21.920
Is it more important to know the absolute literal

00:17:21.920 --> 00:17:24.200
coordinates of exactly where you are standing

00:17:24.200 --> 00:17:27.339
right now? Or is it more valuable to understand

00:17:27.339 --> 00:17:29.680
the narrative journey of how you arrived there?

00:17:29.960 --> 00:17:32.220
That is a fascinating question. From a blinking

00:17:32.220 --> 00:17:34.619
cursor in the void... to traversing the hardware

00:17:34.619 --> 00:17:37.319
detective work of Nodes all the way to the philosophy

00:17:37.319 --> 00:17:39.980
of digital existence. Next time you're lost in

00:17:39.980 --> 00:17:42.000
the machine, just remember your computer always

00:17:42.000 --> 00:17:44.519
knows exactly where you are, even if it's gracefully

00:17:44.519 --> 00:17:46.900
protecting you from the physical truth. Thanks

00:17:46.900 --> 00:17:48.259
for joining us on this deep dive.
