WEBVTT
Kind: captions
Language: en

1
00:00:00.110 --> 00:00:01.500
Normally, when I film these videos,

2
00:00:01.500 --> 00:00:04.260
I’m at the Centre for Computing History
in Cambridge.

3
00:00:04.260 --> 00:00:07.480
Unfortunately, it is April 2020
as I record this,

4
00:00:07.480 --> 00:00:08.700
and times being as they are,

5
00:00:08.700 --> 00:00:10.840
I have to make do with a green-screen.

6
00:00:10.840 --> 00:00:12.339
But why simulate that same location?

7
00:00:12.339 --> 00:00:14.129
I could be anywhere with this, right?

8
00:00:14.129 --> 00:00:17.340
Well, first, this would have been a great
subject to film at the computer museum.

9
00:00:17.340 --> 00:00:20.900
But also: if I change things too much, it’ll
break the style,

10
00:00:20.900 --> 00:00:22.660
and people don’t like change.

11
00:00:22.660 --> 00:00:24.680
Actually, that’s not true:

12
00:00:24.680 --> 00:00:29.840
people like just the right combination of
novelty and familiarity.

13
00:00:29.840 --> 00:00:34.540
On that note: did you know that you can’t
name a file “Con” in Windows 10?

14
00:00:34.540 --> 00:00:36.280
...I promise that’s related.

15
00:00:39.510 --> 00:00:41.510
If you’re running a Windows machine,
try it right now.

16
00:00:41.510 --> 00:00:44.870
Go to File Explorer, create a
new folder, call it “Con”. C-O-N.

17
00:00:44.870 --> 00:00:46.613
The system is not going to let you do it.

18
00:00:46.613 --> 00:00:50.470
You also can’t name a text file “con.txt”
or an image “con.jpg”.

19
00:00:50.470 --> 00:00:52.360
Con is a first name,
not a common English one,

20
00:00:52.360 --> 00:00:55.380
but it’s a variant of Cornelius, Conrad,
Connor, Konstantinos.

21
00:00:55.380 --> 00:00:59.100
There are a good few people who
go by the name Con.

22
00:00:59.100 --> 00:01:00.660
So if you’re trying to save
a photo of one of them

23
00:01:00.660 --> 00:01:03.590
using their name on Windows,
you can’t.

24
00:01:03.590 --> 00:01:06.132
In fact, the system won't let you call a
file or folder

25
00:01:06.140 --> 00:01:11.560
CON, AUX, PRN, LST, COM0 through COM9,
LPT0 through LPT9, or NUL.

26
00:01:11.560 --> 00:01:14.000
And the reason for that goes back to MS-DOS,

27
00:01:14.000 --> 00:01:17.150
one of the old white-text-on-a-black-screen
command-lines

28
00:01:17.150 --> 00:01:20.610
that were just how computers worked
back in the 80s.

29
00:01:20.610 --> 00:01:22.979
Actually, it goes back
a bit further than that,

30
00:01:22.979 --> 00:01:27.270
because all the versions of DOS were copying
the idea from other places,

31
00:01:27.270 --> 00:01:29.070
but let’s not go too deep into history.

32
00:01:29.070 --> 00:01:32.030
In MS-DOS, Microsoft’s version of DOS,

33
00:01:32.030 --> 00:01:36.159
all those little words are the
names of “device files”.

34
00:01:36.160 --> 00:01:40.940
They were a quick and clever way of letting
programs on a computer interface with other stuff:

35
00:01:40.940 --> 00:01:44.320
printers, keyboards, basically anything
that you can plug in.

36
00:01:44.320 --> 00:01:48.659
Rather than every program having to understand
how to talk to every possible device,

37
00:01:48.659 --> 00:01:51.530
that job was given to a “device driver”.

38
00:01:51.530 --> 00:01:53.240
And that device driver…

39
00:01:53.240 --> 00:01:55.200
drove the device.

40
00:01:55.200 --> 00:01:59.430
So programmers didn’t have to worry about
how every single type of printer worked.

41
00:01:59.430 --> 00:02:03.830
Instead, they could reuse code that they
already had for reading and writing files.

42
00:02:03.830 --> 00:02:07.310
They’d just save whatever they wanted to
print to the right “device file”;

43
00:02:07.310 --> 00:02:09.340
it wouldn’t actually get written to disk,

44
00:02:09.340 --> 00:02:13.280
instead the device driver would pick it up
from there and do all the heavy lifting.

45
00:02:13.280 --> 00:02:17.020
But the programmer didn’t have to care about
how any of that worked:

46
00:02:17.020 --> 00:02:19.069
as far as they were concerned,

47
00:02:19.069 --> 00:02:22.380
they could just save a file and something
else would deal with it.

48
00:02:22.380 --> 00:02:25.400
And eventually, that meant that if
a new printer came out

49
00:02:25.400 --> 00:02:27.920
with a new, complicated,
shiny feature on it...

50
00:02:27.920 --> 00:02:31.160
the manufacturer would
bundle a new driver with it.

