Oct 12

Once you’re reading these words, Windows 7 should just about be a retail reality. Leaving aside the unspeakable awfulness of the operating system it replaces, I’m guessing that you’ve probably had your fill of Windows 7 proselytisations. It’s time to take it for a spin for yourself.

However, there is one Win7 feature that’s particularly close to my heart. I reckon I can get away with bringing it up because it’s not actually exclusive to Windows 7. I speak, of course, of DirectX 11. On the face of it, DX11 is just the latest in a long line of multimedia APIs. Great if you have a fetish for fragment shaders, moderately interesting if you’re a keen PC gamer, but otherwise a bit of a niche subject.

DirectX 11, however, is a bit different. There are several reasons to think it will not only be the biggest ever step forward in entertainment tech on the PC, but also properly shake up the way desktop computers process data.

Undoubtedly the biggest change is the introduction of Direct Compute, also known as the compute shader. The idea is to broaden the scope of DirectX – or perhaps more accurately the Direct3D pipeline subset – to general computing rather than just graphics rendering. The only caveat is that a given task must lend itself to parallel processing. In hardware terms, the target component here is the GPU. Despite the recent rise of multicore CPUs, it’s by far the most parallelised PC-compatible computer chip.

It’s also theoretically the most powerful – if only its resources were harnessed for general computing. If that sounds like a familiar refrain it’s because I’ve preached the virtues of using graphics for general processing, otherwise known as GPGPU, on several occasions. It’s a well established concept, complete with several ongoing initiatives, most obviously Nvidia’s CUDA platform.

So far, GPGPU has failed to live up to the hype. I’m convinced DX11 will finally change that. Crucially, it sets out common standards for both hardware and application developers. Unlike with CUDA, you won’t to need to worry about the make and model of your graphics card beyond ensuring it’s the real DX11 deal. Just as importantly, software developers can begin to get their teeth into the challenges posed by coding for GPGPU, safe in the knowledge that there will be a healthy installed base of fully compatible PCs a year or two from now.

Of course, Direct Compute isn’t just about guaranteeing cross-vendor compatibility. It’s also about laying out the minimum hardware requirements to ensure compliant graphics chips actually have the computational chops to handle general-purpose tasks. While previous graphics cards have packed immense theoretical processing power, they’ve also been hobbled by architectures optimised for graphics rendering. Up until the introduction of DX11, for instance, GPUs have only been required to make 256 bytes of internal memory available to each software thread. With Direct Compute in DirectX 11, that balloons to 32kB.

The net result of the combined efforts of Microsoft, Nvidia and AMD should see a huge increase in parallelised application performance. Graphics chips could turn out to be 30 times faster for highly parallised software such as media encoding.

For the record, the first fully DX11-compliant GPU is already on sale. It’s AMD’s new Radeon HD 5870 and it really is a piece of work. Thanks to no less than 2.15 billion transistors, it packs a ludicrous 1,600 stream processors and is claimed to be capable of nearly three teraflops of raw computational heft. To put the latter figure into context, that makes it faster than the world’s fastest supercomputer circa 1999. That was a machine that filled a 230m2 room. Not bad for a single chip.

Direct Compute aside, there are one or two further features that mark DX11 out from its predecessors. For starters, support for multicore PC processors has been much improved. The introduction of hardware geometry tessellation should also make a huge difference to the quality of PC graphics. The sheer number of triangles the new Radeon HD 5870 is capable of processing simply beggars belief. But most significantly, Microsoft has done a much better job with backward compatibility than it did with DX10. You can already upgrade Windows Vista to full DirectX 11 support with a couple of mouse clicks.

Naturally, I would recommend that everyone takes the opportunity presented by the arrival of Windows 7 to go all the way and dump Vista altogether. But I also realise the reality for many is that there are some rather off-putting cost and technical barriers to doing so. It’s nice to know that existing Vista licensees can get all the benefits of DX11 without upgrading to 7. Truly, it’s not often you get something for nothing from Microsoft.

 

Apr 11

Big news this week, the rumor finally became true: Google App Engine supports Java, next to Python. So Google AppEngine is now a big Servlet Engine in the cloud.

Along with the Java on Google App Engine announcement, I noticed another component: the Secure Data Connector. This SDC allows applications running in the Google cloud to inter operate with Intranet applications. Through the Secure Data Connector, Intranet applications can be accessed.

Scenario:

  • The Secure Data Connector is installed on a Linux server within the Enterprise.
  • An administrator configures the SDC to access certain resources within the Intranet.
  • The SDC is started and runs continuously as a background process.
  • The SDC connects to Google (https://apps-secure-data-connector.google.com) on port 443 (HTTPS). The connection is made from the enterprise to Google, so no need to configure the firewall at Entrprise side to allow inbound connections (from Google into the Enterprise).
  • The SDC authenticates itself using username and password.
  • Once the SSL connection is established, the connection remains open.
  • An application running in the Google cloud (AppEninge, Google Spreadsheet, …) needs to access data from the Intranet or send data to the Intranet.
  • In AppEngine, this is done using the URLFetchService. To specify that an Intranet resource, HTTP header use_intranet=true is set.
  • From the Google AppEngine, a call is made to the SDC deployed in the Enterprise. Remember, TCP connections are bidirectional.
  • The SDC verifies if the access the local resources, e.g. using the local DNS from within the Enterprise.
  • The SDC accesses the local resource or web service and returns the data back to the applicaton running in te Google cloud. The size of request and response messages is limited to 1 MB.

The access to protected data within the enterprise is somewhat of a challenge. The only mechanism the SDC can provide credentials to Intranet application/service/resource is OpenSocial and OAuth signatures. And

One of the evolutions that I envision is that ESB’s or B2B services will embed the SDC logic as an adapter. The ESB is able to transform the requests coming from Google into other protocols or formats and add the necessary credentials.

Some more thoughts and remarks I made while going through the Secure Data Connector docs:

  • How is the configuration file of the SDC protected? In particular the username and password contained therein.
  • Support is limited to Linux. What prevents this open source code to be ported to other platforms?
  • How about load balancing or failover?
  • How about interoperability between clouds: anyone already tried to deploy the SDC on EC2?
  • Where is the SOAP support? How to invoke SOAP web services using the URLFetchService?
  • How about identity services and mapping the identity of a Google user to an internal Enterprise user account?
  • The SDC is not comparable to the .Net Services Bus of Windows Azure.
  • Can the SDC access the Internet through a proxy?
  • To deploy the Secure Data Connector in a large enterprise, you might have a hard time convincing the security department.

Aug 20


I had a busy couple of weeks in which I managed to read and learn about some new technologies – Microsoft mesh, Google Friends Connect, Facebook connect and dozens of small other applications / solutions / widgets…
It seems that besides the big gorillas, there is room for many small players.

So, one very small player was born – I managed to ‘release’ my first Facebook (windows) application (still alpha release) – FB Notify Me – a small windows program which sits in the system tray and notifies when you have a new message or someone wants to be your friend or someone poked you.

It was a short but interesting lesson in which I learned a couple of things:
About myself – I’m definitely rusty and have several things to learn but still enjoy developing
About Facebook – The APIs allow access to many features but still somewhat limited