Thursday, December 03, 2009

Visual Studio keeps crashing on me

I’m experiencing a very annoying thing in VS. Every 1 in 10 (or so) builds of my project makes VS crash. I started Visual Studio in WinDbg and this is the last exception thrown before VS dies:

(1460.1288): CLR exception - code e0434f4d (first chance)
ModLoad: 5e0a0000 5e0bb000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\alink.dll
ModLoad: 11da0000 11daa000   cvtres.exe
eax=000000c0 ebx=123aeba4 ecx=19074c30 edx=000641d3 esi=00000001 edi=00000000
eip=76e764f4 esp=123aeb54 ebp=123aebf0 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
ntdll!KiFastSystemCallRet:
76e764f4 c3              ret

 

If anyone has a clue what’s up, please let me know. Your help is much appreciated.

Bye,

Bart

Sunday, November 22, 2009

Twitter to the rescue

Since I can remember I am annoyed by the site expert-exchange.com. It might hold good information, but I just don't like the idea that people are making money the way they do. Might be my tight Dutch ass, but there you have it.
So, I mentioned this on Twitter and, voila, @bruljaap came to the rescue with a link that solved it.

How to exclude a domain from your google search results:

Thanks Jaap.

You can now search Google, exclude expert-echange.com, using the Bart's search on my blog. It not only excludes expert-echange, but also favors stackoverflow.com.

You can make the search engine the default in Google chrome by adding the following URL as a search engine using the options:


I'm sure you can create a search provider for Internet Explorer the same way (but I'm really becoming a Chrome addict lately so I will dig into that later).

Hope this helps.

Bye,
Bart

Friday, November 06, 2009

Problem with Outlook plugin and WebBrowser

Below you find a question (and my own answer to it) on StackOverflow. It has given me headaches for the last couple of days. But maybe this story will help others.

Hi, I've created a couple of Office plugins. The plugin shows a set of html files installed on the clients computer. The plugin uses a COM-accessible assembly which shows a WinForm with a WebBrowser on it. The plugin makes the WebBrowser navigate to a file on the clients computer. The assembly is also used in other programs to show the same information.

When showing the local html files using a 'normal' browser (e.g. double clicking a file in Windows Explorer) the browser popup a security warning about running active content. This is because we have some javascript in it. This warning is supressed by setting the 'Allow active content to run in files on My Computer' in the Internet Explorer settings. This solves the issue using a 'normal' browser.

Funny enough the 'active content' warning is not shown when getting the same file using a Word/Excel/PowerPoint plugin. It calls the same assembly, using the same WinForm and using the same content. Despite the setting 'Allow active content to run from My Computer' being false, the content is shown without a warning and the javascript is executed.

Now, the problem and the real question is that Outlook does the reverse. No matter what I use for 'Allow active content to run from My Computer' the browser warning about the active content in the html file is shown. When I confirm the message and allow the scripts to continue, the javascript runs fine. So, even when I set the 'Allow active content to run from My Computer' to true, the warning is given.

I've gone through all (sort of) relevant settings in Outlook, but nothing helps.

I assume that Outlook is using some kind of private context for a webbrowser (probably because it is using a webbrowser object internally).

The real question is: how can I make the Outlook plugin respect the IE settings?

(I understand this is a long story and maybe not clear enough. Please let me know if I have to elaborate more).

1 Answer

I couldn't get rid of the security warning without lowering the security setting. And that is not an option: we are talking about a project that will be installed on millions of computers.

I decided to go another route. Let's see if we can make the browser trust the html pages. So, what to do to get rid of the 'Active content' warning.

First I investigated what exactly triggers the warning. That was easy: any tag in your html file will do. And I need script, so removing that isn't an option. But, when hosted from a website, the scripts run fine and don't suffer from a warning. So, I investigated if it is possible to run my files in the Internet-context.

I found out there is a way, at least for IE (which in my case is sufficient). If you save a webpage as a complete HTML file from IE, the browser adds a comment to the html to signal its origin. Something like: . If you later open that stored html file, the file is shown in the Internet context.

So, I tried adding to the html file. And, voila, the file is opened in the Internet context. The security warning about active content is gone and the scripts are executed fine.

But, that raised another problem. We have a couple of window.open statements in the scripts and using that causes he cross domain browsing problems that in recent IE versions are blocked. Even if you use a relative path in the window.open call, if fails and you end up with a blank window.

In our case, we can (probably) decide to get rid of the window.open calls. But, if a reader ever finds a solution for using window.open

Hope this helps anybody,

Bye Bart

Monday, October 19, 2009

