365 RFCs

Commenting on one RFC a day in honor of the 50th anniversary of the first RFC.

by Darius Kazemi, Feb 6 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Meeting notes

RFC-37 is the meeting notes from the network meeting held on March 17, 1970. This RFC is dated March 20, three days after. Not a bad turnaround! The RFC is titled “Network Meeting Epilogue, etc.” and I love the et cetera there.

The technical content

The meeting was attended by about 25 people from a variety of institutions. The meeting was held because there was a lot of pushback on RFC-11's protocol, which resulted in the creation of the RFC-33 protocol, and they wanted to get ahead of any criticism by hosting this meeting to put an early draft in front of the group before formalizing it.

It seems the basic protocol involving connections and sockets was well-received at the meeting, with some friction around the dynamic reconnection concept that Crocker introduced in RFC-36.

James Forgie replaces Paul Rovner as the main Lincoln Lab contact. Forgie was an early pioneer in text-to-speech systems and would soon become Lincoln Lab's lead on the ARPA Speech Understanding Research Program (source, p. 109), which funded major speech recognition research from 1971-1976 at a number of US institutions.

Process is defined formally for the first time in an RFC. It is “a program which has an assigned location counter and an address space”. Which translates to my lay definition I provided earlier: it's a program that is currently running on your computer.

Analysis

I just wanted to note that Crocker is very careful to state that this RFC is his own recollection of events and as such there may be errors.

Also of note is that Crocker discusses the emotional aspect of negotiating technical features at length. He points out a “conflict of gut level feelings” in a conversation between himself, BB&N's William Crowther, and others over the dynamic reconnection concept.

Further reading

I stumbled across this 597 page behemoth of a Lincoln Laboratory retrospective, produced by the laboratory itself in 2011.

The RFC references the definition of process in “Structure of the Multics Supervisor” a 1965 paper by Vyssotsky, Corbató, and Graham. This further corroborates my suspicion that Multics (the main predecessor to Unix) was the inspiration for a bunch of this now-common terminology.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Feb 5 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Updates to the protocol

RFC-36 is titled “Protocol Notes”, authored by Steve Crocker, and dated March 16th, 1970. It contains updates to RFC-33. This RFC is dated one day before a scheduled network meeting; presumably this RFC was published the day before the meeting and distributed as a handout the next day.

The technical content

Section I is an overview and contains some general information about updates to RFC-33.

The method for opening a connection is slightly simplified from how it was previously outlined.

There's also a new kind of message that a HOST can send to its IMP that says “let any computer trying to open connections with me know that I am not accepting connections right now”. Basically if the HOST is overwhelmed with requests it can pull the emergency brake.

Finally, there is a reconnection method that Crocker has devised.

Section II outlines the data tables involved in the protocol. It is what a modern developer might think of as a database schema, although it wasn't a database. It says “this piece of data takes this form and is stored in this way in this part of memory”.

Section III lists control command for establishing and closing connections. It's pretty common sense stuff, though there is one command called “Final End” (FND) which is in place to prevent a “short circuit” style loop where a computer connects one of its own send sockets to one of its own receive sockets.

Analysis

Right off the bat, Crocker admits he lacks the technical experience to communicate concepts about the protocol in a holistic way. I wish more technical communication would acknowledge the author's own shortcomings. Instead we end up getting people pretending to know things that they don't for fear of being laughed at.

We get some terminology collision in this document. We are of course reading an RFC, which stands for “request for comment”, but there is something called an “RFC command” which is a “request for connection command”. This seems unnecessarily confusing, but what is engineering if not a bucket of unnecessarily confusing acronyms?

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Feb 4 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Save the date

RFC-35 is by Steve Crocker, dated March 3rd 1970. It's letting everyone know that in two weeks' time, on March 17th, UCLA will be hosting a meetings to discuss further details of RFC-33 (the new HOST-HOST protocol) and hopefully produce a new, more detailed RFC as a result.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Feb 3 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Absolute and relative time

RFC-34 is titled “Some Brief Preliminary Notes on the ARC Clock”, by Bill English, dated February 26th, 1970. It continues the clock conversation we find in RFCs 28, 29, and 32.

The technical content

The ARC in “ARC clock” refers to SRI/ARC, the Stanford Research Institute's Augmentation Research Center. So in the previous RFC discussions where the “SRI clock” is referenced, I'm assuming that's the same clock as we're talking about here.

