Holger's Thoughts on Delphi

Sunday, December 10, 2006

Bye bye Blogspot

Ok, some people might know already. I will not continue this blog here. I have my new home at http://www.flickdotnet.de and the RSS feed can be accessed using this URL.

Main reason is that I can offer much more content on my new site, which is run by Community Server. Furthermore, I do not like blogger.com doing so many things for me. For example, I hate that it speaks German now - I do not find any of the functions as I am used to an English GUI.
So, bye from here. Hope to see you on Flickdotnet.de!

Friday, November 03, 2006

ECO compared to Microsoft's "Entity Data Model"

Today, the following topic was brought up by Chad Z. Hower, who is active in both the Borland and now also the Microsoft developer community, in one of Borland's newsgroups:
> [..] Yes ECO has potential. But:
>1) Does it lose any "umph" when EDM is released?
That made Jesper Högström, Borland ECO Manager R&D, post the following, detailed comparison of ECO and EDM, which I learned today stands for 'Entity Data Model'.

With EDM, you do mean something other than Enterprise Data Management as outlined on http://www.microsoft.com/sql/solutions/edm/overview.mspx and http://msdn2.microsoft.com/en-us/sql/aa336354.aspx?

I assume you are, as that seems to be more enhancements to SQL Server, which would be of potential value to ECO users as well (should they chose to deploy on Sql Server).

Next I ran into Electronic Document Management. Hmm. No, you probably didn't mean that either.

Continued to search and finally found Entity Data Model. Finally we're getting somewhere. Of all the 25^3 TLAs, what is their coverage? Do they really need to overload EDM so badly? :)

Anders took a brief look at it and commented on his blog.

A link to the overview document is here.

I personally think it's good we get someone to compare with. If you're the only one making a particular offer you're either years ahead of the competition or selling pre-bent already-rusty nails. The fact that other now try to do what we have been doing for almost a decade sort of eliminates the pre-bent nails option :)

EDM seems to offer a pain-relief to a lot of people. We will still stand very strong in comparison.

ECO is a model driven platform. It allows you to specify the logical layout of the business domain of your application using standard UML notation for class diagrams and state machines. OCL (again a UML standard) is used to define constraints on classes, synthesize data (something like calculated fields, but also used to derive associations - with full support for "virtual derivations" to be redefined in subclasses).

State machines allow you to specify triggers, guards and entry/exit actions using OCL and Eco Acion Language (EAL). EAL is more or less OCL but the constraint that it mustn't change any business state has been lifted. In other words you can write EAL statements to assign values, create instances or delete objects.

Persistence is done on a large number of backends, with shifting from say SQL Server to Oracle being as easy as dropping and connecting a component or two. ECO generates standard SQL is a SQL based backend is chosed. It is also possible to collect the business data from any number of a heterogenous set of backends thanks to the powerful OR mapping engine in ECO. Your customer objects can come from a SQLServer DB while your invoice objects are fetched from an Oracle DB. All that is transparent to the end user (but in all honesty requires the developer to set it up :) ).

Note that this backend agnostic model is also presentation layer agnostic. You can surface the UI in winforms, ASP.Net, wrap it in web services and we have plans to extend that list even further.

Coding on model level allows you to focus on delivering what the customer pays for - solving business problems. The code you need to write is more to the point and significantly shorter. The data you need is there when you need it thanks to the lazy evaluation in ECO. The consistency of your business layer is kept intact, including both ends of bi-directional associations. We have built-in support for undo/redo, transactions, evaluation, subscription, persistence, model inspection, synchronization between clients and more.

Furthermore, ECO doesn't preclude you from using other mean and lean technologies. Not to say that we hardwired interoperability with everything from cryptography algorithms over device drivers to enterprise phone books, but hey, you are all programmers. It's all software. No magic.

R&D Manager ECO

Tuesday, October 17, 2006

New Beginning

Well, no. Right for the start: I am not leaving the Borland Community. I just finished my University degree last month and thus a new stage in my life started.

In this whole process my computer room aka "office" got a general "tidy-up". I should have done this way earlier. However, it can be somewhat fascinating what I have used/worked with about 6 years ago. Be it the first handheld scanner, the 10 MBit LAN cables with the funny looking connections and resistors or Borland stuff. I found two things in particular. The first item was my very first version of Delphi that I got as a present in ... I think 1986. I am not sure when it was exactly though to be honest.

