Archive for June, 2009

Inalienable rights

June 22, 2009 2 comments

This is my response to the question posed:

By the way, the concept of only letting those who pay taxes vote (I think it was the original Commonwealth ideology, but not sure): what say you? The professor obviously hated it, but I find it a very interesting proposal, and imaigne that it could very well solve certain current problems of ours.

I’ve given this a lot of thought.

Thanks to government schools, the very idea of a “poll tax” or a “civic literacy test” to vote is tantamount to requiring a “sieg heil” to der Fuhrer: if you promote such things, you are a fascist.

That’s because, in the past, these things were abused to infringe on voting rights. The proposals themselves (you have to read three sentences from “Huckleberry Finn” in order to vote or whatever) were not unreasonable. It was the fact that they were then taken as a way to, with full legal authority, selectively deny people the right to vote.

It was a straightforward power, that when used abusively abrogated civil liberties.

Viewed this way, it seems damn close to certain gun control measures like “may issue” carry permits or, gasp, NC’s Pistol Purchase Permits which can be arbitrarily denied. I’ve heard talk that says the permits are a vestige of Jim Crow laws, a way to prevent blacks from owning arms.

That may be false, but it’s hard to think of a better way to arbitrarily cut off access to weapons by a demographic.

Both the notion of the civic literacy test and the gun registration program seem like sensible first moves, yet we must always remember what will happen when power to deny freedoms is given to the government: it will be used for political ends.

First it’s gun registration, then it’s a public gun owner list, then it’s a checklist for confiscation.

First it’s only those who pay taxes that can vote. Then it’s only those who publicly release their taxes that can vote. Then it’s only those who’ve been audited by the IRS OR paid directly by the FedGov (have to be sure where that money is coming from!) that can vote.

Advocating denying anyone the right to vote for any reason must always and forever be a hanging offense for a politician. The cost is too high to tread near that slippery slope.

Categories: Uncategorized

Levelling up

One of the most interesting experiences of my college career so far has been when I quit playing World of Warcraft during my first week there.

Now, first, a bit of exposition: I had worked a part-time gig at the local library for a year or so when I graduated high school in the Spring of 2007. That summer, I worked one of the best jobs I’ll probably ever have: playing WoW and getting paid to write about it.

So there I was, the summer between high school and college, afraid (as is natural) of the pending semester, faced with the realization that pretty soon I would have to hang up WoW writing and get a real job. While going to school full time.

Of course, when prodded about getting a job, I protested and made vague allusions to the prospect of not having enough time for homework. Of course, I knew full well that I was really just trying to prevent losing WoW time. After all, aside from spending my days playing and writing, I also spent my nights raiding so that I easily played 40 hours/week that summer.

And then school started: I moved in to the dorm Sunday, had my first day of a real job Tuesday, and the first day of class Wednesday.

Within a week, I’d given up the game. Although, not spontaneously, and not tally, mind you. With my writing duties concluded, I had mostly been spending my time raiding, a massive cooperative effort with 24 other people to jointly conquer dungeons. The social mechanic for this is a guild, a group of players that will raid together with hierarchical command logistics structures not unlike a military company.

Drama is also an inseparable part of the social structure, and it was just such drama (I annoyed the wrong people, failed to do things I was never told to do, and so on) that got me booted out of my guild one day in August when I was still adjusting to my stiff dorm bed.

And at that point, I knew that I essentially had two options: quit raiding or try to find another guild. Neither option seemed great, but I realized that this might be my one chance to give the game a rest.

And I took it. I didn’t swear the game off or anything: when an expansion pack came out a few months later, I picked it up and played for a while. But even then, it was a matter of fitting WoW into college, not deforming college around WoW.

In the end, though, the bit that still amazes me is that my erstwhile nightmare came true (college impinging on WoW) and instead of it being a hellish fate, it just seemed the natural thing to do.

And that’s almost the very essence of growing up.

Categories: Uncategorized

What it’s like