Summing up my experiences on Surface / WPF in the last few months

As you may have read on my blog, I’m a self taught software developer that started many moons ago with assembler and basic. Using Clipper, Cobol, Fortran, Smalltalk, C, C++ as substations I ended up being a Delphi developer for some 8 years (and I still use Delphi).

About a year ago we started an endeavour with Microsoft Surface. It is hard work to get some commercial success (companies are very tight at the moment with their budgets) but still we spend a lot of time getting some things together. We delivered a couple of applications to customers, one large application to one of our partners and even a shrink wrapped Surface product that will be sold through our partner LearningGuide Solutions.

Some time ago I complaint about my struggle to grasp the concepts behind WPF. I can easily say that’s all water under the bridge now. I am fully enjoying WPF/Xaml because of its elegant design and complete separation of code and visuals. Sometimes you need to go into the code behind (or at least you think you need to). Most of times you discover later on that there are more possibilities with the data binding, templates, styles, template selectors and value converters that you thought possible.

I would like to advise every programmer that is looking for some sharper looking applications to dig into WPF/Xaml. It can’t do more than other concepts can, but it will enable you to divide responsibilities amongst your software team members a bit better. At least, that’s what I take from it; our UX designer is now more in his field and programmers can concentrate on code even more, taking advantage of each others strengths.

Keep your eyes open for some Surface announcements later on.

Bye for now,

Bart

Saturday, September 12, 2009

Merging dictionaries in Silverlight 3

In Silverlight 3 you can merge dictionaries. Something that I really like because it enables you even better to separate reusable things from one time things.

When you try to do that, watch for a couple of things.

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/S7Silverlight;component/Themes/Generic.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Don’t forget: (1) the slash before the name of the Assembly and (2) to put component/ before the path to the resource file in the assembly

Just thought it might save you the hour I just spent.

Bye,

Bart

Wednesday, July 01, 2009

Surface user group Netherlands kicked off

As you may know we started a Surface user group together with Cap Gemini and dotNed.

Below you find an impression of the first meeting we held at our office.

For more information about the Surface user group, you can contact me or any of the other founds of the user group.

Bye,

Bart

Wednesday, June 24, 2009

Surface tagged objects coming up

3poppetjesAs you may know from my blog, we are pretty active on Surface. We develop and design for Surface and talk about it (a lot…). But, we are also trying to come up with some tagged objects, especially for Surface.

These objects (it is a photo of the real objects, not a render of their design) are tagged at the bottom so the Surface unit can detect which one is placed on the Surface unit.

poppetje_batterij These are trial objects, based on our company logo. We are evaluating the production process. E.g. we now know that the ‘neck’ of our logo is too fragile and we will have to redesign it to be more robust. Also, it is a bit too large to make a good object for the unit. But, we are learning along the way and I think the next batch with a bit of a redesigned object will be a lot better.

More designs will follow and these objects will be for sale. We are thinking of creating branch specific objects, but also some abstract, more versatile objects. They will have a fixed tag on the bottom (for now) which are routed out. There is no more need for that bit awkward sticker at the bottom of your object.

You will be able to buy these objects made from a synthetic material. They are solid though and feel pretty robust. You will be able to order these in wood, which will be hand made (and will have a higher price and a longer delivery time of course). We haven’t set the price yet, but they will be reasonably priced.

If you have any thought on this (suggestions for designs, material, otherwise) please let me know at bart.roozendaal@sevensteps.nl

Bye,

Bart

Tuesday, June 16, 2009

Why I'm having difficulties with WPF

Through Twitter I stumbled upon this article: http://www.thejoyofcode.com/If_you_cant_beat_XAML_improve_it.aspx

I think it’s an interesting post. Below you find my comments on that post. Any thoughts on the issue?

