Let me get one thing out of my system before I begin this little tirade: I loathe political correctness. Or, to be more in tone with that statement, political correctness can suck my hairy ass. I do realize that people find different things offensive, but I feel insulted in a vague way when people decide what I can and cannot express. I think Anthrax puts it best:
Now you might take offense
To a word like “fuck” or “shit”
But you fuckin’ don’t have the right
To discriminate me for saying it!
This is actually kind of curious, considering that I’m close to finishing an uber-cute game called Sheeplings that doesn’t feature a mean bone in its entire metaphorical body. It used to, though: previously I had the text “Dammit, you lost!” when you lost a level. Due to pressure (well, honest suggestions rather) I changed it to something less offensive; apparently mothers and kids might find “dammit” an unnecessarily strong word. Cue rolling of my eyes.
That little anecdote was put there to show that I’m not only an offensive person - I’m also a hypocrite.
Anyway, onto today’s experiment in political correctness: Bookworm Adventures by PopCap Games. It’s a lovely game in which you make up words from a set of available letters in order to defeat enemies, gain experience, and advance the story. I liked the original Bookworm, and I love this game: it has a progressing storyline and it’s not timed! The two facts combine into something I thoroughly enjoy on a lazy Saturday like this.
But oh, what’s this? I tried to compose an unorthodox word:

Neither CUNT nor CUNTS is a valid word. Meh! I got my first whiff of fear - was I playing a dumbed-down game with a censored word list?!

But hey! PENIS works just fine (and gave me a pretty good attack to boot). Time to investigate this further…

The silly WEE works just fine as well, as I suspected, but this doesn’t:

SHIT is banned! What the hell? That has to be one of the most common words in the English language, not counting prepositions and such. What about a more toned-down version…

Nope, SHITE isn’t allowed either. Meh! I’m really starting to dislike this. Time for a few other words:



DONG: not allowed. SHAG: allowed. The very common and practical word FISTER isn’t allowed. Anyway, I could go on and on with more tests, but I’ve reached my conclusion:

Why yes, Moxie! I would like to know why PopCap is censoring the word list. And I also would like to know how they’re deciding what words are okay and what aren’t. Why is PENIS, WEE and SHAG okay but SHIT isn’t? And is CUNT really such a horrible word that you have to remove it from your list?
I don’t see the point of the censoring. Kids can still spell the naughty words; what would happen if they got points for them as well? Would they be encouraged to use such words - is that what PopCap are afraid of? It’s not like they’re displaying bad words themselves - they’re just giving people the choice. I guess I’m most definitely a pro-choice person, eh.
My aversion toward political correctness isn’t a new thing. Back in 1998 I fell in love with a schoolmate’s game Chickens 2, in which you slaughter innocent little chickens trying to - ah-hah - cross the road. Well, a patch of grass actually. This game featured lots of gore and blood. I wanted to push this idea further, though: I thought about what people would find taboo, and eventually came up with a brilliant idea… A game where you killed cute and innocent babies. The babies would get mutilated in various ways, and cry and sob heart-wrenchingly.
I wonder how many people I would have offended with that game. Maybe it’s a good thing that I don’t have enough productivity to fulfil all my strange ideas.
2007. Taste the word. It hints of futuristic worlds and scientific advances unthought of just ten years ago. But at the same time it’s mundane and common - it’s simply the year we live in right now. And was ten years really such a long time ago? That’s what I asked myself when I found an old zip archive called FirstProg.zip. Granted, it’s definitely not a complete colllection of my first programming experiences: I dabbled with game and demo programming on the C-64 and Amiga before this. But some of my earliest PC projects were found in this archive! Let me show you a little bit of what I found. I’ll begin with a vague timeline:
- Pre-1996: I messed with C-64 and Amiga hobby projects of various types, such as an Amiga fighting game called Time Fighters. I actually received some praise for it - it had a much better control scheme than the over-hyped Body Blows. Not that that says much.
- Spring 1996: I bought my neighbour’s 40 MHz 486 PC. This was my first real experience with x86 computers, and I quickly learned the joys of having an incredible amount of RAM to use in Fast Tracker II, compared with the limitations of an Amiga. At first I had all of 4 MB RAM, but I soon upgraded it to a massive 16 MB!
- Autumn 1996: I heard rumours about an assembly programming group at my high school, and soon joined the four other students interested in diving into the mysteries of x86 ASM. Soon after I had gotten a copy of Turbo Assembler I created this:


I intended to do a very straight-forward Space Invaders clone, but due to sloppy coding I forgot to clean up the bullets when they had hit the bottom of the screen - it looked like a big pile of crap after a while. In addition, my horrible green UFOs had been turned sideways due to…erm…inexperience with x86 memory addressing, and almost looked like green bottoms instead. So the project turned into Shit Invaders. Oh yes, and as you can see I was childishly impressed by David Eddings when I tried to think of a handle to use.
I also experimented with Mode X scrolling. (Don’t ask what it is.) Childish humour resulted in the following scrolly effect:

The scroller starts small with the text “PEOPLE HAVE BEEN COMPLAINING ABOUT THE SIZE OF THE FONT IN MY SCROLLIES, SO…” and ends with a massively enlarged “BETTER?!”
I also worked on a platform game that I intended to call Satan Claus:

It may not look much, but there are actually three parallax layers: one background that simply were the gradient blue tones for the sky, one layer with the blue hills, and one layer with the foreground. I’m sure that it might even have looked pretty nice if I’d had a real artist to help me instead of making some crappy graphics myself.
Back to the timeline:
- Spring 1997: By now we were finishing high school and had to present what we had accomplished during our studies of the illustrious assembly language. This was one of the things I ended up showing to the teacher:

A simple demo effect with a generated flag (and its accompanying gradient colour table) and a bitmap manipulated by a sinus table in various ways. Simple enough, but it looked really nice. Go me! I did something that wasn’t just silly!
Of course, I compensated that brief bout of seriousness with making an action game inspired by Smash TV and Robotron, called Mega Brain Splashing:


A curious tidbit: this game sucked incredibly hard, and one of the reasons is that I had never actually played neither Robotron nor Smash TV - I had just read about them in video games magazines and imagined what the gameplay must be like. Curious tidbit number two: the title screen for Shit Invaders also featured a fire effect, but the difference was that by the time I made Mega Brain Splashing I had learned how to make it fast enough in real-time instead of just using a static picture.
More timeline business:
- Autumn 1997: I joined the Swedish military for 10 months of mandatory torture. Interestingly enough this led to a burst of creativity since I was located at the same place as one of the guys I’d been doing assembly programming with! Ka-ching! Touchdown! Together we experimented with many different subjects: 3D graphics, C programming, low-level optimizations of Bresenham algorithms, and so on. By myself, I continued making strange small games and proof of concepts:

I toyed with having enemies move in pre-determined paths, in something that would have been Mega Brain Splashing 2. This time there would have been a two-player mode.

I also started Mega Brain Splashing: The Medieval Interlude. This was going to be a gory action-RPG that combined exploration with lots of blood…and - as can be seen above - stolen graphics from the Exile II game. But most disturbing was probably this little game:



A Star Wars game completely written in assembly! I’ll spare you the text from the scroller, but I’ll note that involved mentions of homo saunas, epic dangers, and another trench run. Oh, and see how quirky it is - “Press Escape to play.” I must have thought that I was very clever and funny indeed. The game itself is quite simple: you pilot an X-Wing that has two shields - one to the left and one to the right. Hitting obstacles removes shield strength. If you shoot targets on the way you get points. And if you reach the end of a “level” you must fire off your proton torpedo at a specific goal. That’s it.
Eventually I was let out of the military and ended up studying computer science; that’s when I went over to the dark side - i.e. Windows programming. Many small games and projects emerged from that transition, one of which was in fact Mega Brain Splashing 3:

Ironically, many people found MBS 3 better than MBS 4 that I created later. There are no technical reasons for it: MBS 3 was in 8 bit colour, I used colour lookup tables to simulate transparencies, it just consisted of a single static map, it had a more basic gameplay, it had no bosses, the weapons weren’t very balanced, it wasn’t compatible with all graphic cards (due to the weird software rendering I used)… All of these things were improved on in MBS 4, but I just might have forgotten to transfer the most crucial part: the fun factor.
It’s often said that ideas are worth nothing, and only the implementation matters. However, this might really be just part of a bidirectional fact: ideas without implementation are useless, but implementations without a good idea results in a loss of this elusive fun factor. Maybe, in creating MBS 4, I concentrated too much on the technical aspects of the game instead of stopping to think: “Is this really fun? Am I basing the game on a good idea? Am I injecting my usual experimental mood and quirkiness into the game? Or am I just trying to improve the technical bits?”
“What the hell,” the regular technophile reader exclaims. “Home network setup? I don’t need a guide for this. I just plug in my router and go for it.”
That’s a valid objection, and that setup works for 90%…no, 95%…no, 99% of the people. But this weekend my parents visited my place, and my stepdad had several questions about networks and WLAN setups and optimizing speed and whatnot, so I received a sudden burst of inspiration: I decided to write a description of my home network, including explanations why I made certain decisions. The last bit is essentially why this might be of interest to people; that is, weird people.
First of all, I’ll show you a little diagram over my current home network. I call this masterpiece What To Do With All Those Bloody Computers You Have Lying Around That No-One Will Buy And You’re Too Cheap To Throw Away:

On the left you see the Internet. Yep, that’s it - that’s all of the Internet. The rest is set up like this:
- One 100 MBit switch splits my connection to my ISP into three parts.
- One of those parts (top) leads to my normal workhorse. This is where I surf the net, do my hobby projects, watch porn, etc etc. It has two network interfaces - one Ethernet and one WLAN card.
- The WLAN card connects to the second Internet split: the WLAN router. Or Access Point if you wish. Here I also have a wireless connection to my file server, and my media PC. The latter is shown as a laptop, but it’s really not.
- The third Internet split is to my web server/general external file server.
Now, I’m sure you have a few comments and/or exclamations already, but I’ll ignore those. Instead I’ll mention some points about basic networking. Here’s a random collection of important things to know about networks:
- Ethernet connections can be 10 or 100 Mbit. Effectively, you can get ~10 Mbit or ~80-whatever-it’s-a-high-number-anyway Mbit respectively.
- 802.11b is maximum 11 Mbit. 802.11g is maximum 54 Mbit. But effectively you’ll rarely see more than 25 Mbit out of those 54 Mbits. Be happy if you have 20 in your home, ’cause the 2,4 GHz band (that the radio transmits on) gets messed up by all kinds of things: cordless desktops, microwave ovens, etc.
- D-Link and Netgear have proprietary solutions for 108 Mbit, but those suck most of the time. And they are proprietary. Unless you’re a rabid D-Link/Netgear fanboy who only buys one specific brand of 108 Mbit products, you won’t see that increase in speed at all anyway. Stick with 802.11g instead - it’s good enough if you use it correctly.
- 802.11n is a new standard that’s starting to emerge. It will yield a data transmit rate of ~200 Mbit, so that’s pretty darn nifty. It uses nice tricks such as multiple antennas and impressive multiplexing algorithms to get that speed; of course this means that your old radio cards will not be able to handle 802.11n. That’s good to know. It’s also good to know that 802.11n is not a finished standard yet, so there are no 802.11n products. You can find pre-n products, but those are also proprietary solutions - not official 802.11n. Guess what? I’m sticking with 802.11g.
- Switching and bridging occurs on layer 2; this means that actions are performed based on MAC addresses. Routing, on the other hand, is performed on layer 3. Layer 3 equals IP level. That’s why my Access Point is also called a WLAN router: a device is a router as long as it deals with packets on an IP level. However, I could also have configured my Access Point to be a simple bridge; in that case it would not be a router anymore, since it would only deal with layer 2. It’s good to remember these things.
So, onto the promised explanations. I’ll put it up in FAQ format. (Fake Asked Questions.)
- Why a 100 Mbit switch?
Because I’m a lucky bastard who has a 100 Mbit connection at home, and I can get five IP addresses. In order to use the different addresses I need either a hub or a switch. A hub would act like a dumb bridge; a switch, however, does port-based forwarding based on MAC addresses. The end result is less unnecessary traffic with a switch, and that in turn leads to (marginally) better speeds and less potentially problematic background traffic.
- Why does your normal computer have two interfaces? Why not just use the WLAN interface?
Because that computer is where I normally download stuff, and it would be an immense waste of bandwidth to limit myself to ~20 Mbit at most compared to what I can get through Ethernet.
- Okay, but why not connect it through Ethernet to the router?
This would work pretty well; however, for performance and stability I have a simple rule: when possible, have as few devices as possible between yourself and the Internet. A router or a firewall might work perfectly for you, but there are bugs present - you just never know when you will encounter them. Routers also have another weakness: NAT. It’s a great feature which multiplexes several local IP addresses (for example 192.168.1.1, 192.168.1.2 etc) to an external IP address. The problem is that each connection to the outside requires an entry in the NAT table (so that the router knows how to map things), and this table is never big enough. At least not if you want to - for example - use BitTorrent.
- Are you insane? Connecting your computer to the Internet without a firewall or a NAT to protect you from break-ins?
Seriously, I don’t know what people do with their computers. If you don’t install weird things or do stupid things, you don’t need to worry about getting your computer hijacked or cracked or whatever. (Of course, because I wrote this I’m going to get hacked tomorrow. But so far the only computer I’ve had that’s gotten hacked/messed with has been a Linux web server that I couldn’t be arsed to upgrade.)
- Why do you have an Internet connection on the AP if you do all your downloading on the other computer?
Two reasons: the media PC can download TV schedules and stuff, and I can provide hospitality Internet access to visitors who have laptops.
- If you care so much about performance, why do you have streaming stuff and visitor Internet access through WLAN? That limits the performance.
Unless there’s too much radio disturbance 802.11g suffices quite well for streaming music and video between the media PC, the file server and the normal computer. I like to optimize, but the benefit of wireless is worth the decrease in performance; make sure you only optimize the things that matter. Oh, and visitors don’t need more speed than that; so there.
- What’s that last server thingie doing by itself? Why not connect it to the router?
I want to separate external computers from internal ones as much as possible; if my web server should happen to get hacked, the hacker must not get access to the rest of my computers. Also, consider the use of the two other Internet connections: I’m mostly a client in those cases, so I don’t advertise my IP to the outworld in the same way as a web server does. The web server is a target - it runs around shouting “yay, hack meeee!” while the other computers hide in the shadows.
- Okay, okay. This is your home network. But you know, most people don’t get fast speeds and 5 IP addresses.
Technically this isn’t a question. But okay, here’s a modified network topology pic:

Here you only assume one connection to the internet, and for security reasons I’ve removed the external web server. It looks pretty similar to what most people might have at home, but there’s one big difference: I would choose to still have a direct connection to the main computer, and make the WLAN access strictly local. (Or possibly routed through the main computer.) If the WLAN router is connected to the Internet, it will receive lots of background broadcast traffic from the WAN side; this will toll its capacity and might introduce unforeseen problems and bugs, depending on the router in question.
This is a setup that would work for almost all types of Internet connections: Ethernet-plug-in-the-wall, cable, DSL. In some cases you need to have a modem connected to the main computer, and it’s tempting to find a do-it-all solution that includes DSL modem, router, Access Point and firewall…but I advise against it. It puts a lot of pressure on a single device, and it also makes your network less flexible - you can’t try different brands or different solutions. I had DSL previously and tried both kinds of setup; I ended up using the DSL modem as a simple bridge to the main computer, since there were too many problems otherwise.
There, I think I’ve ranted quite enough now. Hopefully this might be useful to someone somehow; just remember that these opinions reflect my own experiences and might not be true for you. But whatever you do, I have to stress one thing:
Don’t forget to use WPA/WPA2-PSK on your WLAN device! Don’t leave it unencrypted, and don’t use WEP. Use WPA or WPA2 (the difference is basically just AES encryption instead of TKIP) with a passphrase instead; it’s just as easy to use, and much much more secure.
Sorry for the misleading title - this won’t be a deep look into AI models, and neither will it link to any brilliant new papers concerning AI architecture. There will also be no diagrams and no pseudo source code. All you’re getting is a musing on differences between the academic and the commercial world. I’m sure you’ve read countless of articles about that issue already, but I have something new: I have anecdotal evidence to spice things up! Cue the crowd’s cheer.
The time: February 3, noonish.
The place: A stinky bus full of tired and half-drunk travellers going from France to Sweden; at this time the bus happened to be located in Denmark, but that’s highly irrelevant.
The cast: A mix of people who have studied Computer Science but ended up on different routes in life: a PhD student/consultant, a PhD student/biologist, a programmer, and a beer-swilling bastard. I only added the last bit for the amusing alliteration, but I’m sure you can guess whom I’m referring to. The main point is that two chose a rather more academic route than the other two.
I had brought along the latest (or by now old) issue of Game Developer on the journey, as some light reading compared to Michael Moorcock’s Wizardry and Wild Romance: A Study of Epic Fantasy. No, the light reading part wasn’t ironic at all - Moorcock’s book is excellent and he is totally dripping with wit, but the constantly changing writing styles (since he quotes different authors) makes it a non-trivial read for a poor Swede. Either way, in the Game Developer mag there was an article about AI models for games, and one of the more academic persons happened to browse through said article. I’ll make an attempt to describe an exchange of words that occurred around this time:
“So, was there anything worthwhile in the magazine?”
“Nah, not really. Interesting to read about the AI model, though. They’re acting like this is the next big thing in game development research, but it’s really just a simplified version of subsumption architecture. It’s been common knowledge in AI research since the 80s!”
I was pretty sceptical at this reaction. Sure, game developers don’t really keep up with academic research, but there had to be something new! Unfortunately I hadn’t - and still haven’t - read the article, so I can’t say anything for sure. The argument briefly touched the notion of game developers being result-centered and academics focusing on demos and theory rather than practical applications. I advocated this viewpoint, but I was met with arguments that the dude’s PhD work had included active attempts to develop AI models that could be practically used in games, and that he had worked together with industry representatives on this matter.
Then we arrived at the ferry from Denmark to Sweden, and had to get off the bus; so the discussion stopped.
I remain slightly sceptical, though. I have a nagging gut feeling that the viewpoints of a game developer and a person with a more thorough academic background simply are too separate to merge that easily. I’m convinced that said PhD student acheived excellent results that would be practically useful in game development…but I’m also convinced that despite all his efforts, all that it has resulted in is a demo; a proof of concept. An academic proof of concept that can be used for homebrew development, but probably won’t get incorporated into commercial game development projects.
I also have a nagging feeling that the PhD student in question focuses on potential. He sees what his projects can evolve into - he sees the possibilities for evolution that a good, solid theoretical foundation has. But I also suspect that a commercially-inclined game developer would only look at the actual output. If the AI he beheld didn’t produce effects that were wildly superior to existing simpler models, he probably wouldn’t care much for the potential in the project. This might be due to a lack of understanding of the potential, or simply a sound business sense since old-fashioned methods are cheaper and yield good profits either way.
Of course, this is a vague generalization. There are exceptions in both academia and commercial game production, and I have no data to support my claims in any way. All I have is this gut feeling. It would be very interesting to dig up a bunch of academic AI projects and interview professional game developers about their spontaneous opinions on what these projects could be used for.
All names have been omitted from this article to protect the innocent. Me, that is, because Peter would do harmful things to me for paraphrasing his words incorrectly.
Oh, damn!
So, I’ve been to France - a first for me. The week went by surprisingly fast; I hope and suspect that that’s a sign that I’ve had a very good time. What have I learned from this little trip?
- French people’s English skills are on par with Swedish people’s abilities to say no to alcohol. I.e. theoretically possible in a vague fashion
- 30+ hour bus trips are a pain in the ass unless you have a bunch of friends to annoy, and just barely decent even then
- French people simply can’t stand in line. They’re missing the queue gene or something, and constantly try to push ahead. I think we Swedes have a double serving in comparison. “Hey, why are you standing here?” “What? Isn’t this the line to the bar?” “Nooo…” “Oh, whatever. It’s a line; I feel comfortable here.”
- After a few days of intensive snowboarding I don’t suck as badly as I did before. Practice really does make perfect!
- The French like their crepes
- If you fall down from a dragging ski lift, don’t let your thumb be the first bodily appendage with which you meet the snow. It hurts
- French people smoke everywhere
From the comments above you might have gotten the impression that I’m not too impressed with the French mentality. It’s not very untrue to say that you’re wrong. (Can I make that sentence any more negative?!) My slight aversion probably comes from the fact that I was the only non-French person in my snowboard (or surf as they call it for some reason) group. I became just a tad bitter at never understanding a single word of the conversations; things didn’t improve when the guide had a dubious vocabulary as well.
“We’ll all go down and do U-turns!”
“Uh. What? Sorry? U-turns? We gather speed, go down, and then see how far we can go uphill after a turn?”
“No no, we do U-turns. On the way down.”
“…”
Shortly after this he drew a sinous pattern in the snow.
“Ah. Yes. The U and the S are pretty similar, I guess.”
Note: I’m not expecting everyone to speak perfect English - I sure as hell don’t do it myself. But placing a person in a position of authority of sorts makes me expect clearer instructions. Oh well, it was all fun either way! I got to race down my first black slopes, I learned a lot about snowboarding, and I saw some breathtaking views of mountains. Speaking of which, time for the panoramas:

Bigger: 1280×452 or 3800×1343

Bigger: 1280×561 or 3327×1459

Bigger: 1280×490 or 3413×1307
Sorry for my crap camera. My crappera. I’m thinking of getting a new one. Anyway, this was my first experiment with making panorama pictures, and I’m pleasantly surprised by the results. I really want to make more of these, and Autostitch offers seriously awesome results. Try it yourself! I left the black borders from the resulting pics just like they were, so that you’d get an idea of the output quality. Nerd as I am I got the urge to try to write my own stitching panorama program, but after finding Autostitch I just dropped that idea. The output from the program is simply too great to compete with, in my humble uneducated estimate.
What were the other highlights of the week? I really cannot post the most weird pics I took, so I’ll have to be content with showing a few nice (or less nice) sights:

The Swiss town of Something-Something where we had breakfast on the way down. Lovely little place!

My gorgeous slippers that I ran around with all the time, to everyone’s amusement. Thanks Anna - they’re great!

That ugly face I’m making is something I thought would be suitably metal; I think my judgement was a wee bit clouded by the whiskey and beer that I’d imbibed to a great extent that night. Oh wow, I’m pretty sunburned. Either way, Guitar Hero II rocked like a big stone. That night we ended up playing on Normal until we got to the last “stage.” We went from sucky beginners to guitar-slinging pros in just a few hours. At least the others did, while I remained decently-half-sucky.
Sorry for the dull pictures, but it seems like every other pic I took either feature something obscene, something even more dull, or people who probably wouldn’t want their faces on the net. Or a combination of a couple of the above.