Google Wave Developer Preview at Google I/O 2009

By Shamus Posted Saturday Jun 6, 2009

Filed under: Movies 17 comments

It takes them a long time to get to the point. You can scan through the first few minutes and not miss much, but once they begin showing what they’re doing in earnest it makes for an interesting show:


Link (YouTube)

It’s part threaded conversation, part email, part instant messaging, part collaborative document. Add a dash of wiki and the ability to step back through a document history. It’s ambitious, and it looks like it works.

The one thing I wanted to know – and the one thing that they never spoke of – was spam control. Email is actually a useful technology, but spam has taken a grievous toll on its utility and saddled the entire network with an endless torrent of noise. The reason for this is that the original system was designed in a world without spam. The ability for anyone, anywhere, to generate a message that looks like it came from anyone else, anywhere else, means you can hop onto the network anywhere and send anything to anyone at any time. It can be said that this system is perhaps not as secure as it could be.

Would a beautiful woman from Russia lie to you?
I’m sure they have considered spam – these people are certainly not idiots – I just wish they had talked a bit about it. The weakest spot of the system, as always, will be the end user. If I may belabor the point: “[…]the greatest threat to computer security is the fact that men want to look at boobs. There is no firewall system that can defend against the fact that one of the guys behind it won't unintentionally – but stupidly – compromise the system in his efforts to look at naked breasts. Despite what the movies show us, you don't take control of a remote computer by typing really fast, but you can do it by luring someone with false promises of hot female nudity.”

Getting spam into the network might be possible by exploiting the seams between the different federations. They’re cribbing from email, after all. But I’m sure in the end the Achilles’ heel of the system will be that it’s used by human beings. The system of extensions will probably be the most common vector of attack. Extensions will offer money, medicine, and pornography to the hapless and clueless, and will spam the system via their compromised accounts.

Still, only getting spammed by proxy from the easy targets in your contacts list is worlds better than getting spammed by anyone who can learn or guess your email. Its worth noting that they never showed any connection between a wave and email. You can do Wave+Twitter. Wave+blog. Wave+YouTube. Wave+webpages. But they didn’t demonstrate any interoperability between email and waves.

It will be interesting to see how this goes.

 


 

Death to E3!

By Shamus Posted Friday Jun 5, 2009

Filed under: Video Games 16 comments

My latest column is up at the Escapist, and it’s a zesty blend of hyperbole, common sense, and sour grapes.

For the record, I don’t really think that E3 should die. I just think that developers could use a little restraint and wisdom.

 


 

Stolen Pixels #96: Left 4 Dumb, Part 14

By Shamus Posted Friday Jun 5, 2009

Filed under: Column 39 comments

Kill it! Kill it with fire!

Played a little Left 4 Dead last night. The last two weeks of spastic Team Fortress 2 seem to have blunted my L4D skills. At one point I ran into a teammate and thought, “AH! A SPY!” (In TF2, teammates are ethereal, while spies-posing-as-teammates are solid. In L4D, teammates are solid-ish. You sort of shove through them like they were made of water.)

Yes, I heard about Left 4 Dead 2. Yes, I heard about the controversy. I’m actually not too worked up about it. Yes, I’d rather they just released more content for the original game, but after logging 100 hours on L4D I can’t really call the thing “lacking in content” with a straight face.

Listening to the developer commentary, I can see how this sequel came about. The original game was made with the specific goal in mind of cutting down on development times. The AI director turned weeks of work into hours, letting them focus on making content. A sequel in a year is the fruit of that innovation.

This is a first for me: Whether or not I get L4D2 at launch or not will depend very much on what my friends do. There is no point in paying full price for the game just to play single player. (Or worse, play with the unwashed masses.)

There are a lot of concerns about the game. The L4D community isn’t all that big to begin with, and to have the player base riven by a sequel might very well drop both titles below the critical threshold needed to quickly acquire and populate games.

But allow me to stipulate: No matter how good Left 4 Dead 2 may be, we’re not going to forget about Half-Life 2: Episode 3, Valve. This doesn’t even earn you a reprieve. The community is waiting, arms folded, scowling and tapping their feet while you dribble out a stream of stuff for Left 4 Dead and Team Fortress 2. We are not so easily distracted. Every day you delay sees the erosion of goodwill and the intensification of expectations. That usually doesn’t end well.

 


 

mailto:mailto:mailto:mailto…

By Shamus Posted Thursday Jun 4, 2009

Filed under: Rants 38 comments

The other day when I was writing the post about programming, I wanted to look at the NeHe site and figure out who was the original creator of the thing. (It has multiple contributors now.) I shuffled through the pages, came up empty, and then clicked on the “contact us” link. Suddenly, it was 1998 again:

ie_sucks.jpg

