Big Brother is Watching – the Dark Age of Computer Science

Back in the good old days, everyone who owned a computer was either a crazy Rissian hacker kid with 1337 skills, or an FBI agent under cover. and they would tinker with their computers in every imaginable way. No sane normal person in their right mind would get a computer, because computers didn’t do much back then, and costed an arm and a leg.  Nowadays, computers (not only desktops, but also cellphones, handheld consoles, embedded, etc) are dirt cheap, and everyone has a few. People would get a computer just to check emails, browse the web, or play a few games. For the average Joe, that’s good. More accessible technology and all that. For us (potential hackers/programmers/developers/computer engineers…), though, I think it’s a Bad Thing ™.

An ancient geek joke goes like this –
Programming today is a race between software engineers stirring to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning.

Sarcasm aside, I think it is sadly quite true.

Nowadays, people has largely taken the “big brother” approach to the developer-user relationships. Developers make things that “just work” (that’s the intention, anyways), and hide as much as possible from the user – dumbing down the interface, expose as few options as possible, and make error messages as cryptic as possible, so that users will have to rely on developers to fix their problems. Modern developers are trying hard to distance themselves from the users, for the sake of what they claim to be professionalism.

The problem? Well, in this time and age, when we are surrounded by computers all the time (cellphones, PSPs, iPods, laptops, refridgerators, Roombas, cats, dogs, bats… uh nvm =P), one would think it should be a heaven for computer-inquisitive people. That’s not the case. Take, for example, the PSP. With a MIPS-based 333mhz CPU, 64MB RAM, 4″ screen, and wifi capabilities, possibilities should be endless, if you happen to be a programmer. It’s like a ultra-ultra-portable computer… if not for Sony’s dirty business decision to restrict the PSP to only run code from game companies who paid large sums of money to Sony just to get a digital signature. Sony has essentially and intentionally dumbed down the PSP to just a game console, when you have paid for the hardware! The same can also be said for cellphones (Java 2 Mobile Edition requires applications to acquire digital signatures, for a fee, to unlock many useful library functions), and iPods (Apple even went as far as encrypting the firmware to block attempts to run unsigned code). I have attempted to program for all those platforms, with varying degrees of success. It’s not easy. You have to first wait for Russian hackers to crack the “protections”, which, contrarily to what they want you to believe, are not for the users’ privacy or security, but for the companys’ business interests.

The situation is not much better on the desktop side, although we do enjoy the luxury of being able to run aribitrary code. For instance, Windows, a somewhat popular OS made by the only company in history that can get away with treating all their paying customers like criminal suspects. Just because you bought, with your own money, a computer and a copy of Windows, does not mean you have control over your computer. It can still automatically restart your computer while you are taking a shower to install a Windows update, because it thinks it is smarter than you, and updating Windows is more important than your unsaved work. It can also refuse to play your music or videos that it suspect was pirated. Or, it can force you to phone Micro$oft after a Windows reinstallation due to virus infections, and threaten to lock your computer up otherwise. It’s amazing how this OS works, and its market share is equally amazing.

I think the root of all evil is the fact that our computing industry is controlled by a few big mega-corporation, with very little competition. They are simply trying to meet the expectation of the average Joes, because that’s where the money is. And the average Joes don’t want to get their hands dirty. Because programmers are in such a small minority, they don’t feel motivated to meet our needs, by making things developer-friendly. They probably wouldn’t have implemented accessibility features, too, for the disabled, if not for laws and regulations.

The solution? Unfortunately, I have no idea. I personally use as much opensource/free (both as in speech and as in beer) software as I practically can – GNU/Linux, OpenOffice, GIMP, Firefox, Thunderbird, and much more. Developers-users relationships are much warmer here. I have personally talked to a few developers of programs I use, and asked them to implement features or fix bugs for me, and they have actually done so. I have also done the same for users who emailed me about my programs. Try to convince Micro$oft to add a feature to Windows for you, and see what they say – you probably won’t even get a reply from a real human being. Open source softwares are truly user-oriented, because they don’t need to satisfy business agendas, and really transfer the control back to the user. You generally won’t find nonsenses like those mentioned above in free software.

Free software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and that manufacturers of consumer-facing hardware allow user modifications to their hardware. Free software is available gratis (free of charge) in most cases.

– Wikipedia

Put the fun back to into computing. Use Linux, BSD. 🙂

Tic Tac Toe in… x86 assembly!

ttt

What do (hopefully) future computer engineers do when they are trapped in a huge typhoon in the midst of summer?

How about… Tic Tac Toe in x86 assembly complete with a primitive (yet unbeatable =P) minimax AI?

ttt.asm

actually, I cheated, kind of. I wrote a C version first (took me all of 1 hour) before manually “compiling” it (took me… quite a few days) =P

ttt.c

If you want to give it a try, just use the C version (won’t work with Visual Studio, though, since I am using GNU extensions for specifying calling convention). The C version should work with both Windows and Linux (though I only tested it on Linux), and I wouldn’t be surprised if it’s more stable than the asm version. The C version can be compiled the way you compile any other C program.

On the other hand, feel free to hack around with the asm version. It won’t work on Windows without modifications, though (Windows append underscores before symbols, and I heard they use the Pascal calling convention for the standard library, or at least the Win32 API). Every function in the asm function is directly equivalent to the function with the same name in the C version, and follow the standard x86 calling convention to the letter (that’s the intention anyways =P), so they can actually be linked together using some functions from the C version, and some from the asm version (that’s actually how I tested each module individually). To assemble it, run “nasm -f elf ttt.asm && gcc -o ttt ttt.o”. The GCC step is necessary because it needs to be linked to the C standard library.

Have fun! (don’t ever swear you will beat it before you go to bed or something… you won’t =P unless there’s a bug in my implementation)

Star Ocean: Second Evolution

sose-wallpaper1-std

Just finished Star Ocean: Second Evolution on my beloved PSP. I’m not usually a big fan of anime, nor sci-fi… but this game is awesome!

Believable (not realistic, who plays realistic games??) and VERY well developed and unique characters, dramatic plot with surprises and hidden rewards everywhere. There are secrets to be unveiled on every turn that bit by bit reveal the epic history of the world they live in and the origin of the characters… It’s apparent that they put a lot of time into it. There’s just so much content – side quests, character interactions (including romance =P I tried to make a lesbian couple… didn’t work), and 80+ different endings depending on what happens in the game.

“If you look from the monsters’ perspective, we just came out of nowhere and ruined their lifes for our selfish purposes.” (or something to that effect =P) – Rena

So yeah! if you have a PSP and about 30 hours (that’s what my game save says anyways, but there’s a huge optional dungeon that I didn’t go into, which would probably add at least another 10 hours) of spare time on your hands (you won’t be able to put it down), definitely give it a try!