Friday, December 19, 2008

Starting to blog about my C# experiences

Regular visitors to my blog know that I have been working with Delphi for the last decade or so. The love between Delphi and I has grown, although my old love (just about everything that Microsoft did and does) never died out. At regular intervals I did some things with VB, C++, C#, ASP and ASP.Net.

For me, 2009 will be a year where I will say goodbye to Delphi (for new things that is) and will move to C# and .Net for all of our software. There is just too big a gap between development in the C#/.Net world and the Delphi world, despite the recent releases of Delphi 2009 and Prism. Of course, that's IMHO only, but in my company that's what counts.

So, I will be writing more and more about C# and not that much anymore about Delphi.

The first new product that we will do will be using the MS Surface unit, which will be installed in my office the first week of 2009. I can't wait to get going with that. I'll keep you posted (as far as I'm allowed by MS, because I'm bound to a pre release agreement for the MS Surface unit).

Bye,

Bart

Ps: From now on I will only tag postings that are about Delphi only with the Delphi tag. Other postings (not tagged Delphi) won't get picked up by delphifeeds.com, so if you want to stay in touch, please RSS subscribe or come back on a regular basis.

Monday, November 17, 2008

Twitter in outer space

I have fallen in love with Twitter. Somehow it's interesting to know what people are doing. I find myself simply picking random Twitterers to find out what they are up to. I also found it very entertaining to follow Stephen Fry on his trip to Madagascar.

Is it voyeurism? Yes, probably, though not in a sexual way :-) I mean, watching the Delphi Twitters arouses only the geekiest of geeks ;-)

I also found that the astronauts on the Endeavour are twittering. That reminded me of a project of many moons ago that I did for Nasa.

4fe5_1I developed an application that used an Apple portable computer and a pen table of some sort. A Hypercard stack contained a lot of information (images, text, maps, et cetera). We developed a nice little application to browse that information. The table was used to draw something on top of the pages displayed.

Now, the fun thing was that there was one portable in the space shuttle and one on the ground. Whatever page was navigated to on either end, the others got to see too. And whatever was drawn on top of that page was shown on the other end too.

This helped communication between the astronauts and the ground people in explaining what to do at certain times. People on the ground would simply find a photo of the door to open and mark an X next to the lever to pull.