The page uses some ill-behaved javascript to create a mailto: link, and for some reason this invoked Internet Explorer. I’m not sure how that happened. Firefox is my default browser and Thunderbird is my default client. There shouldn’t be any cases or links which can bring up IE. (This was alarming, since I’ve never bothered to upgrade IE and so I’m using the virus-friendly IE6.) I don”t know if it was the fault of the javascript or IE, or some beautiful synergy between the two, but the result was a cascade of 60 IE windows. I haven’t had this happen to me since the olden days of pop-under ads, homepage-poaching, and porn-storms in the late 90’s. Unlike in the olden days, this actually stopped without me needing to reboot the machine.

Still, I haven’t had something like that happen in almost 10 years. Strange. And a little worrisome.

 


 

Quality’s Edge

By Shamus Posted Wednesday Jun 3, 2009

Filed under: Game Reviews 50 comments

I felt an unmistakable pang of guilt when I elected to forego Mirror’s Edge. It was showcased at E3 last year, and afterward I was caught speaking of it using the voice of a shrieking, swooning fancritter. At some point I got around to playing the demo and was so underwhelmed that I couldn’t even find the game I’d been longing for. I wanted “Prince of Persia with a first-person perspective”, and what I found was, “Quake, with platforming and kung-fu”. The depth hinted at in the trailer turned out to be an optical illusion. It was a vast, deep pool of pristine dystopian mystery that turned out to be little more than a puddle to anyone who tried to immerse themselves.

To be fair, it’s not like the Mirror’s Edge trailer made false promises. I saw the game I wanted to see – the one I wanted to play – and as much as I enjoy pointing out the problems EA has caused over the years (onerous DRM, high prices, canceled titles, and AIDS) I can’t hold them responsible for not reading my mind. They had a fresh approach to platforming, a unique art style, and stale gameplay. For EA, that’s a major breakthrough. I regret not throwing my weight behind them whenever they make any slight movements in the right direction.

In the end, I was so enamored with the fantasy version of Mirror’s Edge that I’d authored in my imagination that I decided that I’d rather keep it there instead of overwriting it with the real thing.

Rutskarn at Chocolate Hammer has done what I wouldn’t do. He’s ruined the game by playing it, and he’s writing about his experiences going through the game. Part 1 and part 2 are available via the links at the beginning of this very sentence.

Allow me to voice a major pet peeve based on his comments, regardless of the fact that I’ve never played the game and you can’t stop me anyway:

There are few things I regard with more contempt in a story than that of the obvious traitor. A good writer will foreshadow or telegraph the betrayal in subtle ways so that it fits once the deed is done. A bad writer will simply advertise the betrayal instead of hinting at it, and you end up with a movie or game where the audience is shouting advice at the screen in frustration. It distances them from the protagonists, because it makes the protagonists seem clueless and inept.

I was actually willing to forgive the absurdities of the setting. The idea of handing messages to couriers and having them run the messages all over the city is preposterous unless we throw away everything we’ve learned about cryptography in the last hundred years. There is no reason the runners couldn’t have done their job from a sofa with a few cheap bits of electronics and a couple of one-time pads. I could look past this as a requirement of the setting, but they needed some narrative grout to fill in those holes. They needed to present us with another, alternate reality to work with. Having couriers endure great pains and danger to deliver messages and then never explain what the messages are, why they’re important, orwhy we should care, is to simply draw attention to the holes in the setting. It’s not an unforgivable crime, it’s just unforgivably easy to fix.

E3 is on now. I wonder what game will be an enticing disappointment me this year?

If it wasn’t for disappointment, I wouldn’t have any appointments.

 


 

Stolen Pixels #95: Left 4 Dumb, Part 13

By Shamus Posted Tuesday Jun 2, 2009

Filed under: Column 23 comments

Thankfully, in the real world we never have to put up with these kinds of pointless debates.

Credit where it’s due: Today’s comic was made using the user-made map rp_zombocity.bsp, which I downloaded from garry’s site and which sadly came with no attribution information other than the username “Omn”.

 


 

Getting Started with Programming

By Shamus Posted Tuesday Jun 2, 2009

Filed under: Programming 84 comments

The procedural city project resulted in a lot of people emailing me who wanted to know how to get into programming. How to learn? What language? What books are most useful? How do you learn about graphics programming, specifically?

Those are all big questions. I guess the first thing I’d do is make sure you know what you’re getting into. Graphics programming is a very specific sub-discipline of general programming, and jumping right to the graphics stuff is a bit like trying to learn heart surgery before becoming a doctor. It can certainly be done if you really want to learn that way. (Unlike heart surgery, you don’t have to worry about being sued by bereaved next-of-kin for your newbie mistakes. You’ll just crash people’s computers. And Microsoft has proven you can’t go broke doing that.) But jumping into “graphics programming” before learning “programming” is probably not the smoothest route to knowledge. Learning programming isn’t quite the mental challenge medicine is (one assumes, judging by their relative salaries) but like any body of knowledge it does take time to acquire.