51
00:02:31.160 --> 00:02:33.290
All the old programs would still work,

52
00:02:33.290 --> 00:02:36.430
they could just save stuff to the device file,
same as they always did,

53
00:02:36.430 --> 00:02:39.739
and the driver would deal with
the messy real-world stuff.

54
00:02:39.739 --> 00:02:43.750
And if you wanted a really, really basic way
of using those device files,

55
00:02:43.750 --> 00:02:46.800
you could do it with the command line itself.

56
00:02:46.800 --> 00:02:49.800
If you typed in “dir”, you’d get a listing
on screen of

57
00:02:49.800 --> 00:02:52.900
whatever files were in the current
directory or folder.

58
00:02:52.900 --> 00:02:55.180
"D-i-r". They were called different
things back then.

59
00:02:55.190 --> 00:02:57.680
Add a redirect symbol, that angle bracket,

60
00:02:57.680 --> 00:03:01.380
and instead of the listing going to the screen,
it’d be saved to a file.

61
00:03:01.380 --> 00:03:04.340
But if you tried to save it to a file called LPT1,

62
00:03:04.340 --> 00:03:07.600
the system would spot that file name,
and instead of going to the hard disk,

63
00:03:07.600 --> 00:03:11.400
your listing would be sent to the device driver
for the parallel port,

64
00:03:11.400 --> 00:03:14.080
the one that was labelled LPT1
on the back of your computer.

65
00:03:14.080 --> 00:03:17.200
The place where you probably
have a printer plugged in.

66
00:03:17.200 --> 00:03:21.100
So even knowing nothing about how
the parallel port or printer worked,

67
00:03:21.100 --> 00:03:23.830
you could just... print.

68
00:03:23.830 --> 00:03:26.879
The side effect of that was:
those file names were reserved.

69
00:03:26.879 --> 00:03:28.640
You could not create a file called LPT1.

70
00:03:28.640 --> 00:03:31.250
Or CON,
which was short for “console”.

71
00:03:31.250 --> 00:03:34.690
If you tried, you’d end up sending stuff
to a printer or something instead.

72
00:03:34.690 --> 00:03:40.000
Oh, and the really early versions of MS-DOS
actually didn’t have the concept of directories,

73
00:03:40.000 --> 00:03:41.840
or folders, as we now call them,

74
00:03:41.849 --> 00:03:44.410
everything was just in one big heap of files.

75
00:03:44.410 --> 00:03:46.000
When directories were added in,

76
00:03:46.000 --> 00:03:49.340
those device file names still had to work
everywhere,

77
00:03:49.340 --> 00:03:53.000
which meant those file names
had to be blocked everywhere too.

78
00:03:53.000 --> 00:03:57.659
Same with con.txt, because file extensions
were stored differently back then.

79
00:03:57.659 --> 00:04:02.200
And there is a direct line from
thirty-year-old MS-DOS to Windows 10.

80
00:04:02.200 --> 00:04:04.280
Each version has built on the one before.

81
00:04:04.280 --> 00:04:05.280
If you know where to look,

82
00:04:05.280 --> 00:04:10.060
you can still find the Windows 3.1 file selection
box from '92 in Windows 10 today,

83
00:04:10.060 --> 00:04:13.800
and Windows 3.1 ran on top of MS-DOS.

84
00:04:13.800 --> 00:04:17.700
Now, there aren’t many Windows 10 PCs
out there with parallel ports:

85
00:04:17.700 --> 00:04:19.611
but I bet there’s a few somewhere.

86
00:04:19.611 --> 00:04:21.469
And Microsoft chooses to support them,

87
00:04:21.469 --> 00:04:23.990
because of “backwards compatibility”.

88
00:04:23.990 --> 00:04:26.920
Backwards compatibility means that you shouldn’t
have to buy a new printer

89
00:04:26.920 --> 00:04:29.439
just because you’ve got a new computer.

90
00:04:29.439 --> 00:04:34.099
New stuff should also support old stuff,
within reason.

91
00:04:34.100 --> 00:04:40.160
The trouble is that different companies have
very different definitions of “within reason”.

92
00:04:40.160 --> 00:04:43.099
Video gamers are used to the idea of
backwards compatibility:

93
00:04:43.099 --> 00:04:46.479
sometimes games for older consoles will still
work on modern ones.

94
00:04:46.479 --> 00:04:49.110
But usually, it doesn’t last too long:

95
00:04:49.110 --> 00:04:51.480
you can't play a Playstation 1 game
on a Playstation 4.

96
00:04:51.480 --> 00:04:54.320
At least, not by putting the disk in
and expecting it to work.

97
00:04:54.320 --> 00:04:57.940
The internal parts are so different that the
designers would have to emulate the old system:

98
00:04:57.949 --> 00:05:01.509
write a piece of software that translates
between the old game and the new console,

99
00:05:01.509 --> 00:05:02.870
changing the command calls on the fly,

100
00:05:02.870 --> 00:05:07.360
or even just create an entire virtual
Playstation 1 that sits in memory.

