Vid's Space

Hello! You are visitor number 96527! I may be a bit narcissistic, but I don't quite want to talk about myself for pages and pages on my website anymore.  I could, but that might be a bit depressing.  Meh, at least I have a job.

Suffice it to say I'm a pansexual nudist roadgeek with issues including but not limited to depression, selective eating disorder, and possibly Asperger's syndrome.  But again, this page isn't about me.  Instead, it's my space for random thoughts which I hope you'll find interesting or amusing. 

By the way, if you don't like the fonts or colors on my website, now you can override them using the Style Chooser!  As for other improvements to this site, I really need to redo the guestbook, get the counter/greeter system to work how I originally intended, and oh yeah, get in the habit of adding content more often…

Random Quotes

I hope you'll find the following quote amusing and/or thought-provoking.

“I've been with my share of women. In fact, I've been with like a lot of people's share of women.”

— Joey Tribiani

A new quote is randomly selected three times each day. For your convenience, here's a permanent link to this quote.

Cool Story, Bro!

Here you'll find brief anecdotes which usually are worth the time spent reading them.

New items will be selected in 13.7 hours.

Lost & Found

When I lived on campus, I used to carry a comb from a barber shop in a small town near my parents' house. The name of the barber shop was printed on the comb. One day I noticed it was missing. A few days later, a short distance away from my dorm building, I found a comb with the name of the small town barber shop printed on it sitting on the ground. I suppose there's a chance it wasn't the same comb as the one I lost, but I claimed it as my own anyway.

Freudian Spoonerism

This one time, during a discussion about how much damage would occur at different distances from a nuclear blast in downtown Columbus, I meant to say West Broad Street, but the sounds got a little mixed up in my head, and I would have said Breast Wad Street had I not caught myself halfway through the first word.

L Fan Club

So this one time I was at a mall in southeastern Michigan, wearing a T-shirt featuring the Deathnote character known as L. A group of young women complimented me on the T-shirt and asked me where I got it. I told them I'd purchased it at Hot Topic, then I asked if they were cosplayers. Indeed they were. How did I know, you might ask? That's a good question; the young women asked too. I told them they had “anime hair”. Pitch black, unmoving, spiking at odd angles — definitely anime hair.

More Cool Story, Bro!

Passing Thoughts

This is the opinion section of my site. If I have something to say to a general audience that won't fit in a tweet, it'll probably end up here.

New items will be selected in 1.7 hours.

Customize Your Browser

Have you ever really poked around your web browser's settings? It's not all technical mumbo-jumbo. In most browsers, you can choose what fonts to use on certain websites. Actually, maybe I should clarify something first. Websites don't actually come in unchangeable fonts like a printed document would. They're actually electronic text, with suggestions for your computer about things like fonts for displaying it. Some websites don't even have these suggestions, and that's when your browser uses “default” fonts.

There are actually at least three kinds of default fonts, because some websites might suggest one category of font without really caring what specific font to use. These categories are “serif” (newspaper-style fonts), “sans-serif” (relatively plain fonts) and “monospace” (typewriter-style fonts). In many browsers, the defaults for these respective categories are Times (New Roman), Arial/Helvetica, and Courier (New). Many people find these specific fonts to be rather boring, partly because they're the default fonts for almost everything. As a result, most websites are designed with suggestions for slightly more interesting fonts.

So, back to your web browser. In most popular browsers, the user can specify what default fonts to use, either in just the “serif” category or in multiple categories. Many browsers allow the user to select different fonts based on what language a website is written in. Some of them will even ignore the font suggestions a website provides, and use only the default user-specified fonts, if that's what the user wants.

I encourage everyone to select their favorite fonts (think practical; do you really want to read a whole article in Jokerman?) for their browser defaults. I have a few suggestions, for readers who don't know what to pick. For serif fonts, try Garamond, Palatino, Georgia or Constantia. For the sans-serif category, perhaps Lucida Sans/Grande, Tahoma, Corbel, Frutiger, or Century Gothic. In the monospace category, it's probably best to let each user pick his favorite from the monospace fonts installed on his system, since tastes and installed fonts can vary significantly.

If people's default fonts are more interesting, then maybe web authors would feel more comfortable relying on them rather than specifying a font for the sake of specifying a font. Or, on the other hand, if a designer actually wants Times New Roman, he should learn to specify it.

For that matter, some other default style choices in web browsers are rather bland. Maybe headings should, unless the website says otherwise, be in a sans-serif font rather than serif. And why don't paragraphs have indented first lines or justified text? Not to mention the inter-paragraph spacing that looks exactly like one blank line. That's given too many amateur web authors the mistaken idea that <P> simply means “insert two line breaks”. And why the crap do all web browsers have the same default style sheet? I don't think HTML was intended to look exactly the same on everyone's screen, and if an author wants it to, then he should specify all these style choices in CSS.