English defines absolute time as two 24-bit words (chunks of memory), where one word holds the month, day, and year. The other word holds the hour, minute, and second. Relative time is just a number that ticks up once every 1 millisecond or sometimes once every 0.1 milliseconds, and is relative to whenever you initially set it, kind of like a stopwatch.

English claims that oscillator drift will accumulate not more than 1 second of error every 250 days. That's... really accurate, and is on the same order of magnitude I calculated in the Analysis section of my post on RFC-32.

Further reading

At the time of these RFCs, SRI was a Stanford University affiliated nonprofit known as the Stanford Research Institute, but right around the time these RFCs were being written, it was formally separated from Stanford University and eventually became known as SRI International. The split was apparently motivated by students protesting Stanford's role in the Vietnam War; the institute took millions in defense funding and was, according to historian Stuart W. Leslie, seen as a symbol of the US military's presence on the school campus. For more, you can read this chapter from Leslie's 1993 book The Cold War and American Science: The Military-Industrial-Academic Complex at MIT and Stanford.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Feb 2 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

New concepts for the network

RFC-33 is a big one. It's authored by Steve Crocker, Steve Carr, and Vint Cerf, although Crocker is the only author listed in the normative RFC listings. It's dated Feb 12, 1970 and is a preview of a paper that will be presented at the Spring Joint Computer Conference in May of that year. This RFC is yet another update to Déloche's RFC-11. It's titled “New HOST-HOST Protocol”.

The technical content

The introduction describes ARPANET for the uninitiated. I lays out that ARPANET is the first major computer networking attempt to connect computers using different hardware and different operating systems. I think this sentence is the shortest and best description of the network I've seen in an RFC so far:

The network is seen as a set of data entry and exit points into which individual computers insert messages destined for another (or the same) computer, and from which such messages emerge.

We get firm definitions of HOST, IMP, message, and link that are meant for outsiders. Since we as modern readers are outsiders, this is super helpful to us. We've already established firmly via these RFCs that a HOST is a computer connected to the network, and the IMP is a kind of early router-type device that does the packet switching.

A message is defined in this paper as

a bit stream less than 8096 bits long which is given to an IMP by a HOST for transmission to another HOST. The first 32 bits of the message are the leader.

The “leader” is what we'd call a “header” today and consists of

  • the ID of the intended destination computer
  • message type (there are two: normal messages, and an RFNM (request for next message), is a way of not overloading the network with too much traffic. The RFNM is sent by a receiving computer and is a way of saying “I got your message and processed it, please send me more data now”.
  • some flags (bits that indicate whether a certain thing is true or false) for special cases that aren't covered in the paper
  • the link number this message is to be sent over

A link is, basically, a single data communication channel that can be used by an IMP or a HOST. There are 256 of them on the network.

The paper defines a design philosophy which is pithy enough that I won't quote it here (it's the section “Design Concepts” beginning at the bottom of page 4 of RFC-33) but to sum up:

  • HOSTs are expected to mostly do their own thing; the primary use of a HOST is not expected to be “connecting to ARPANET”, it will probably have its own local uses
  • HOSTs are time-shared computers (that is, shared between multiple users; in modern parlance it is a server that multiple users can log in to)
  • as much work as possible is put on the HOST systems, since they are all going to have their own idiosyncrasies and it would be pointless to dictate how they should work in detail
  • network use is going to consist of prolonged conversations between HOSTs moreso than one-off data transfers

The main purpose of RFC-33 is to introduce concepts that are a result of those design considerations: “connections, a Network Control Program, a control link, control commands, sockets, and virtual nets.”

A connection is a formal way of piping the output of a process on one HOST to the input of a process on another HOST. A “process” is essentially a running program. Connections only go one way (“the output of my program is the input of your program”) so for a back and forth conversation, two connections are needed.

The Network Control Program (NCP) is the program that acts as the broker between a HOST program and the network, and is used to start and stop connections.

A control link is a reserved link between two HOSTs where NCPs can handshake with one another before they begin setting up full connections on other links.

Since any HOST could be running its own operating system, and different operating systems have different internal identifiers for processes, we need to translate these processes into a common name space. This is called a socket and it says “user A on computer B would like to speak on this connection about what we are calling process Z”.

