To content | To menu | To search

Monday, December 5 2011

Anatomy of a bad game: Jurassic Park

It's been a while since I last ranted about a video game, but just like last time, I try not to do so because I'm not a game designer. However, for extreme cases, I think I can make an exception. I was actually intrigued by the controversy about that game, as the metacritics score was allegedly tempered with by the game company's employees, who are being accused of submitting themselves 10/10 scores to boost the game's score. Which means I wanted to check by myself what it was all about... and it wasn't really pretty.

Jurassic Park from Telltale Games could have been a good game. The theme is nice, the movie was great, and there was lots of potential. However, the execution was quite miserable. But let me explain why. Caution: I'm probably going to spoil the story here and there, so do not read further if you still want to have a genuine experience on the story.

Continue reading...

Sunday, July 3 2011

Google Plus is the new Wave

Okay, okay, the pun is bad. But still. If you managed to enter Google Plus, and was a user of Google Wave before, the similarities are insanely obvious. And I'm pretty sure I understand better now what happened to Google Wave.

In one of my previous entries, I ranted about how Google let Wave died. But I was wrong. They didn't let it die, they had an internal struggle within Google about where to go and what to do.

I'm pretty sure that was happened is the following: Google Wave was seen by some as the "new e-mail" standard, and they were trying to establish protocols and make it as open as possible so to let others to integrate with them, just as I described before, but others were seeing Google Wave as a good candidate for Google's social platform, given how they went to integrate a lot of social widgets into it, and how they tried to let it as closed-source as possible. And, yes, gmail being the second major Google product, why would they want to kill it ? But Orkut being a failure, they needed something to compete with Facebook.

So of course, these two conflicting ideas weren't possible. Which is why they "let Google Wave go", into the open, as an Apache project, so it may very well become the next e-mail platform. But internally, people continued working from the original Google Wave design, and pushed the social aspect even further. That project eventually became Google Plus. There's really no doubt about it: that is the vision some of the Googlers had when they saw Google Wave as a social network, and not as a communication platform. And quite frankly, it's great. I'm now grateful that they turned away from Google Wave, letting it grow outside of Google, and that they created Google Plus instead. This is a major, awesome upgrade from the Facebook+Twitter experience. It feels good and the sensation of control over your data is fantastic.

Good job Google, and good luck.

Thursday, March 3 2011

Why "open source" is good

Not so long ago, I made a post explaining Why open source is bad. I'll try to redeem a bit myself and try to explain why there are some very good aspects of it, and why closed source is sometime excessively bad. As I mentioned in my previous post, I don't think open source should be used as a selling point in the "it's open source so it has to be good" way. Instead, it should be used as a selling point in the "we're transparent" way.

Continue reading...

Friday, February 18 2011

IPv4 is dead, all hail IPv6

