Tom’s Hardware Compares Windows XP SP3 vs. Windows 7 RC on Netbooks

Friday, July 3, 2009 – 10:41 am

Tom’s Hardware has a a reasonable article comparing performance if Windows 7 RC and Windows XP SP3 running on the Acer Aspire One D150.

Windows 7 Versus XP: Which Belongs On Your Netbook?

They conclude:

At first glance, one might come away from our benchmarks with the impression that Windows 7 is just as slow as Vista and that nothing much has really changed. However, looking only at the benchmarks doesn’t give you the full picture either. Subjectively, the release candidate feels quite snappy. Even with only 1 GB of RAM installed, the pronounced slowdowns that plague Vista on the netbook platform were extremely rare. So unlike Vista, Windows 7 may very well develop into an alternative to XP for netbook hardware. After all, performance isn’t exactly the primary concern of this platform, although newer and more optimized drivers should give it a boost. (read more…)

There are a couple of things about this review I don’t agree with. Namely that they’re using the Windows 7 Ultimate version, which was never intended to run on netbooks. Secondly it’s (obviously) an RC, not the final release, and of course the drivers aren’t available for the RC.

So while their comparisons are accurate the assumption that Windows 7 Ultimate RC today will give same performance as Windows 7 Starter when it’s released in October seems like a stretch to me. In addition to several months more performance work on the OS there’s the possibility of updated drivers for WDDM 1.1 and the like from manufacturers like Samsung and Acer.

Will Windows 7 provide the same experience on your netbook when it’s released in October? That very much depends if drivers are available for the hardware available in today’s existing netbooks. I’d expect newer netbooks to have updated drivers and outperform XP.

Once You Know, You Newegg

Domain Driven Design Quickly

Monday, June 29, 2009 – 9:26 pm

Domain Driven Design QuicklyAt ALT.NET Canada a few weekends ago I spent a bunch of time with Greg Young and Bob Brumfield. This seemed to involve drinking lots of stout, a bit too much stout perhaps. If only the bar had a better selection, like the Cannery Brewery’s Blackberry Porter from Penticton, BC for instance. But good atmosphere, great company and conversation although a Microsoft expense account was sadly lacking.

Which reminds me of the point of this post. Sorry it’s been a while coming…

A while back I spent the evening reading Domain-Driven Design Quickly. This is a good introduction to the concepts behind DDD and allowed me to make some sort of sense from what Greg and Bob were saying even after six pints of stout. It’s no substitute for reading Eric Evans’ Domain Driven Design. I’ll be pulling that off the shelf next.

Green Computing isn’t the same as Low Power Computing

Thursday, June 25, 2009 – 9:40 am

Rent my Windows Home Server. At ALT.NET Canada this weekend I had a bunch of interesting conversations about all sorts of things. Thanks to Michael Stiefel for proposing the session on what Green means for developers. That and some other conversations at the weekend caused things to fall into place.

In the past I’ve blogged about power consumption and efficiency. But is lower power consumption really the goal?

“In contrast with many home appliances, life cycle energy use of a computer is dominated by production (80%) as opposed to operation (20%).”

- Project: Life Cycle Assessment of IT hardware, IT and Environment Initiative

If only 20% of the environmental impact of a PC occurs while you own it then there’s not much you can do to reduce it’s impact. The damage is done before you even take it out of the box! Even if you make the computer ten times more efficient or lower your usage by 90% the overall impact only drops by 18%.

Maybe the environmentally responsible thing to do is to try and maximize it’s usage?

Read the rest of this entry »

Agile is NOT a Religion

Friday, June 19, 2009 – 6:59 am

The Last Supper, Leonardo da Vinci (1452–1519) I was having dinner with some people at a conference and one of them turned to me and said “If you weren’t doing agile what would you be doing?” I remember looking very blank and giving a somewhat vague answer.

In retrospect this was because the question made no sense to me. I don’t “do agile”. I build software that (hopefully) helps people more successful in their other endeavors. Agile is part of the picture but it’s not what I “do”.

By the same token I’m not a fan of "agilist", or "agilista", which is even worse. Although to be fair I’m uncomfortable with any word that ends "ista", with the possible exception of Barista.

Why do these make me cringe? Because they’re descriptions of the means and not the ends.

Read the rest of this entry »

Making Sure FxCop Warnings and Errors Break the Build

Thursday, June 18, 2009 – 9:40 am

FxCop is a great tool but one thing I don’t like is that there’s no simple way to cause an MSBuild script to fail when it encounters an FxCop issue. FxCopCmd.exe doesn’t fail when it finds an error or warning. It returns an error exit code when a catastrophic failure occurs not just an analysis issue.

Failing the build when you have too many FxCop issues is key to getting clean and staying clean as part of your Continuous Integration (CI) build. Here’s how to setup and FxCop target to analyze the FxCop report and fail the build when analysis errors or warnings are reported…

