Michael Buffington

Microsoft UK: Office Clips

Sunday, August 20 2006

Microsoft UK commissioned the guys from The Office to create some “values” videos for them. They’re pretty funny, and remind me of why I like the UK business culture.

Visor

Wednesday, August 16 2006

Years ago my friends and I used to play a lot of Quake. Quake, and all the games using the iD’s Quake engine, allow you to pull down a console that let you have a quick command line to tinker with things.

Visor is essentially that same thing for OS X. It let’s you assign a key command to quickly pull down a Terminal session, and hit the same key to get it to hide.

And yes, you get to a new Terminal window pretty easily without visor, but having something that comes into view very quickly, and disappears just as quickly is great for doing things like tailing log files, or debugging an app in console mode.

And for some strange reason, you can run Quartz Composer files in the background, which is why you see floating rings in that screen capture.

Blogging From Textmate

Wednesday, August 16 2006

I found out that the latest version of [Textmate][http://macromates.com] can be used as a third party blogging tool, posting articles over XML RPC. This is pretty exciting, and this post is proof that it works. For [inspiration][http://macromates.com/blog/archives/2006/06/19/blogging-from-textmate/], I watched the creator of Textmate use [Brad Choate][http://bradchoate.com/]‘s Blogging Bundle in a [screen cast][http://macromates.com/screencast/blogging_take_two.mov]. I’m going to try using it as my primary tool for a while and see how it goes.

Blogging from Textmate

Treadmill Bike

Wednesday, August 16 2006

[youtube=http://www.youtube.com/watch?v=7hmVQc91yVE]

Minority Report

Monday, August 14 2006

Remember the movie Minority Report with Tom Cruise? He played a detective that would arrest people for murder who were innocent, but were declared guilty by some clairvoyant triplets floating in a pool of milk who could see the future. Scary sort of science fiction right? I mean, who knows if the milk pool floaters are really right (because you never can prove that someone would have done something, especially when you’ve locked them up) and I mean really, how can you eliminate people who are susceptible of becoming killers?

Even if you were innocent, it’d be pretty frightening to think that your government was trying to figure out how determine if you, Joe Citizen, were susceptible of becoming a killer, especially if your government makes mistakes.

I present you this:

“”http://www.npr.org/templates/story/story.php?storyId=5638197">Clearly at the end of the day, we’ve got to eliminate that pool of people who are susceptible to becoming killers.</a>" —United States Homeland Security Secretary Michael Chertoff, when asked how to prevent terrorism while talking in the context of psychological profiling.

Rendering HTML With JS

Sunday, August 13 2006

In the game I’m currently working on I’ve been tinkering with creating Javascript objects for each tile, duplicating, and placing the tiles wherever I need them. This is in preparation for a smarter blitter that does an Ajax call to the server, asking for the squares it needs to fill the current game window.

In theory, making objects seems like the way to go because you’d think it’s the most efficient way – make one thing, then duplicate it, only changing its properties enough so that it appears on the screen in the right place. In practice it renders very slowly.

So far, the most effective approach seems to be to ditch the object creation approach entirely. Instead, I build up a string, then append that string to the HTML element that’s supposed to contain my squares. It looks like this:

function draw_map(tiles) {
for (var i = 0; i < tiles.length; i++) {
x_y = iso_node_to_screen(tiles[i].attributes[‘x_choord’]-x_choord,tiles[i].attributes[‘y_choord’]-y_choord);
insert_string += draw_tile(x_y0,x_y1,tiles[i].attributes[‘x_choord’],tiles[i].attributes[‘y_choord’]);
}
new Insertion.Bottom(‘board’,insert_string);
}

Insertion.Bottom* comes from Prototype and simply adds a string to whatever element I tell it to.

The problem is that even that doesn’t provide instant response. In Firefox, it’s quick, but with Safari there is a flash. It’s worth noting that in my current game, I’ll only grab that entire field of tiles on a new page load – as the user scrolls the window only a single row of squares will be added at any given time – a total of what’ll probably be just 10 new squares.

I’m not quite sure how to get it any faster, but studying these benchmarks might help. Most suggest that using innerHTML is the way to go, so perhaps I can figure out how to write my own version of Insertion.Bottom that’s a bit more efficient.

  • Insertion.Bottom is by far the worst name for a method I think anyone could come up with.

Generation Distinction Through Technology

Saturday, August 12 2006

While playing with Google Earth last night it occurred to me that the app, or more importantly, what it allows a person to do, is as significant a change for my generation as changes like the introduction and adoption of automobiles were for my great grandparents, or landing on the moon was for my grandparents.

I’m counting it as the first new technology that is significant enough to produce a distinct generation gap between me and my children. I can’t count the Internet as one of those technologies – for the most part both my children and I will have grown up with some kind of network connection and I certainly can’t count the personal computer. No other technology comes to mind that has such vast potential, and yet has only been available to the mainstream for a couple of years. Last night I zoomed in on North Korea and saw nuclear missile sites. I saw the crater where the World Trade Centers once stood. I looked at villages wiped out by genocide in Darfur. I couldn’t do that before my kids were born, but they’ll be able to do it for the rest of their lives.

I wonder if my stupefaction with Google Earth is the same sort of feeling my great grandparents had when a perfectly good horse drawn carriage went putting down the street without the horse. Were they unable, as I am, to explain why it’d change everything?

Will technologies like Google Earth make the world small enough that our children will understand how their behaviors will make an impact on the lives of people living just a mouse drag around the globe away?

Inventing

Friday, August 11 2006

I think I’ve invented something of significant purpose for something I’m becoming ever more passionate about. But to help paint the picture, let’s think about the hero who invented compression molding presses. Without this kind of machine there’d be no inner tubes, no melamine crockery and no brake pads. There’d be no bike riding, no green bean casserole, no stopping of massive vehicles. Read: mayhem.

But no one goes out and tries to invent things like this, it just sort of falls into place. You need something to press the hell out of some bits of material, so you make something to do it, and you refine it, and with enough iterations you end up with some massive device with blinking lights and pressure gauges that can squeeze out a conveyor belt while you eat a Baby Ruth.

I’ve been doing the same thing with casually played massive multiplayer games. I keep finding the need for tools, and I keep building new things because I think I’m the only one daft enough to try and do this. But I have the same itch that the guy who needed to press the hell out of something had. I’m compelled to do things like build programmatic routines that let me efficiently blit an isometric perspective tile map with depth sorting using just CSS and HTML. And while they’re not yet perfect, they’re a preview of what’s to come.

Consider this example of depth sorting. It’s not perfect, but it’s a tool I really need for a new game I’m working on. Find the “North, South, East” and “West” links to see the red cube move around. There’s no real magic going on here, but it took a lot of trial and error to determine the best way to pull it off, much like I’m sure the compression molders so near and dear to all of our hearts took.

I can only hope that I’ll be able to make the work that I’m doing now to build rudimentary tools will become just as important, even if just indirectly, to what we do on the Internet as the compression molder is to baby bottle nipples.