Dec 14, 2005

Tomorrow is 360 day for me

I managed to get in a small window this morning where Amazon has some 360 bundles available, so tomorrow I should be getting my XBOX. Wahoo!

Of course, I had to buy a ton of extra games that I didn't want... in the end I don't think it will be too bad, I'll eBay the games that I don't want, and hopefully get in for around the right amount. Went over to the company store tonight and picked up 3 extra controllers, so I'll be ready to rock tomorrow.

I'm planning on working from home in the AM tomorrow, then playing games for the rest of the day :)

Nov 26, 2005

Battlestar Galactica

I just finished watching the Battlestar Galactica mini-series. I remember watching various parts of the show when I was a kid, it was slightly before my time, but I can still remember the cheesy effects, bad hair, and out-of-this-world dialog. I hadn't gotten into the show when it aired initially, but then Erick got sucked into it and lent me his copy of the mini-series.

Wow.

I was pretty blown away by it. A super dark, smart, sci-fi series. I only hope they keep the quality of the show up in the regular season. I've ordered seasons 1 & 2 on NetFlix.

Large numbers of visuals

From a comment:

"OT: terribly bad form to pull the comments off-topic, but here goes.

I just watched the PRS315 PDC video hoping to get the answer to the blog question listed in the slideshow:

"How do we get large numbers of visuals to perform? If we have 100,000 eleemnts to display in a system how do we make it perform? With an immediate draw API I can omit drawing that is out of view or too small to be visible. Where is there some conditionality in the visual hierarchy?"

But the discussion never got round to that question. :'(

Do you know anyone at Microsoft who could talk/write/blog knowledgeably on the topic and if so, are you prepared to prod them to do so? Alternatively, maybe its already been answered somewhere.

Yours,
Confused Programmer (hoping he doesnt have to re-implement the wheel at the DirectX level, given how suitable the WPF wheel looks, at least on the surface).
"

There are several options on how to achieve this, the two main things you need is to have logic to omit elements that aren't visible (which you mention) and carefully choose what needs interactivity and what doesn't. There are three primary ways to create visuals in Avalon - UIElements, Drawings, and DrawingContext.

UIElements are the shapes, buttons, and other controls you know and love. They support input, eventing, layout, etc. Typically a single UIElement will create more than one visual, and the internals of Avalon has to track bounding boxes, input state, and lots of other goo. You can create a scene with tens of thousands of elements that performs adaquately, but that is really pushing the upper limits based on memory and GPU bandwidth. We are working hard to optimize this, but I would suggest that if you have more than 5K elements, you'll want to start doing something different.

Drawings are a lightweight object model on top of the underlying render data that the rendering engine uses. Think of this as object oriented GDI. Drawings don't have input, etc, they tend to be a lot more lightweight. Drawings can scale to the size of tens of thousands pretty easily, however you are still allocating managed objects for all of these.

DrawingContext is the closest to an immediate mode API that Avalon has. DrawingContext directly manipulates the render data that the engine uses. This avoids the managed object overhead, and you are now just working on a binary stream of data used to render. This can scale quite well to very large numbers.

All of that said, Avalon is a retained mode vector based graphics system. So, creating a very complex scene can cause the system to bog down, especially if you do anything to force software rendering (BitmapEffects like a drop shadow, or complex opacity effects with the OpacityMask, etc).

You as the data provider is in the best position to optimize the visuals that you create. Just as a stupid example, you wouldn't implement Virtual Earth by rendering all the visuals at all depth for the world and then just panning around. Nothing would scale to that level.

I'm not sure your exact scenario, but depending on what you are doing one of the three APIs above should hopefully give you the features, performance, and scalability that you need. The last bit is to write some type of host that performs the render. When I wrote a Virtual Earth host in Avalon, I ended up writing a custom panel that overrode OnRender. I needed a panel because I wanted to support layout of pushpins, but then only the layout new where the map tiles should be placed. It worked pretty well, but of course it violated some of the purist views of what a panel shoudl do... but code wins :)

Good Luck!

Nov 22, 2005

No 360 for me

