Release early, release often

(Note from the future: This post was about an older version of this game.)

Yesterday, I spent all day working hard on my Haskell game – I was so busy that I didn't have time to blog about it!

Luckily, this has been very productive. If you can compile Haskell code, check out the current version of my game!

Right now, the game is about flying around as a green circle in an infinitely large world, and shooting out the walls. Use the arrow keys to move, and click (and hold) the mouse to shoot lasers.

A screenshot of the Haskell game: a green circle drilling a hole in green walls with green lasers

So far, the trickiest part of this project was making an infinite world that would remember all the changes you made to it, without making the game get really slow as the world got bigger.

Amusingly, after I said I wasn't going to keep working on my collision detection stuff, most of the work of this project has been on collision detection stuff. There's a lot of things that could be improved about it (like the fact that I've duplicated a lot of work between ZOrderCollisions.hs and ZTree.hs), but there you go; I'm going to make those improvements next, anyway!

I've released the game under the GNU General Public License (GPL), which means that you can freely copy it, modify it, and release modified versions, as long as you make all the code you add to it available under the same license.

– Eli

C++ vs. Haskell: ROUND TWO: But I want it to be fast!

(Note from the future: This post was about an older version of this game.)

In the last two days, I've entirely rewritten my game from Haskell into C++! As much as I love the expressive power of Haskell, it just isn't a suitable language for writing things that need to push the boundaries of computers' processing power. This is partially because of the way the languages are designed, and partially because a lot more work has gone into optimizing C++ compilers because it's a more popular language. On the plus side, by writing my game in Haskell first, I feel like I understand the structure of the program a lot better.

On my computer, this version runs smoothly at 100 frames per second, even when you have hundreds of bullets (laser bullets?) flying around in the infinite(!) world.

I've also added a few new features - there's now an infinite, randomly generated cave system, and the bullets last forever instead of disappearing when they leave the screen. I'd post a new screenshot, but it doesn't look much different than before... it's just that it's FIVE TIMES AS AWESOME when you play it.

As before, you can download the C++ source code.

– Eli

Two days later: EVERYTHING IS A PIECE OF SHIT

(This post is mostly a long rant about my computing woes. Feel free to skim over it.)

The linuxwacom project website says most modern Linux distributions come with Wacom tablet input drivers already enabled. Ubuntu is supposed to be included in this. So I look around on my system, and sure enough, there's already a package installed that's called xserver-xorg-input-wacom. So I plug in my tablet and try using it. Does it work? Nope!

So I download the linuxwacom drivers manually. I have to install a lot new stuff that they rely on. That's pretty normal. One of the things they need is the latest version of xorg-macros. I check on my system, and I have 1.3. I check my package manager, and sure enough, there's an update available, so I update to 1.5. Wait a minute... linuxwacom needs 1.8! And Ubuntu's “current version” is 1.5!

PIECES OF SHIT COUNTER

  1. Ubuntu

So I download and install that, manually, which isn't very difficult, just annoying. And I finish installing linuxwacom, and then restart my computer and... YES! The tablet actually works at giving input equivalent to mouse cursor input. So I go and open up some graphics-editing programs that I know are supposed to accept tablet input – GIMP and Inkscape – and sure enough, they also accept tablet input for themselves. Nice!

ACTUALLY DECENT SOFTWARE COUNTER

  1. linuxwacom

And then I spend about 15 minutes messing around in GIMP.

A stylized drawing of a person charging with a sword or something, out of a bright, open doorway.

Messing around in GIMP is pretty nice. GIMP is a bit like a canvas: You can draw on it with a variety of “tools”, and you have the extra advantage of being able to undo your actions, but [...]

Continue reading...

Recommended website: Harry Potter and the Methods of Rationality

I had to take a break from my coding and blogging for the last few days because of a hurting thumb. It still hurts somewhat, but I've become proficient at typing without using that thumb. In the meantime, I spent my two-day break reading Harry Potter and the Methods of Rationality, a work of fan fiction based on the Harry Potter series.

(The rest of this post will assume general knowledge of the plot of Harry Potter, but does not contain spoilers.)

The TV Tropes Wiki describes Harry Potter and the Methods of Rationality (abbreviated HP:MoR) as “an Alternate Universe story, where Petunia married a scientist.” Instead of being completely awestruck by the wizarding world after [...]

Continue reading...

A few concepts I need

I made progress again on my graphics editing stuff; I have a program that takes tablet input and converts it into individual lines/strokes. That task was surprisingly easy; once again, I'm a bit unsure of what to do next.

So I just set myself a specific task: Create the software that I would want to use to write People Are Wrong Sometimes if I'd written it with this instead of on paper.

Which of course raises the question “What do I need for that?”. So I looked over People Are Wrong Sometimes from a conceptual perspective, turning the question into [...]

Continue reading...

Happy Tau Day!

(This post assumes a certain amount of knowledge about math.)

I think it's really cheesy to do something on June 28 just because the decimal expansion of τ begins “6.28...”, but well, I might as well do it today as any day.

If you've studied mathematics in the modern world, you've probably run into a number called pi, or π, which represents the ratio of a circle's circumference to its diameter. That's weird and confusing, because pretty much every other mathematical concept about circles is based on the radius of the circle, not its diameter. The diameter is exactly twice the radius, so lots of formulas involving π end up referring to the quantity 2π.

This is pretty silly, becuase the “2” in “2π” doesn't really mean anything. It's just a correction factor to make up for the fact that the number we're calling “π” is exactly half of what the natural value for the circle constant is. That leads to confusing things like the fact that rotating by π radians is a half-rotation, not a full rotation... and if you want to rotate by three-quarters of a circle, you have to rotate by 3π/2, which is completely confusing.

So, a lot of mathematicians, including myself, are now using a new name for the quantity “2π” – namely, tau, or τ. Its value is approximately 6.283185307..., hence the cheesy date of June (the sixth month) 28.

More information at http://tauday.com/.

– Eli

Sex

(This post will contain straightforward descriptions of sexual stuff. If you think that's obscene, now is the time for you to stop reading... and reconsider your sense of morality.)

In this post, I'm going to talk about what sex is, as in “to have sex” or “to be sexually active”. Like a lot of other things I've talked about, our society thinks this is really important, but can't agree on what it means!

Society is full of myths and lies about sex – about what it means to have sex, about when you should have sex, about who should be having sex, about how many people you should have sex with, and so forth. In fact, there are so many myths and lies that I can't possibly address them all in one post. There are the traditional, Puritanical lies, like “You should never do anything sexual except with your spouse in a heterosexual marriage”. Lots of people disagree with that now, you say? Well, yes. But plenty of them have their own myths and lies, like “You should always have sex by your third date”1. No matter who you ask, someone is going to tell you how they think you should live your life.

All these myths cause a lot of problems. But there are too many problems for me to discuss one at a time. If I pointed out any three of them individually, I'd feel guilty for not pointing out all the rest.2 So I'm going to throw that all out and start over from the beginning.

What the fuck is sex, anyway?

Humans are strange creatures with strange feelings. I could [...]

Continue reading...

Recommended website: Fugitivus

So, there's a blog. A feminist blog. On the Internet. And it's really good. If you like feminism, you should probably read it. If you dislike feminism, you should definitely read it.

Its name is Fugitivus.

The writing at Fugitivus informs a lot of the way I think about interpersonal abuse. Which means it informs a lot of the way I think about how people interact with each other in general, because I think there's a lot of subtle abusive behaviors in almost every interaction between two or more people. (For that matter, there's a lot of subtle abusive behaviors in most people's interactions with themselves.) A year and a half ago, I read essentially the entire blog archive, and it has seriously changed how I think about other humans, especially in relation to gender (it is a feminist blog, after all). Harriet J, the author, has good ideas, and ze is a really, really good writer.1

I recommend Fugitivus without reservation. However, since it contains a lot of discussion about rape and abuse, you might not want to read it at a time when you're going to need to feel good about the world in the near future.

Fugitivus is at (surprise!) www.fugitivus.net. UPDATE: fugitivus.net is dead now. An older version of the blog, with most of the posts still visible, still exists at fugitivus.wordpress.com. The “Top Posts” in the right sidebar are a good place to start.

– Eli

Footnotes:
  1. For me, at least. Different kinds of writing appeal to different people, and it would be foolish to say that there's a single standard for “good writing”. That said, there are a lot of things I think Harriet J does well – ze gets to the point, has a clear flow from idea to idea... but instead of writing you an extensive footnote about these nuances, I invite you to just go and read zir blog. back

Neurodiversity

I've been using the word “neurodiversity” a lot on this blog. I always meant to write a whole post about what it means to me. However, I hadn't gotten around to it until a reader asked me about it this afternoon.

It's finally time to write that post!

What neurodiversity is

The word “neurodiversity” means two different (but related) things.

The first meaning is the idea that different people's brains work differently. This is just a fact. Human brains have many variations. Some of them, we understand scientifically. Others, we don't.

The second meaning is the neurodiversity movement. This says that brain differences don't just exist – they are natural and [...]

Continue reading...