(There is a value in the socket specification called the “AEN” which stands for... wait for it... “another eight-bit number”.)

A virtual net is... well, I'm not really clear on that even after reading this document. But it seems to be a kind of fingerprint across multiple HOST systems where you can log in to, say four different computers, and have data piping back and forth between all four of them for different purposes. So like, calculate geometry on computer A but then pipe the calculations over to computer B to display it on a monitor. That kind of thing.

Further down, the term port is defined as an input/output path related to a specific process. One process can have many ports.

In a section called “Higher Level Protocol”, something called Network Interface Language (NIL) is proposed. Its purpose seems very similar to Decode-Encode Language (DEL), which I write about at length in my post about RFC-5, in that both languages were proposed to make highly interactive, rich networked applications possible. Both were not implemented.

Analysis

I'm breaking up this section for readability because there's a lot to say.

Missing figure, found

First of all, page 11 of the official normative RFC document references figure 5, which is missing. I found figure 5 when looking through some original documents at the Computer History Museum. Here is a photo I took:

A TELNET session sequence in nine steps

You log in to the local computer, you start TELNET, you set your escape character, you instruct TELNET which computer to connect to, you enter your username on the remote computer, you start up a program on the remote computer, and you move resultant files from that computer to your local one.

TELNET gets a shout out

In a section outlining user-facing software, the document recommends that early ARPANET users use TELNET (as first defined in RFC-15) as a way to get an interactive login on remote systems, but notes that it's “expected that more sophisticated subsystems will be developed in time”.

The document credits TELNET for being the main reason why the network is currently useful at all.

Deep understanding of user experience

I was struck by this statement:

a user evaluates an interactive system by comparing the speed of the system's responses with his own expectations. Sometimes a user feels that he has made only a minor request, so the response should be immediate; at other times he feels he has made a substantial request, and is therefore willing to wait for the response. Some interactive subsystems are especially pleasant to use because a great deal of work has gone into tailoring the responses to the user's expectations.

This demonstrates deep understanding of interactive systems design by twenty-something grad students in 1970 that I wish more developers possessed today.

The human factor

The introduction contains the following note:

We have found that, in the process of connecting machines and operating systems together, a great deal of rapport has been established between personnel at the various network node sites. The resulting mixture of ideas, discussions, disagreements, and resolutions has been highly refreshing and beneficial to all involved, and we regard the human interaction as a valuable by-product of the main effect.

The ARPANET project as a whole is really interesting to me because of this necessary cross-collaboration between military, private, and academic institutions. The RFC concept in general is of course a huge piece of this collaboration and examining how this kind of collaboration happens is the real reason I'm doing this project.

Further reading

The request-for-new-message is kind of an early ACK message, which is worth reading about.

The “virtual net” concept is credited to William Crowther, who five years from this time will go on to write Colossal Cave AKA Adventure, the first ever text adventure / interactive fiction game. Crowther worked on ARPANET while at BB&N. It's amazing to me, in a good way, that “helping literally invent the internet” is a minor diversion when discussing this man's legacy.

There's an excellent 2015 paper by Bradley Fidler and Amelia Acker (available free online) that goes into the history of sockets on the ARPANET and proposes that sockets are both a kind of infrastructure and metadata.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Feb 1 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Crystals

RFC-32 is titled “Some Thoughts on SRI's Proposed Real Time Clock”. It's authored by Jerry Cole of UCLA and dated February 5th, 1970. It's a response to RFC-28 and RFC-29, which both concerned real time clocks on the SRI HOST. If you'll recall, RFC-28 was a literal request for comment on the clock plan. RFC-29 was Bob Kahn of BB&N, well, commenting.

The technical content

Cole notes that while the NIC (Network Information Center) can measure the amount of time it takes from a message leaving a HOST to arriving at another HOST, they don't have a mechanism for measuring the internal delay on the HOST itself between, for example, a message arriving over the network and then actually being communicated to the user. He notes that installing a clock on the HOST could allow for these measurements to be made.

Analysis

I'm confused by some of the language here because I'm not so great at computer clock lingo. Cole says the resolution should be about 1 millisecond, the accuracy should be about “1 part in 10E7” and a range of about 24 hours.

According to the Network Time Protocol FAQ, resolution is the smallest possible increase in time allowed by your clock. So basically this clock would tick up one millisecond at a time.

