BioShock: Thanks, but no, thanks

Games 2 Comments »

I’ve got a pretty elaborate scheme for keeping my PC clean: I’ve got a disk image of my C: partition with a clean Windows XP install including recent drivers, firefox, winamp, VLC and so on. Whenever I’ve got the feeling that my PC is clogged up (usually right after taking part in a LAN party), I just restore my disk image (a work of 5 minutes) and everything is fine again.

This week, I almost went and logged into my old Steam account again to order BioShock. Luckily, while looking for reviews, I stumbled upon some fine lads reporting about the copy protection system in BioShock.

Apparently, when you install the game, it phones home (to SecuROM). Somewhere on the SecuROM servers, a counter is incremented. This counter is used to restrict you to only install the game 2 (in words: two) times. Then it’s game over and you can buy another copy of the game.

Other sources suggest that if you uninstall the game, that counter will be decremented again (so upon uninstalling the game, it will phone home as well). Also word is out that this counter has been extended to allow for 5 installs.

Bugger. I was really waiting to play this game, but with that, I’ll just leave it be.

For some time in the past, SecuROM was the sane alternative to StarForce. But apparently, that wasn’t because they were less crazed out than the StarForce maniacs, but because they just weren’t technically capable of what StarForce did. Now the beast shows its ugly face.

I’ve always been a fan of the “buy it and its your’s” mindset. When I paid for the game, I should be allowed to do whatever I please with it. Just attempting to run it in a Linux/WINE environment would be futile because of the copy protection. Forgetting to uninstall the game before I restore my disk image means one install is gone - forever. If I wanted to install the game on both my Vista and my XP partition, I’m already nigh on using up my allowed install count.

Being a software developer myself, I tried not to use illegally copied software. But at this rate, I’m actively considering to look for a pirated version just for the sake of it. You can almost feel the mistrust in the air. Think of entering a store and immediately, two guys with “Security - Anti-Theft Department” on their shirts start walking behind you until you exit the store again. SecuROM my ass, you’re soo close to making me become a software pirate on purpose.

C# 3.0: Extension Methods

Programming No Comments »

C++ supported multiple inheritance. Generally a frowned upon feature, because
apparently some guy was able to repeatedly shoot himself into the foot with it,
multiple inheritance allowed for some conveniency when defining interfaces:

class IBitmap {
  public: void blit(IBitmap target) {
    blit(target, Region(0, 0, width, height));
  }

  public: virtual void blit(IBitmap target, Region region) = 0;
};

Any class implementing the IBitmap interface would now
automatically have a blit method that omits the Region
parameter.

Now C# comes along, says that interfaces are something different from classes,
that interfaces can only contain abstract methods, properties and events. Now
we have to make both blit methods abstract and reimplement the default logic
in all implementing classes - or remove it.

Then C# 3.0 tries to patch this and invents Extension Methods,
a nightmarish hack. Basically, you can now write some arbitrary method like…

public static class IBitmapMethods {
  public void blit(this IBitmap self, IBitmap target) {
    self.blit(target, Region(0, 0, self.width, self.height));
  }
}

…and it will allow you to act as if blit() was another member
of the IBitmap interface (notice the this
keyword on the method’s argument list):

// Allows:
IBitmap screen, sprite;
sprite.blit(screen); // calls IBitmapMethods.blit()

Fantastic, guys. Now I can basically write any method for any class in
any namespace and it will only be callable when the caller has the proper
namespace imported. Method definitions for my class can appear througout
the whole codebase, basically you could see code like:

using Magic;

public class Foo { /* look ma, no methods */ }

class Program {
  static void Main() {
    foo.Bar(); // WTF?
  }
}

That’s an exaggerated example and nobody should misuse this feature like that,
you say? Well, the argumentation that “someone could” was enough to
give multiple inheritance a bad reputation. Bad programmers do bad things,
whether their tool is multiple inheritance or extension methods.

Having Fun with Jogging

Sports 1 Comment »

In the past 3 weeks, I’ve experienced a noticeable gain in leg muscle mass. And I didn’t even invest a lot of time, I just crunched the intensity of my workouts to maximum effort with a method I’d like to share with you :)