101
00:05:07.360 --> 00:05:09.059
It can be done.

102
00:05:09.059 --> 00:05:12.980
But the economic argument for backwards compatibility
in games isn’t great:

103
00:05:12.980 --> 00:05:14.939
if you support old games,

104
00:05:14.939 --> 00:05:16.860
does that mean people won’t buy as many
new ones?

105
00:05:16.860 --> 00:05:20.139
Couldn't you just sell them a remastered version
instead?

106
00:05:20.139 --> 00:05:22.669
And if you want to emulate an earlier system,

107
00:05:22.669 --> 00:05:25.020
you'll need to emulate everything.

108
00:05:25.020 --> 00:05:26.380
Even the bugs.

109
00:05:26.389 --> 00:05:31.309
To this day, Microsoft Excel thinks that the
29th of February, 1900 is a real day.

110
00:05:31.309 --> 00:05:33.309
It isn’t.
1900 was not a leap year,

111
00:05:33.309 --> 00:05:36.090
turn-of-the-century leap years are only
leap years if they’re divisible by 400.

112
00:05:36.090 --> 00:05:39.020
But when Excel first came out, in '87,

113
00:05:39.020 --> 00:05:41.520
it was competing with a program
called Lotus 1-2-3,

114
00:05:41.520 --> 00:05:44.759
and that program had a bug where
it got that leap year wrong.

115
00:05:44.759 --> 00:05:47.610
So Excel copied that bug,
for backwards compatibility.

116
00:05:47.610 --> 00:05:50.050
And more than three decades later,
that’s still the case,

117
00:05:50.050 --> 00:05:51.619
it’s in the formal specifications,

118
00:05:51.619 --> 00:05:56.069
it still gets that wrong because if Microsoft
changes that buggy behaviour now,

119
00:05:56.069 --> 00:06:01.039
they might silently break some really critical
spreadsheet somewhere in the world.

120
00:06:01.039 --> 00:06:04.069
Microsoft has always been the company
of Backwards Compatibility.

121
00:06:04.069 --> 00:06:07.240
It’s built into almost everything they do,

122
00:06:07.240 --> 00:06:11.089
it’s part of the deal of why a lot of companies
stick with Windows:

123
00:06:11.089 --> 00:06:13.460
they will not need to change their workflow.

124
00:06:13.460 --> 00:06:18.750
You can still open a Microsoft Word document
from thirty years ago in the current version.

125
00:06:18.750 --> 00:06:20.949
There are going to be folks out there, somewhere,

126
00:06:20.949 --> 00:06:24.469
who still need to use a very old bit
of software or hardware,

127
00:06:24.469 --> 00:06:30.012
the sort of thing where the company that made
it went bust decades ago, and for that to work,

128
00:06:30.012 --> 00:06:32.949
it needs to read from a magical device file
called CON.

129
00:06:32.949 --> 00:06:36.499
So Microsoft, to this day, doesn’t let you
save a file with that name.

130
00:06:36.499 --> 00:06:38.889
Because it might break something.

131
00:06:38.889 --> 00:06:39.940
It won’t last forever, of course.

132
00:06:39.940 --> 00:06:44.800
At some stage, old systems do become too
difficult or expensive to keep supporting.

133
00:06:44.800 --> 00:06:49.869
Or maybe there's a direction that the company
is trying to push their products in.

134
00:06:49.869 --> 00:06:52.260
Mac and Apple users will
know that all too well;

135
00:06:52.260 --> 00:06:55.499
new versions of Mac OS often just
don’t run old programs.

136
00:06:55.499 --> 00:06:58.399
New apps, even simple ones, aren’t allowed
on older phones.

137
00:06:58.399 --> 00:07:00.839
Headphone jacks get removed.

138
00:07:00.839 --> 00:07:03.949
People like a mixture of novelty and familiarity.

139
00:07:03.949 --> 00:07:07.409
If you change nothing, people get bored and
move on to something else.

140
00:07:07.409 --> 00:07:11.499
If you change everything, people hate it,
it breaks their workflow,

141
00:07:11.499 --> 00:07:13.939
and they move on to something else.

142
00:07:13.939 --> 00:07:17.310
Backwards compatibility, with reason,
helps to find that balance.

143
00:07:17.310 --> 00:07:21.509
So yes, I couldn’t film this video in the
actual Centre for Computing History.

144
00:07:21.509 --> 00:07:23.800
But, at least for a while,

145
00:07:23.800 --> 00:07:27.629
I don’t have to go to an actual museum to
run old applications and games.

146
00:07:27.629 --> 00:07:31.729
Catalogues of software and the documents created
with them can still be read,

147
00:07:31.729 --> 00:07:35.469
even if the exact combination of hardware
they were designed for isn’t available.

148
00:07:35.469 --> 00:07:39.270
No-one’s expecting your iPhone to read
punch cards, but sometimes,

149
00:07:39.270 --> 00:07:42.439
a little backwards compatibility can be a
good thing.