Read the rest of this entry »

Mixed Languages: The Right Tool for The Right Job

Tuesday, June 16, 2009 – 11:23 pm

NBody.Viewer, click for full size image.The N-body modeling code and visualization I’ve been working on finally got off the ground in some sort of reasonable form last night. Here you can see it running with 5000 stars at over 30 frames a second.

It’s been working from the start (agile/TDD isn’t something you just write about) but I hit a serious performance bottleneck with WPF’s Viewport3D class. Viewport3D is slow and only supports triangle rendering which makes it next to useless, <DELETE>. Make way for a native Direct 3D surface and better performance and improved graphical choices.

Some fun facts:

  • The UI is built with Prism 1.0 and uses Unity for its DI container and EntLib 4.1 to provide validation and logging.
  • The physics calculations are implemented in a variety of languages including C#, C++ and CUDA.
  • The parallel implementations of the physics calculations use Task Parallel Library (TPL) and OpenMP.
  • To get reasonable rendering performance the UI uses a Direct 3D surface within a Prism WPF module.

It’s roughly 6k lines of C# and 1k of C++/CLI with a further 3.5k lines of C# unit/acceptance test code (roughly 350 tests).

I’m not close to finished; the UI needs more work as to the initialization codes and there’s more work to do on optimizing the integration algorithms. I’m even thinking of using F# to implement an Octree and further parallelize the core engine using MPI.

The thing I really learnt from this is mixed language programming really isn’t that hard. Writing a shim between C# and managed to unmanaged C++ is tricky but once you have it figured out the first time it’s pretty simple, especially if you can limit yourself to use blittable types. This isn’t a new approach. Piet Hut and Jun Makino’s The Art of Computational Science uses a similar tactic but with Ruby and C.

ALT.NET Canada Vancouver and The Fallacies of Parallel Computing

Tuesday, June 16, 2009 – 9:22 am

ALT.NET conference schedule, for the people by the people.

I found the time to attend ALT.NET Canada in Vancouver this past weekend. This turned out to be quite the event and I had a great time. Several other people from the Puget Sound area made the journey including myself and Bob from p&p.

As with all Open Spaces conferences “The things that are talked about are the right things to talk about”. There were several sessions I really got a lot out of including one proposed by Michael Stiefel on what Green IT/Computing means to developers—more on that in a later post—and another I proposed with Amanda Laucher on Manycore, Multi-core, GPGPU computing and Axum.

There was also a lot of drinking.

Read the rest of this entry »

Resources for Continuous Integration and Defense In Depth

Friday, June 12, 2009 – 9:07 am

Continuous Integration deck.Thanks to everyone who attended my talk yesterday at the South Sound .NET Users Group.

The slide deck is available on my talks page (and by clicking on the image to the right). As usual it includes speaker notes so isn’t just a series of meaningless pictures. We (p&p) may also do a Channel 9 video on this in the future. I’ve also uploaded the MSBuild file I was using to give you a place to steal ideas.

The best place to start if you’re interested in learning more about MSBuild is the MSBuild page on MSDN. There’s also a tutorial to get you started writing a simple MSBuild project.

Read the rest of this entry »

Unit Testing Interfaces with xUnit Theories

Wednesday, June 10, 2009 – 8:46 pm

Someone at p&p just asked me this and I thought it was worth blogging about.

Suppose I have an interface IIntegrate that I’ve implemented for a number of concrete types within my application. In principle I can use an xUnit Theory to test the behavior of each interface. Something like this:

    [Theory]
    [InlineConstructorData(typeof(LeapfrogNativeIntegrator))]
    [InlineConstructorData(typeof(LeapfrogNativeParallelIntegrator))]
    [InlineConstructorData(typeof(ForwardEulerNativeVectorIntegrator))]
    public void IntegrateThrowsIfNotInitialized(IIntegrate target)
    {
        Body[] bodies = new BinaryUniverseInitializer().Initialize();

        Assert.Throws<InvalidOperationException>(
            () => target.Integrate(0.01, bodies));
    }

Here I have a Theory which tests all three integrator implementations to make sure they obey the interface contract, namely the Integrate method cannot be called before the Initialize method.

Read the rest of this entry »

I’m Speaking at the South Sound .NET Users Group

Wednesday, June 10, 2009 – 9:25 am

This was postponed due to epic flooding earlier in the year but it’s back on for Thursday night (June 11th).

Continuous Integration and Defense In Depth: Experiences at Microsoft

Continuous Integration (CI) is the practice of building and testing the application under development. Usually right after each and every check-in. CI grew out of the agile software development community but can add value to almost any project. This talk will describe the basic approach to CI and also some other practices teams can adopt to get even more out of their investment in CI. The talk will also cover the Microsoft patterns & practices team’s experience with CI and show some of the likely cost savings of adopting this practice on your team.

7pm at the Olympia Center. You can find more details at http://www.ssdotnet.org/.