This is a fantastic little simulation of (a variation on) the Prisoner’s Dilemma, and is totally worth a chunk of your time. In general, the Prisoner’s Dilemma is something I like to bring up in discussions of cooperation problems and the like, and this delves into the heart of the matter pretty well.
Identifying the problem is easy (if you pay attention to game theory). Solving it is much harder.
The short summary is that in fiddling with my blog, I permanently broke the RSS/Atom feeds I used to have. If you subscribed to those in the past, you need to subscribe to my new feed.
I blame Octopress.
Though that doesn’t really explain anything.
So back when I started this incarnation of my blog, I realized that I didn’t want to use something like Wordpress again. The friction inherent in writing a new post—along with my consistent worry about how the posts would be backed up—was just too much. I needed to do something different.
Some coworkers of mine were attempting a competition at the time, to just regularly blog. Part of me wanted to join their quest, part of me knew that my previous blog was basically a disaster.
But I was looking at various other ways of doing blogs—and I was also getting interested in static site generation.
Somehow or another, I ended up looking at Jekyll. And then discovering that Atom had a plugin that played nice with it. And possibly some other things.
So I decided to go for it.
Though, it wasn’t just Jekyll. It was Octopress.
To provide some context: Jekyll is a static site generated geared towards bogging. Octopress advertises itself as a plugin shell around Jekyll to make it really awesome. And it promises a lot.
But it did not live up to those promises, and still doesn’t. At the time, the author of Octopress had basically announced a complete rewrite of Octopress (before the previous version had particularly been finished), which was still in its early stages.
I was perhaps a little wary (though my ignorance at the time regarding bundle didn’t make me wary enough), but Octopress had some things that I really did like in it, such as a plugin that handled all of the Atom/RSS feeds.
Therefore, I went with Octopress. But as I built out the blog theme, I discovered that I used very little of Octopress. Its documentation was sparse, and its override system overly arcane for what I wanted to do. It seemed like Octopress had largely been built as something that you either drop in and accept the defaults with few modifications—or are the author of Octopress.
Needless to say, my theme did away with a bunch of that.
I still ended up using two Octopress plugins, though. The first would allow me to easily do link-style posts; the other would do my feeds. All was good.
Then Jekyll released version 3; I had been on version 2.5-something. It broke everything, because Octopress hadn’t been updated to Jekyll 3, and Jekyll 3 had changed some of the underlying APIs.1 This is when I created a Gemfile and tried to manage the dependencies that way.
But I still wanted to update to Jekyll 3 sooner or later.2
I therefore had two options: either wait for Octopress to support Jekyll 3; or expunge Octopress and revert to a more pure Jekyll installation.
While I waffled between those two options, a couple things happened. The first was that Octopress pretty much made no apparent effort to even acknowledge Jekyll 3, much less make any attempts at all to support it; there are issues that have been sitting open for literally years asking for Jekyll 3 support, with no real follow-up.3 The second was that my own work pushed me towards more command-line solutions, and I started to realize that I didn’t need Octopress for its deploy command or other chrome like that, because I could just write the rsync myself. I had no desire to dump Jekyll, but I started to embrace the idea of just rolling my own solution to things. The third was that I was starting to be more and more disappointed with the Octopress chrome I had, and how bloated it felt.
And then, I decided I wanted to make some changes to my templates. I wanted an archive page. I wanted to make tags more apparent and visible. I wanted to add a JSON feed.
Things that would require me to make changes and build stuff.
And that tech debt of Jekyll 2 was hanging over my head.
And Octopress still hadn’t made any real motion towards being compatible with Jekyll 3.
So, I decided it was time to expunge Octopress.
Expunging the deploy was easy: I created a Makefile that runs the rsync command.
Expunging the plugin for allowing link posts was pretty easy: I just copy-pasted that plugin into Jekyll, because it’s a standalone; I can trim it down to what I want/need later.
The Octopress plugin for generating feeds relies on literally the entire Octopress architecture. It’s not really just one plugin; it’s somewhere around a dozen. Some of which were also incompatible with Jekyll 3.
I tried to do the same thing. I tried to copy-paste the plugin in Jekyll, so I could trim it down later. I ended up doing it for the first layer of dependencies. And I just could not make it work.
So, dear reader, I gave up. Instead, I pulled the official Jekyll plugin for creating a feed. The downside is that it’s nowhere near as customizable, and it doesn’t support link posts well.
But it finally allowed me to get rid of Octopress…and reduce my blog generation time significantly.
It’s just that in the process, I broke the old feeds. I wonder: how many people were actually using them?
At some point, I might go and just do my own custom feed XML, using the current plugin as a base. Then I’d be able to do link posts the way I want. I might even try my hand at replicating what Octopress did, but without the ridiculous number of dependencies it had.
Yet again, I am convinced that having as few third-party dependencies as possible is a very desirable thing. I’m just sorry I broke all the feeds. But it’s not like I post so often that I need all those other ones.
I suppose this is, ultimately, the ultimate theme of this blog: that things always change. You can’t count on anything truly being static, because it’s all shifting and changing out from under us.
Why? That’s a good question. Some of it is my general desire to stay up-to-date; some of it is that the documentation is now for Jekyll 3. Some of it is just stubbornness on my part, I suppose. I can’t leave well enough alone. ↩
This is a common problem among open-source projects largely maintained by one person. They build the project to fulfill their needs and release it because other people might find it useful, but if any problems that arise don’t fall under their scope of using the code, then it frequently gets deprioritized or forgotten. I’m not necessarily blaming those authors; I would probably do similar in their positions. But it is rather frustrating when there’s an outstanding bug in a software package you use with an outstanding pull request to fix, and the author simply says “it’s not a problem I have, so I’m not going to bother trying to fix it.” ↩
A couple of years ago, my wife and I decided we wanted to expand our family further than we already had, and we had long since come to the conclusion that our house at the time was too small. So, as many couples in that scenario are wont to do, we started the process of getting a new house.
We ended up with a pretty reasonable plan. A couple of months before we actually would put our old house on the market, we would get an apartment or rental house or something, and move our essential things there, and live out of there. It would give us a chance to go back and get the house ready to sell without kids or a cat messing things up; and, it would be a haven once our house sold, while we looked for a new house.
There are a variety of other nice things about that plan, though it also comes with the stress of multiple moves in a short time. But that’s not what I want to talk about.
I want to talk about the rental house.
Because it was pretty shitty.
It ended up being a rental house just down the block from our old house1. It had two bedrooms and one bathroom, and was quite a tiny place for two adults and two kids. We were pretty sure it wasn’t built very well: just some wood and plaster plopped onto a slab. It was drafty, the electrical situation was a mess, and the sink would sometimes back up into the shower. A shower that was always way too cold for a winter morning.
And what really sealed the deal was the opossums. Two of them.
We usually left the door under the kitchen sink opened, because that’s where we put the cat’s food. A nice, private location, away from kids. But it turned out there was a small hole in the back of that cabinet, that led into the walls, and ultimately, outside.
So I turned the corner into the kitchen one evening, and there were two opossums, looking at me, lording over the cat’s food dish.
I have to give credit to the owners (a husband and wife team): they took care of them, and also dealt with the mother opossums. I also would be remiss if I didn’t indicate that the rent was very fair, and the owners were very responsive to our other issues around plumbing and such. I don’t at all want to make it sound like they were bad landlords at all, because they weren’t, and were very willing to work with us on a month-to-month basis for our situation.
But the rental house was still pretty shitty, and I was so relieved when I finally spent a night in the new house, and never ever had to go back there and take a shower there ever again.
Even while we stayed there, I kept telling myself that I need to always remember how bad it was. Because it was bad.
So why am I blogging about this?
See, even now, I sometimes think back to those few months, and a bit of the haze of nostalgia floats around me. I have memories in that house—some good, some bad, as always—but memories, nonetheless. Of that being the place where I introduced my children to Studio Ghibli movies. Of games of Dominion on the cramped dining table. Even of the nights where the kids just wouldn’t stop screaming, and it being impossible to get them to all fall asleep at the same time.
And, sometimes, I even miss it.
But I know, beyond a shadow of a doubt, that it was terrible. Absolutely terrible. I should never want to go back there. Never want to relive those memories.
But they’re there, now. And as time passes, and the bad memories fade, that thin veneer of happiness has come to coat those memories with a golden sheen.
I think of this, now, when I hear people talk about how much they wish things were like they were in the past. Often, they think that things were better when they were kids, or when they were in college, or other such timeframes.
I always knew that the haze of memory makes the halcyon days of yore seem more appealing than they did to those living in them at the time. It seems a human condition, to memorialize the past and scrub off its many imperfections—and then lo, what a surprise that the imperfect present does not compare.
Yet I have a true, tangible thing now I can point to and see this effect in full bloom.2 That rental house was terrible. There’s no good reason I should ever want to think fondly of that time.
But I do.
That was only a couple of months. How much worse is it for those halcyon months, those halcyon years? The golden moments in the cracks are far more plentiful, far easier to see than the dirty stones they fill. And with time, it’s not the amount of dirty stones we see: only the golden gleam of fond memories.
So thus I exhort myself, and others: do not be deceived those who cling to the memories of the past. Do not follow them as they attempt to recreate that golden era, for there was truly no golden era. All they see is that thin veneer of nostalgia, wrapping the dirty stones that were the bulk of that time.
For me, outside of the material benefit of those couple of months, there is paradoxically one thing I can say was good about that time: it revealed this tendency to me in all its fullness.
May I—may we—see that veneer for what it is, and adjust our expectations appropriately.
This created a potentially awkward situation once we sold the old house and the new owners moved in; but in practice, the overlap was short enough—and we didn’t hang around the old place much—that it didn’t quite come to pass that way. ↩
Did you know that the length of the day depends on the length of the year?
It’s a bit of a surprising fact if you haven’t been exposed to it before, especially since it’s not something we particularly think about. We carry on our day-by-day without thinking about it.
But, when you start contemplating worldbuilding, it becomes a little more important.
Let’s dive in.
You probably learned in school that a day is the amount of time it takes for the Earth to spin once on its axis. This is wrong.
Turns out, there are two different kinds of “days”, that have two different lengths.
The time it takes for the Earth to spin once on its axis is known as a sidereal day. You may remember “sidereal” from my earlier post on orbital period. It’s derived ultimately from the Latin word for “star”: sidus, and in this instance, means “the amount of time relative to the fixed stars”.1 Sidereal year, as it turns out, means the same thing: one revolution of the Earth around the Sun relative to the fixed stars.
Here’s the thing: if we actually define a day by the amount of time it takes for the Earth to spin on its axis, we run into a problem: it’s relative to the fixed stars. Think about it. If right now the sun is directly overhead, then six months later—when the Earth is on the other side of the Sun—it will be directly behind us. So right now it’s noon, and half a year from now, it’s midnight.
This is absurd.
Though I’m hinting at the other kind of day here, a solar day, which is basically the amount of time from high noon to high noon.
But the Earth is going around the Sun, and in the time it takes for the Earth to make one spin on its axis, it’s moved a little on its path around the Sun, so a solar day is a little longer than a sidereal day.
And it’s a solar day that depends on the length of the year. The logic behind this isn’t all that difficult: the shorter the year, the farther along—as an angle—the planet is, so the farther it has to spin from a sidereal day to make a solar day.
So a day depends on the length of the year.
A bit of an aside: there’s no way to predict an arbitrary planet’s sidereal day. It depends entirely on the angular momentum when the solar system was formed—and the interactions of all of the other bodies in the solar system since then.
For example, it’s thought that the gravitational effect of the moon slowed Earth’s days down a very long time ago. Based on some science, we know the Earth days were much shorter a long time ago—and we’re pretty sure Earth has kept the same year.
I’m munging the two kinds of days here, but I think you can figure out I mean solar days, since that’s what we actually tend to mean in common usage.
We can do the math to relate these three quantities. Let’s call them for the sidereal year, for the solar day, and for the sidereal day. For simplicity, we’re going to assume a perfectly circular orbit; obviously any extremely eccentric orbit will break this, but it’s going to be close enough for orbits such as Earth’s that have a very low eccentricity.
Let’s start with assuming that at time , we are at solar noon with the sun, and the planet’s angle relative to the sun is .
After one solar day, the planet will have moved along its orbit. We don’t care that much about distance, we only care about angle, and it will have moved an angle of:
Because we know the number of degrees in a circle, and and we know the time it takes to go around that circle, we know the angular velocity of the planet. Our angle is just the standard time times velocity to get distance.
We are also making the assumption that the planet is rotating in the same direction—that is, clockwise or counter-clockwise—as its orbit. This means that the solar day is longer than the sidereal day.2 So we know that the planet spins once and then a little more.
Because of the magic of geometry, we know that the angle of that “little more” is the same angle that the planet has gone around its orbit. Which means:
Again, we know the angular velocity of the planet’s spin, and so we can find out how much angle it’s spun in a length of time. And we know in that time it’s traced out one circle and a little more.
With a little algebra, then, we can determine the sidereal day for the planet based on its solar day and year length—both of which are easier to measure:
Ultimately, the math behind this isn’t quite so complicated. And now you know that a day is not, in fact, the amount of time it takes for the Earth to spin around its axis.
That is, all of the stars other than the sun. However, they’re not actually “fixed”, as it were, because everything in the universe is moving. But they move so slowly relative to the timeframe we’re working with, they may as well be fixed. And, it’s the best we have to work with. ↩
In instances where the planet rotates a different direction, the math is a little harder, but not by much. Those situations would simply be rarer because of angular momentum and solar system creation dynamics. ↩