I am a very experienced programmer and have worked on a great number of languages (C, Basic, Smalltalk, Pascal, Fortran, Cobol, C++,, C#). Recently I started working on WPF. And I am one of those developers that is experiencing more difficulty grasping WPF than I did with other languages.

I don't think that it's because of XAML per se though. I don't mind typing in long XML element names and attributes. I don't mind writing all the end tags. I don't mind typing at all. Visual Studio / DevExpress' CodeRush offers me all the aide that I need for that. Code completion, templates, short cuts, et cetera make that real easy.

What I do have problems with is the actual concepts in WPF. One thing that I find really difficult to learn and to accept really is the fact that one must/can implement a lot of functionality in the XAML, which in my mental model represents the display part of the application, not the code. I seem to be that old fashion developer that wants to type a=b if I want to assign the value of b to a.

WPF/XAML drives me away from that mental model and I'm very much aware of that. It is beginning to win its place in my brains, but it's taking longer than I thought. Even being aware that another mental model is needed for WPF doesn't make it easier for me.

Maybe XAML *is* for designers. That is why I'm trying to work more closely with our visual designer (i.e. having him learn Blend) and leave more of the work to him.

But, it's really new and sometimes hard to go this way. I'm so much used to being able to do everything in our software. That is no longer the case. I will get used to it, but it may take me a bit more time.

My 2cts worth.

Bye,
Bart

Monday, June 15, 2009

How to crash Visual Studio…

Update. Thanks to my new friend Josh Twist (http://www.thejoyofcode.com) I found out that a hotfix by Microsoft solves this issue. Based on the articles on his website I managed to tidy up my XAML-code to. You can find information about the hotfix at http://support.microsoft.com/kb/958017/ and download it from http://code.msdn.microsoft.com/KB958017/Release/ProjectReleases.aspx?ReleaseId=1719.

In a previous post I stated that Visual Studio never crashed on me. I have to take that back since it now happens to me a lot.

I am pretty sure that it is because I’m doing all kind of things wrong in my code (I still need to learn WPF), but VS should never crash because I mistype some code. Below is a code snippet from a XAML-file that crashes VS every time. If I open up the XAML file in MS Blend, I get an error message (probably pointing into the right direction of the error):

TargetType van ControlTemplate BoardPiece komt niet overeen met sjabloontype TagVisualization.

(which is Dutch for telling me the TargetType of the ControlType doesn’t match the TemplateType TagVisualization).

Below is the contents of the XAML file. IsAcceptingNewRelation is a user defined dependency property. I specified the Oase.BoardPiece type in the TargetType of the ControlTemplate for the code to solve the IsAcceptingNewRelation dependency property of my TagVisualization. There probably is another/proper way of doing that, but I’m getting WPF blind. Anyway, this crashes VS if I take it to the design mode.

1: <s:TagVisualization
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: xmlns:s="http://schemas.microsoft.com/surface/2008"
5: xmlns:local="clr-namespace:Oase"
6: xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
7: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
8: x:Class="Oase.BoardPiece"
9: mc:Ignorable="d"
10: s:Contacts.ContactDown="TagVisualization_ContactDown"
11: s:Contacts.ContactChanged="TagVisualization_ContactChanged"
12: s:Contacts.ContactUp="TagVisualization_ContactUp"
13: >
14:
15: <s:TagVisualization.Resources>
16: <ImageBrush x:Key="tvBackground" Stretch="UniformToFill" Opacity="1" ImageSource="pack://application:,,,/Resources/speelstuk.png"/>
17: <ImageBrush x:Key="tvBackgroundHighlight" Stretch="UniformToFill" Opacity="1" ImageSource="pack://application:,,,/Resources/speelstukHighlight.png"/>
18: <ImageBrush x:Key="itemHomeBackground" Stretch="UniformToFill" Opacity="1" ImageSource="pack://application:,,,/Resources/home.png"/>
19: </s:TagVisualization.Resources>
20:
21: <s:TagVisualization.Template>
22: <ControlTemplate TargetType="{x:Type local:BoardPiece}">
23: <Grid x:Name="mainGrid" Width="126" Height="142" Background="{StaticResource tvBackground}" />
24:
25: <ControlTemplate.Triggers>
26: <Trigger Property="IsAcceptingNewRelation" Value="true">
27: <Setter TargetName="mainGrid" Property="Background" Value="{StaticResource tvBackgroundHighlight}" />
28: </Trigger>
29: <Trigger Property="IsAcceptingNewRelation" Value="false">
30: <Setter TargetName="mainGrid" Property="Background" Value="{StaticResource tvBackground}" />
31: </Trigger>
32: </ControlTemplate.Triggers>
33: </ControlTemplate>
34: </s:TagVisualization.Template>
35:
36: </s:TagVisualization>

 



If anyone out there know how I can prevent VS from crashing (probably by pointing out what part of WPF I don’t understand here …) it’s much appreciated if you tell me :-)



Bye,



Bart

Thursday, June 11, 2009

My first unit test

As mentioned before I’m starting the (re)design for our upcoming major release. This is an exciting time because we will be using a couple of new techniques here. One of which is DevExpress’ XPO, eXpress Persistent Objects.

I had done some tests before, but now the real work starts I find that typing the object model rather than drawing is a big down side for XPO. I’m afraid that in this day and age you really need a visual modeller.

That said, I’ve bitten the bullet and started the design. I took that a bit light-hearted and thought I would have done that in a couple of hours. You know, thinking: “what do I need to do different compared to our current object model? It’s all been done and we know exactly what we want”.

Not, I can tell you. I find that rethinking over the object model brings up a couple of flaws that only become apparent if you don’t think of databases anymore. If you think in objects only, you experience another kind of designing entirely. I’ve been object modelling for quite some time, but doing it for real while reverse engineering a larger model is quite different to what I did before.

But, the reason I started this post is I wanted to share my first unit test with you. I was looking in the XPO software for a ‘model checker’. Since XPO is about storing data, and you need to specify the object relations using ‘code’, I suspected I might have mistyped something somewhere and wanted to check of all was well.

That’s quite easily done, using a unit test. It’s ever so simple, but helps you to check the object model while designing. Just make the test project your current project, add a reference to the assembly that holds your XPO model (everyone puts that in a separate assembly, right?) and run the test when you want to check your model.

This is the single line test that has been my friend for today:

[TestMethod]
public void CheckValidityOfDicationary()
{
    new ReflectionDictionary().GetDataStoreSchema(typeof(S7XPO_Base).Assembly);
}

Replace S7XPO_Base with any of your persistent classes and you’re off. If there is an error, an exception is thrown and your test will fail, telling you exactly where the problem is.

Hope this is of use to anyone. It certainly helped me a lot.

Bye,

Bart

Sunday, June 07, 2009

Application Architecture Guide 2.0

http://apparchguide.codeplex.com/

I am in the middle of redesigning our software and was thinking through some major parts of our software design. We notice the number of clients grow, the size of the companies that uses our software gets larger (Microsoft, SAP, Google, Unit4Agresso, Shell are all companies that use our software) and the number of topics in the Sevensteps projects increase. Our software was designed for documentation projects of around 5000 topics per project (we have projects that are over 400.000 topics in size, but performance is an issue there) and I want to redesign (part of) our software to accommodate larger projects.

Another reason for redesigning is that we currently support one rich client interface. And I want to extend that with a content API (which will give access to the information from, let’s say, an ASP.Net application) and some light weight, web based interfaces. Some other parts of the software could do with a looking over too.

Going all over the net for some background information, I stumbled on the Microsoft Application Architecture Guide 2.0. I’ve now read the first 2 chapters and already got some very valuable information. I find that most things discussed, I already know about and have some experience with. But, to see them listed helps a lot.

I will be reading the next 300 pages or so to see how the topics are elaborated on. I’m not a very keen IT book reader, but will make an exception this time. Anyone looking for some guidance in designing (Microsoft based) software might find it a valuable resource too. If after reading I think a follow up is required, I will do so of course.

Bye,

Bart

Saturday, June 06, 2009

Just a few more words about the switch from Delphi to C#

Thanks for all your comments to my post about switching from Delphi to C#. Although I didn’t intend to stir up that discussion again, I would like to answer some of the questions and suggestions raised/

I appreciate everyone telling me about teaching C# programmers Delphi. I know it's not too hard; I've done it myself :-) But, the number of programmers out there does reflect the popularity of a platform, doesn't it? And some applicants bluntly told me they didn’t want to work in Delphi. They obviously didn’t get the job, but it did make me think a bit.

But, the lack of programmers wasn't the main reason for us to switch at all. Despite somewhat (...) critical sounds about Microsoft (some of which I tend to kind of share) there is a lot of development in the Microsoft world. Way more than in the Delphi world. Some may be good, some may be not so good or terrible, fact is that there is a lot of effort put in the MS platform.

What really did it for me were two things.

(1) We had to wait for Delphi 2009 for Unicode support, which (IMHO of course) is a major misjudgement. I haven't been able to deliver Unicode software, even though there was a bit of pressure out there. I know for a fact that I did lose sales because of that.

(2) About the same time Delphi 2009 (and Prism) came out, I attended the Microsoft PDC. It opened my eyes regarding to the scale of things. One may not like MS being enormous in size, but there are so many exciting things going on out there, that it made me decide to go the other way.

In fact, I particularly went to check out MS Surface. Just one of those things that MS can do and Embarcadero won’t. That’s not to hold against them, and it doesn’t have anything to do with my choice for C# really, but it did tell me that there was a lot more going on than I really wanted to realize.

Just a quick note on quality of tools: I was getting used to Delphi crashing on me several times a day. It was getting to a point that I did take that into account when starting a days work. I am so glad that is over: Visual Studio hasn’t crashed on me once since I started using it. Not a real argument for the choice either, but I’m glad that’s out of the way.

I will always love Delphi and will be programming in it for the next couple of years, I’m sure. But for the next few generations of our software engine, C#/.Net will be the platform of choice.

Now, that still doesn’t solve those designing issues for me :-) Guess I’ll have to do some investigation.

