Thursday, January 25, 2007

Microsoft AJAX RTM

Microsoft has just released the ASP.NET 2.0 AJAX 1.0 RTM. Please note that if you’re using the current version of Covalentia Version 2.1.1.27388, you’ll get numerous errors because it is still using the Microsoft AJAX 1.0 RC (Release Candidate). A few people have already e-mailed me, and I will do the migration as soon as I can. In the mean time, if you want to do it yourself, you can simply follow the migration guide:

http://ajax.asp.net/documentation/Migration_Guide_RC_to_RTM.aspx

I don’t see that many changes, so I think that it should be relatively straightforward.

If you have any question, please don’t hesitate to e-mail me at support@covalent-tech.com. Oh, and thank you for your support ;)

Friday, January 19, 2007

A New Venture

So it begins. One of my business partners has partly left Covalent Technology and joined another team, Innovation City (Innovasia), and I am pretty much alone in this nice office. However, this new development will not affect Covalentia in any way. The direction will stay the same – Covalentia will be FREE for all to download and use, and Covalent Technology will continue to service its customers. In fact, there are some new leads and possible funds that may come into play and fit nicely into Covalent’s sustainability equation. And in addition, by the end of this month, I will launch a new community portal, codenamed The Great Hunt – an Employment & Project Outsourcing Community Portal. This portal will complement Covalentia’s Training Program – to provide trainees with a channel to market themselves to the outside world and get better exposures.

So, despite my early plan to join IPerintis for a better pay, leave Covalent Technology and let it sail down the drain and rot (just kidding), I am the one who’s being left behind :)

On another note, along with my other partner who owns this office, we are venturing into a trading business. As a result, a new company, Covalent Engineering, is formed. In its early inception, Covalent Engineering plans to become an authorized distributor for Proguard which carries a range of personal safety products. It’s a tough market out there, I know. But, trading is relatively a good business, and I have to start somewhere ;)

Friday, January 12, 2007

Covalentia Version 2.1 Reloaded

There are a few minor bugs in the recently released Covalentia Version 2.1 which I came across while working on Covalentia Version 3.0. I’m going to upload the files again once the internet connection here gets better. It’s very slow at the moment but has got nothing to do with the recent Taiwan’s earthquake. The portal is hosted at some place which I can’t mention for FREE. And so, you can’t expect much from a free stuff ;)

I saw the total downloads this morning was around 128 (6 days or so after it was released). Not bad eh? If you’ve already used it to develop your application, you might want to replace (or do some changes to) the following files:
  • Covalentia/Controls/Globals/Excel.cs and ExcelResults.cs:
    The #linkpath# string replacement at the bottom of Page_Submit method should spell #LinkPath#.
  • RDT/Skins/Default/Administration/User/Edit.ascx:
    The ControlToValidate property of ConfirmPassword’s RequiredFieldValidator should be set to ConfirmPassword.

That’d be all ;)

Saturday, January 6, 2007

New Release & Commitment

Happy New Year to all! I know it’s rather late to wish now but I’ve always been a late bloomer, and it’s better late than never ;)
Well, I’m back from a good long holiday, and ready to resume work and continue to develop FREE Covalentia. In fact, I’ve already uploaded Covalentia Version 2.1 as promised earlier. This release includes:
  • PostgreSQL 8.1 database support
  • Database tables and stored procedures optimizations
  • Codes optimization
  • ASP.NET AJAX 1.0 Release Candidate
  • New look for Sub-Tabs using AJAX DropDownList
  • Relocations of folders, files and images
  • Bug-fixing of globalization issue
  • Better documentations for codes, tooltips and help (partial - this is a lot of work)

At the moment, I’m working on the next release (Version 3) which will contain a lot of major changes, especially in the Data Access and Business Object Layers. It will also include other new features such as .NET Framework 3.0, ASP.NET AJAX 1.0 (if they decide to release it soon enough), Windows Presentation Foundation (WPF), Oracle database support and more. If you are one of the users who frequently download Covalentia (one of the 300 or more people registered at the Covalentia Community Portal) and you want to contribute some ideas on how the future Covalentia should be or look like, feel free to e-mail me at support@covalent-tech.com.

Friday, December 22, 2006

N-Tier and Globalization Issues

Initially, I was facing a minor globalization issue. A glitch, I thought, and nothing more. Someone from Turkey (or somebody with a tr-TR culture installed in his or her machine or set in his or her web browser’s language setting) must have tried to visit www.covalentia.net but to no avail. The person was probably feeling frustrated and forwarded me the errors (you don’t actually have to do that because all errors are automatically logged and sent to me at errorlog@covalentia.net). After a careful inspection, I found out that it’s not really a minor issue, but a major one. I had everything wrong. The culture configuration in the web.config file is not supposed to be set to auto:en-US. This will cause everything – I mean everything – from the database connection string to date and time to follow the CultureInfo.CurrentCulture information. If your database, MySQL database for example, is an English version (mine is), it will give the following error (note the date is Turkish as well as the word "uid"):