According to the same FAQ, accuracy is how much two clocks, synchronized to the same time, will drift apart from one another. It's measured as a percentage error and so “1 part in 10E7”, which eagle-eyed readers point out is probably scientific notation. 10E7 is 1x10^8, which works out to 1 part in 10^8 or .000001%, which is wayyy too extremely accurate for his later claim of using a relatively inexpensive crystal clock? I'm not convinced this guy's math was right? But also I don't know much about the cost per accuracy of crystal clocks in 1970. That's about 1 millisecond of clock drift per day. Too good to be true by my analysis. Again, welcoming more input from eagle-eyed readers here.

Edit Feb 3 2019: This calculation is corroborated by Bill English in the upcoming RFC-34.

I'm not sure what “range” means in the context of this RFC and it's hard to search the web for because it's a common word.

He also refers to using “crystal controlled clocks” which were standard technology in 1970. If you've heard the term “quartz watch”, that's the same kind of crystal he is referring to.

Further reading

There is so much to learn about clocks in computing. That Network Time Protocol FAQ is a nice resource, especially if you're a programmer. Crystal oscillators are fascinating, and their physics doubly so. Basically if you cut a thin piece of crystal and run a small electric current through it, it will move back and forth at a well-known speed. This provides the “pendulum” of the clock, with the advantage over a pendulum that you can like, move the clock around and it doesn't mess with timing. Also you can miniaturize it.

Clocks are extremely important in basically any electronic device for a variety of reasons. My favorite electronic integrated circuit of all time is the 555 timer, introduced in 1972, two years after this RFC. It's a very cheap way of keeping reasonably accurate time and some people claim it's the most popular integrated circuit component of all time. Although that kind of thing is hard to measure, it would certainly be my first guess for most popular component as well.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 31 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Down with long boxes

RFC-31 is titled “Binary Message Forms in Computer Networks”. It's authored by Daniel Bobrow of BB&N and William R. Sutherland of Lincoln Laboratory.

The technical content

This is a short technical paper. Its purpose is to provide a kind of grammar for describing the data content of messages sent over a computer network. The introduction talks about the contemporaneous state of the art of describing network messages:

Most attempts at describing the content of binary messages jump immediately into a consideration of the bit codings to be used. Long, thin rectangles are drawn to represent the binary bit stream; this stream is sliced up into boxes, and tables generally describe the bit options for each box.

This is true; I've seen a lot of these rectangles in ARPANET documents. Here's one example from RFC-13:

a technical drawing of a big long box with labels showing what the different bit fields mean

Anyway, the paper proposes a sort of symbolic logic drawing from set theory to formally describe the contents of these messages, rather than these box diagrams.

This logic works a little bit like you might specify a computer language. I'll give my own example, since their “simple” example is actually a pretty complex hierarchical structure describing graphical data. Instead let's imagine we want to describe a simple image format where we store pixels of different colors to be drawn at different coordinates on a screen.

Basically, we define our simple fields (primitives), then give them “equivalents” which are basically ENUM values, then define our “characterizations” which are more complex fields made of the simple fields. Lastly we list out the size of the simple fields in number of bits.

Here's our basic image format:

   Title: Very simple color image format that only makes sense for this blog post.

     Simple Fields:
        OPT - A control field
        COLOR - Numerical value representing a color
        COORD - Numerical value of single coordinate on one axis
        COUNT - Number of units in message

     Characterizations:
        CPAIR   <- COORD = 2
        POINT   <- CPAIR + COLOR + COLOR + COLOR
        PICTURE  <- '1' OPT + POINT = N + '0' OPT

     Simple Field Sizes:
        OPT   1
        COORD 14
        COLOR 4

So we say a coordinate pair (CPAIR) is two coordinates. A point is a coordinate pair plus 3 color values (for red, green, and blue). A picture is a special 1 control message followed by N points followed by a special 0 control message. We use one bit for OPT because it's just 0 or 1, 14 bits for COORD because we might be displaying pixels all over the place, and 4 bits for color because we only want 15 levels of color for each color primitive.

There are also rules for conditional values — “if the value of field X is 1, then also include this extra bit of data”. Specifically an expression like [V = C1 ⸧ PPAIRS] can be read as “field V is equal to C1 implies that PPAIRS goes here”. That is often read as “implies” in logical notation and is what they choose to use as their conditional.