As someone that only failed to make a pilot due to a stupid motor cycle accident, you can understand that this little project (it wasn't that hard to do) is one of the dearest to me. I even got some memorabilia sent to me when that flight was over.

So, every time I see a little twitter from outer space, I think back to the time when I was still hacking my way through Hypercard. Sometimes it's fun being the older guy in the room :-)

Bye,

Bart

Tuesday, November 04, 2008

Now, who would be the best Delphi programmer?

Would that be Obama, or would it be McCain? I think Nader, as an independent, would be the best choice.

Ok, so I’ve got to make this a more interesting posting. Here goes one attempt.

If you would go for McCain, you’ve got an oldy with a lot of experience (much like myself I might add). You would probably get an excellent programmer, but not going beyond the possibilities of the VCL. He would stick to the VCL, maybe buy a component pack or two, but the single EXE would be his target. He’s heard of webservices and code injection, but doesn’t really know what it means. He just manages to get a setup program out (of course using Installshield, not writing something himself). The freakiest thing he does, is implement skinning using DevExpress.

Now, when you look at Obama, he probably would write his own VCL components from scratch. While programming he would have a couple of visions in sight. The client should be satisfied, but maybe the components are good enough to sell later on to another client. He’d keep his eyes open to other platforms all the time, but would stick to Delphi as his primary development tool. Unless, there is some major upset. Then, after careful deliberation, he would drop Delphi. The first attempt will be with a couple of softening arguments, but when there is another upset, it’s out with the tool all together. The end result would be a set of well designed components, all working together on various levels. Of course, one component can crash, but that’s all part of the development strategy. The one that crashes, is out of the door and the next one can be developed.

And Nader? Well, of course he would stick to using Smalltalk. All very well designed, but commercially not very viable.

So, go for it. Where do I go wrong? Make my day!

Bye,
Bart

(just a day off, as you probably can tell :-)

Sunday, November 02, 2008

Passion for Research

I’ve been blogging about the Microsoft PDC the last week and, although it strictly didn’t have anything to do with the Delphi community, I still think it is interesting to know what happened there. I will do one last summing up tomorrow on the event, but there was one presentation I would like to highlight.

I attended the talk on the WorldWideTelescope Research project. I had installed the software earlier and was really amazed at its quality. At the presentation I found out that it basically was a one man project by a guy named Jonathan Fay. I didn’t know that before and my respect goes out to that guy. I regard myself as a pretty good programmer, but what he has come up with is out of my league. So, respect to you Jonathan.

You can watch the presentation at http://channel9.msdn.com/pdc2008/PC48/. And, if you think of killing the video after a couple of minutes of watching, at least skip through to about 27 minutes and watch him talk about a presentation by a 6 year old kid, all done with his software. The passion that Jonathan shows after that really sums it up. That moment made this presentation the highlight of the conference to me.

Bye,

Bart

Saturday, November 01, 2008

DevExpress will have a localizer tool

The TcxLocalizer component helps you localize those of your applications that use our controls, as well as third-party or standard controls. This component provides centralized control over an application’s UI language or locale. Using this component, switching to another locale is as simple as changing a single option.

http://community.devexpress.com/blogs/ctodx/archive/2008/10/31/vcl-subscription-new-localization-tool-coming-in-next-build.aspx

Thursday, October 30, 2008

Things that make you go humble – update

Please go to the blog again to see two videos on SecondLight and on Boku. Really worth the time they take.

Things that make you go very humble

Bye,

Bart

Wednesday, October 29, 2008

Things that make you go very humble

Todays keynote was exceptional. The topics were coming from Microsoft Research and although the first half hour or so was full of stuff mentioning how important Microsoft Research is to Microsoft and to the world, the remainder of the presentation was unbelievable good.

Sorry about the lack of pictures and videos this time; I didn’t have the camera ready. Sorry. The most cool stuff is at the end of the article so keep reading.

Keep reading to read about SecondLight

There was a talk about how MSR works in the field of medicine, helping researchers analyzing fast amounts of data. And although you really got the point that Microsoft’s technology is helping in that field, it didn’t feel really special.

There also was a talk about very tiny measuring devices for temperature and humidity and things like that, that are actually installed at the convention centre. The devices itself use about 4K of memory (remember that from the old days?) and only have a circuit board that’s the size of a quarter coin. It has a radio transmitter and, to give you a sense of things, there are about 100 of those sensors installed in the main hall. Microsoft has gathered the data about temperature and such during the last couple of days and presents the (vast amount of) data in nice graphical form. It really showed how the cooling system works and what the impact of the equipment, audience, and the cooling system is to the conditions in the hall.

Next, a new programming language for kids, called Boku, was shown. It uses a XBox console to let kids program a ‘games world’ and do really fantastic cool stuff using iconized commands. The speaker spoke quicker than a rapid firing machine gun, but what he showed was really AWESOME and I want one of those for my kids! This will be a very good reason for me to by an XBox (not quite sure if it was a PC or XBox that was used). Go look up the videos on Boku that are probably out there. It really was amazing to watch.

But, the real highlight of the key note was the stuff on what Microsoft calls SecondLight. Really DO GO find videos on that. It comes down to this. It uses a special kind of LCD and infrared cameras. The LCD can be made transparent by applying some kind of current to the screen.The effect is that the LCD will not only display the images as you know, but also lets a second image go through, to be projected on a simple piece of paper. And the fun thing is: this second image can be totally different from the image that is shown on the LCD. The effect is that you can display secondary information about (pieces of) the image on the primary LCD. (Side note: I just hear a fellow programmer calling home about this and he calls it “Freaking Cool”). You can hold a piece of simple paper just above the screen and show some detail information about the stuff that’s under that.

I find it hard to express in words, but really, really, go find videos and other information on this. It is freaking cool.

It really made me ponder about my own work. What a amazing boring job I have! I want to be working for Microsoft Research!

Bye,

Bart

Windows 7 installed

Win7I installed the pre-beta Windows 7 that we got. About the Windows 7 client itself: it looks a lot like Vista but has a couple of nice new things. You will find others blogging about all the new things found in there, so I won’t.

But, here’s a little tip. It runs excellently in a Sun’s VirtualBox box. Just point to http://www.virtualbox.org to get your copy and try it. I got it up and running within the hour without a hitch and that’s on a good but not very modern portable. VirtualBox feels a lot faster than Virtual PC. I will need Virtual PC though, because the Visual Studio 2010 copy that we got is made available as a VirtualPC image.

The goodies are delivered on a very nice and small 150Gb hard disk that I probably keep using because of its physical size. It’s nice and small yet very useful.

I also got to shake hands finally with Nick Hodges, Allen Bauer, Marc Hoffman and Jim McKeeth. My Dutch accent prevents me from taking part in the little interview that Jim did (I’m just too embarrassed), but I will definitely listen to it when it’s online.

We are getting ready to go to the party at the universal Studios now. And some people were already getting ready for that :-)