Aside from a few COBOL courses in school, I’m entirely self-taught. (The one language I was taught – twice – is the one language I don’t know. I couldn’t generate a single valid line of COBOL to this day.) I imagine the self-taught route is what you have in mind if you’re emailing me. If you were looking for formal education then you’d probably see your guidance counselor or shop for a college. Being an autodidact is fine for enriching your knowledge and understanding of the world, but slightly bad if you’re looking for a career. Even at 37, my earning potential is probably lower than someone with the same experience who can wave around a ~4 year degree. Whether or not that increased earning potential of a degree is worth the risk and expense of taking out loans to pay for one is a really complex question. I come down pretty firmly on the “no” side of the argument, but a lot of coders would argue with me. And the successful ones generally make a lot more than I do. QED.

Jumping in and learning a modern professional-grade language can be a bit much. In the 80’s, most kids were introduced to something much simpler, like BASIC, Logo, or (if they’re quite young) Turtle. I don’t know what kids are taught these days. The point of learning one of these simpler languages is to teach you the basic premise behind programming without getting too bogged down with technical details at the outset. Once you have your head around the idea that source code is a list of instructions that the computer will follow unerringly no matter how wrong they are or what you really intended, you have the basic tools to go learn something useful. It’s a bit like learning to play the piano before you learn another instrument. A piano provides an obvious and straightforward expression of the notes at your disposal, and you’ll usually have gotten a head full of music theory by the time you’ve learned to operate the thing. Then you’ll have a nice foundation to work with while you learn something less straightforward, like string instruments or anything powered by your lungs. In any case, this is a tradeoff: You’re reducing the steepness of the learning curve in exchange for making it longer.

So, assuming you want to learn some graphics programming, don’t mind investing time in generalized programming first, aren’t afraid of a steep learning curve, and aren’t looking to score a degree, then my advice may be of some use to you.

C++ is a good starting language, although there are enthusiastic adherents to many other languages. C# and Python are notable in that both of them can be used to write modern graphics programs. I still recommend going for C++, if for no other reason than the network effect will make it easier to find tutorials. Working in C++ also makes it easier to find unhelpful jerks who will offer snarky answers to earnest questions, which is a major improvement over the smaller languages where you won’t be able to find anyone at all.

I suggest starting with Teach Yourself C++ in 21 Days. Partly because it’s a great book (aside from some nitpicks with the way and the rate at which complex concepts are introduced) but mostly because it’s freely available online. You can also get a dead tree copy, which can be handy. Don’t be put off by the “21 days” stuff. You can blow through the first half-dozen lessons in an afternoon. Things will slow down after that, but the “21 days” stuff is by no means a hard figure and can vary a great deal on how much prior knowledge you have going in and how much time you put into it. I’ve purchased a few copies of the book and given them away to aspiring young programmers over the years.

Sadly, I’ve never found good books or tutorials that teach the concepts beyond language syntax. So, after your 21 days you’ll know how to write a program to balance your checkbook or play blackjack, but you’ll still have no idea how to structure your program by breaking it up into different modules. (That’s fancy programmer talk for putting the source code into different text files.) You’ll have learned nothing of the code formatting holy wars or the particulars of the 1,487 different ways to name variables, each of which has their own zealous adherents. You won’t know about LIB files, what they are, or how to use them. You won’t know about development environments, or MAKE files, or how to read a debug stack. You’ll probably have some idea of what a DLL file is (all windows users have those things floating around on their hard drives like so much driftwood) but you won’t know how to link to one. You won’t know how to really debug your program. (Although you’ll think you will.)

That stuff is 90% of the job, and all of the books and tutorials are focused on that first 10% of learning language syntax and knowing what to type. There are books for refining existing skills in some of those areas, but they’re very much deep-end books that will lose a newcomer in a few pages. We have lots of articles for turning people into programmers, but very little for making them any good.

Thankfully, you can pick up most of that higher-level stuff as you go. I did. (Although I still can’t make use of a debug stack, even after all these years. And it’s not for lack of searching for someone who can explain it in English.)

Once you have some basic knowledge of C++ programming, you’re ready for the graphics stuff. At this point, there is no better place to go than NeHe productions. This is where I went to learn OpenGL. The tutorials on NeHe are some of the best programming tutorials you’ll read. It’s true that most tutorials suck, but the ones at NeHe (particularly the early ones) are simple, compact, straightforward, generously documented, and fun. You can simply download the code and make use of it, or you can read through it on the site along with the instructor’s commentary and explanations. (I highly recommend the latter.)

The site will let you learn by reading the commentary. Or you can learn by example through reading the code. Or you can learn by doing by playing around with (say) lesson 3 and seeing what happens when you plug different numbers in. NeHe isn’t just a collection of the best graphics tutorials around, it’s some of the best programming tutorials of any kind, period. It’s a site that focuses on teaching, rather then simply shoveling information in your direction.

Good luck.