Another nice goodie I found was this "märklin" model train with the Borland logo. I have no idea what the reason to create those was, but I won this at a Borland event this spring. Bernd Ua told me it must have been around 2000 that these were given away to customers.

I also found one more item, which I will not depict here. You guys can make a guess though. It is related to Borland, but it did not have the name "Borland" on it. So what is it?


Thursday, September 21, 2006

Thanks Jeremy!

So, here I was, telling you guys about my tool that has to be invoked using the command line in order to fix the ECO III code generation issues.

And now... Well, Jeremy North took my source and made it an IDE plugin. So no more command line. So far the thing looks awesome. Will tinker with it a little bit more, before releasing it.

Thanks again, Jeremy!

Wednesday, September 20, 2006

ECO: Code generation in BDS 2006 and Delphi .NET

Okay, you all know by now, I am a huge fan of ECO. Today I found out though that if you keep making modifications to your model and constantly generate code for Delphi .NET that the code generator will generate code that does simply not compile.

Firstly, deactivate the option "One file per class" for the code generation in Delphi (see screenshot) in case you enabled it. It is set to "off" by default when you install BDS.

You get to this dialog using "Tools / Options...". There are two issues if you leave it checked:
  • uses-clause: The uses clause is not being generated correctly if you e.g. have a method that returns another class which resides in another unit. You will have to add the references yourself.
  • duplicate names: if an association(-end) has the same name as a class you get type-conflicts and will have to use the full name and thus edit the code manually
Secondly, "begin"/"end" blocks are preceded by multiple empty lines. With every code generation invocation another empty line is being added.
Finally - and this is the most annoying - Uml-tags will be generated everytime you invoke the code generator and thus the code becomes incompilable as well.

I wrote a simple command-line tool, which automatically makes the necessary changes for the last two cases. The uses-clause and duplicate-names issue can be neglected as you can set the options to circumvent it.

Be aware that this tools comes without any guarantee or liability. Use it at your own risk.

You can download it from CodeCentral.

Monday, September 04, 2006

Holger in public :-)

The next weeks are going to be busy for me - at least for what I am used to.

First, I will be in Stockholm, Sweden next week. There are still a few seats available for an excellent Delphi Developer Group meeting there on the 14th. You will be able to meet the ECO Team, Henrik Jondell and Hellström. I will also host a session there, showing ECO with ASP.NET.

Secondly, I will be a coach at the Code Camp at EKON 10 in Frankfurt, Germany on September 27th for the ECO section.

Maybe, I will see you at one of the two events

Sunday, August 27, 2006

Russian MDA User Group

I just founbd out that the page http://mda-delphi.ru/ links to almost all my ECO blog articles... Thanks guys! I am sorry, I cannot provide the content in your native language as well.

Tuesday, August 08, 2006

Another link to my sessions...

Olaf Monien was so kind to bring this link to my attention:


This will give you the chance to see all my sessions w/o having to click every single link from my previous post.

DevCon US: Holger's Sessions

So, as I browse bdn.borland.com today it seems that the voting for the sessions has started. If you'd like to see me at DevCon and are interested in ECO, so please vote for my sessions if you like to :-)

I kept the topics pretty general, so I'll accept feedback what exactly to cover ...

My sessions are:

Report No: 32263
ECO and ASP.NET : Authentication and Authorization by Holger Flick

Report No: 32262
Using ECO Services in Code by Holger Flick

Report No: 32261
Synchronization and Resolving Conflicts in Multi-user ECO Applications by Holger Flick

Report No: 32260 Status: Reported
Building Scalable ECO Applications by Holger Flick

Report No: 32259 Status: Reported
Using and Extending ECO OCL by Holger Flick

Sunday, July 30, 2006

Nice docs anyone?!

Normally, when you acquire a new version of a software product, you'll never insert the old cds into your drive ever again. However, D8 and all later versions had a wonderful new feature: less documentation - sorry for the sarcasm.

So, everybody got those nice D7 CDs out and opened those help files for VCL documentation. Today I even found a wizard on the net that makes it possible to use the old documentation files by default on CodeCentral: http://cc.borland.com/item.aspx?id=23948

Thanks go to community member Thomas Müller for that one!

I have not tried it myself yet, but I sure will get those old D7 CDs out of the cellar now ;)