2982712000_c453190cef

Bye,

Bart

Tuesday, October 28, 2008

Presentation on Azure/Live/Mesh on the PDC

I just watch a presentation on the PDC on MS Azure and Windows Live by Chris Anderson and Don Box. These guys had a great presentation prepared and it was pretty fun to watch. They showed a bunch of great techniques and demo-ed how Azure will host your stuff (applications and data alike). They also showed how easy it is to get something going with techniques and languages that we already know like C#, LinQ, et cetera. In my mind it shows the counter part to the Google Apps platform (and probably beyond that).

However, they hardly got any applause which I think was very funny in itself. Although the stuff they showed was excellent and pretty ground breaking. Now, why didn’t they got the applause that they were quite obviously expecting?

A couple of reasons are possible:

  1. The audience didn’t get it. Nah, there are a couple of thousand developers in the audience and probably all very smart programming on a day to day basis. That can’t be it.
  2. The stuff isn’t that special and people thinking: what’s so special about that? That can be it, but that would probably because the stuff is so easy to do. From within Visual Studio and with a couple of easy mouse clicks you can deploy your software out there and the same goes for your data.
  3. Now, the third reason might be it (and it is the reason why I didn’t clap my hands a lot). This is ground breaking stuff that gives companies and developers a lot of power to create new solutions quickly and much faster than before. But, would you trust your applications and data in the hands of Microsoft?

I think that for applications that provide public services, like route finding applications, this all is great stuff. You can very quickly create your app, deploy it out there in the cloud for others to use. However for you business application you would like to keep your stuff on your own machines.

Now, what was shown in the demo, and maybe wasn’t emphasized enough, is the lack of needing to know where stuff is. It might be in the clouds or on your own machines, it might be in an Azure SQL Server database or in your own: it doesn’t matter. Simply by changing a root URI you can use the stuff from where ever it is.

So far I think Azure and the like is great stuff and I will certainly be thinking on how to use it. It is just not clear to me yet how I can use it in our software (which creates documentation solutions). But, maybe I should give myself a bit of time to think about that.

Bye,

Bart

Summary of my first day at the PDC

After a wonderful Sunday at Venice beach, having a beer and fish and chips at a Irish pub, the jet lag hit us and we had a hard time staying awake. It made us miss one of the parties of the PDC, but after all, we are here for work, aren’t we?

So this morning we got up at 6:30 AM but still didn’t make it to the start of the key note speech on Monday. But, when we got there, I felt we hadn’t missed much. Key note speeches don’t make a successful conference. We sat it out, but next time, I will leave early if the speeches are that boring.

I attended a (what turned out to be) basic demonstration of Sharepoint and having learned my lesson at the key note speech I did leave that early this time.

