What is Google trying to tell me?

I was signing up for Google apps just to see what the fuss is all about and could not think of a domain and thought to give geek.com a try. Of course I knew it is not available, but I am quite offended by what Google thinks of Geeks – especially the whole damn company was formed and staffed by geeks.

image

Wii Whiteboard Marker a.k.a Surface

I got this via the Ava communities – John Lee created a Wii Whiteboard Marker – very cool. Now the only thing to figure out how the heck to get a projector. Smile

Getting Vista SP1 via Windows Update

If you want to get Windows Vista using Windows Update then copy the following in a bat (or cmd) file and run it in an admin console (if you have UAC switched on); then run Windows Update. Also the SP1 is a Release Candidate and not the "final" version so use at your own risk!

 

@echo off

reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\VistaSp1 /f > NUL 2>&1
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\WindowsUpdate\VistaSP1 /f > NUL 2>&1

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\VistaSp1 /v Beta1 /t REG_SZ /d da2ba4db-dedb-437e-8e7e-104643454bb6 /f
IF NOT %errorlevel% == 0 ( goto ERROR)

:SUCCESS
@echo.
echo ===========================================================
echo  Windows Vista SP1 registry key has been set successfully.
echo  Please check for updates in Windows Update.
echo ===========================================================
@echo.
goto END

:ERROR
@echo.
echo ===========================================================
echo  FAILED to set Windows Vista SP1 registry keys.
echo  Please run this script by right clicking and selecting
echo  "Run as Administrator".
echo ===========================================================
@echo.
goto END

:END
pause

Good UML Tool (and free too)

Love it or hate it UML is important for anyone involved (Architect/Developer/Whoever) – either you need to create designs based on UML and you need to understand that someone else has. Sure it has its challenges and for some specific things there are better solutions (DSL's – more on that some other day). I am "old school" and over the years have used Rational Rose (or whatever IBM has renamed it to since buying Rational out).

But as are aware Rational tools are very pricey and I was on the look out for something reasonable. Most people have heard of EA (no, not the game company) which is a decent tool and not too expensive (at least the Desktop edition).

Of course if you are stingy like me and want something completely free then check out StarUML which is an open source UML/MDA platform and is pretty decent. When you work with it enough you will find some annoying things – most of which has workarounds. There are one or two things it just cannot do, but I only have been using it for a few months now and am quite impressed. Is it better than the likes of EA or Rose, nope but it is pretty damn good for the price.

image

Parallel Computing with .NET

With all the modern systems using multi-core and multi-processor systems, tapping this new power is an interesting challenge for developers. It also fundamentally starts the shift on how your "average Joe" interacts with a computer and things that he/she expects to be able to. First, check out the "Manycore Shift" paper from Microsoft. Second checkout the Parallel Extensions to .NET 3.5 which is a programing model for data and task parallelism. It also helps with coordination on parallel hardware (such as multi-core CPU's) via a common work schedules. There is also a new Parallel Computing Dev Center on MSDN. Before you download the December 2007 CTP, make sure you have the RTM bits of the .NET 3.5 runtime. There are also a number of bugs fixed in this new CTP. If you want a quick introduction then check out a few videos available.

The runtime for this is responsible for mapping parallelism expressed in an application to the actual capabilities of the underlying hardware of multi-core or multi-processor machines. The runtime determines at runtime the number of threads to create. It also monitors this to tweak this and see if any more or fewer threads are needed. The runtime also scales up as more cores become available without any change to your application.

Microsoft also says "Because Parallel Extensions exploits multiple processors, we recommended that you install this directly onto an OS. Using virtualization technologies is not recommended due to restrictions on the maximum number of processors supported by today’s common virtualization technologies." [sic]

There are several approaches you can use to expresses parallelism. Here is a brief from the documentation on these:

  1. Declarative Data – Parallel Language Integrated Query (or Parallel LINQ) is an implementation of LINQ-to-Objects that executes queries in parallel, scaling to utilize the available cores and processors of the machine. Because queries are declarative, you are able to express what you want to accomplish, rather than how you want to accomplish it.
  2. Imperative Data – Parallel Extensions also contains mechanisms to express common imperative data-oriented operations such as for and foreach loops, automatically dividing the work in the loop to run on parallel hardware.
  3. Imperative Task – Rather than using data to drive parallelism, Parallel Extensions enables you to express potential parallelism via expressions and statements that take the form of lightweight tasks. Parallel Extensions schedules these tasks to run on parallel hardware and provides capabilities to cancel and wait on tasks.

Now, I just need to take out the time to play with this; does anyone know how I can rar up some hours in a day and squeeze in a bit more?