In case you're wondering, these default styles can usually be overridden by the user, too. How this is done varies from browser to browser, but often it's a matter of placing a CSS file somewhere the browser will look for it. For some browsers, an add-on may be available to simplify this process. (Example: for Firefox, there's an add-on called Stylish that's quite popular.) If you don't want to learn CSS, it shouldn't be too hard to get an interesting stylesheet from someone else, and many style-related browser plugins have associated means for users to share stylesheets.

Alright, this ramble has gone on long enough. I think I covered my annoyances. To summarize, go customize your browser already!

Leap Day Reform for the Digital Age

Many date-handling tasks computers routinely face — such as translating dates between human-readable and internal formats, or just determining what day of the week a given day falls on — requires code that converts a year/month/day combination to a simple number of days since some reference date, or vice versa. Anyone who has had to write such computer code knows that our Gregorian Calendar isn't very convenient for computers.

For example, one fairly obvious method would be to start with the day of the month, then add a number to that (using the month as an index into a lookup table) to obtain how many days since the start of the year. But then, if it's a leap year and the month is greater than February, the program has to add one. Finally, to this number, the program adds 365 times the year (relative to the reference year) plus the number of leap years after the reference year and before the year of the date being evaluated. Now consider the Gregorian Calendar's rules on leap years: every year that's a multiple of four is a leap year, except years that are a multiple of one hundred are not leap years, unless the year is a multiple of four hundred, in which case it is indeed a leap year.

The first thing about all that I'd like to simplify is how, for any month March and later, the number of days since the start of the year for a given date depends on whether or not the current year is a leap year. This consideration can be made unnecessary by moving leap days to the end of the year. In the Digital Age Calendar, February's length is fixed at 29 days, and December's is 30 days, or 31 in leap years.

The next thing I'd like to simplify is the pattern of leap years. I'll keep the general pattern of having a leap year every multiple of four, because it's already convenient for computers. Scrapping the one-hundred-year and four-hundred-year parts of the pattern, we'd wind up having leap years slightly too often. So I calculated the ideal interval between skipping leap years, and it turns out to be almost exactly 128 years. That's surprisingly convenient for a computer! In the Digital Age Calendar, leap years are those preceding the multiples of four, but not those preceding multiples of 128. (The choice to have leap years before multiples of four is to further simplify computer calculation. The alternative would be to somehow insert a leap day at the beginning of the year, and I don't think people would adapt so well to having a 0th of January.) Anyway, the resulting pattern of having 31 leap days in a 128-year cycle matches the Earth's orbit considerably better than the Gregorian Calendar's pattern of 97 leap days in a 400-year cycle.

So here's some simple computer code to convert from a date to a number of days. In this example, the reference date is December 31, 1919 in both the Digital Age and Gregorian calendars.

const int MOffset[12] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};

int SequenceDay(int Year, int Month, int Day) {
	Year -= 1920;
	return (Year * 365) + (Year >> 2) - (Year >> 7) + MOffset[Month + 1] + Day;

void SplitYMD(int Seq, int &Year, int &Month, int &Day) {
	int Cycles, Quads;
	Seq -= 1;
	Cycles = Seq / 46751; //integer division, rounded towards −∞
	Seq += Cycles;
	Quads = Seq / 1461;
	Seq -= Quads * 1461;
	Year = Seq / 365;
	Seq -= Year * 365;
	Year += Quads * 4;
	Month = 11;
	while (MOffset[Month] > Seq) {
		Month -= 1;
	Day = Seq - MOffset[Month] + 1;
	Month += 1;
	Year += 1920;

While this may look a lot like C++, consider it to be pseudocode — especially if you find syntax errors. For the Gregorian Calendar, there would certainly have to be more ifs and modulos. Also, feel free to substitute your favorite search algorithm for my while loop. (I'd personally implement a binary search, but the linear search makes clearer pseudocode.)

Of course, any time a new calendar is adopted, there will be some conversion issues, particularly if the adoption isn't universal. Still, the difference would only be of one day, and only for 60 days each year, three of every four years. Seven eighths of the time, the calendars match. That is, until 2048, at which point the calendars will begin to disagree every day until 2100…

Besides the simple fact that people don't like change, I don't see why this calendar couldn't be adopted. Using the slightest amount of care in selecting the transition date, it's easy to make the transition without a noticeable jump in the date, as happened in the switch from the Julian Calendar. They did it back then, and this change would be even less of a bother. Except, perhaps, for the millions of embedded systems that can't easily be updated. How's that for irony?

Okay, I realize that the only practical problem solved by this new calendar is in writing code, and once the code is written, it hardly needs to be written again. Furthermore, any performance gains resulting from simpler code are irrelevant considering modern computing power. Still, I find this Digital Age Calendar to be simply more elegant and logical. Can't that be reason enough to switch?

More Passing Thoughts

Cool People

Cool Famous People

Here are, in no particular order, some of my favorite people from movies and TV:

Cool Obscure People

Here are, in no particular order, some of my favorite people of whom you may not have heard:

Best of my LJ

You know how radio shows often run "best of" shows during the weekends or when the stars are on vacation?  Well, I haven't posted to my LiveJournal much recently, but there are some good nuggets from the past I thought I might share here.