I visited the CodeGear booth, got a t-shirt, and was told the Prism DVD doesn’t have anything that I don’t already have. I got to speak to my family using Skype (which was a first to me) and was able to kiss my son to sleep which was a great bonus.

IMG_1196 I had a chance to catch up with the ‘Partner manager’ for MS Surface and later attended a presentation on MS Surface. And to me, that was the absolute top of the Monday. The presentation was pretty funny, and the stuff the guys showed was really awesome. If you never had your hands on a MS Surface table: try to do so. It’s a fun and exciting experience.

The presentation showed what Microsoft has done to make the life of the developer easier and it appears they have done an excellent job on that. It is amazing to see how good the assembly for using the MS Surface library matches the things you know already about programming in the modern MS languages. It’s looks to be very easy to sit down and write your first Surface program.

And if you were there, you will get the Surface SDK and you can do so. And I for one will definitely will, because I have some great ideas for it. I will also try to use it from Prism (no reason why we couldn’t). I will let you know the results when doing so…

Bye,

Bart

Wednesday, October 15, 2008

Visiting the Microsoft PDC

We've just decided that I will be visiting the Microsoft PDC. That is, if there are any tickets, hotels and flights still available :-

I'm sure I will have a peep at the place where Prism will be available. Since I am always on the look out for new technology, and looking for opportunities to move our software to the .Net platform, I will definitely want to have a look at Codegear's product in that market. I really hope to get my hands on a trial version and/or have a close look to see why I would choose for Prism and not for C#.

Also, I'm pretty interested in Windows 7. So, that I will give that a close look too (and maybe even try our software on it).

If any of you want to schedule a meeting or demo of our Sevensteps Studio product or any other Sevensteps software product, please let me know and we'll schedule a meeting. I'm always on the look out for new business partners to setup a new product. If you want to get first hand knowledge about what our software can do for you, this might be a right time.

Cu in LA.

Bye,
Bart

Thursday, September 25, 2008

DevExpress releases beta for controls supporting D2009

Well, I just got that email that I was waiting for. DevExpress has its first (beta) release out supporting D2009. I now have placed my order for D2009. I hope everything works out as smooth as you read out elsewhere. And it looks like I can finally get my feet wet with regards to the anonymous methods, so I will know better what I’m talking and complaining about.

When I’ve set everything up I will definitely publish my experiences…

Bye,

Bart

Wednesday, September 24, 2008

Proof of the concept is in the eating...

Marco published a little example of anonymous methods. I already commented about it on his blog, but to me this is the very proof of the uglyness of anonymous methods.

To me the beauty in object oriented languages is the ability to create easy readable code if you take care of your object design and naming conventions. If you have a sound object model and you choose the names of properties and methods wisely, your code will be very easy to read and to understand. If you keep you code logic simple and short (I very much favor methods and functions that have a very limited amount of code in them) no one will have trouble reading (and if necessary maintaining) your code.

Marco's example, to me, proofs that anonymous methods are terrible. One has to read his little piece of code a couple of times to see what's going on and still it would probably need a bit of documentation. Or, maybe it's me, and only I have to read his code a couple of times.

In my book the anonymous methods will remain very much what their name suggests: not very well known.

Bye,
Bart

Saturday, September 06, 2008

AutomatedQA know their support

Some time ago I reported serious problems that prevented me from compiling my projects using AutomatedBuildStudio from Automated QA. I already had some support emails going back and forth but the solutions was nowhere near.

So, I decided to switch to FinalBuilder and installed the trial version. That was a good experience and it got me going with my projects in a half a day.

I still was in contact with AutomatedQA though and they asked an opportunity to try to solve the problem. I gave them the length of the trial period of FinalBuilder (which is a month). To make a long story short: I ended up letting an AutomatedQA programmer take over my developers computer (using the ever excellent TeamViewer) and after an hour or so fiddling with configuration files, temporary files during the build, et cetera, they concluded to have found an offending compiler setting generating during the build process.

They promissed a solution by the next day and they delivered that. Compiling my projects works fine again.