Bye,

Bart

Friday, June 05, 2009

Contemplating MVC for our software

I’m currently in the process of redesigning our software for a new implementation in C#/.Net. Our current implementation is great of course (…) but some considerations made us decide to move away from Delphi into C#/.Net. I’ve listed the reasons before, but to summarize here is a part of the introduction of our formal business case for going C#/.Net.

Microsoft will always invest more than Embarcadero will

As much as I like the Delphi world, there will be more development into C#/.Net than there ever will be into Delphi/Win32. It’s just a matter of size: MS is way bigger than Embarcadero and the number of developers for C#/.Net will always exceed the Delphi/Win2 group.

There are more C# developers than Delphi Developers

It’s a fact. I had a hard time to find experience local Delphi developers. There are plenty C# developers. To just mention a fact: the Delphi user group that I attended had between 5 and 8 developers on each meeting (every 3 months) and I was presenting on every meeting I attended. The dotned group I recently joined has meetings every month with between 20 and 50 developers every time. And the dotnet group is just one of many C#/.Net groups out there.

And there are numerous other considerations to make the move that I won’t mention here. All of them are commercial and strategic considerations, not technical ones.

So, there we go, we will redesign and implement our software.

Design decisions

There are a couple of little draw back to redesigning and reimplementing software (it will set you back a hell of an amount of money) but there are a couple of good aspects too. You can reconsider some design decisions you made earlier. You can apply new technology if you want to. Stuff like that.