I didn't plan enough ahead, so my preorder at EBX got punted to the next shipment (or sometime in the future). Showed up at the local Best Buy yesterday at noon, and there was already 150+ people in line. Decided that the right call was to try my luck at Costco this morning. Showed up there at 5am only to find 53 people in line (they are only getting 48 units). There was a line at every Target, Fred Meyer, Sears, and Costco we drove by. This is insane.

Anyway, net result, I won't be getting a 360 on opening day. Bummer.

Nov 19, 2005

In other news...

Hmm... what is this?

Nov 15, 2005

Blogging in Windows

I agree with a bunch of stuff that Robert McLaws says about Microsoft being a dinosaur, however I think that the various people blogging in Windows would disagree that Windows doesn't blog. We've released multiple CTPs of WinFX and Vista over the past year, and more to come (soon!). Windows is a big organization, very big (8,000 - 14,000 depending on how you count it!)... Of course I and some other folks think it should be smaller, but that rant can be another post.

Developer Division (which produce Visual Studio) is a much smaller organization, and has been leading in transparency. I've worked in DevDiv for many years, and now in Windows for several years, and the two groups definetly have different cultures. I'm happy to see the Windows group learning from DevDiv's experiments. I'm thrilled that CTPs are becoming a more common thing, that people are blogging more, and that community is becoming something that everyone thinks about.

I agree, we have a long way to go, I'm just not sure I understand your point in your post... Should we post internal milestone planning? Is it that you want to see our VP's blogging about our next release?

Nov 06, 2005

Still thinking about boats

I still don't have one yet, but I'm getting closer to pulling the trigger and getting one. A blog is an interesting thing, because it serves as a history of what you said when... for example, I have a good recollection now of exactly the last time I posted about boats.

My criteria for a boat have changed since then, but one thing remains - I don't know how to close on the purchase. I can't find any good source of unbiased data on quality, performance, and features of boats. Almost every boat review I read says "this boat is great, you should buy it!".

The top boats on my list right now; SeaRay Sundancer 260, Four Winns 258, and Maxum 2600 SE... or the 24' version of each. I'm concerned that the SeaRay is overpriced for a perception of quality, or that the Maxim is too low of quality?

My goals for the boat is to big enough to "camp" on with Megan and up to two kids, or potentially another couple. It should be trailerable, however we will moor it on Lake Washington, so it doesn't need to be super trailerable. It should be able to take 8 people out for a day cruise comfortably. It doesn't need to be great at water skiing or wakeboarding, however tubing should be doable. Swimming is a must.

There are a bunch of other brands that I need to investigate, Cobalt (however their boats seem to be small for a given length), Regal, Chaparral, and Crowline. Any others I should look at?

The big question I want to figure out - how do you judge quality? I hear lots of "Bayliners suck so don't buy a Maxum" type comments... but I wonder if that is like people complaining about a Ford or Chevy. Is there really a substantial build quality difference between a Maxum vs. Four Winns vs. SeaRay? obviously the resale value of a SeaRay is better than Maxum, but is that a good indication of quality? (i think so)

PSP and video

I decided i'm going to get my PSP up and running with video. I ordered a 1GB stick of memory, which should be here in a week or so. Now I need to figure out the software.

My understanding is that there are two main components I need; first, the DVD -> MPEG ripper. Second, the MPEG -> PSP Video converter.

ImTOO offers a suite for this.

There is PQ DVD.

PSP Video 9, which appears to only do the MPEG -> PSP portion.

Chris Prillo just reviewed the PSP Media Manager from Sony (again, for the MPEG -> PSP part)

And then there is the Xilisoft DVD to PSP suite.

What to do? I'm guessing that there will be a bit of a workflow problem here - i really want to be able to rip a couple movies right before I go on a vacation or something, so having something that is easy to operate, potentially supports batching or offline (maybe that can sync to the PSP instead of requiring explicit action?).

Hmm... i'll have to think about this more...

Nov 02, 2005

End of The Month of the Book

Well, it's over... but it's not. I got through a lot of good work during October. I really feel I turned a corner where I began to focus on writing, instead of on the technology. I have until the end of December, and I'm still behind. The book focus is going to continue. Over the past couple days I've let it slip a little, but I need to get back into it.