For those of you who are more interested in how this past week’s IDPA match went (and unsatisfied with my vague answers), Eric S. Raymond wrote up his experience the first time he went to an IPSC match a decade ago.

Then it was “Fire!” and I was in motion. Left cardboard; one, two. Right cardboard; one, two. Somewhere far away there was sunlight and explosions and seconds ticking away, but I was settling into the groove; no time, no space, just the act. A split second of worry as I lined up my on the rearmost popper; the cardboard silhouettes were old friends from the range, but I’d never shot one of these steel things before. What if I missed? What if it didn’t fall over?

But my bullet flew true. Poppers clang when you hit them; the sound of somebody knocking over a row of poppers quickly can be almost musical. The sound of that first one falling was certainly music to my ears. I made quick work of its neighbors and the rest of the V-shaped back row. The four smaller poppers in the front row gave me a little more trouble; I missed twice.

Then it was over and I stood there blinking as the RO intoned “If you’re finished shooting, eject, unload and show clear.” Total objective time no more than ten or twelve seconds. Could have been a year from the inside.

Although these days they can be very different games, especially at the national level, his experience with IPSC is very reminiscent of my own, although with less mazes. We both also came in near the bottom of the scoring.

Speaking of which, I have some more graphs dolled up for last weekend’s match, I just need to post them with some comments.

Categories: Uncategorized

A brief primer on computing number systems

June 9, 2009 2 comments

Over at Long Trance, I recently made a sort of snarky post about third-party Twitter apps who use signed 32-bit integers to hold message IDs and heaped criticism on them: they must be bad programmers if they did that, so they deserve to fail!

But it occurred to me that this comment should probably be put in a bit of context for everyone who hasn’t taken two years of Computer Science in college.

First, let’s back all the way up: computers are inherently binary, which means everything can be broken down in to two states: on and off. On a very fundamental level, computers have no sense of, for example, the number 3 or 7 or 128. They just know “on” and “off”. They signify this binary choice with “bits”, or “binary digits”, where each bit is just a single on/off flag.

So you can use a single bit to represent two numbers: zero and one. Likewise, you can use two bits to represent four numbers: zero, one, two, and three. The computer still just sees them as a series of bits, but by treating those two bits as one unit, programmers can do quite a lot.

This process can also be extended and scaled: if one bit represents two numbers, and two bits represents four, three bits represents eight different numbers and four bits represents sixteen different numbers. (If you’re curious how this works, this is the best explanation I can find but I’m still not really happy with it).

Here’s the question, though: let’s say we’re using four bits representing sixteen numbers. Computer science gives rise to an interesting question: which sixteen numbers? As shown earlier, the simplest thing to do is just count the “first” sixteen numbers: zero through fifteen. (In computer science, counting starts from zero instead of one because otherwise the computer can’t make sense of things like multiplication.)

Well, zero through fifteen will work great if we’re recording, say, the par for a given hole of golf: it’s always a positive number. It will never be zero (that’d be a weird golf course) and it’s unlikely to be fifteen, but it will fit nicely in between those extremes. Four bits will work because the par of the hole will never be more than fifteen or less than zero.

But what if we’re trying to store how well a golfer did on the hole versus the par? Golfer A sinks a Par 5 in 7 strokes: his difference is 2. Golfer B sinks that same hole in 5 strokes: his difference is 0. But what about their jerk friend Golfer C who always comes along and ruins the fun by sinking it in 3 strokes? Well, not only did he ruin the day, he just broke our number system.

How do we store a negative 2? We change which sixteen numbers we’re representing with those four bits. Instead of representing zero through fifteen, we’ll still represent sixteen different numbers, but start those numbers at negative eight and go up, giving us a range of negative eight to positive seven.

The short explanation of how we do this is to use one bit of our four bits to indicate whether the number is negative or not. That basically just leaves us with three bits to use to actually count with, so we can only go up to seven. The reason we went to negative eight to start and go farther negative than positive is all thanks to Two’s Complement, the number system that lets computers work their magic. Unfortunately, that’s outside the scope of this post (it took about a week to explain it in my Assembler class), and the Wikipedia article on the topic sucks, so you’ll have to take it on faith.

