Apr
23
#Develop 2.2 Thoughts
April 23, 2008 | Leave a Comment
Well I have been using #Develop 2.2 almost every day for the last week in the rewrite of my WinClient WinForms application which I use to input data into my Orders of Battle database (which is online at www.ordersofbattle.com).
On the whole I am pretty impressed with #Develop, it loads all my projects very quickly, compiles quickly, the layout is very customisable and it emulates Visual Studio very well.
Where it is a bit weaker than Visual Studio 2005 is with the tooltip popups on class properties etc. They do work, but sometimes they do not show you the value but the type. The Local Variables Window is hard to navigate in finding the specific property you are interested in because properties are shown as part of the parent-child hierarchy in the class structure so you have to dig around sometimes. Finally, there is no Watch window or Immediate window so you have to use Debug.Print to see values at run time.
However, that said, a new version, 3.0, is in the wings and hopefully that will offer some improvements on the debugging side of things.
You can find out more on #Develop here.
Apr
15
.NET Opensource Thoughts
April 15, 2008 | Leave a Comment
Until recently, the Open Source “revolution” had somewhat passed me by in terms of the software I used in my own computers. Every few years I would buy a subscription to MSDN so that I could get the latest versions of Visual Studio, Windows, Office, SQL Server etc. This was not a bad approach as this software is used very widely around the world and I use much of it at work every day, so it is useful and did what I wanted.
In my opinion, open-source was big in the Linux world but there was not much out there for Windows.
This opinion might have been valid a few years ago but it is certainly not valid now! Even Microsoft has to a limited degree embraced open-source with the publication of the source code for .NET and Microsft now has some sites that provide access to open source tools and utilities such as CodePlex.
In the last few years there seems to have been an explosion of open-source tools, languages, databases etc on Windows and while a lot of this is not suitable for my own specific requirements, some of it certainly is.
The first Microsoft product I replaced with a non-Microsoft alternative was Visual Sourcesafe; which I replaced with Sourcegear Vault. Vault is not an open-source solution, but it is free (if you have one user) and does a much better job than VSS. It’s principal advantage over VSS is that it uses a proper database (SQL Server) as a repository rather than a proprietary file and folder structure and it uses web services so you can place the server on a remote machine and connect using the client over HTTP. Apart from that, it is very compatible with VSS.
More recently, I was faced with the introduction of Visual Studio 2008 which would necessitate a new subscription to MSDN as the most cost-effective way to get the Professional Edition that I usually used. This made me wonder if there was an alternative to Visual Studio, after all the Java world has Eclipse, was there an Eclipse for the .NET Framework?
It turned out there was a viable alternative to Visual Studio, at least for .NET Framework 2.0. This was SharpDevelop (or #Develop). I have to admit I was sceptical at first but then I started using it and found that it could do most of the things I could do in Visual Studio 2005. Yes, it seemed quite a bit weaker and slower on the debug side, but it did compile and run my Winforms projects. The current release version does not support .NET Framework 3.5, but the upcoming version will, so LINQ will have to wait. I have not yet tried developing ASP.NET pages with it yet so we will have to see on that front.
Looking at other areas, MySQL would certainly be a viable alternative for me to SQL Server and NHibernate could be used to rewrite my data classes to make them database independent (which is long term goal of mine) and a Message Queueing technology such as MSMQ (not open source I know but it comes with Windows) or JMS could replace my current dependence on Merge Replication (which ties me closely to SQL Server) as a way of binding my various databases together.
On the development front, there are several new languages for .NET which I may look into and use in the future, some of which are from Microsoft and some of which are open-source; these new languages are at varying states of maturity right now, they include F# (which will be supported by the next version of #Develop), Boo, Iron Python, Iron Ruby and Phalanger (PHP), besides the current mainstream languages I use (VB and C#).
So, Open Source has many possibilities for me, possibilities that were much more limited a few years ago.
Apr
9
A look at SQL Server 2008
April 9, 2008 | Leave a Comment
Redmond Channel Partner Online have a good article on the new features of the upcoming SQL Server 2008, focusing particularly on the BI functionality that is bundled in.
You can read all about it here.
Apr
3
Siebel Development Thoughts
April 3, 2008 | Leave a Comment
In the world of Siebel configuration, there are two schools of thought about the best way of configuring Siebel for a specific project or client.
One school of thought advocates the “configuration” approach; in other words, only write script in Applets, Business Components and Business Services when absolutely necessary. Do as much through configuration as you can; in other words, utilise calculated fields, user properties, run time events, personalisation, state models, echo steps in workflows etc and only write a new business service if some combination of the above cannot provide a solution.
This was the approach endorsed by Siebel themselves (usually sales guys!) when they used to say that all clients needed to do to get Siebel up and running was a bit configuration and tweaking and that all the business functionality that users could ever need was already built!!
The opposite approach is to always write script and create new business services containing numerous functions whenever necessary. Pure configuration is reserved for user interface design and naming, i.e. controls, applets, views, screens, list of values data, localisation etc.
In my time in the Siebel world I have worked on projects that espoused either approach.
The truth is that both approachs have weaknesses.
One project in Belgium I worked on had the philiosophy that no scripting would be done at all, with the result that the functional logic (which was undocumented) was scattered far and wide across the application hiding in obscure complicated calculated fields and oddly named user properties. It was an absolute nightmare to change or bug fix.
On the other hand, the scripting philosophy can lead to reams of business services with numerous methods which have been copied and modified as and when required so that business logic is hidden in obscure methods in business services and business components. As a result, the system is hard to maintain and performance suffers because huge unwieldy business services are being instantiated hundreds or thousands of times a day.
The best approach, in my humble opinion, lies somewhere in the middle (as always) and depends upon the amount of change and customisation required to fulfill the business needs of the client. One can avoid a lot of script with the careful use of user properties, calculated fields, workflows and personalisation, but moderation of use and good commenting standards are vital. Complicated calculated fields can be very difficult to debug and maintain and can slow performance if they are flagged as force active.
At the same time, scripting and writing new business services have their place. I once rewrote a workflow where I replaced about 40 workflow steps with 5 workflow steps of which one was a call to a business service to manipulate some dates; it was a lot less cumbersome and more effective to write a few lines of script rather than having endless numbers of echo and/or wait steps in a workflow. Siebel eScript can be a lot more flexible than a workflow expression in some cases.
It also helps if you have good scripting standards and naming conventions as there is nothing worse than badly written and laid out script which has no comments and badly named variables. It doesn’t take much extra time to format code nicely so that it is easy to read and understand.
At the end of the day, it is all about avoiding “dogma” in one’s approach and using the right tool for the job.