If you haven’t been following my earlier blog entries, let me sum it up: I am an overweight person but I love endurance and power training, though I originally started off with jogging because I wanted to lose weight 8 years ago. I’m not going to talk about how I managed to keep it up all the time, just that once you establish doing something on a regular basis, it becomes a habit and
suddenly you find yourself putting on your running shoes just because it’s a nice evening.

Beginning last year, I have tried lots of variations to make my training more interesting:

  • Sneak-jogging: Trying to step as lightly and silently as possible while still keeping a good pace.

This requires better coordination and is more demanding for your muscles than jogging, possibly it’s even better for the joints since there’s a much lower impact with each step.

Warning: You may look funny doing this exercise, maybe as if you were trying to quickly sneak away from someone — for miles. But maybe you have a route where you rarely run into other people? If you need some additional motivation, think of the edge this will give you when World War 3 has taken place and your very survival depends on such skills =)

  • Free running: Passing obstacles as quickly as possible with the least effort possible.

Google “free running” or “parkour” and you’ll know what this is. Hint: The opening chase in the new James Bond movie wasn’t computer animated. There are people who actually move like that in the real world. The fugitive actually is a known parkour practitioner.

If you start with easy moves, this is very worth the effort. You don’t have to invest the enormous amount of time required to become as good as the people in those movies, just doing it improves your coordination skills and trains muscles that you otherwise seldomly use. Plus it looks cool and might save you from injuries when you trip or fall.

Adding variations to your exercise is very important: If you keep running the same route again and again, you might not only grow bored, you will also hit what athletes call a plateau. This means that you get used to your workout. After an initial growth phase, your metabolism knows just how much energy is needed to perform. You will have learned how to perfectly ration your power and your muscles will have developed enough strength to manage that route. In short, even though you’re still training, nothing changes anymore.

To avoid hitting a plateau, you have to vary your training. Do something that challenges your body in unexpected ways. This might be as simple as trying to run on two consecutive days every now and then, leaving the shoes at home (if your environment allows it), creating your personal biathlon challenge (switching between biking and running), or integrating above two tips into your training.

Lately, I have developed a new variation that’s almost addicting to me. How should I call it?

  • All-Out-Uphill-Sprinting. Pick a steep hill, as steep as possible, choose difficult terrain, a forest would be ideal. Then sprint until you can’t take it anymore, fall down, wait, repeat.

This is basically interval training, only more intense. The sprinting parts are 100% all-out sprints, meaning you concentrate on punishing your muscles as hard as you possibly can. On even ground, you would only push certain muscles to the limit, but running up a steep hill, to maximize speed, you have pull your feet very high and run on your forefoot.

You can have sore muscles all the way from your calves up to and including your butt :) As a neat side effect, it increases the range of motion of your upper legs.

This is in no way masochistic. It’s great fun and it doesn’t even take much willpower to do it. You just concentrate on running like mad and invert all the economics programs normally running in your brain. See, normally your brain is like “Mr. Doe, just a bit slower, at this rate we’ll be wasted in in a few seconds” when you sprint, forcing you to settle for 90% or just 80% effort. But since your mindset now is that of quickly wasting as much power as you possibly can, the economics question is out of the equation.

Just make it clear to yourself that your goal is to use up all your power beforehand. There’s nothing, absolutely nothing stopping you from plunging your feet into the sorry ground with all the force you always wished you had. The more you push, the quicker your power will be gone and the quicker you will have reached your goal. So push to the absolute limit!

The hill I’m currently practicing this on takes me about 6-7 sprint phases. During the sprints, I don’t feel exhausted or sore (like when I’m jogging uphill) at all, it’s just one short adrenaline drift. Eventually I reach the point when either my metabolism or my leg muscles tell me it’s over, at which I simply let myself plummet to the ground, waiting until I’m feeling well again (which may take 3-5 minutes!). The real strain only becomes noticeable when, after the experience, you try to resume walking.

From what I feel, I’d say the risk of injury is rather low, especially if you do this on soft forest floor. Of course, don’t even think of doing this with a torn muscle. I also wouldn’t recommend it if your legs aren’t used to at least one year of jogging because your tendons and bones might not have the necessary strength yet (but don’t worry too much, the human body is a masterpiece and will tell you or even stop you way before you break something).

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Login