Analysis

The transcription loses a bunch of information because, somewhat ironically, it seems like the transcription is sticking to ASCII characters. But the machines these documents were written on provided far more than just ASCII characters. As I mentioned above the formulas in the paper included the material implication symbol but were transcribed to > in the official transcription. In my opinion this makes the paper way less clear, as > has a pretty solid semantic meaning of “greater than”, which is not at all what the authors meant.

While inspecting original RFC documents at the Computer History Museum, I noticed that there's a transcription error in the official IETF version of RFC-31. Namely, there is a missing line from a formula on the last page. Here's the page with the line circled by me:

It reads '1110' ⸧ PPAIRS = '14' D] and makes up the second line of an expression where the first line is in the IETF transcript. It seems like it was just left off by accident since it was on a different line. So the full formula in the “Conditional Alternatives” section should in fact read:

SM := W : F1 + CPAIR + [W = C1 ⸧ CPAIR / C2 ⸧ PPAIRS /
'1110' ⸧ PPAIRS = '14' D]

It doesn't actually matter though! Just a little erratum for you.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 30 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Adding Stanford and Carnegie Mellon

RFC-30 is a revision of RFCs 10, 16, 24, and 27, which build on RFC-3. All of these documents attempt to define the scope of an RFC. This one was authored by Steve Crocker on Feb 4th, 1970.

The technical content

This document is identical to RFC-27, but in addition to a few typo corrections it:

  • adds Robert Sproull of Stanford, who would later go on to Xerox PARC
  • adds Nico Habermann of Carnegie-Mellon
  • corrects Kim Fry of MITRE to Jim Fry of MITRE

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 29 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Milliseconds

RFC-29 is a response to RFC-28, which asked for comments related to installing a real-time clock on the SRI network. This is from BBN's Bob Kahn, who would go on to co-invent TCP/IP. It's dated January 19th, 1970, six days after Bill English's request.

The technical content

Here is the entire content of the note:

This note is in response to Bill English's Request for Comments: 28.

A “millisecond” clock should be satisfactory for most network measurements. Round-trip message transit times typically should be at least on the order of tens to hundreds of milliseconds. The IMP contains a 16-bit hardware clock which is incremented every 100 microseconds to allow for timing of internal events within the IMP, as for example, during tracing. However, most measurements are made using a 25.6 ms. software clock.

Note: a millisecond is 1000 microseconds, so the 100 microsecond clock on the imp meant it was in theory accurate to 0.1 milliseconds.

But here Bob is saying that since most messages are going to take at least tens of milliseconds, a clock doesn't need to be more accurate than that if you're just trying to measure the round trip message time.

Analysis

English said in RFC-28 that the clock would be used “for such things as delay measurement”, which implies there are other things besides delay measurement they wanted to do, or at least they wanted to be open to the possibility of other things.

Anyway this is a pretty cut-and-dry answer to a pretty open-ended question.

Further reading

When Kahn mentions the 100 microsecond clock on the IMP, that's due to the hardware that the IMP was running on: the Honeywell DDP-516. Here's a sales brochure for that model, featuring this amazing image:

A man in a suit reclining in a space age chair with his feet up on the Honeywell DDP-516.

Adrian Wise has written an emulator for the DDP-516, and his site has a bunch of its history and its software that can be run in the emulator! The programming section has what seems to me everything you need to learn to write your own programs for the computer (or at least the emulator).

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

by Darius Kazemi, Jan 28 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Time might be useful

RFC-28 is a short note from Bill English of SRI titled “Time Standards”. It's dated January 13, 1970.

The technical content

Here is the entire content of the note:

We are about to install a relatively accurate real-time clock on our system. I would like any comments relative to Network time standards for such things as delay measurement so we can decide how good our clock should be.

This is just English asking for people's input on a project they are about to undertake.

Analysis

Some programmers might notice the date on this RFC and think, “Aha! I know what this is! UNIX time describes all time as relative to January 1, 1970. It probably has something to do with this note.”

Well, that's what I thought, anyway. I looked into it and it appears to be pure coincidence. According to Dennis Ritchie, one of the creators of the UNIX operating system, it was simply an arbitrary date and this RFC has nothing to do with it.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.

Enter your email to subscribe to updates.