Excuse me, Emir Maktoum, could I please debug this small hello world app on your Surface?

The race for the multi-touch input devices has begun, unfortunately as of today, the prices are unaffordable for the regular consumers and developers that are tied to project budgets.
We all remember the GUI from Minority Report and the attempts CSI Miami* is making nowadays to show these input devices as regular, day to day available hardware.
Most of us, developers, know it will take a while till the hardware becomes available/affordable in enterprise or end consumer applications.
But the time might be around the corner.
Hopefully it will be like the IBM PC and the PC-clones stories, third party companies were able to clone the IBM PC’s hardware and lower PC prices. That along with MS-DOS being distributed as a separate product, made the PCs widely affordable. No more architectures based on Zilog Z80 or Motorola 6508 (my highschool classmates played with Z80/8085 assembler back in the 80s), Intel 8085 quickly became the processor of choice, then the 16 bits 8088, 32 bits 80386 and 486 and all AMD clones.
Anyway, my point is, let the hardware be cloned, lower the prices and sell the WPF, XNA, Surface.Core APIs as a separate products. **

I just came from a Metro Toronto User group presentation about Microsoft Surface and played tetris with a few other group members. The presenter gave a great introduction to multi-touch devices and how to start programming for the MS Surface using WPF.
Unfortunately for me, I would have to email my hello world app to Dubai for debugging purposes.
It seems the price range of the Surface is about 15 to 20K. It is now used in a Casino in Vegas, some banks in Switzerland and widely spread in Malls in Dubai.

Another multi-touch/multi-user device is the incredible Perceptive Pixel Wall with range prices in the order of 100K. I wish I could get a hold of the development platform for this 100K device :-p What the heck are they using?

So far all of these technologies are under a pretty lip tight policy…It’s proprietary, can’t touch this. As a difference b/w the MS Surface and PerceptivePixel is the pressure perception. MS Surface being based on infrared rays and an arrays of cameras cannot perceive pressure.


IPhones from Apple, even though they are not multi-user, do recognize a few types of touches and are more affordable, if you don’t sign up with Rogers. I believe they use the Objective-C Cocoa framework as development API which would be pretty hard to kick off for a Java or .NET developer coming from a managed environment. I remember the alloc and mallocs from C and get chicken skin…what’s wrong with being spoiled with Garbage Collection?

Enough about random thoughts, I wish I could have played Tetris for longer…

I’m not a regular of the show, but my mom asked me once if I developed apps like that on my workplace…Not mom, not quite yet.
**Let’s see if they listen :-p

Hold down the right CTRL key, press the SCROLL LOCK key twice and scare the hell out of your Sysadmin :-p

I just watched Mark Russinovich’s Technet webcasts and he demoed how to create a Blue Screen of Death on a windows PC by using the right ctrl key + scroll lock + scroll lock

This is very helpful when debugging OS issues but I thought it might cause a faint on one sysadmin or two if done without warning. EYE: Do not attempt on Production servers or face an immediate let go…

Here’s the KB article describing how to gather the memory dump and the types of memory dumps you can get with this technique. Cheers!

Adding an NHibernate collection to your QuickWatch in Visual Studio loads the entire collection even if it is marked with lazy loading.

I spent most of the day trying to improve performance on an application. We use NHibernate 2.0 and try to lazy load most of the collections in  memory (RAM).
I found these two links very useful for troubleshooting my performance issue:
and the NHibernate reference:

The curious thing is I got really confused when testing my
NHibernateUtil.IsInitialized(_myobject.MyCollection) line and it was false
but I saw a query retrieving the collection in SQL Profiler…

until I realized that adding the collection to the Watch windows in Visual Studio initializes the collection. The same happens if you open the collection in QuickWatch. :-p

The tools used for troubleshooting performance were Ant Profiler and SQL Server Profiler.

If you call your .NET application from a batch file…

If you deploy your .NET applications with a batch file, be aware that the way you call your .NET application might affect how it behaves.

The facts are as follows (for our application anyways):

when the application is called using the following line in the batch file:

start C:\Progra~1\ApplicationFolder\Application.exe

the application fails

if you call the application using the windows explorer in the batch file:

explorer C:\Program Files\ApplicationFolder\Application.exe

it works fine but it shows a security warnings that you’re downloading files and that publisher is unknown…Not good for the end user, not good.

If you call the application from a path that doesn’t have white spaces using the start command, it works fine:

start C:\ApplicationFolder\Application.exe

(This option would be good if we didn’t use Program Files for the deployment, but most people do)

and, finally, if you use the start command but take out the DOS path it works!

start ” ” “c:\Program Files\ApplicationFolder\Application.exe”

I checked the assemblies binding errors, the code access security for every assembly in the application, debugged the application, et-cetera without results.

Changing the old DOS path did the trick!!!

Why? I still have to get a hold on this script guy to ask him why :-p

Happy coding!

Handy links if you like to compare

VB.NET and C# Comparison

Java (J2SE 5.0) and C# Comparison

C# vs Ruby Smackdown!

log4net vs EL 1.0

SQL Server 2000 vs Oracle 9i

A Comparison of PL/SQL and Transact SQL

and last but not least:

Comparison of SOA Suites

Note there is an ESB implementation from P&P for BizTalk 2006 R2 that sort of leverage the missing functionality in the product: ESB Guidance for BizTalk Server 2006 R2

Ok, there’s nothing new here, just a personal cheat sheet :-p

Monday morning random rambling…

Now that caffeine is taking effect: I attended the Heroes Happen Here event in Toronto last week. The event was fun in general, lots of marketing going on so the developers get really biased, towards Microsoft technologies, of course…
Not that this is necessarily a bad thing, as long as you keep your mind open to what’s going on on other development niches and keep the constructive criticism.
I enjoyed the developer tracks in the morning but most of all I enjoyed two architecture presentations, they were light and fun, not too deep in content though, but very refreshing. Here are the blogs of the conference authors:
No Spin Architecture
Joel’s blog on architecture

Both blogs have tons of resources for aspiring architects.

There was a third presenter that raffle 4 architecture books, the raffle consisted on answering a question at light speed, doh! I’m planning on getting the books at amazon…

Overall, I got good software to try, saw that VS2008 has the split markup/code feature for web development that Macromedia had when I started doing web in 2000 and I should get a copy of Vista on my mail in the next few weeks. I’m excited about the JavaScript debugger and IntelliSense in VS2008. Hyper-V promises to be more secure than VMWare, SQL Server 2008 has the FileName type I wish I have now for my image archiving project…
I can’t wait to get my hands on Virtual Earth web service and bundle it with the new maps capabilities in SQL Server 2008, if time permits, there’s only 24 hours in a day and deadlines cannot be stretched :-p


Dad put together a quick gallery with his comics

Way to go! Yay!
I particularly like this one about silicone implants :-))

Visit the original gallery here.

Now going nerdy on how fast is to set up this gallery, what’s even more interesting is the way to publish images in a batch using Windows XP Explorer. I do have to reverse eng the process, one modification in the registry and the windows explorer can publish any folder with images in three clicks…Publishing from Mac is as fast.

If you have minimum computer skills, you can set up your own image gallery with this script. Honest, stop sharing your family pictures in Flickr, Ringo or any other public website and have your own space. You can even have your grandma upload the images for the family :-p

If you need hosting and domain registration for your gallery, Chihost is the best to go with.