A few years ago, I remember posting very angry comments about Rani Assaf's "IPv6 is just a gadget" post. Not so long after, his company introduced IPv6 natively for their customers. A few days ago, the last /8 IPv4 blocs got allocated, marking the end of the IPv4 allocation. I guess it wasn't that much a gadget, huh ? Even though the IPv4 sub-allocation is pretty poor (only roughly 14% of the addressable space is actually in use, if I'm not mistaken), the increasing complexity of the addressing space really makes life difficult.

Without even talking about the fact that IPv4 has a lot of flaws that IPv6 natively corrects. I've heard various comments claiming that this isn't so bad, that solutions exist to still use IPv4 nontheless, etc. But I'm happy to see that things are still moving towards IPv6 in general, as even the Obama administration is in favor of IPv6.

Anyway, don't worry. This blog will continue to run even if you don't have IPv4 connectivity anymore: ipv6 ready

Yay!

Monday, January 17 2011

Why "open source" is bad

This one came a long way. I'm an active open source supporter, and I probably intend to stay that way for quite a while, but I finally came to realize that open source is sometime a very bad thing. But let me explain before you start throwing tomatoes at me.

Continue reading...

Tuesday, January 4 2011

How to fail encryption, part 2

One of the very first post I've made was talking about encryption, and how to fail it. Okay, that was a very easy encryption, but the base principles remain the same: don't be stupid, aka, know what you're doing. Well, I'm joining the bandwagon here, but it seems Sony's programmers didn't really try to understand their crypto handbook, and implemented it without really knowing what they were doing. As a result, all of the private keys for the PSP and the PS3 (including the one hardcoded in the CPU die) are leaking with simply two signatures made with them.

Good job, really.

Source: fail0verflow

Thursday, November 18 2010

OCCI-gateway, or why C++ is a horrible language

I don't really know to which category this should fit, but I guess "code rant" is probably quite appropriate. I'd like to discuss a bit about why C++ is a horrible language, by adding a few arguments towards Linus.

Continue reading...

Thursday, August 5 2010

Why google wave didn't work

As you may have heard, google is letting google wave going down. Now I know that there's already a lot of people who gave their analysis about this, but I'd like to voice a different way to put it.

Continue reading...

Thursday, July 8 2010

Why Android is badly designed

This isn't the first time people ask me why I think Android is badly designed, and I guess it's time for me to explain it now.

Well, don't get me wrong: I own an Android-based phone, and I'd rather kiss Bill Gate's ass than buying an iPhone. I guess I don't have to explain much why. I think that when you own hardware, you should have the right to do whatever you want with it, including running any kind of application you'd like. Apple's policies are just not something I can support. Nonetheless, iPhones are way better than Android-based phones. Here's why I think this.

Continue reading...

Wednesday, April 28 2010

How to create a bad hardware design.

I'd like to quickly talk about something that's really, really awful.

I just bought a Cybershot WX1 camera from Sony. The camera itself is very nice, very small, very fast, quite powerful, loaded with features, etc. Now have a look at the camera itself. Look at the way the flash and the lens are placed.

Now look at this picture. This is a picture I took in my room, of my wall, with the zoom at 1x, in complete dark, using the flash. Notice the black portion at the bottom left. This isn't the shadow of my finger or what. This is the shadow of the lens itself.

The Sony engineers who slapped together this piece of crap didn't even see that, when taking a picture with the flash on, the lens itself would interfere with the ray of light from the flash itself. To me it just means they haven't even tested the product. I mean, seriously ? How could you ship such a product without testing something as basic ? Or maybe they didn't care ? I don't know. I'm tempted to ask for a return for a "defective product", as this is obviously defective to me.

Friday, April 16 2010

Is this thing on?

I've been away for quite some time. Work have kept me very busy those last month, getting things out of the door, and I took some time off after everything was finished. Anyway, I think it's time to get back on track with this blog thing.

Monday, December 14 2009

PS: Don't blow up the stack

The title of this article is actually something I wrote on the corner of the whiteboard at work. We've recently had a few issues which all dealt with stack abuses. We added some instrumentation to help us, and I thought about sharing that a bit.

Continue reading...

Thursday, December 3 2009

Creating a MacOS X cross compiler

I am actually quite surprised and happy about it, but I finally managed to create a working MacOS X cross compiler under linux. This was eased a lot by this document here: http://devs.openttd.org/~truebrain/compile-farm/apple-darwin9.txt, but I still had to tweak things in order to make it working properly.

Continue reading...

Friday, October 16 2009

Pure virtual handler

Here is a little trick that saved my life a few month back when I was dealing with a virtual pure function been called.

In a program I wrote, I had a very very rare bug where the code would crash in a completely improbable way. I finally figured out that it was due to abort() beeing called, and that was crashing the all other threads in random place. Now, where did that call come from was the big question. With one lucky crash dump, I was able to find that it was due to a virtual pure call, obviously due to a boggus cast.

By default, it seems that the virtual pure handler in gcc just call abort, making it hard to debug. The trick I used to find the actual bug was to override the default virtual pure handler:

extern "C" {

static int __cxa_pure_virtual() __attribute__((noinline, used));
static int __cxa_pure_virtual()
{
    assert(0);
    return 0;
}

}

That way, every time a virtual pure function will be called, it will assert instead of simply aborting, giving way more useful information about what's happening.

Monday, October 12 2009

Don't trust the compiler: part #3

Okay, that's an easy one. But still. See how the compiler can actually turn good-looking code into code that contains security flaws:

http://threatpost.com/blogs/researcher-uses-new-linux-kernel-flaw-bypass-selinux-other-protections

Saturday, October 10 2009

Hacking tutorial

For the people who know me, this is just a repost of a very old article I wrote. I just think this is the perfect spot for it. I'm just changing the wording a bit, but this is essentially the same thing.

As I said during the opening post, Yazoo and I are quite into Reverse Engineering, which is usually called "Hacking". While this word is always causing some controversy, we claim to be on the right side of the line.

That being said, we still receive a lot of mail and queries so we can teach people how to hack, or shorter, so we can write some so-called tutorials. We always denied such requests. This article is attempting to explain why. The main, short-hand reason is "because any hacking tutorial can only be crap", but I hope that I can point to the full reasons why this methodology doesn't work at all. Don't read this as a real attempt to teach you how to hack, but as an attempt to explain why usual tutorials just can't work.

Continue reading...

Wednesday, September 30 2009

Lua tricks: Carbonite obfuscation

I don't know if this fits exactly in the "Rant" category, or if I should create a "Praise" one, because I'm not sure if I'm utterly amazed or disgusted, but this definitely gets my attention.

There's one addon for World of Warcraft called Carbonite, which made a controversy some time ago, because it wasn't free. It was even subscription-based, costing a couple of dollars a month to be able to use it. I've been wondering a long time how they were able to do a proper license check, but the addon itself was heavily obfuscated using several layers.

Obfuscating something in a language that's actually plain text is somehow very difficult. I've seen HTML pages encapsulated in a javascript file that would self-unencrypt using RC4 where you have to provide the password, for example. But in the case of Carbonite, the authors wanted to match a certain number of criterias:

  1. The process had to be transparent for their subscribers, as they only had to log in with their registered character to unlock the addon;
  2. The process had to be limited in time;
  3. The process had to be strong and very difficult to circumvent.

Now, when Blizzard decided to release a new policy about addons, forbidding to sell or obfuscate addons, the people at Carbonite released their version 3.001 which was free and somehow unobfuscated. You may want to have a look at this old beast as it's still available for download at wowinterface, but allow me to show you what's interesting in it. Note that future versions of the addon got rid of what I'm going to show there.

Continue reading...

Saturday, September 26 2009

Don't trust... the other devs

Picture the situation. You've just spent 2 days trying to figure out a bug that randomly crash your application. You've nailed it down to a memory corruption somewhere, and you finally find that it's due to an out of bound access to an array. A single little assert you have saved you hours of heavy debugging...

Continue reading...

Tuesday, September 22 2009

Game design failures - Sonic Unleashed

I don't pretend I'm a very good gamer. Well, I ain't bad either, but I'm not a hardcode gamer. Doing the review of a game on a gameplay point of view is probably risky, and there's people out there who probably know way better than me.

But sometime game design failures are so flagrant that even a newbie like me in game design can spot them and would probably not have committed these mistakes. Or at least, I hope I wouldn't have. One recent case to me is Prototype, a nice game which is still plagued with some horrible game design decisions, especially control-wise. Another recent game, and that's the one I'm going to talk about today, is Sonic Unleashed.

Continue reading...

Saturday, September 19 2009

Don't trust the compiler, especially RedHat's

In my previous entry, I've been ranting about compiler bugs. I finally discovered that it's absolutely RedHat's fault. Their compiler is a bug pit of hell. I ran the latest gcc testsuite on it, and on Debian's compiler in order to compare. I've stopped after finding 15 bugs in the first batch of basic test, which is like one tenth of the whole list of tests. This is just not acceptable. RedHat's compiler is deliberately buggy, maybe for the sake of "Backward Compatibility", but that's bullshit, especially since we're always writing crossplatform code. We're expecting that a piece of code that compiles and runs fine on one platform would also compile and run fine on a similar one. Which isn't guaranteed by RedHat. I'm now officially boycotting RedHat. Don't use their compiler, and don't use their distribution, because it's compiled with this compiler as well, so you can't possibly trust it at all. Don't bother with RedHat, it's a waste of time and money.

For your interest, here's a list of all the basic gcc bugs I've found active in RedHat's compiler. Again, this is not an exhaustive list, as I got fed up seeing all of these.

19606 28778 32244 33779 34971 35456 35472 36013 36077 36093 36137 36691 38151 38819 40404

UPDATE:

Well, it seems a retail 4.1.2 has them too. Well, not all of them. So I'd need to cross-check them. Well, whatever... RedHat's gcc still has more.

- page 1 of 2