But when a number that uses one of its bits to determine whether the number is positive or negative, we call that “signed”, as in our above example was a “signed four-bit integer”. Integer just means that it only holds mathematical integers (i.e. whole numbers) and doesn’t mess around with fractions and decimals: you can’t be half a stroke ahead of par, for example.

So again, using the above example: it doesn’t make sense to use a signed integer to represent the par for the hole because it will never be negative. So when we use a number that will always be positive, we call that “unsigned”, as in “unsigned four-bit integer”.

Switching gears back to the origin of this post: every Twitter message is given a unique ID number, which I’ll call its TweetID. The most important thing about a TweetID is that only one message ever has that ID. If two messages had the same ID, we wouldn’t know which one the user wanted when he asked for tweet number whatever.

The easiest way to do this is just to start at 0 and count upwards, giving each new tweet the next number. The problem then arises of making sure that we can give out enough numbers to give each tweet its own. Obviously, this would be a terrible use of four-bit integers, because then you could only have sixteen unique tweets! Likewise, it makes no sense to use a signed number here because if you start at zero and count upwards, you’ll never have a tweet with a negative number.

So what we need to hold TweetIDs is something nice and big, as well as unsigned: say, an unsigned 64-bit integer. That’ll give us 18 quintillion different numbers, more than we should ever need (but not vastly more like we would get if we used, say, an unsigned 128-bit integer). To give you an idea of scale, Wikipedia says that one quintillion is about the number of insects on earth. And this is 18 times that.

So that’s what we’d want to use (and what we hope they’re using at Twitter HQ). But as the site linked to in my Long Trance post points out, if someone was writing a Twitter app and didn’t think specifically about this problem (having enough space to hold a relatively large TweetID), they would probably use the programmer’s standard number type for storing “big” numbers: the signed 32-bit integer.

See the problem yet? Using 32 bits, we can represent over 4 billion numbers, but when we use them in a signed number, half of that representational potential is less than zero and useless here. The biggest number that a signed 32-bit integer can hold is about 2.14 billion, and there are about 2.09 billion tweets currently on the books. It won’t be long now before there are tweets that have an id that can’t be contained in a signed 32-bit integer, and if any third-party apps try, they’ll fail in a myriad of unexpected and fun ways.

Edited a few days later: Yeah, the rollover came and went, and broke a few apps (notably Twitterific on the iPhone). But there was also a tweet from one of the Twitter guys saying that they indeed do use a 64-bit unsigned integer to hold TweetIDs. Good for them.

Categories: Uncategorized

You effect me, you infect me

June 5, 2009 1 comment

I’m locked in a love/hate relationship with rhythm games. I played the original two Guitar Hero games when they were that quirky thing that the nerds did back in the living room at the party while everyone else was… whatever. Beer pong? No, too early. Whatever they did when I didn’t care.

Yeah, I did it before it was cool. I never say that, except I just did. It was awesome except that the later songs in Guitar Hero 1 were veritably unplayable. The hammer-on/pull-off system was hard as shit and the tutorials were no help. And this all pre-dated so good luck getting help!

Anyways. Those were The Good Old days. Wait, nope, that was a lie. The Good Old Days were when I got the first Rock Band. The early iterations of Guitar Hero were a baby taking its first steps and utterly rocked. But Rock Band is when they got the whole social/solo music experience and hit it on the head. It was magical.

But then I would pack up the Rock Band kit, go home, and play Guitar Hero 3 and feel dirty inside because everything except the gameplay was so bad. But for someone who really loved the guitar rhythm part, they nailed the technical execution: varying fretboard speeds, solid hammer-on system, everything.

And then I made two big mistakes: I picked up a real guitar and I went off to college.

For some reason, I am required, when I actually play a rhythm game on an ongoing basis, to have a shrine to it. A shrine with a controller that I can just pick up and play. Having to spend ten minutes setting up the drum kit that I had to break down to fit under my bed in the dorm Freshman year? No play. And, of course, a roommate who’s always watching TV kinda killed my playtime Sophomore year.

