 Hey everybody, thanks for having me. So this talk is fundamentally a talk about assumptions and the kind of assumptions we make when we're dealing with software. And there's nothing wrong with assumptions, right? That's what helps us function in the world today. And we make assumptions all the time in terms of what we assume about how our software is going to work. Without those assumptions, it would be difficult for our software to work in a way that we think it would. So for example, if you want to store a number, you usually need to know the size of the place that you can store the number in. So if it's a register, for example, you need to know how big that register is so you know how big of a number you can put in there. And if you make assumptions in software, they aren't necessarily tied to a physical reality like how many bits are in your hardware. They could be tied to a sociocultural norm or something other than an underlying physical reality. For example, at one point, Google Plus required people to have real names only and told me that my name wasn't valid, but another gentleman whose name is Loki Sky Lizard was valid. And I was like, I don't believe that that's a real person, but it is a real person. He's a very, very renowned, renowned, he's a very famous, apparently renowned thoracic surgeon. Kudos to Dr. Sky Lizard, who's much more successful than I am. So in particular, though, what happens when our assumptions about our everyday fundamental reality aren't true or turn out not to be true anymore? And I think two notions that are difficult for us to think about are light and time. And in our universe, light and time are very important physical phenomena that are intrinsically connected to each other. And if we didn't have them, things would be really different than they are today and none of us would probably be alive or at least we wouldn't recognize life as we know it. So this talk is going to describe a somewhat of a different idea that combines light and time called relativistic software calendars. And the first part I'd like to focus on is the calendars part of that. So in the very beginning, imagine you're a human 10,000 years ago, so that would be circa 8,000 BC or BCE. You're probably aware of things like the idea of time in general, and you probably have some notion that your experiences are cyclical, but sunrises and sets each day, you have seen the moon wax and wane, you have felt the turning of the seasons, that sort of thing. And after some thinking, you might realize that it would be helpful to predict when these things happen from one year to the next. So for example, it would be good if you knew how many more days or weeks there were until winter was coming, so that you could hunt or preserve the appropriate resources. And you'd probably notice three kinds of cycles. You'd probably first notice something that we would call a day, and that's the solar cycle, the sun rising and setting in the sky, because of the rotation of Earth. There's also a lunation, which is the lunar cycle. That's the moon orbiting the Earth, and because the moon is in tidal concert with the Earth, meaning the same side of the moon always faces the Earth, but different amounts of it are facing the sun relative to our position on the Earth, so that makes the moon wax and wane over time. And then finally, the one that might be harder to notice, you'd have to stick around longer for it, but you would eventually notice the seasons changing if you're in the right spot on the Earth, and you maybe have a word for that, and what we call it a year, but the sort of astronomical idea there is that the sun is returning to the same spot in the sky at the same point in the day, that's a year. And so fundamentally, this notion of time is really sort of a very primitive notion, and we might want a way to represent that, like a calendar. The calendar is just a way of taking a physical reality, like the continuous orbit of the Earth around the sun, and mapping that to a facsimile if it's easier to understand, like calling that orbit a year. But why are there, say, 12 months in a year, and not 10 or 15? So it's an arbitrary distinction. It's not mapped to anything real. Why are there 30 days in one month, then 20 to 28 in another? Right, that's all arbitrary. It's just a construct that humans invented to make it easier to reason about things. But because that mapping is only an approximate facsimile, it's not, it doesn't reflect the underlying physical reality. It's just a vague approximation to it. It's like the crayon squibblings of a work of Picasso, right? They're not the same thing. One is a facsimile of the other. So anytime there's a difference, you have to, there's going to be a discrepancy. You have to account for that discrepancy. So for example, the physical reality is that we have about 365 and a quarter days in the tropical year, the amount of time it takes the Earth to go around and return to the same spot in the sky. Or really, the time at which you sit on the equator and you look directly above the center of the sun would be there. That's a tropical year. That's about 365 and a quarter days. Now, because there's a discrepancy between the physical reality and the convention that we use, the calendar, we have to fix that if we don't want the calendar to get out of syncs. In this case, you have to encode somewhere the idea that we're going to add one day to February every four years. But because it's not exactly a quarter, you also have to not do that in years that are divisible by 100. So for example, 2004 is a leap year. 2100 will not be a leap year. But if the year is also divisible by 400, then you do have to do it again. So these really fundamental questions are like, what time is it? You might say, it's 11.15 or 11.20. And you could be as specific as you like, but you're still not really getting to the core idea of what it means for that time to have occurred. Even something that seems precise, like it's 11.30, actually refers to a range of values in which it's true. It's 11.30. So even on Earth, we have different notions of what it means. If it's at 9 o'clock AM in New York, then it's about 11 o'clock PM in Sydney, New South Wales, and Australia. And those two notions of time are different. There's a different representation of time, even though it's the same idea. And so we have all these ideas that you can read about later to try to synchronize our reference with the underlying physical reality. And boy, we do that with time, because we have something called UTC that everybody agrees to use. And then we all offset from this canonical clock. But all of these rules need to go somewhere, like in software. And it turns out with software, we use something called TZData and a bunch of libraries, like MoMAJS or whatever your standard library happens to be. These libraries assume, for the most part, that we're living on planet Earth, which has been true for all of human history, pretty much. Now, what happens when that's not true anymore? What happens if we take to the stars and we start getting farther and farther and farther away from Earth? There was a really big distance between us and Earth. Well, now we start dealing with ideas about time that maybe don't make sense anymore. What does it mean to be 9 o'clock on a spaceship when you can't even see the sun anymore? So a lot of our assumptions break. By the way, the Unicode description for this clip is called confounded face, which I love. Confounded face is my spirit animal. So it's this relativistic idea. We're coming into a different notion of what time really is. And this is a debate that's as old as time, right? So Isaac Newton said that time is independent of any observer. It doesn't matter where you are. It's an underlying physical reality. And the other folks, like Immanuel Kant, said time isn't empirical. It's purely a perceptual idea. When Einstein said, actually, time is really based on a very specific notion called simultaneity. And that's the most important representation for the underlying physical reality. So those three ideas are really different from each other, right? And so imagine that you throw a ball that's moving at 50 meters a second. If you're an observer standing on the street, you might see, OK, that ball is moving to the right at 50 meters a second. And if you're an observer standing on the street and you see a train moving to the right at 100 meters per second, you would agree with anyone else if it's standing on the street about the speed of that. So if you're just standing there, all observers who are stationary with respect to the ball and the train would see that that would agree about that. Now what if you throw the ball from the train? Well, when that stationary observer would probably say, hey, the speed of the ball relative to the train is 50 meters per second. But if I'm standing on the street, I see it moving to the right at 150 meters per second. So now the person who's on the train says, hey, I see that ball leaving me at 50 meters a second. Doesn't matter how fast the train's going, the ball is moving away at 50 meters per second. So you might represent that on a graph like this. We say, hey, if we have time on a vertical axis and position on a horizontal axis, so if we throw the ball at a little bit of speed, we would see it look like that. If we throw the ball at a lot more speed, it would look like that. It would travel farther and have a farther position for the same amount of time. What happens if we throw the ball really, really fast on a train that's moving really, really fast? So if we throw the ball at, let's say, 1 tenth of light speed and the train is moving really, really close to light speed, what would happen? Will we get 1.1 light speed of the ball? Well, it turns out that actually can't happen. We have a speed limit in the universe that's governed by the speed of light. We have no way of going faster than that. What actually happens is that our experience of space and time compresses when we start traveling close to the speed of light. So the actual fabric of space, our experience of that, will change with respect to our velocity. That was a really important result that Einstein discovered in something called general relativity. And so if we want to represent this in software, we have a huge amount of work to do. We need some way of incorporating this idea of relativity into our software. But if you look at MoMAJS, if you look at every single library that we have, there is no accounting for the speed of light. There's no understanding of that. But yet that's a necessary fundamental interaction for the universe to work. We use it in some software, like GPS. But we don't see it in our everyday experience. So it's not something that we wind up incorporating into our understanding of time, even though that's fundamentally a part of it. So thanks very much for your time. And I hope you enjoyed the rest of BingBangCon.