That makes me happy for a couple of things:
1) Apparently the problems of a single use does mean a thing to AutomatedQA. They could have said: sorry we lost you, but there's nothing we can do. They didn't do that and really digged in.
2) I discovered a problem with FinalBuilder and Wise v6 in creating installer packages. After a compilation of the Wise package from Finaler Builder, the Wise project is damaged and from that point on unusable. I had to compiling my packages 'by hand' which was pretty unconvenient. I'm sure I would have found some sort of automated build process if I had to stick with FinalBuilder, but it wasn't as problem free as I first thought.

Most important of all, I can still use my original build scripts, which are pretty advanced and saved me a lot of time in the past and now probably will do in the future.

Just to let you know and to do justice to the support team of AutomatedQA. It just tells me again that having great support pays off in the end to both parties.

Bye,
Bart

Friday, August 29, 2008

To further on all the non(sense) news about Tiburon...

I may be too sceptical, under too much work stress, or maybe I'm catching some flew or the other. But really, is the news about the handling of a password character worth the bits over the internet? (oops, now I've done it myself).

See: http://glooscapsoftware.blogspot.com/2008/08/delphi-2009-passwordchar.html

Come on everybody out there. I love to read about generics and implementation (problems) with the Unicode stuff. I even find the reports about the installation time more worthwhile than this.

It's probably me... Lunch time is over: back to business!

Bye,
Bart

Wednesday, August 27, 2008

So, installation time is shorter. Who cares????

I've now seen a couple of blogs about the improved install speed of the new Delphi version. It may be me, but I really don't get it why people get so enthousiastic about that. Who cares if your installation takes 10, 20 or 60 minutes? It's something that you (should) do only once in a long while and then you're done with that. I much rather see 10% improvement in compile speed than 1000% improvement in installation time.

Am I crazy or what? Let's state it once again and never mention it after this:

installation time of Delphi 2009 has improved!

(now, back to work...)

Bye,
Bart

Tuesday, August 26, 2008

Would you buy Delphi 2009?

Now the new version is in the open I found me talking to myself yesterday (...) about when and why I should buy the new version. I am curious enough to want to get my hands on it, but really haven't found an argument for upgrading yet. The new features in the language are not the ones that will solve all my remaining whishes for my software. I am using DevExpress components and not using ribbon toolbars (yet), so there's not a lot of new things in the VCL for me.

I do want unicode though, badly, so that is a good reason. But I'm using the DevExpress components so I need to wait for those to be 2009-ready. So, I have decided to wait for them to come with a unicode compatible release of their components before buying 2009. Since everybody says that implementing unicode with 2009 is so easy, it shouldn't take long, but I'm not really sure about that to be honest. We'll see...

What about you? Can you control yourself and find a decent reason to upgrade? Or are you susceptible for the hype-like messages about 2009 and find you running to the shop already?

Bye,
Bart

Monday, August 11, 2008

Exceptions, return value checking, pre- and postconditions

I never actually worked with Eiffel but when I first heard about it (that is some decades ago, really...) there is one concept that I remembered for the whole of my professional career and I adhered as a 'coding principle' in my own code. I'm talking about the concept of pre- and postconditions.