The following error/exception has occured in the Covalentia.Net Portal - FREE C#.Net Code Generator on 16 Aralık 2006 Cumartesi 23:33:32. Please response immediately. Thank you.
GUID: 11c2ae5b-8c14-4bb3-80e5-ee837f263e27
Type: Unhandled Exception
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: Keyword not supported.
Parameter name: uıd
Source: MySql.Data
Stack Trace: at MySql.Data.MySqlClient.MySqlConnectionString.ConnectionParameterParsed(Hashtable hash, String key, String value)
at MySql.Data.Common.DBConnectionString.Parse(String newConnectString)
at MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value)
at MySql.Data.MySqlClient.MySqlConnection..ctor(String connectionString)
at Covalentia.Core.Data.SqlDataProvider.ExecuteReader(String connectionString, Int32 databaseTypeId, String query)
at Covalentia.Core.Data.SqlDataProvider.ExecuteReader(String connectionString, Int32 databaseTypeId, String tableName, String queryExpression, Boolean executeScalar)
at Covalentia.Core.Objects.GetObject(String connectionString, Int32 databaseTypeId, Type type, String queryExpression)
at Covalentia.Core.Objects.GetObject(Type type, String queryExpression)
at Covalentia.CRUD.Read(Type type, String queryExpression)
at Covalentia.Controls.Portal.Default.InitializeSkin(Control skin)
at Covalentia.Controls.SkinControl.CreateChildControls()
at System.Web.UI.Control.EnsureChildControls()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
IP Address: 85.105.17.21
Raw Url: /Default.aspx
Date: 16 Aralık 2006 Cumartesi 23:33:32

And so, I have to fix a lot of things. I can’t use the CultureInfo.CurrentCulture to display data according to the user’s culture installed (or web browser’s language setting). Instead, I have to use the following:

CultureInfo ci = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

For the rest, I have to use the third type of culture that is culture-insensitive – CultureInfo.InvariantCulture. So, my bad. My deepest apology goes to the Turkish person or whoever he or she might be. I had replaced the auto:en-US value with just en-US. Feel free to browse the portal. We're the FOC bunch. Covalentia is for charity ;)

That’s not all.

After the recent launch of Windows Foundation, I realized that I couldn’t create a Windows Application (WPF) using Covalentia. Covalentia is very much focusing on generating web applications on the fly – and my plan is to make Covalentia a robust platform or code generator that can support other types of applications as well, not just web application.

My mistake is just like any other programmers’ mistakes. We tend to follow examples on the net every now and then, and those examples do not necessarily follow the supposedly correct rules of programming N-Tier or enterprise level applications. And so, I have Windows.Web.UI and Windows.Web.UI.WebControls in the Business Object or Logic Layer. Oooops :|

As a result, the new release of RC 2 mentioned earlier will not happen so soon. I’m working 24/7 to restructure both the presentation and business layers. Perhaps, next year? In the meantime, enjoy your holidays ;)

Tuesday, December 19, 2006

Microsoft AJAX RC

It took me 3 to 4 hours to migrate the old Atlas codes to AJAX RC. There were some issues with the Menu and Tabs, but I managed to fix them. The CollapsiblePanel doesn’t seem to work properly with FireFox if the direction property is set to horizontal. I’ve posted this problem at the CodePlex’s issue tracker. A few other important things to note:
  • AjaxToolkit extender and its target control must be located under the same update panel
  • JavaScript: Type.registerSealedClass is no longer supported and has been changed to Type.registerClass
  • JavaScript: Sys.TypeDescriptor.addType is no longer needed
  • Timer.tick has been changed to Timer.Tick
  • JavaScript: $(‘’) has been changed to $get(‘’)
  • Web Service: The following attribute must be added to any web service class so that it can be called by AJAX:
    [System.Web.Script.Services.ScriptService()]
  • For the rest, follow this guide
I hope I’ve not missed anything. I should have jotted down everything.

After migrating the codes, I did some changes to the Sub-Tabs to make use of the AJAX DropDownList. I will upload a new Release Candidate soon (RC 2). It will include supports for the PostgreSQL database as well. So stay tuned ;)

Friday, December 1, 2006

Covalentia Version 2.1 Release Candidate 1

As promised, I’ve uploaded a new release candidate, Covalentia Version 2.1 RC 1 to both Covalentia Community Portal and CodePlex site. This release includes:
  • Covalentia.Core project source codes
  • Removal of un-used methods and classes in both Covalentia and Covalentia.Core projects
  • Upgrading Table and TableColumn Attributes and Attribute Handler classes, and Table Schema generation especially for foreign key support, maximum data length, default value and supports for all possible data type
  • New database support for PostgreSQL 8.1 and Oracle 10g (Partial)
  • Optimizing and bug-fixing Query Generator class
  • Microsoft SQL/MySQL database structure optimizations which include the following:
    • Making data as small as possible for example using smallint and mediumint integer types
    • Declaring columns to be not null
    • Declaring Foreign Keys, Constraints and Indexes
      It is important to note here that since the InnoDB in MySQL database rejects any INSERT or UPDATE operation that attempts to create a foreign key value in a child table without a matching candidate key value in the parent table, only non-zero (or not null) columns may be declared as Foreign Keys.
  • Renaming classes and methods to follow Microsoft’s Naming Covention
  • Placing C# codes in separate files (for Web Form & Web User Control files) to increase readability
  • Using UpdateProgress (Microsoft AJAX) to avoid pages from freezing upon post-back, especially during switching Tabs and Sub-Tabs back and forth
  • Applying styles, themes and skins – small changes in the GUI
  • Upgrading Tabs and Sub-Tabs for better performance and look
  • Better documentations for codes, tooltips and help (partial – this is a lot of work)
  • Discontinuation of Covalentia Template files (Covalentia.vsi) – with the release of Covalentia.Core project, it’s easier to copy and paste the whole solution folder when creating a new application
If you encounter any problems, don’t hesitate to e-mail me.
Enjoy ;)