There are two major decisions I am currently thinking over:

  1. Will I use DevExpress XPO or will I use the Microsoft Entity Framework for my ORM?
  2. Will I implement a ‘simple’ 3-tier model or will I go for a MVC model?

Deciding Object Relational Model

There is a bit of information available regarding the decision between XPO and the Entity Framework. I found Gary’s Blog (by DevExpress) highly informative. It’s been noted here that I am a huge DevExpress fan and am really considering building our software using XPO. But, the fact that Microsoft is behind the Entity Framework does play a role in my considerations. I haven’t gone into great detail investigating either technology (and I think I must to make a sound decision). It will be between those two I guess.

3-tier model or MVC model?

Our current app is more of a 2-tier model. The business logic is implemented next to the user interface and I want to move away from that. I am currently contemplating a MVC model or a ‘traditional’ 3-tier model. Our software will have a WinForms user interface as its main interface and most of the stuff out there is using ASP.Net (which I will use for only part of the editing work in our software).

I found this blog (http://rdn-consulting.com/blog/2008/02/01/selecting-a-mvcmvp-implementation-for-a-winforms-project/comment-page-1/#comment-1663) that kind of sums up my considerations.

I haven’t made any decisions on these issues, so any thoughts that you think are worth sharing are much appreciated.

Bye,

Bart

Saturday, May 30, 2009

DevDays are over

The last couple of days I was at the DevDays and I enjoyed it for most of the time. There were a couple of sessions that made me waste some of my time (at some I even dozed off). But there were others that I fully enjoyed. The session by Sara Ford was fun because of her enthusiasm and energy. At one point in the session she (tried to) persist that a particular functioned wouldn’t work. But, I’ve go to hand it to her, she still followed some hints from me (sitting in the front row as ever) and was perplexed that that function did work. She got down from the stand and bowed for me in front of a 100 people or so. That was fun.

I also very much liked Rob Miles’ session on Micro .Net. He is a fun speaker and he showed how easy it is to create software for embedded (tiny) systems. I will definitely try some of that stuff out, if I can get my hands on some hardware that doesn’t need fiddling with. I’m a software guy and definitely not a hardware guy. Rob’s session on XNA was not much more that the first two pages of the tutorial, so that was a waste of time I’m afraid. I was baffled that he didn’t know MS Surface supports XNA too. Should have known…

I also ran into some former colleagues and it was nice to get up to date about their (working) lives.

Monday it’s back to work again. Although the rest of the Netherlands will enjoy a day off, I won’t (because I forgot it was a holiday and I promised some work to be done).

Not much technical stuff this time, but: if you are a Visual Studio user, check out Sara Ford’s web site for the VS tips. I’m sure there are a couple that you didn’t know and will like. I know I picked up a tip or two.

Bye,

Bart

Wednesday, April 29, 2009

Running MS Surface SDK on Win Vista 64 / Windows 7

I just found this great post (http://www.grumpydev.com/2008/12/26/surface-sdk-on-vista-x64/) on how to install the SDK on Windows Vista 64 bits and used it to get it working on my Win7 64 bits machine. Removing a couple of more launch conditions in the MSI did the trick for Win7.

As mentioned in the original post, no guarantees, but I'm happy I can leave our MS Surface unit outside my room now. You don't need additional heating in your room with the unit on :-) but you do need ear plugs due to the fan :-(. Ok for public spaces I guess but not in my office.

Bye,
Bart

Wednesday, April 08, 2009

Developing for MS Surface – First project experiences

Our client and of course my Twitter followers got a couple of updates during our first implementation of a real world MS Surface application. But I thought it would be nice to summarize my experiences.

Sorry about the quality of the videos: I will buy a more professional camera in due course.


The final product …

As said before a couple of times already: Microsoft deserve a big compliment for the software (and hardware) they delivered. It is so comfortable developing for the MS Surface unit if you have any experience in C# and Visual Studio. Even though I didn’t have any experience in WPF (which would have made it even easier) I was able to take off quite quickly and within matters of hours come up with the first working prototype of the application.

The application itself isn’t that hard or special. It presents product information, triggered by a couple of tags which are glued to the back of the business cards of the sales persons.

In this project we didn’t do the visual elements, but left that up to out partner’s visual designers. That kept me worried for a bit, because I know from experience that integrating visual designs sometimes can be a pain. Not this time though; the VDs of Heuvelman (the partner) did an excellent job and it must be said: everything fitted the first time.

During the development I had to take a couple of hurdles. First, I had to get acquainted with WPF and XAML. Since this was my first WPF program, all of that was a first. I did some experimenting some time ago, but working on a real project is a different cookie as we say in Dutch. But, I got the hang of it quite soon and information on http://www.stackoverflow.com came to the rescue more than once.

Also, the Surface Community site came to the rescue on a couple of occasions. And even though that site isn’t the best Microsoft ever created (to be very mild), the information on it helped on a number of occasions.

But the best part of this project was actually delivering the project and seeing it in action on Event 2009. The salespersons were going berserk seeing the end result and were full of adrenaline to start using the unit and software. I think a lot of sales deals will be done at the Heuvelman stand :-)

It was great fun working on this project, but the working schedule (14 continuous days of working from 8am until 12pm or even later) almost did me. Next project will have a much more healthy schedule.

I’ll keep you posted about next projects. If you want to look at all the stages of the project you can always check out Youtube at http://www.youtube.com/brooz2001.

Bye,

Bart

Sunday, April 05, 2009

Getting the hang of things in WPF

Today I found this website (http://nerdplusart.com/) with this movie (http://msstudios.vo.llnwd.net/o21/mix08/08_WMVs/BC01.wmv) on it.

I've been busy for about two weeks on a real WPF/MS Surface project now and I kindof got going pretty well. But only after seeing that video I really start to get WPF and appreciate Blend. I still think it can be improved (I'm using the Preview of version 3), but I think MS will get there. Right now, I think WPF/Surface/Blend totally rocks.

I will update in a couple of days and write about the then finished project.

Bye,
Bart

Wednesday, April 01, 2009

Weird problem in Windows Explorer on XP and Windows 2003

UPDATE

The cause of the problem is found. Somehow something screw up a part of the registry (and it wasn't me!)

Adding the info below to the registry solves the problem. So if you have problems selecting or moving items in Windows Explorer under Windows XP or Windows Server 2003, this might help you too.

REGEDIT4
[HKEY_CLASSES_ROOT\Interface\{0000010e-0000-0000-C000-000000000046}]
@="IDataObject"
[HKEY_CLASSES_ROOT\Interface\{0000010e-0000-0000-C000-000000000046}\NumMethods]
@="12"
[HKEY_CLASSES_ROOT\Interface\{0000010e-0000-0000-C000-000000000046}\ProxyStubClsid32]
@="{00000320-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\CLSID\{00000320-0000-0000-C000-000000000046}]
@="oleprx32_PSFactoryBuffer"
[HKEY_CLASSES_ROOT\CLSID\{00000320-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\WINDOWS\\system32\\ole32.dll"
"ThreadingModel"="Both"
 


I have posted this question at the
Tech Support Guy forum too. In case you’re not reading that, here it is again. Your help is much appreciated.

=============
I have a weird problem, that you might be able to help me with. Our software is distributed using MSI's. We do regular builds and releases, about twice a month. Now, suddenly reports are coming in that by *deinstalling* our software Windows Explorer is acting weird. Usings cannot select files/folders with a mouse anymore. When our software is installed, all is well.
This only happens on XP machines and I've seen it on our own Windows 2003 server.
Does this give anybody a clue about where to look? How should I go about to find out what's wrong here.
Some background information

  • Nothing spectacular has changed in our MSI projects.
  • The effects show up only after rebooting after de deinstallation of the software. When installing the software, no reboot is needed to have Windows Explorer act normally again.
  • We create the MSIs using Wise version 6, using AutomatedBuildStudio to build and package the software. Nothing hs changed in those procedures.
  • The effects aren't present on WIndows Vista or Windows 7 machines.
  • I have used VeriTest-Rational Install Analyzer to compare before and after snapshots, but no clear signs of anything wrong there.
  • There is one entry in the VeriTest-Rational Install Analyzer log about an entry at HKCU\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached\{2559A1F4-21D7-11D4-BDAF-00C04F60B9F0} {000214E6-0000-0000-C000-000000000046} 0x401 being changed
  • There is another entry in the VeriTest-Rational Install Analyzer log about an entry at HKCU\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached\{2559A1F5-21D7-11D4-BDAF-00C04F60B9F0} {000214E6-0000-0000-C000-000000000046} 0x401 being changed
  • This already happened before April 1. No relation to Conficker suspected.
ANYTHING that you can come up with is much appreciated.
Thanks for now,
Bart

First release of first Surface app delivered

It has been extremely hard work (the project has an insane schedule), but the first release of my first Surface app has been delivered.

I have to give my respect to Microsoft (again) for the quality of their software with the MS Surface unit. Although I’m not an experienced WPF programmer at all it has taken me about a week to come up with this first release. I am a pretty experienced programmer though, but still, coming up with this, learning along the way, after only a week is pretty awesome I think. And that has as much to do with the quality of the MS stuff as with my own capabilities (cough…).

I’ll be working on this for the next week or so. Next week the units will be a the Event2009 event, together with this little app to show off the products and services of our (MS Surface) partner.

Bye,

Bart

Tuesday, March 24, 2009

Cool MIT Stuff

It has been quoted a couple of times already of course, but I still wanted to point you to some real cool stuff. A personal floating surface unit?

Bye,
Bart

Monday, March 23, 2009

Some 3D manipulation on a MS Surface

A couple of clients are interested in a MS Surface unit, but only if it can handle 3D. Well, it can! And pretty good too. In a very short time I created a small demo that will make you view a 3D model from all sides. It's not very sofisticated (yet) but will do quite nicely as a demo.



Update: this is what you can do if you have a bit more resources to spend :-) Our day will come!



Bye,
Bart

Thursday, March 05, 2009

HTC Touch Pro

Just a quick message about something else today: my HTC TouchPro. I was already pretty impressed with this phone, but  couple of things bothered me. The performance just wasn't good enough, switching orientation when activating something from the main menus was troublesome (most of times you would return to the start screen) and a couple of other little things that made you go 'grrrrrr'  everytime it happens.

But, HTC has released a ROM update which fixed all that. Especially the improved performance is great! One wonders why that isn't good enough in the first place :-|

So, if you have a HTC Touch Pro, go to the HTC website and pick your new ROM software up.

Bye,
Bart

Wednesday, February 25, 2009

Progress on the Surface unit

The title might give you the idea that there’s any. Well there is, sort of. I haven’t done any development lately, partly because there’s a lot of other stuff to do, but also because we had a lot of visitors coming to peek at the Surface unit.

Besides all that it is, it is also a very good marketing instrument for our company. Simply having it make the crowds turn up. And if we show the small examples on it that we have, probably convinces people already.

We now have two developers working on it full time (that also is a reason for me not to really press for development time on it for myself). One of them will be working on a Concierge-like program (using a map to display information about buildings) and the other will be working on moving stuff around on a 2D-map of a building, calculating all kinds of things doing that.

I will be focusing on marketing and finding business partners for the development on the Surface unit.

So, if you have any suggestions, don’t hesitate to contact me.

Bye,

Bart

Saturday, January 24, 2009

WPF beginner begins…

I am a programmer since day one of the PC. However, I have always been working on business applications, mostly working on documentation software. I recently started work on a MS Surface unit and that involves programming using WPF (Windows Presentation Foundation)  or XNA. Since we also do a lot of web stuff, I chose WPF for my current development work.

Programming in WPF is a much more visual experience than what I was brought up with (Cobol, Fortran, Basic, Pascal, C, C++, Smalltalk, et cetera, et cetera). An important part of WPF are the definitions in XAML (Extensible Application Markup Language). This XML file defines the objects in your window and application. I am currently using Microsoft Blend to edit the XAML files, but you can of course edit them with Visual Studio too.

I’m just beginning with C#, .NET, WPF, XAML and Surface. Our company software is written in Delphi/Win32, but we will make a transition to C# and .NET this year.I won’t be programming on that myself (that much) anymore, but I want to know all about the technology we will be using of course. So, I’ve taken up the challenge to write some software for our MS Surface unit to learn our new environment.
I might use some ‘wrong’ terms and concepts. I will make some beginner mistakes. Bear with me though: I’m learning along the way. This blog shares my experiences doing so for you to learn from or laugh at…

As said, I’m not brought up with a lot of graphics in my software, let alone handling or animating them. So, I’m not that comfortable (yet) with the way WPF-programmers work. But, I will learn along the way and will share my thoughts and experiences for others to learn or to laugh at.

My first program

I am targeting the MS Surface unit and I thought it would be nice to begin with a small game: Memory (I’m assuming here that everybody knows the Memory game). The logic in that is simple, it’s quite suited for the MS Surface unit, it will be a nice gift for new Surface customers, but most of all, it will be a good subject for my learning experience.

So, the functional specs are:

  1. The images used for the memory cards will be taken from the clients computer
  2. The difficulty can be set using a slider
  3. The memory cards animate when flipped.
  4. (there’s a couple of more specs, but those will come later)

So, how to start? The first steps were easy. Create a board with images. The actual flipping will come later.

Update #1: I was writing this while working on my game. I have now proceeded a bit more, but I got word that Microsoft had planned for a programmers course coming week. So, I’ll be going to Paris a bit later this week and I hope to get a bit of a head start. I will finish this game and I might even make it open source. I’ll let you know how I get along.

Update #2: I am also really not introduced to the world of 3D. However, I found this great little article that helped me on my way. So, the first hurdles are taken. Maybe I will be able to do some nice stuff on my own to coming days.

Let’s regard this post as a first in a series.

Bye,

Bart

Wednesday, January 21, 2009

MS Surface – Dead Easy

As mentioned, yesterday our surface unit arrived. It was my day off, so it was not until today that I could get my hands on it. Now, fact is that I am swamped in regular work, so I have to work late to get some extra stuff done. And, of course the family suffers, because I won’t be at home at night.

So, the family has to come to me, which has the added benefit of having a representative test user group around me:

The guy is four years old, doesn’t own a Wii, Playstation or Xbox (or any other electronic equipment). He can however handle the remote DVD control. The images show him only a mere minute after first laying his eyes and hands on the Surface unit.

I think it’s quite amazing and a good advertisement for the technology that a kid this young can start working with it immediately without any help. It won’t be too difficult to convince our clients that usability is not an issue.

Bye,

Bart

Sunday, January 18, 2009

Surface unit will arrive on Tuesday

We got word that our Surface unit will be arriving on Tuesday. All preparations are done. We also learned that MS will reuse the package material (40kg or so in weight :-|). I think that’s a good thing: package material that large in size would be a waste when simply disposed off.

Tuesday is my day off though, so it will be Wednesday before I can lay my hands on them. Our new programmers will be working on other things for the next 4 weeks now (we had it planned that they could start at the very beginning of the year). A bit of a set back in our planning, but we’ll have to take it as it comes.

I’ll keep you posted.

Bye,
Bart

Monday, January 12, 2009

Windows 7 up and running

I just upgraded my Vista Ultimate 64 bits installation to Windows 7 beta, build 7000. All is well and running smoothly I might add. It already feels like Win7 is much faster and responds quite a bit better than Vista does.

Also, good to find that Bitdefender simply continues to run, which was a concern to me.

All our own software runs fine too, so I’m happy for now.

Starting real work on this system starting tomorrow.

Bye,

Bart

Look out, Microsoft Surface - the iTable might just trump you in every way

This is presented as an alternative to MS Surface. I think it might be a Windows multi touch alternative though. Still, pretty cool stuff.

Look out, Microsoft Surface - the iTable might just trump you in every way

Thursday, January 08, 2009

Using Virtual Earth on Surface

I still haven't got the actual unit, but it should be somewhere between Germany and our office. Maybe today?

In the mean while I found http://blogs.msdn.com/publicsector/archive/2008/06/24/wpf-and-virtual-earth-revisited.aspx. This is an example on how to use virtual earth in a (proper) user control.

This helps a lot, as it will make virtual earth a 'normal' control. And it is now also pretty easy to use it on the surface unit (or at least the simulator). For our demo stages, this is good enough.

O the wonders of the work of others...

Bye,

Bart