As I remember it in Eiffel you can write your method/function/procedure (whatever it's called) and define some conditions that must be met before and at the end of that. E.g. you could define a precondition for a function that will ensure that a passed parameter is larger than zero. For the remainder of your code you can assume that the passed parameter IS larger than zero.

Now, whenever I write a function/method I do the same. E.g. if I do a typecast somewhere in my code, I try to check for the correctness of the object that is typecast as soon as possible in my code. Something like this (from the top of my head, forgive me typos, simplicity of the examples and such):

procedure Foo(const aControl: TWinControl);
begin
// Beginning of preconditions
if not Assigned(aControl) then exit;
if not (aControl is TEdit) then exit;
// End of preconditions

// You can now safely execute the code below
TEdit(aControl).Text := 'foo';
end;

The above works fine if there actually is something that you can check at the beginning of the code. But, what if you cannot, until right before you start to use an object? Like below:

procedure Foo();
var
aControl: TEdit;
begin
(**
A Whole Bunch of Code Here
**)
aControl := MyFunctionSomeWhereThatReturnsTEdit();
if (not Assigned(aControl)) then exit;
if (not (aControl is TEdit)) then exit;
aControl.Text := 'foo';
end;

In this case you would add your check just below the aControl := line. And if you have a lot of those, your code can become complex and hard to read. And you would end up with a lot of not so interesting code which in the end doesn't really matter to your program.

Now, until now I used assertions for this type of checking, mainly because you can turn those off easily using a compiler switch.

aControl := MyFunctionSomeWhereThatReturnsTEdit();
Assert(Assigned(aControl));
Assert(aControl is TEdit);

But, of course, this doesn't work if the 'failing conditions' might be ligitimate circumstances in your code. So, for those types of checks I used the if..then constructions from the first example.

But, I am now thinking that I'd better use exceptions for this. Currenlty I only use exceptions for 'error circumstances' and never really used them as a way to signal pre- and postconditions. It would go like this:

procedure Foo();
var
aControl: TEdit;
begin

try
(**
A Whole Bunch of Code Here
**)
aControl := MyFunctionSomeWhereThatReturnsTEdit();
aControl.Text := 'foo';

except
on E: MyConditionException do
begin
// This will be an exception raised from within MyFunctionSomeWhereThatReturnsTEdit
end;
on E: Exception do // There probably are seperate exceptions for nil and class type mismatch exceptions, but this will do for the example
begin
// Something else should be done.
end;
end;
end;


This will work (and I think I will give it a go in some small program to see if it works our for my style of programming), but I'd much rather see the concept of pre- and postconditions introduced in Delphi.

What do you think? If..Then constructions at the beginning? Exceptions? Push Embarcadero for pre-/postconditions? Something else?

Please let me know; I'm really curious.

Bye,
Bart

Thursday, August 07, 2008

FinalBuilder it is...

As reported yesterday I was experiencing problems with AutomatedBuildStudio. With a little pain in my heart, but in the end with great relief I can tell you that I decided to switch to FinalBuilder.

The pain is caused by the memory of some great experiences with ABS. So I feel a little sad to leave them. But, to my joy I was up and running (for the project that gave me problems for the last week) in about 10 minutes (really!) time with FinalBuilder. I can't tell yet if it's quicker/better/easier to use than ABS, but the fact is that I now have an automated build script for one of my main products in just a couple of minutes time. With almost all the things in there that I want (I will have to tweak it here and there to do some script based automated things).

So, yes, it's a joy to say: I'm in the FinalBuilder camp too.

Thanks to everyone responding to my previous post about this. It really helped to make the decision to move over.

Bye,
Bart

Wednesday, August 06, 2008

Thinking about switching from Automated Build Studio to FinalBuilder

Some time ago I purchased an update to Automated Build Studio. I whish I never did. I was pretty happy with the previous version, but encountered a problem (or wanted a feature - can't remember) that was solved/available in the new version only. Since I was very happy in the past I never thought twice about purchasing the update.
From the word go I ran into problems. I got access violations and had problems with search paths that were used when compiling Delphi software. It took me some intensive emaling with the support department before I got our most important projects compiling again. The access violations still happen intermittedly and a solution was never provided.
Now, I started using a new component pack some time ago (VideoLabs) and the problems with the search paths were back again. Things compile fine using the IDE or from the command line, but using AutomatedBuildStudio I get some unexplainable errors. I emailed support a couple of time, but they all seem to be on holiday: I can't get a reply.

So, I'm thinking about switching to another tool. Even though I have created a workaround (calling a batch file compiling the projects, using another tool to update the version numbers of my software), I don't want that as a permanent solution on my build system.

I found quite a lot of praize about FinalBuilder. It seems pretty affordable too (maybe there's even a competetive upgrade prize available if I ask).

What's your experience? What build systems can you recommend?

Thanks for letting me know.

Bye,
Bart