Domino Logic 0
Fairly brilliant geek stuff…
Fairly brilliant geek stuff…
In the Fall, Xbox360 will be bringing Netflix to the console. Cool!
Will Wright’s Spore is coming soon. I’m looking forward to it. I still think SimCity4 is one of the most perfect games ever made (and still looks/plays competitively with the latest games out there), and there’s no debating whether or not The Sims franchise was/is a significant game design (and commercial) milestone. I wouldn’t be the first to suggest that Spore will be joining that illustrious crowd, though the missing “people” element (you know, homosapiens, actual human beings) will probably keep it from realizing the scope/breadth/depth of audience that The Sims has seen.
The Sporepedia, which serves as a clearing house for the most popular creatures created by players, employs a very clever (and very user-friendly) means to upload/download creatures: they embed the data in the PNG thumbnail of the creature. Instead of having some custom data format that’s opaque to the user (and basically worthless after it hits their desktop except for importing straight into Spore), the user has a traditional PNG that they can trivially view on any modern browser/OS. Embedded in the alpha channel data of the PNG, though, is a bunch of data (about 1K according to some estimates).
Now, this is an old trick, and you can do it “officially” with PNGs in custom chunks or in JPEGs, etc. It’s possible in almost any well-structured format. But it’s a very clever, modern, web way of handling it. It allows for trivial sharing by the user through whatever means they’re accustomed to because sharing an image is an almost universal feature of any collaborative software. So, user’s can attach the thumbs to their e-mail, or post them to their Flickr account, or put them on Facebook or their MySpace page, or send them in an IM.
Consider this inspiration! I’m now officially on the look out for how I can apply this technique to Mockingbird. Embedding the game’s description in its screenshot? Encoding ActionScript into the action icons? I don’t know, but I’m going to find something. And you should, too! Incorporate this feature into your products today!
Flickr’s co-founders Stewart Butterfield and Caterina Fake (husband/wife team) recently resigned from Yahoo!. Stewart wrote an incredible resignation letter.
Of course, Valleywag calls it “bizarre”, “rambling” and “entertaining nonsense”, and a majority of the comments are no more flattering. I (and some of the comments) get it, though. It’s rather brilliant. Stewart reveals himself to be a well-rounded, liberally-educated guy who can actually write! Of course, I could feel that in all of the presentations I’ve seen from the Flickr founders who always come across as having a real grasp on the human nature intrinsic to a social website. I think we (designers of interactive content, whether it be the web or games) could learn a huge amount from Flickr and the views of its creators.
In fact, I wrote about this not too long ago (from the UI designer at Flickr). Read the essay. Get inspired to create something for people.
In case you believe the tone of a film comes entirely from the actors, the writer or the director… behold, the power of editing and music: Requiem For A Day Off.
I don’t think it’s a coincidence that The Usual Suspects, a movie with nearly perfect tone and pacing (IMHO), was both scored and edited by John Ottman.
We showed up in the Austin American-Statesman for Tech Monday (out on the web this evening). Digg it. Spread the word. Check it out. Pretty good write-up.
UPDATE: I didn’t notice this, but there’s also a video clip. Interesting…
Michael Feathers recounted a conference run-in with one of the original XP and TDD practitioners:
John Nolan gave his developers a challenge: write OO code with no getters. Whenever possible, tell another object to do something rather than ask. In the process of doing this, they noticed that their code became supple and easy to change. They also noticed that the fake objects that they were writing were highly repetitive, so they came up with the idea of a mocking framework that would allow them to set expectations on objects — mock objects.
That’s a fascinating suggestion, writing OO code with no getters. To think of it in object terms, that means that you create objects that don’t have information extracted from them, they’re only asked to do things. If you take his statement literally and to the extreme, you have the scenario where you don’t know the state of a separate object you can only tell it to do things and hope it does them (you can’t confirm it because there’s no gettable state!). Hmm… that sounds familiar.
I think event-driven programming achieves the goal of “writing OO code with no getters.” It has the added bonus of being dynamically (and anonymously) coupled at runtime. And, in fact, I’ve found event-driven code to be the least brittle. Definitely more complicated in some scenarios (usually trivial cases, while being less complicated for the non-trivial cases), but always more stable, higher quality, fewer bugs.
AS3 has a particularly beautiful event model. When an object dispatches an event the listeners for that event are called immediately (inside of the dispatch function) as opposed to being queued and processed at a later point in time. Callbacks, basically. But at the same time you have to write them as if they occur asynchronously.
I’m not sure the point I’m trying to make… other than to say that event-driven programming is less fragile?
I’ve never done a lot of functional programming. Sure, I did a bit of required Scheme in my Programming Languages class in college. Didn’t do anything real though — well, maybe a bit of decent AI stuff, but no actual apps. The point is, I’ve never really worked extensively with functional programming largely because the languages/tools I’ve been working with haven’t been purely functional.
Well, apparently I’ve just been missing it in AS3. It was staring me plainly in the face but hadn’t really thought about it in those terms. Bruce Eckel did, though. He shows how we can use the various Array methods (and add some of our own since Array is dynamic) to work functionally. There’s some very clever stuff in there, particularly the in-line functions that leverage closures to return results to the calling method… very clever use of AS3.
There is quite a bit of noise in the article related to his working with Flex Builder and writing the MXML to display the results of his tests. He also has a very — ahem — interesting code style that I wouldn’t suggest anyone follow if you plan on sharing with other AS3 coders. I’m referring to his mixing of MXML and AS3 (and I’m not talking mx:Script blocks, either). First time I’ve ever seen that…
Peter Christensen explains why I feel no shame for moving from the world of cutting-edge console games to web-based Flash games.