Background

Borland Delphi 7I come from a Turbo-Pacal background (actually I was taught Poly Pascal during my IT Education), so when I left the good old (at least old) DOS/ASCII-World in order to develop Windows software it was only natural to go for Borland Delphi, which I have used since it was first released (brought along a "Library" I had made myself in Turbo-Pascal/Turbo-Vision, updated it to Delphi and finally contributed it to the JEDI Code Library). Beside Pascal/Delphi I have also worked with DataFlex 2.3b (aimed ad DOS/Novell) and also did a little work with Borland C++ 3.5/4.0 as well.

Visual Studio 2008Had you asked me a few years ago I would have said that I would never replace Delphi with anything else, however as I slowly began to look at the .NET world I soon learned the first .NET versions of Delphi was released before they were finished (they simply had too many errors, and sadly the various patches never got around to fix the problems). So I began to look at Visual Studio (C#) and I must admit Microsoft has really done a good job. So I am still maintaining my "old" Win32 EXE programs in Delphi 7, but as I'm getting to grips with C# and Visual Studio it will most likely be the platform for most future projects (but its nice to have Delphi at hand when you NEED a native Win32 application).

MS SQL Server 2005Database wise I started out using BTreeFiler (by TurboPower) for DOS, but when I moved to the Windows world I went for Paradox which I used with Delphi for years (also did a little work with MS-Access).

In 2000 Borland released Interbase as an Open Source project and it soon became known as FireBird and I have been using FireBird for some years now (considering its free, its a great database). Lately I've been using MS-SQL more and more, and with the release of SQL Server 2005 Microsoft has done real good job (SQL Server Management Studio leaves little to be desired and the database scales brilliantly). MS-SQL is now also available in a free Express- and Compact-edition. Lately I have been playing around with SQLite, which like FireBird, also is an Open Source database with a very small footprint (it doesn't take much memory and is easy to deploy alongside your applications). SQLite is simply deployed as a single DLL file with the application using it, and there is also an open source ADO.NET provider for it, so that it is effortless to use it from your .NET software. It does support most of the SQL92 features, but it is missing some features like Foreign Key constraints and Stored Procedures. Its available on lots of various platforms, so its a good choice when your software needs to implement a database with the most common SQL features, and its a save bet when developing for small devices (PDA's and Mobiles).

One of the reasons I used FireBird was because it was free which is a most for free-/shareware projects, and it was easy to deploy with my applications (the same can now be accomplished with either the Compact- or Express-edition of MS SQL Server). One difference that leans towards the use of FireBird is that its not limited to maximum database size of 4 GB (as the Express- and Compact-editions of MS-SQL are). So when there is a chance the database might grow beyond this size, FireBird might be a better choice (at least for freeware/shareware projects). On the other hand if the database is used for a commercial product you could start out using the free Express edition of MS-SQL and then later "upgrade" to the full edition of MS-SQL when the size database (and/or number of concurrent users) increases.


Back to Top
»

Weapons of Choice

As outlined above my preferred development platform is Visual Studio 2008 (programming in C#) and Borland Delphi for native Win32 applications. Database wise the choice of product would be based on the application. For commercial products that needs to scale, MS-SQL Server 2005 is a brilliant product, as you can start out using the free Express-edition and later upgrade to the full version (without needing to chance a single line of code, within your software) whenever your need to, whether this is driven by the need for more concurrent users or a database size larger than 4 GB. Likewise for freeware/shareware-project the Express edition of MS-SQL could function-wise be a good choice, but perhaps its a "huge side-product" to pass along with a small freeware/shareware-product (its size is approximate 50 Mb). Here FireBird is easier to deploy, as it can both be installed as a service or be directly embedded into your software (2 Mb). Also if the size of the database is likely to grow beyond the 4 GB limitation of MS-SQL Express, then FireBird is a better choice as there is practically no limitation to the size of the database. The Compact-edition of MS-SQL is easy to deploy with your applications, as its simply "a bunch" of DLL's that you deploy alongside your own software (no need for the user to install/configure anything). It has a lot of the features found in the Express-edition of MS-SQL, but some are lacking (e.g. Stored Procedures, Triggers, Views and fewer data types are supported). However its the only version of MS-SQL that can be both installed on PCs and PDA/Mobile-devices. Likewise SQLite can both be installed on PCs and PDA/Mobile-devices. But compared to the Compact edition of MS-SQL, it has a smaller footprint (a few hundred Kb in stead of 2 Mb) and its not limited to a maximum database size of 4 GB (if size matters <G>). Developing software within Visual Studio the 3 editions of MS-SQL (Compact, Express and full) are naturally fully supported, whereas support for other databases like FireBird and SQLite have to be installed separately and might not be as fully integrated (but no one promised the developers that life should be easy <G>).

Developer Express for Visual Studio.NET and Borland Delphi (VCL)

I have for years been using the components from DeveloperExpress (both for Visual Studio C#.NET and Delphi VCL) and they are simply "The Best". For usage with Delphi they are simply linked into the final EXE-file, whereas for .NET they will have to be deployed as DLL's along side your application. The latter approach will result in a larger installation package. Hence for small freeware/shareware projects (where deployment size is a subject) I would settle for the standard components in stead. Going for the DXperience Subscriptions for .NET, you'll also get the 2 IDE Productivity Tools: Refactor Pro and CodeRush (once you get used to these, they are hard to do without). You'll also receive DXCore which is the "core" used by Refactor Pro and CodeRush, so you can develop your own productivity tools, should you so desire. A free version called CodeRush Xpress for C# and VB for Visual Studio 2008, can be downloaded. This version does naturally not include all the elements of the payware version, but still its a nice asset to Visual Studio. Beside the various visual components and the productivity tools, You also get XPO (eXpress Persistent Objects), which is an ORM (Object-Relational Mapping) for .NET with support for lots of different databases (e.g. MS-SQL, FireBird, SQLite, Oracle, DB2, PostgreSQL, MySQL and others). If your favorite Database is not natively supported by XPO, you are free to code your own XPO-provider (filling the gap between the "XPO-Engine" and the .NET Database Provider).

Additional Tools/Add-ins for Borland Delphi

Beside the components from DeveloperExpress, there is also a lot of tools/add-ins available that will extend the features of either the Visual Studio- or the Delphi-IDE (Integrated Development Environment). For Delphi I urge you to look at the Jedi Code Library which is a bunch library functions and (non-visual) classes for a lot of different purposes. Also for Delphi you should take a closer look at GExperts which is an add-in that add some additional menus to Delphi to make your life easier. For Reporting I've been using Rave by Nevrona, and for accessing FireBird databases I've been using IBObjects, which beside the database connectivity also contains some specially made visual components (haven't used these at all, since I've be using the DevExpress components in stead).

Additional Tools/Add-ins for Visual Studio

For Visual Studio go look at the Snippet Designer which is a great add-in if you are in the habit of making your own snippets or alter those made by others. Also for Visual Studio you should look at the Source Code Outliner Power Toy which displays a window showing all the classes, methods and variables within the active source windows. There is a filter input-box that lets you find a particular method in no time. If you are into XML documentation comments you shouldn't hesitate to download and install GhostDoc which automatically generated the XML syntax (all you have to do is place your cursor on a class/method and press CTRL-SHIFT-D and fill in the blanks).

Decompile(reverse engineer) / Obfuscate .Net programs

Last but not least: To many it comes as a surprise just how easy it is to disassemble a .NET DLL or EXE-file (e.g. using Reflector by Lutz Roeder) back into extremely readable Visual Basic or C# Source code (maintaining names of all Classes, Methods, Properties and Variables). Often software developers don't like the fact that customers/users will be able to look them over their shoulders. For instance if you are doing shareware-software (where each customer has a "keycode" allowing them to run your software), you don't want to share the source generating/checking these keycodes. Likewise your source might contain username/password credentials to log on to databases or external systems that you also don't want to share with each and every user. The best tool to prevent this is Dotfuscator by Preemptive, it doesn't come cheap, but to my knowledge its the best tool for the job. All string values (e.g. Connection-strings for databases) can be encrypted and the source code is being obfuscated, meaning that names of classes, methods, properties and variables are being changed into something non descriptive (relying heavily on overloading in order to reuse the same "names" for multiple/non-related purposes) and the actual content of methods are changed into almost unreadable spaghetti-code (without generating execution penalties).

Version Control

For years I had been using FreeVCS/JediVCS, but lately I began working at another company, who was running Subversion SVN on the server and used Torroise SVN as clients. I instantly liked the way that Tortoise integrated nicely into the Windows Shell (Explorer) and Tortal Commander, however it took some getting used to, that you don't need to check-in/out your files, but in stead merge your changes back into the repository. Here at home I ended up installing SVN Server (VisualSVN Server) on a VMware machine to keep track of my various small home projects. One thing to note regarding the Tortoise Clients running on 64 bit operating systemes (like Vista 64 bit), is that it is available in both a 32 and 64 bit version. You need to install the 64 bit version in order to have it integrate into the windows shell, however in order to have it integrate into Total Commander you need to install the 32 bit version of Tortoise. It is however possible to install both version at the same time, to have Tortoise both integrate into the Windows Shell and Total Commander.


Back to Top
»