And so I’m in withdrawal. But I’m getting sucked back in. The one thing that’s really got me hook-line-and-sinker, that’s made me recant my promise never to buy a Guitar Hero game again after 3 is Guitar Hero Smash Hits, which as near as I can tell found its target demographic by aiming at the crosshair on my back. A combination of all the classic Guitar Hero songs that I loved back when the genre was lame, with updated gameplay systems and graphics, plus parts for the whole band? Sign me up.

And then I remember why I don’t play any more: I don’t have my shrine. There’s no space. But, there, glimmering on the horizon, lies hope for my rhythm game salvation: my apartment. Okay, that’s great. Wait a few months. Hope you’ve found a bed to sleep in by the time you move in! (I haven’t.)

But anyways, just like someone who’s quit smoking is extraordinarily sensitive to secondhand smoke, my ears are constantly up, waiting for news. Guitar Hero: Aerosmith? Guitar Hero: Metallica? Guitar Hero for the DS, Part III? It’s all a sickening form of crass commercialization that is making an astounding number of people astoundingly rich. Don’t believe me?

A survey conducted by Brown University’s Kiri Miller found that 76% of the players of Guitar Hero bought the music they heard in the game. . . . The band DragonForce, whose song “Through the Fire and Flames” is featured as a bonus song in Guitar Hero III: Legends of Rock, saw a 126% increase in CD sales in the week after the release of the game, and downloads of the song, selling fewer than 2,000 weekly, rose to more than 10,000 after Guitar Hero III’s release and approached 40,000 the week ending 2007-12-30. [That’s a 20-fold increase for those of you playing the home game. -HZS]

Even older, established groups such as Aerosmith saw an increase in sales at the same time Guitar Hero games containing their songs were released, . . . a 40% increase in the band’s catalog was seen in the weeks following the release of Guitar Hero: Aerosmith. According to Activision CEO Bobby Kotick, Guitar Hero: Aerosmith has made more money for Aerosmith than any of their previous albums.

Christ on crutches. I have no further wonder why there were a dozen or so different Guitar Hero titles released last year. It’s a giant, all-consuming tornado. A tornado made of dollars.

And then there’s the competition, Rock Band, which is releasing The Beatles: Rock Band and Lego Rock Band this year, both of which seem like sensible and viable iterations on the series. For some reason even I can’t explain, I find myself attracted to the guitars that are going to be sold bundled with The Beatles: Rock Band:

But in the end, it seems like the whole industry is due to burn itself out at this pace. The original Guitar Hero whose halcyon days are a fond memory to me was released in 2005. It’s barely four years old! The original Rock Band, which I usually think of as being the first stone in this avalanche, hit shelves in November 2007: a year and a half ago.

A practical voice says that the success is based on increased record sales accompanying the sale of the tracks in a game and that with a vast number of songs coming out, the effect will doubtlessly become very diffuse and the individual contribution relatively small. But it’s hard to imagine that it will ever be negligible.

In short, although I feel appalled as a original groupie who hotly anticipated the release of Guitar Hero II (Cooperative modes so we don’t have to play against each other all the time!) at the frankly obscene level of commercialization of my beloved genre, it’s hard to dispute the fact that these games are here to stay. Many gamers will compare Guitar Hero with its more-than-annual releases to Madden, the football game series that is faithfully re-bought every year by a fantastic number of sports fans.

But, actually, I think the comparison made by Wikipedia (yes, Firefox, Wikipedia is a word) in the above link is more apt: I think that rhythm game tracks are destined to become a part of the music industry in exactly the same way that music videos are. There will be an expectation that for any mainstream album, part of your promotional budget will go to filming music videos for a certain number of singles, and another part will go to paying to have rhythm game tracks made of a certain number of singles, and sometimes the whole album.

Oh yeah, and then the final step: bathe in money from the track sales.

Categories: Uncategorized