Wednesday, April 30, 2008

How to create a Web Server Control in ASP.Net with Delphi 2007

We were presented with the challenge of creating our own server controls. After some research on the web, we found very few examples regarding how to do this, even less if they are specifically targeted to Delphi.Net 2007.

So, in order to help the next fellow Delphi developer that is presented with similar situations, it is our objective to publish small articles on every new item that we face in our development process as a contribution to the new Spirit of Delphi that is growing in the community.

Special thanks to Feryal Badili for putting this article together. :)

Here is the step-by-step instruction on how to create a simple server control in Delphi 2007.

Well, there are two ways to create web components in Delphi:
1) You can go to 'File-New-Other-Delphi for .NET Projects' and choose 'Web Control Library'.
2) OR, you can go to 'File-New-Other-Delphi for .NET Projects' and choose 'Package'. Then in project manager panel, right click on 'Contains' folder and select 'Add new-Other-Delphi for .NET Projects-New ASP.NET Files' and select 'Web Custom Control'. You may want to use this approach if you would like to have multiple controls in the same package.

The general recommendation is to use the first method to create a web custom control for the first time, it is a lot easier in the long run, believe me.

Delphi will generate the source code for a very simple web control. Let's just try to understand it:

The default name for the file is 'WebControl1.pas' . It is a Delphi unit file and the unit name is really your namespace. You need to remember that because you're going to need it later when you are using the control in your web page!

Under 'Type' section of the code, you will see the following lines:

[DefaultProperty('Text'), ToolboxData('<{0}:MyWebControl1 runat=server>')] MyWebControl1 = class(System.Web.UI.WebControls.WebControl)

Well, what does it mean?
Your class MyWebControl1 is derived from System.Web.UI.WebControls.WebControl.

If your control renders a user interface (UI) element or any other visible element on the client, you should derive your control from System.Web.UI.WebControls.WebControl (or a derived class).

If your control renders an element that is not visible in the client browser, such as a hidden element or a meta element, derive your control from System.Web.UI.Control. The WebControl class derives from Control and adds style-related properties such as Font, Forecolor, and BackColor.

In addition, a control that derives from WebControl participates in the themes features of ASP.NET without any extra work on your part. If your control extends the functionality of an existing control, such as the Button, Label, or Image controls, you can derive from that control.
If you are going to have multiple visual controls in your server component and you wish to inherit the basic functionality of the parent controls, you need to derive your class from CompositeControl class:
MyWebControl1 = class(System.Web.UI.WebControls.CompositeControl)
To learn more about composite controls, see:
http://msdn2.microsoft.com/en-us/library/3257x3ea(VS.80).aspx

The code inside brackets that is generated on top of your class definition is attributes that apply to your class. To learn more about these attributes, see the following link:
http://msdn2.microsoft.com/en-us/library/ms178658(VS.80).aspx

The code generated by Delphi adds a property called 'Text' to your component . Since this property is published, you will be able to see it in the "IntelliSense" or "Code Completion" and object inspector when you use this component in a web page.

As you can see, this property also has some attributes:
Bindable: set it to true if your property can be data bound.
Category: In object inspector, this property will appear under the category(group) that you define.
DefaultValue: Obviously, this is the default value of your property.

You need to define these attributes for each and every property that you want to publish for your component. Also pay attention to the field definition for your property.

Next step is to add your own child controls and render the server control. In order to do that, you need to implement the following procedures:

procedure CreateChildControls(); override; procedure RenderContents(Output: HtmlTextWriter); override;

Here is an example of simple server control that includes only one control (TextBox) and adds one property named 'ShowTime' to the control.

You can use this component in both Visual studio or Delphi .NET.

unit WebControl1;
// To create a more advanced Web Control that supports live data at
// design time, see instructions in the readme file located in the
// 'BDS\5.0\Source\DotNet\dbwebcontrols' directory
//

interface

uses
system.web,
System.Web.UI,
System.Web.UI.WebControls,
System.ComponentModel,
system.Drawing,
System.Data,
system.security.Permissions;

type
///
/// Summary description for the component
///


[
AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level=AspNetHostingPermissionLevel.Minimal),
DefaultProperty('ShowTime'),
ToolboxData('<{0}:OpenItems runat=server>')
]
OpenItems = class(System.Web.UI.WebControls.CompositeControl)
strict private
IsError : boolean;

msgBox : textBox;
FShowTime: boolean;

strict protected
procedure RecreateChildControls(); override;
protected
procedure RenderContents(Output: HtmlTextWriter); override;
procedure CreateChildControls(); override;
public
constructor Create;
published
[Bindable(false),
Category('Behavior'),
DefaultValue(false),
Description('Show the Date and Time')
]
property ShowTime : boolean read FShowTime write FShowTime;
end;

implementation
uses SysUtils;

///
/// Define a public parameterless constructor needed by web controls.
///

constructor OpenItems.Create;
begin
inherited;
isError := false;
end;

procedure OpenItems.RecreateChildControls();
begin
try
EnsureChildControls();
except
IsError := false;
end;
end;

procedure OpenItems.CreateChildControls();

begin
try

Controls.Clear();

// Create a text box
msgBox := TextBox.Create;

if ShowTime then
msgBox.Text := DateTimeToStr(Now)
else
msgBox.Text := DateToStr(Now);

msgBox.BorderStyle := System.Web.UI.WebControls.BorderStyle(1); // Sets border style to 'None'
msgBox.ForeColor := System.Drawing.Color.get_Red;
msgBox.Style.Item['position'] := 'reletive';
self.Controls.Add(msgBox);
except
IsError := false;
end;

end;

///
/// Render this control to the output parameter specified, preserving
/// cosmetic attribute output generation inherited from standard
/// WebControl.
///

///


{$REGION 'Render override'}
procedure OpenItems.RenderContents(Output: HtmlTextWriter);
begin

if not IsError then
begin
// There was no error so far, render all components
try
AddAttributesToRender(output);

Output.AddAttribute(HtmlTextWriterAttribute.Cellpadding,'1', false);

Output.RenderBeginTag(HtmlTextWriterTag.Table);
// The table will be very useful when you have multiple visual controls
// included in your component

Output.RenderBeginTag(HtmlTextWriterTag.Tr);
Output.RenderBeginTag(HtmlTextWriterTag.Td);
msgBox.RenderControl(output);
Output.RenderEndTag(); // end td
Output.RenderEndTag(); // end tr

Output.RenderEndTag();

except
// An error happened, just show a message
Output.Write(' '+ 'Unable to create the components');
end;

end else begin
// An error happened, just show a message
Output.Write(' '+ 'Unable to create the components');
end;

end;

{$ENDREGION}

end.


Tuesday, April 22, 2008

Creating extended stored procedures on Delphi.

Well, originally we were going to implement a sexy Delphi.Net CLR Based Stored procedure now that we are using MSSQL 2005 and hearing all the good things about this highly publicized feature. Sadly, we hit the wall after initial testings showed us the big amount of limitations on the assemblies that we could use and all the exceptions we must made to make it work on MSSQL 2005. For example:

* First, you need to enable CLR on the database. (Thats ok.)
* Classes must be public and static. (Makes it harder, but we can manage it)
* Avoid namespaces with anything that is not the list of "safe" name spaces approved by Microsoft. (mmm)
* "Safe" assembly is simply a way of saying "non-microsoft built" assembly. You have a couple more "modes" on how to install your assembly on MSSQL, but as you can read below (MSSQL Online help), it gets touchy, and probably complicated. (yeah, I tried it, got ugly)

To create an EXTERNAL_ACCESS or UNSAFE assembly in SQL Server, one of the following two conditions must be met:
The assembly is strong name signed or Authenticode signed with a certificate. This strong name (or certificate) is created inside SQL Server as an asymmetric key (or certificate), and has a corresponding login with EXTERNAL ACCESS ASSEMBLY permission (for external access assemblies) or UNSAFE ASSEMBLY permission (for unsafe assemblies).
The database owner (DBO) has EXTERNAL ACCESS ASSEMBLY (for EXTERNAL ACCESS assemblies) or UNSAFE ASSEMBLY (for UNSAFE assemblies) permission, and the database has the TRUSTWORTHY Database Property set to ON. “

* MSSQL will complaing about the CodeGear assemblies being unsafe, some tweaking is necessary.

* Third party assemblies are not welcome on MSSQL. i.e. RemObjects.

Well, in summary, after playing with it, adding our assemblies required a lot of code trimming and removing any namespace that has any reference to anything visual (makes sense) even if it is not being used at all. Finally, the detail that just finish helping us to dropped the idea was that we don't have the source code for those "extra" assemblies (RemObjects) that we required and the amount of trimming just got out of control.

With one option out we went back to the drawing board with the plan to extend and update an old implementation of "Old School" extended stored procedures, as soon as I open that old project I realized why I never liked working with it, parsing the parameters, checking their types, defining data columns to return a proper record set was simply a big painful and slow process.

Thankfully, I was able to find in the vault of memories a great presentation by Berend de Boer made in Inprise DevCon '99 where he explains the general steps to implement them and even included a great piece of source code of the mighty "TSQLXProc" object that simply takes over the painful implementation and takes it to the Delphi way. After that finding Berend's website was easy.

For anyone needing this, check this link.

My Kudos to Berend,

Monday, April 21, 2008

EVERY DAY TIPS: Manually deleting a windows service

There I was playing with setting up subversion server running as a Windows Service until I made a tragic mistake and I get to the point of needing to remove the service that I just recently installed.

Ok, fine, as a good Delphi guy, I went looking for that sexy graphic console (Service Manager) that will give me the all mighty power to delete the service, but, I hit a wall after realizing that such an option was disabled for me.

So, after googling a bit I found two nice options.

1. If you remember the exact name of the service (not the description), you can use the sc command:
C:\>sc delete "service name"

If you don't know it, then you can go straight to the registry, find your guy and delete it.

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services

You indeed will need to restart the computer to see these changes fully reflected.

Monday, April 14, 2008

Delphi for PHP 2 en Español

Well, great news for my mother language! We have now Delphi for PHP in Spanish!.

Yup, just after the official release we are now getting the news of a translation on the Cervantes language.

Tuesday, January 01, 2008

Truncating your transaction log.

First, HAPPY NEW YEAR GUYS!!

Now, some actual blogging...

Here I was, trying to restore our metadata only database into a production server, getting constantly an error messaging saying that it was waaay to big for the available space. Well, my concern was that the entire back up of the database was only 6MB, and the database itself only contains tables with very basic data.

What is worst, the space available on that production drive was 14GB, so gosh, it simply didn't make any sense. Well, after reviewing the original metadata-only database I realized that our constant adding, updating and deleting of structures made our transaction log simply huge. (40gb)

So, after some reading I found this nice recipe to cut down the fat of your log database:

First, backup your existing log file by running
BACKUP LOG  TO DISK = ''

Now, shrink the transaction log, executing this
DBCC SHRINKFILE (, ) WITH NO_INFOMSGS

File name is the transaction log filename and target size you wanted to be, don't be too demanding on the shrinking, but as a hint, I ended up making mine only 1MB cause we don't need a log on our metadata db. :)


Update:
My apologies, the database in question is MSSQL 2005. Thanks for the feedback.

Thursday, November 15, 2007

Help Update 1 for Delphi 2007 available.

Another great sign of constant improvement of my favorite IDE.

If you have not get an information dialog from your installation just go to Programs\Code Gear RAD Studio\Check for updates.

You can go here to read the install and Release notes, straight from CodeGear.

Tuesday, October 23, 2007

Migrating from ADO to dbExpress...

I finally started.

After holding the migration for a long time I am doing it, the reason? well, CodeGear has a renew effort on working on dbExpress, and its latest version dbExpress 4 is a great example of it, with good performance, great connectivity with WIN32 and .Net, support for BlackFish SQL, code included and completely rewritten in Delphi, and lots of improvements on D2007 to work with it like a new SQL Query Editor.

My initial testings always showed a better performance with dbExpress than ADO, now add the fact that ADO is being discontinued by MS in benefit of ADO.Net, the choice was a lot easier.

But, what I did to migrate thousands and thousands of components? Well it wasn't easy, there was no way I could do it in the form designer, it will simply take years.

So just go, open your Data Module, switch to code view, and Find/Replace the following:

1. Replace Connection with SQLConnection.
2. Replace TADOQuery for TSQLQuery.
3. Replace TADOStoredProc for TSQLStoredProc.
4. Replace TADODataSet for TSQLDataSet.
5. Parameters for Params.
6. CmdStoredProc for ctStoredProc.
7. Direction for ParamType.
8. pdOutput for ptOutput.
9. pdInput for ptInput.
10. Add under every dataset that uses SQLConnection, Schema = "dbo" or whatever your schema is.
11. Remove every parameter item called "@RETURN_VALUE".
12. Replace TDateTimeField for TSQLTimeStampField.


Geesh, thats what I remember, I will add more to the list if I hit more rocks on the road.

Thursday, September 27, 2007

Consolas fonts.

Well, I was reading the CodeGear's non-technical newsgroups, and found an interesting conversation regarding what kind of font you use on your development IDE, among the recommendations there was the new Consolas Font from Microsoft. Well, I surrender to temptation, downloaded the font, set it up on my RAD Studio 2007 and expected to see something cool in front of me, but.... nothing happened, tried several times, and nothing happened, the IDE didn't recognize the font, nothing changed.

Luckily I did my googling and found out this nice tool, that avoided me the trouble to attempt to configure the font from the command prompt .

Well, I did it, restarted my sexy IDE and yahoooo!! I have a nice sexy font. I must admit I like it, it will take a while to feel fully comfortable with it, but i think is here to stay.

Try it! you may like it too.

Monday, August 13, 2007

Restarting your application.

We are creating a project to automatically update our different modules. That usually implies an application restart, lots of ideas went around, a service that does that, a batch file, or another program working as a proxy of the original one, but, hey, I found this G R E A T article from Zarko Gajic who is always giving amazing tips with Delphi on how to do it in a VERY easy way.


Enjoy!

Saturday, August 04, 2007

The overload directive.

Well, it is fairly common to use the Delphi's overload directive to create a method with different sets of parameters in an object.

What I wasn't aware is that it actually works on functions or procedures that are not part of an object. That is cool.

Thursday, August 02, 2007

RemObjects and DataSnap.

I'm using a mix of Delphi's RemObjects SDK and DataSnap on our middletier, and we have implemented session management on all the services and in all the DataSnap remote modules.

Thanks to RO, that can be easily done on the DataSnap modules by turning on the RequiresSession property of the RODataSnapModule. Now the only problem with this is during design time, once it is on you will not be allowed to connect to your DataSnap datasetproviders without first logging in. So, as you can read that is a problem.

The solution? We added a command line parameter to our application server that simply controls if we want to require a session or not in our services or datamodules. Once that flag is set, we just use it as an indication while we are creating the service/datamodule.

Soon, I will post the results of a LETHAL combination, KbmMW, RO and DataSnap in a single SUPER POWERFUL MIDDLETIER MILKSHAKE.

Tuesday, July 31, 2007

Developer Day en Español!!

Hi guys,

CodeGear is hosting "Developer Days en Español" a nice gathering of great developers with the spanish speaking Delphi community.

There is a wide variety of sessions including Delphi, Interbase, PHP and Java.

It is only for 2 days, today was the first session and it was great. An average of 300+ guys were listening online to the different sessions, in my opinion a great success.

So if you want to check it out, this is the website.

Enjoy!

Monday, July 30, 2007

A nice surprise on Delpih 2007...

I was creating a "Lost Connection" dialog box for our rich client applications and as a distraction I was browsing around through thousands of nice icons on the internet, when I finally selected the icon that i wanted, I realized that it was (as almost every nice icon now days) a .png file.

Big disappointment I said, cause my mighty Delphi doesn't support that in a native way, I need to use a open source component, (actually there are tons of them, but I don't have the time for that) so I will have to convert it to that ugly bitmap thing. Oh well, i did and when I was getting ready to upload the image, sweet surprise!

TImage supports now gifs, cur, pcx, ani, png, gif, jpg, jpeg, bmp, ico, emf, wmf. I don't know if that is something new, but for sure it wasn't on Delphi 7 :P.


Love my D2007.

Sunday, July 22, 2007

Visual Studio launch in 2008....

Latest news said that Visual Studio will see the light in a joint launch with MSSQL Server 2008 and Windows Server 2008 in Los Angeles on February 27th, 2008.

But, it will be released officially by the end of this year.

CodeGear Studio will be out around September.

Sunday, July 08, 2007

Database scalability with MSSQL 2005

Some news from the battlefront...

We are expecting at least a 75% increase of our internet traffic, db transactions, network and database activity in general so our entire company is working hard on getting ready to manage this incoming wave.

Regrettably, life is not always good and the core of the business is setup around a system using a typical client/server architecture where each workstation creates a connection to the database and to make it worst, establishes server side cursors to fetch all data they need.

Now on the other hand, the website is driven by old school ASP pages, using adHoc Queries or direct stored procedure calls to the already beat up database. Finally, it is important to mention that this is running on ODBC connections.

End result?, chaos, in high traffic moments the entire network slows down and all the applications switch to a slow silent death walk to a total IT crisis. There is no caching techniques, no business layer, basically no middle tier... all the opposite things to what I'm used to deal with, and that is why it is my mission to turn this around and take over the world. (moooooahahaha)

Well, the mission is simple, we can't change much in short time, so we need to make this system work as good as possible. So, my first task is to provide a list of recommendations towards the deployment of our new database servers running MSSQL 2005.

Yup, we are migrating from MSSQL 2000 to MSSQL 2005, people will think that it is a simply straight import/export, but special considerations need to be made when dealing with the databases collation which has completly change from one version to the other one and to the famous "compatibility modes". Keeping an imported database in Compatibility mode 80 (MSSQL 2000) may save you headaches but will offer you little in terms of all the good new toys and performance tricks that you can apply on compatibility mode 90 (MSSQL 2005).

Bellow is a summary of my initial recommendations aimed to the physical database storage design aspect that you should follow when dealing with a situation like the described above:

  1. Server side cursors implies lots of memory usage on the database. So, increase memory on the database server, the more the better. Make sure your database is using it, by checking the database memory limit. (special attention to the 3gb limit on the non Enterprise versions of MSSQL)
  2. Multiple core machine? well, you will not use them if you don't separate that big nasty .mdf file into multiple .ndfs, what is the recipe? the number of data files within a single file group should equal the number of CPU cores.
  3. For optimized I/O parallelism, use 64 Kb or 25 Kb strip size when defining the RAID configuration.
  4. Use manual file growth database options. Automatic is only for development (ja! you didn't knowt that did ya?)
  5. Increased size of “tempdb” and monitor space usage, adjusting accordingly. The recommended level of available space is 20%. All your temp tables and indexes are created there so, keep that guy with enough space, if you are using the default size that is only 8MB, and that is basically 8 floppies, so be nice, put some more space there.
Alright, so that should buy us some time to concentrate on the next stage, database optimizations. Until the next post.

Wednesday, June 20, 2007

CodeGear drops C# Builder.

I was listening to one of the weekly community podcasts from CodeGear, and one of the topics that was mentioned was the announcement of C# Builder being dropped from the CodeGear Developer Studio 2007, to be released later this year.

Winforms seems to be a no no too. It seems they will be putting all their efforts on Delphi and C++ and Delphi.Net using the VCL.Net. They will convert their existing support for C# Builder to the same level of the VB personality, which means edit, syntax highlight, compile, and basic
debug functionality.

It looks like we will have the possibility to use any existing C# component and add it to your Delphi.Net project with no problem.

For people using ECO with Winforms, they will be ways to move into the direction of VCL.Net, which will be fully supported by ECO on the coming Delphi.Net release.

I certainly agree with their moves, there is no point on supporting a language that they cant controlled. They can use the .Net framework or the Win32/Win64 native APIs, but just like they did with Win32 by building the impressive VCL on top of it, expanding the VCL to support .net will also forced the VCL under native APIs to be extended to new cool functionalities.

Lots of news around CodeGear, which just reasures my thoughts towards the fact that these guys are doing the best they can to have things going the proper way.

Oh final comment, initially it was mentioned that Generics will be only supported from a consumption level, that seems not to be the case, production of Generics will be there too. But, only for .Net initially.

Thursday, June 14, 2007

ASP.Net not too scalable....

Scalability is a daily concern on my business. We managed thousands of requests, that startup lots of transactions that will make any online bank website simply jealous.

A couple of times, I worked with companies that use ASP.Net as their web framework of preference and it was not long when we start having scalability problems. It is a well known issue with ASP.Net, but there are solutions.

I found this interesting article that talks about the issue and gives a good solution.

Read it!

Wednesday, June 13, 2007

Using Visual Studio 05...

Yes, I know, but hey, I was programming on Java a couple of days ago, so for me it is just more stuff to learn and at least it is more visual than Java.

I'm in no way leaving behind my sexy Delphi, we just got a new update and a cool roadmap, but, I need to develop some web applications that connect to my Delphi middletier and the option I have right now is to do some ASPX on C#.

If I'm lucky enough, I should have the new Code Gear Developer Studio with support for .Net 2.0/3.0 by September, so I can use it.

Monday, June 04, 2007

The big reunion.

Hi guys,
I don't know if you were aware of this great reunion between the last two old schoolers of the software industry: Bill Gates and Steve Jobs, on an interesting chat together at D5!!.

The vision they had and have is simply outstanding, the advances we enjoy today on the software area can be easily blame to these two great minds.

Enjoy!

Friday, June 01, 2007

What will many cores mean to future window releases?

This is a good article about what is going on with Microsoft around the new trend on Multi Core devlopment.
You got to love AMD Opterons :)

Thursday, May 10, 2007

Faster web pages...

This is the link of an outstanding presentation made by the Yahoo’s “Exceptional Performance Team” about optimizing website performance by addressing front end issues. This is part of the web 2.0 expo that happened last April. A MUST read.


Enjoy,


http://www.web2expo.com/presentations/webex2007/souders_steve.ppt

Yes, it is a power point presentation.

Sunday, May 06, 2007

A great option for middletier development!

For all those developers that are looking for another option to the mighty DataSnap, now there is a great opportunity to develop reliable and scalable middletier solutions for the same price.

Components4Developers is offering their popular middletier software for free. What is the deal?

Simple, register and download. TurboMiddletier is a full version of their enterprise middletier software KbmMW (a couple of transport protocols and channels are removed but nothing major), it only supports the latest Delphi version, so, if you have Delphi 2007 go and get it now!!

I personally use Data Snap, RemObjects and KbmMW in our projects and can only say good things about them. I do admit that KbmMW is a more mature framework with lots more functionality, but on RemObjects SDK favor, they offer a great DataSnap integration pack that help companies using DataSnap to migrate to their SDK.

Whatever you pick, you will be on good hands, in the meanwhile go and get that!

Saturday, April 21, 2007

Using Agile methodologies on your favorite IDE.

My current job is moving towards an Agile development, so, in order to be one step ahead of the game, I am implementing on my home projects most of the methodologies that we will or should be using in our everyday development life.

Browsing around I found this site, which basically is dedicated to implementing Agile methodologies in Delphi. Take a look at it, and subscribe to the forum, it promises to be a great source of knowledge for all those XP/SCRUM/Agile fans.

Sunday, April 15, 2007

Ajax and Delphi

I'm finally working on the web applications of my home project, and I decided to work with Intraweb 9 as my web framework which now supports "Ajax" events on most of its components and comes built-in my brand new shinny Delphi 2007.

But, browsing around I found a set of extremely interesting examples and articles about using the Microsoft flavor of Ajax (Atlas 2.0) on ASP.Net with Delphi.

Take your time on rewiewing these examples from Steve Trefethen.


It is worth to mention that TmsSoftware replied to my question about possible updates to their Intraweb web components, the answer YES!, so lets wait a couple of days, for the goodies to come.

Saturday, March 24, 2007

Delphi Developer job offer in NJ?

I saw this add from "The Lair of the Pythia" blog, so I will help spreading the word.

Delphi Job opening here!

So go there and make us all proud!

Friday, March 23, 2007

The Phone interview process...

Well,

One of the different roles that job after job I've done is interviewing new candidates for my team.

I'm very comfortable with the one-on-one, mano a mano model of interviewing, but most recently I'm dealing with a new cool variant of it, the phone screening, why is it new? well, usually that kind of process is managed by the HR people, but now days, based on the offer/demand sometimes is healthy to screen a guy before he even puts a foot out of his home.

Oh God, yes, distortion on the communication line, language barriers, unable to read body language, unable to picture your world into mine, unable to cross that border of understanding and agreement, indeed, it is a bit more difficult than my original play field.

I know that practice will make the difference for me, but also, I was lucky enough to get this link from a co-worker that it is going through the same process.

READ IT! if your duties involved phone screening, it may help you to understand the situation and save you from the confusion we noobs need to go through at the beginning.

Monday, March 12, 2007

Code Rage 2007!!! NOW!!




Guys, more than 20 online conferences covering from powerful Delphi to Java, Ruby, Php, Interbase and lots more!

Its free, its cool and its from the best developer tools company WHAT ELSE YOU WANT!!!

GO HERE NOW AND REGISTER! Starts today March 12th! 6:30AM PST!!

Thursday, March 08, 2007

10 basic principles of SOA

Lately, all my work is around implementing solutions following a SOA approach. After working for several years with multiple software vendors on my industry, and having to deal with endless integrations, I'm ending up aiming my tools and goals to it.

This is a nice little article about 10 things to consider while following a SOA mentality.

Friday, February 23, 2007

The ADO prepared property.

Today I was playing with some ADO queries and I stumble one more time with the famous prepared property. Based on the BDS help it says:

Description Set Prepared before calling the Open method to specify whether ADO prepares the command used to create the dataset’s recordset. If Prepared is set to true and the dataset component is connected to a data store, ADO prepares the command before executing it. If Prepared is set to false, ADO does not prepare the command. The default value of Prepared is false.

Now, after a bit of research I found this interesting article on the msn dev network.

The important part is here:

Prepared property

In theory, the Prepared property was designed to reduce work on the server by pre-compiling ad hoc queries so subsequent executions would use a temporary stored procedure instead of repeating the compile phase each time the query is executed. However, this is not the case with ADO's implementation—keep reading.

Since ODBC was invented some years ago, SQL Server has gotten much smarter—it now knows how to leverage existing (in cache) compiled query plans. That is, once you execute a query from ADO (or by any means), SQL Server constructs a query plan, saves it in the procedure cache, and executes it. When the query is done, SQL Server marks the query plan as "discardable" but leaves it in memory as long as it can. When another identical (or close-enough) query comes in, which is very likely in systems running multiple clients, SQL Server simply re-uses the cached plan. This saves a significant amount of time and greatly improves scalability. It makes SQL Server actually run faster as more users are added, assuming they're doing about the same things with the same set of queries.

ADO and its ODBC and OLE DB data providers know about this strategy, and in most cases they execute sp_executesql to take advantage of this feature. However, this puts the Prepared property in a quandary. It insists on creating temporary stored procedures, but the data providers insist on using sp_executesql. The result? Chaos. I describe what happens a little later when executing Command objects is discussed.

My recommendation for the Prepared property: forget it—at least for SQL Server. For other providers, set up a trace that shows exactly what's going on—what the server is being asked to do.

Now this is extremely interesting for me, specially the sp_executesql part, DataSnap indeed wraps every call in a "sp_executesql" so we are good there, now about using the prepared property, I will do more research on it, but for now, I will leave it alone. :P



Thursday, February 22, 2007

Code Rage 2007!!!



Go to the virtual conference from CodeGear called CodeRage 2007.

It includes Delphi, Java, Php and even Ruby sessions with an All-Star set of speakers.

For more information go here!

Now, I think that everybody knows about it, but just in case...



Delphi 2007 for Win32 is available now! and in a well expected move, the new Delphi for Php makes his debut. A visual IDE for PHP using the same VCL structure that we all know and learn to love.

Friday, February 16, 2007

More Delphi News!!

Wow the information is in pieces everywhere.. check the following segments of "information" said by Michael Swindell (Delphi VP - CodeGear) that appeared on the borland newgroups:

"
c) Delphi Product line - we are realigning development plans and approaches
to focus on the individual native code Win32 editions (Pro/Ent) of the
products first, then fold them into an updated Studio that will include the
.NET updates. Architect and Turbo's would fall out of the Studio releases.
The Turbo's eds will become more lightweight in the process as well. The
majority of Delphi (and C++Builder) developers are focused on native code
development - so we are aligning our releases and timeframes accordingly.
Moving everything into monolithic Studio releases had some positive effects
but also some drawbacks that came thru in customer feedback. Having to wait
for the "all personalities" was not ideal for C++ and Delphi native
developers, who had either no or minimal interest or need for .NET. It
spread attention more thinly across the products, so we are changing the
approach so that during the year Delphi native developers have focused
specific attention in a product release, same with C++ developers, and .NET
developers. This approach actually worked quite well in past lives with
Delphi and C++Builder - although the complaint years ago from C++Builder
developers was that they had to wait 6mo to a year for the latest Delphi
features... which is something that we aim not to fall into. "


Then in addtion pay attention to the new "ALL DELPHI" intention with the new pricing model and SKU's:

"
Turbo Delphi Explorer -> Turbo Delphi "better" -> Delphi Pro -> Delphi Ent

same as above for C++

then Studio Pro/Ent/Arch incl both C++ and Delphi and .NET and Win32

Turbo Pro New and Delphi Pro Upgrades similar price level. So it will be
recommended in order to keep the feature level go to Delphi Pro as the
upgrade. This is a tuning of the editions. We released the Turbos with the
intention that we would see what worked and what didn't and make some
changes in 2007 to improve.

> How is this going to be handled?
> Or is the "lightweight" reference to reduced resource demands rather
> than reduced features?

lighter weight - in features and resource and download image

in general we have 12yrs of sku's editions pricing for Win32, .NET, Pascal,
C++, Linux, and more to work out the best "model" that cleans things up, and
focuses our energy (development, packaging, and marketing) on the things
that are most important to existing customers and enables us to put Delphi
into more developers hands than ever. So there will be some things that we
do that will seem like we're undoing something we've done or said
previously, or changing a position on something previously stated or
published. Some things will probably seem crazy or sacrilege, but we plan to
grow Delphi, and to do that requires a little bit of house cleaning and
tuning. We'll probably make a few mistakes in the process, but the goal is
long term. Delphi and C++Builder have helped millions of developers, we
think the Delphi way of developing can benefit millions more developers -
and we want to bring the Delphi ideas and approach to everyone we can. The
CodeGear difference is that we're going to take some risks and try new
things, but we won't be doing it at the expense of our customers. "

It is expected a Delphi release by the end of March maximum!.




Wednesday, February 14, 2007

Delphi 2006 new RollUp fix !

Already! more good news!

New Delphi hot fix rollup:

Here!

It fixes the following issues (long):


Version 10.0.2558.35231

===============================================================================

BDS2006 Update 2 Hotfix 10a

This Hotfix applies to:

Product: Borland Developer Studio
Version: 2006
Update level: Update 2
Editions: Professional, Enterprise, Architect, Turbo
Languages: English, German, French, Japanese


Description of updates that are included in this hotfix:

This hotfix contains a fix for the source code editor. If the source
code contained
accented or international characters, viewing the code as text and then
returning to
the file format would erroneously reset the source code to default ANSI,
thereby losing
the accented or international characters.

The source code (.pas) might become corrupt, especially if the source
code was
larger than 64K and if the accented or international characters occurred
only after
the intial 64K.

Quality Central Tracking Number(s): 32936, 32844
Internal Tracking Number(s): 241502, 241552

Copyright 2006, Borland Software Corporation. All rights reserved.

===============================================================================

BDS2006 Update 2 Hotfix 10b

This Hotfix applies to:

Product: Borland Developer Studio
Version: 2006
Update level: Update 2
Editions: Professional, Enterprise, Architect, Turbo
Languages: English, German, French, Japanese


Description of updates that are included in this hotfix:

This fix incorporates the following enhancements and fixes:

- The enhancement suggested in QC Report # 26063 to improve the SOAP
deserialization of multiref objects and arrays.

- The WSDL importer now exposes elements with 'maxOccurs="unbounded"'
as arrays and the SOAP runtime handles the conversion to and from XML.
(QC #35512)

- TXSDateTime (and other TXSxxxx types) can now be serialized as XML
attributes (QC #10969)

- The WSDL importer now handles schemas included or imported by the
schema
embedded within a WSDL.

- An uninitialized TXSDateTime will default to the value of
"0001-01-01T00:00:00" instead of
"1899-12-30T00:00:00.000".

- The WSDL published by Delphi applications was updated to be more
compliant with
the style expected by WSDL2Java importers.

- The SOAP runtime properly restores enumerated identifiers that were
renamed
because of conflicts with Delphi keywords or directives.

Quality Central Tracking Number(s): QC #26063, QC #33512, QC #10969
Internal Tracking Number(s): RAID #241798, #241801, #242796

Copyright 2006, Borland Software Corporation. All rights reserved.

===============================================================================

BDS2006 Update 2 Hotfix 10c

This Hotfix applies to:

Product: Borland Developer Studio
Version: 2006
Update level: Update 2
Editions: Professional, Enterprise, Architect, Turbo
Languages: English, German, French, Japanese


Description of updates that are included in this hotfix:

Removes the length limitation on search paths. Specifying a large
number of deeply
nested directories could exceed an internal limit.


Internal Tracking Number(s): RAID #242012

Copyright 2006, Borland Software Corporation. All rights reserved.


===============================================================================

BDS2006 Update 2 Hotfix 10d

This Hotfix applies to:

Product: Borland Developer Studio
Version: 2006
Update level: Update 2
Editions: Professional, Enterprise, Architect, Turbo
Languages: English, German, French, Japanese


Description of updates that are included in this hotfix:

This hotfix addresses the issue of Korean characters in the code editor
initiating
unwanted cold folding and causing access violations.

Quality Central Tracking Number(s): 35357
Internal Tracking Number(s): 242562

Copyright 2006, Borland Software Corporation. All rights reserved.


===============================================================================

BDS2006 Update 2 Hotfix 10e

This Hotfix applies to:

Product: Borland Developer Studio
Version: 2006
Update level: Update 2
Editions: Professional, Enterprise, Architect, Turbo
Languages: English, German, French, Japanese


Description of updates that are included in this hotfix:

This hotfix contains a fix for the VCL form designer to allow the F1
help key
to query the help system for the selected component.

Copyright 2006, Borland Software Corporation. All rights reserved.


===============================================================================

BDS2006 Update 2 Hotfix 10f

This Hotfix applies to:

Product: Borland Developer Studio
Version: 2006
Update level: Update 2
Editions: Professional, Enterprise, Architect, Turbo
Languages: English, German, French, Japanese


Description of updates that are included in this hotfix:

This fix enables all COM\ActiveX menu items and wizards that are in the
Pro version of Delphi.

Copyright 2006, Borland Software Corporation. All rights reserved.

Happy Birthday Delphi!! woo hoo

Today is a big day! Delphi's bday.

Yup, 12 years ago Delphi came up to the market, the coolest and greatest development language on earth came to our lives.

You will see lots of posts on the newgroups and on popular blogs about this, you can read about Delphi Spacely and Delphi Astro, Delphi expansions into Vista and Ajax :).

I will be adding links that talk about the celebration on this post during the day, so there ya go:

Marco Cantú

Saturday, February 10, 2007

A new jmission!!

Well, lots of changes lately, so I haven't being able to blog for a bit.

So, let me fix that.

First, I am now living in Vancouver, yup, work takes you everywhere so now I'm on a mission to make a successful company even more successful.

I'm working again with the mighty Java during the day and during the night as usual on the super powerful Delphi. I'm working lately a lot with 3 different middle tier framework architectures, on the java side, JBoss, on the Delphi side with KbmMW and RemObjects SDK.

It is extremely interesting to see how the concepts of each of those frameworks just repeat themselves on each platform. I still cant understand why things are so not friendly on the Java side, all the functionality is there but there is a huge gap to present things in an easy way to the user.

I like Delphi cause it allows you to easily jump into something and slowly depending on your needs you can look under the hood and get into the complexity of it. Java (Eclipse, even with lots of plug ins) stills presents a very aggressive learning curve. I'm pretty sure the results at the end are fantastic, but still always seems like things are being done the hard way.

There is a big standardization thanks to Sun, XML is everywhere, but is because of those that presenting all these standards to the eye of the developer is still as plain as a text file.

Today I asked a couple of java guys what were the plug ins or they use to develop their methods and other interfaces on JBoss remote services, the answer: we don't, we go into plain code.

No service builder, no nice drop and use components.

I think that is ok, but, I'm aware their are plug ins that make your life easier (Lamboz-JBoss), but at the end of the day the java guys remain like their Linux counterparts, completely old schoolers. They produce great pieces of software but the productivity level is in my opinion low. Two companies and large teams behind their products had showed me this.

My goal is to become good in Java and try to find all the required tools to get as close as I can to the speed of development of Delphi, will I be able to achieve this, maybe not, but it will certainly be interesting to try.

Anyway, I am using a great mix of RemObjects and KbMmW.

I am behind a new idea that I want to implement on the kind of platforms I develop. RemObjects is very easy to use, and provides a great DataSnap integration pack, it is completely object oriented and their plug in system to attach different channels and message packages formats is done in the RAD way, meaning its as visual as it can be. Now, KbMmw presents the fastest memory table in town, plus it shows a great maturity in their framework (Kim has years behind this baby, so, experience talks).

Having licenses for both and using their high points is helping me to build a super scalable beast. I hope to see and post the results soon.

In the meanwhile see ya all later.

Friday, December 08, 2006

Javing my way....

Again, I'm working on the interesting world of Java. Last time i play on the gray side of the moon was 1.3 years ago. On that opportunity Java -> WebLogic -> Oracle was the recipe for sucess (after Delphi obviously ;)).

Now, it is Java -> JBoss -> DB2, ja! nice combo, that could bring up some fatality moves and maybe even a famous friendship key combo. My experience with DB2 is close to zero, but should be similar to Oracle, and JBoss, so far it looks too similar to WebLogic, too soon to tell but we will see.

So back to the topic, lately I've being programming on Javita, and really, it is a nice language, sometimes gets into the same cryptic style as C but in general is acceptable. I have one basic complain so far.

The "switch" statement, requires a "break" line, that sounds to me like a forced move, close to a "goto" kind of move, if we are analyzing different cases, as soon as you found the matching one, you should just continue the execution out of the switch statement, but nope. The guy just goes all the way down if it is not stopped by a nice break. Easy to fix, great, but it caught my attention.

Well, thats it, on a lighter note, we had nice encouraging numbers on TIOBE, increased D popularity up one rank, but not enough to take over the crown of Ruby as the language of the year.

Oh lots of promotions on Turbo Delphis and components all over the world, some of them as down as $200USD for TPro.

Oh, I am still missing a nice post with my experiences with Subversion, it simply rox, really guys, want to use a source control software!, use Subversion. :)

Back to work!.

Thursday, November 30, 2006

I did it again!

I must admit that it was on my plans, really, I was going to buy those components sooner or later, but while browsing on the CodeGear general third party components newsgroup I found an offer i couldn't resist. What was it? well, go into the website or in to the newsgroups and find out, it will be easy to just provide the link eh?

So on the mighty Christmas spirit I bought another fine set of tools for my ongoing home project.

The lucky ones are a set of tools to provide remote assistance to your clients, for example, lets say that your client has a problem with its machine or with the software itself and he is getting a weird error message that doesn't matter how many times he describes it on an email, or through the phone yo simply can't understand what he means or how the error is happening.

Well, the solution is simple, ask him to go to the About option on his menu, click Help and click on the button request Remote Assistance...

On that moment a request will be send to my servers up in T.O. and I will be able to jump in into his desktop after his authorization to view live and under his supervision what is going on with his system. This is in my opinion the ULTIMATE technical support :).

My kudos to the Real Thin Client for such an outstanding job.

Saturday, September 30, 2006

Access to the path "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files..." is denied.

Well, this weekend i spent several hours (lots) setting up our new bug tracking software (Axosoft if you wanted to ask) and out of nowhere we start getting the message :

Access to the path "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\bugtrack\5607edd7\fc4d1071\hash.web" is denied.

everytime we try to access their web version of the product. I tried everything i could, and I asked my dear friend google many times. My problem was that lots of people described the problem, but their solutions didnt work for me.

Finally, this mighty article from the msdn saved the day. Interesting to know is that the problem came up as a combination of us installing asp.net, IIS 6.0 and then promoting the computer to be an additional domain controller. That series of events cause ASP to lost control over their temporary directories.

Who figures eh?

Friday, September 29, 2006

How to determine what version of .Net you have installed.

Well, I ran into this situation. After a quick search i found this simple but effective article in the MSDN network.

That only reminds me of the importance to keep a proper versioning system, on days when using years to determine the version of your program (at least for marketing purposes) is the way to go, we cant forget the importance to keep the traditional x.x.x.x version system going and BUILT into each of the files of your system.

Tuesday, September 12, 2006

Turbo Delphi en Latino America.

This one goes in spanish!

Amigos!

Para aquellos hispanoparlantes en Latino America que quieran comprar sus versiones de Turbo Delphi o tengan preguntas de como obtener soporte de Borland en sus paises, adjunto los comentarios de dos empleados de Borland al respecto de este tema:

"
Hello,

My name is Lisa Flores (lflores@borland.com) and I work in the
Developer Tools Group for Latin America and wanted to let all of our
Latin America and Caribbean customers know that you can indeed purchase
Turbo locally in many countries and in others, directly from the Latin
America/Caribbean sales department. This page will give you your local
purchasing options:

Brazil: http://www.borland.com/br/company/where_to_buy.html

Spanish-speaking Latin America:
http://www.borland.com/latam/company/where_to_buy.html

Caribbean: http://www.borland.com/latam/company/where_to_buy.html


Saludos,

Lisa Flores
Account Manager - Latin America & Caribbean
Borland Software Corporation
831-431-1434"

Saturday, September 02, 2006

A success story of ISAPI, Datasnap and D2006.

A while ago I was hired to extend and complete a very complex ISAPI Delphi web application.

This application was intended to manage high volumes of web requests and responses, with peaks of 55,000 logins per day and around 35,000 transactions per day.

The system is power up by a nice 3-tier architecture using all the DataSnap gadgets available, including a nice implementation of the out-of-thebox load balance and redundancy components included on DataSnap.

Years and several jobs later, a big problem started to show up on moments of high load/volume, a terrible "No more available connections" message start affecting the webservers, the worst part was that the asp wrappers of the ISAPI were fine, so everything pointed to a problem with the dll.

I was contacted to work on this problem, so that is how my adventure started.

Initially the solution was to increased the amount of instances of the DLL that could be loaded in memory. I also tried increasing the IIS back log settings for pending http requests, all this helped but the problem persisted.

The next solution was to increase the number of webservers, this off course helped, brute force did its magic but the volume of requests increased and after some months and the problem showed up again.

After some research, I decided to go the dramatic way, so I ended up upgrading the application to the all mighty Delphi 2006 and its new FastMM memory manager, a new Midas, and the addition of the ISAPI Thread Pool unit.

In order to test if the solution was effective enough without putting at risk the live production system, I setup a nice test environment using the well known opensta testing framework.

The test consisted of 30 virtual users, each user accessing 20 different player accounts, browsing the website, checking their balances and logging out of each account. I ran twice each test against the old and the improved dll.

The results were very good, the response time per request when from an average of a 100ms per request to 25ms per request. (THAT DRAMATIC!)

On the dark side, I got only 6, "500 errors" on the test runs. So on one side I was happy because performance just jumped up, and in the other side I was concerned because I wasn't sure if I was properly addressing the main reason of all this mess.

So I decided to ramp up the test by going up to 100 virtual users and push to the extreme those 60 maximum active modules. The result, simply impressive...

The test ended up doing 12830 http requests to the dll, in the old DLL out of those 12830, 1850 were "500 errors". What "500 error"?, well the famous "not enough available connections". BINGO!

I switched dlls and tried again... GOSH, DELPHI ROX. Out of 12830, only 10 "500 errors". The dll was able to answer most of the requests properly and still in a good time.

Do I have to say more? I can't hide the fact that some nice architectural changes helped a bit, but, FastMM, ISAPI thread pooling and DataSnap, are the perfect combination for web dlls.

Friday, September 01, 2006

Delphi Small Team Pack!

Hey guys,

The DTG is going all the way, in a couple of days www.turboexplorer.com will put their products available for download (including the free Delphi version) and right now you can buy the Delphi Small Team pack, 2 licences with a 20% discount in the Pro, Enterprise, and Architect editions.

Great opportunity for those small high productivity factories out there. :)

Check it out here

Monday, August 07, 2006

Turbo is Back....

Great news!

The Delphi (Development :P) Tools Group is starting its comeback by announcing the return of the Turbo tools. Yeap guys, Turbo Delphi, Turbo C++, all the good ol' friends for all the professional and enthusiast developers out there are BACK with a vengance.

Check this link with the news.

Wednesday, June 07, 2006

Oracle experiences...

In my current job i have the pleasure to work on an Oracle powered environment.

That has allowed me to get enough knowledge to give a personal evaluation of it, compared to the newest MS database server MSSQL 2005.

In summary, MSSQL 2000 has nothing to do against Oracle 9i or Oracle 10g, in that case MSSQL 2000 looks like Access with Steroids.

But when we put in the mix the latest and greatest MSSQL 2005 things change. Under such situations MSSQL 2005 goes along the way of Oracle 9i, but fails to reach the performance and tweaking capabilities of Oracle 10g.

Oracle has put lots of effort on simplify the Oracle installation and management of the database, but still lacks to the easy of use of MSSQL.

My current home project is being developed on MSSQL 2000, but it already pass some initial testings on MSSQL 2005, so, it is almost guaranteed that by the time its first version is out, it will be running on it.

The next step will be to move my ADO components to dbExpress so i can proceed thanks to DataSnap to support Oracle and MSSQL on deployments.

Why picking MSSQL over Oracle after saying that the last one is better? well, simple, easy of use, i need to have the initial version out soon and there is no time to spend on a database migration.

DeadLocks? well that was the big cons with MSSQL 2000, but i must admit that having all those locking problems did help me improving my SQL skills and my general knowledge of the MSSQL engine. What about Oracle? well, so far, it has behave properly, but we havent hit the system with enough transactions to safely say that is better.

What i do know is that Oracle manages a better locking system, If i'm not mistaken it is applied on a row level , now you can specify that manually on MSSQL (2005 has it by default) but come on wouldn't be nice if you dont have to specify your locking hints everywhere in your SQL statements? (yes you have to if you are doing any serious enterprise system).

Now, I'm going back to my duties and i will keep entering more rants on system performance later.

Wednesday, April 19, 2006

Delphi 2006 Update 2 is out!!

Yes guys, the big D got his latest update. If BDS was rock solid, now it is just steel solid.

Download the udpate here.

See what was fixed here.


Enjoy!

Saturday, April 15, 2006

Latest news: New Delphi "DevCo" maybe announced on May 8.

Well, all this is based on news reported on one of the best Spanish language Delphi forum, Club Delphi , a well known spanish blogger and one of the main Borland Software distributors in Europe Danysoft.

It seems that on May 8th, in a conference in Spain, the new company will be announced. The article mentions that the new company will be based in Europe.

The article also mentions that is likely that the new "DevCo" will not be part of a well known buyer but a new and independent company.

The existence of a strong Delphi Market in Europe and also the good and strong anti-monopoly software rules plus protectionist from the European Union will be a plus to help "DevCo" in its way to the top.

Now, is this true? no idea, but May 8th is not that far ago, so i think we can wait a bit and find out.

Delphi Rox!


Wednesday, March 29, 2006

Linux and Oracle.... NOW I really love Delphi.

Well, these days I had to deploy one of our company projects in Linux and Oracle (Just in case, it is not built on Kylix).

The plan was to install Red Hat 4 ES and Windows 2003 server on two different VMWare machines running on my Windows XP computer all linked in a nice virtual network.

It has being a while since I play with Linux, last time I did I used the Mandrake Linux distribution more than 5 years ago, and it wasn't a pleasant experience. But I assume that more than five years later, I will have the closest thing to Windows I can imagine on the penguin environment.

Gosh I was totally wrong. My mission was basically to prove that we can have a full product installation using ONLY the GUI (Gnome /X-Windows), you guys must understand that giving this kind of statement on a fully Java/Sun/Solaris environment is the closest thing to a blasphemy only overcome by the use of Microsoft / Windows related products on our environment (which I'm doing by introducing Delphi :))

Anyway, as a summary of my experience:

* Red Hat 4 installer is great, it was the closest thing to the famous "Next, Next Finish" we are so used to in Windows.
* Soon or later you will have to use the command line.
* Gnome desktop is still far behind Windows.
* Linux guys like to build a mist of mystery on their products. All the things I did in order to install Oracle on Linux can be done on the GUI, *if* someone puts a bit of time on finishing the GUI and adding some of the tricks that can be done only through the command line. (permissions is an example).
* Oracle installer should ask for the root user/pass and do all the required installs without having to stop and ask the user to manually go, change user and run scripts to be able to finish the installation.
* Linux REALLY needs some good RAD environments. (Did I said Kylix?)
* Copy/Paste is a pain, some applications will not recognize the copied items from other apps.
* WARNING!! The File Browser doesn't recognize the files with names .something. This caused me a bunch of issues cause Oracle installers used lots of files with that kind of names. (e.g. .extract_args.
* I ended up copying the files using the command line. If you ask me, that is SAD. (Yes I did enable to view all file types and hidden files, didn't work)

Well, I can keep typing but it is enough, Linux is cool, but gosh, once you work with Windows and Delphi you realized how nice and green are the lands on this side of the computer world.

I can't believe people still pushes for terminals and command prompts, I mean think about it, movies, TV series, internet, everything shows the new generation of developers (kids) that it has to be graphical, kind of "Minority Report" feeling.

Terminals look cool, for all of you hacker lovers, but, it is the 2000's, that is a no no, now days.

Cya all.

Thursday, March 16, 2006

Windows Vista will not use .Net

After all, .Net is taking some time to lift off. The following articles extracted from a good discussion on the borland newsgroups show us how the new Windows operative system ended up not relying on the .Net framework.

http://www.grimes.demon.co.uk/dotnet/vistaAndDotnet.htm

and ...this other ones covering the API and GUI.

http://blogs.msdn.com/greg_schechter/archive/2006/03/10/549310.aspx
http://www.edbott.com/weblog/?p=1272

Personally, I'm more interested on future native Win64 support. If Intraweb is able to catch up and improve its performance (which they did in version 8), then i will not have any other use for .Net (which i think is only useful for web apps for us Delphi developers) in the short term.

Friday, February 17, 2006

Letter from David I to the Brazilian Delphi Community.

A great post to a big community down south, that touches the topic of Delphi spinning into its own company.

Click here to read it.

Delphi 2006 Architect version Trial available!

Try the best Delphi ever. Click here to download the Delphi 2006 Architect Trial.

Thursday, January 19, 2006

Transactional Data Modules on Delphi 2006

Tonight i was working on my project's middletier using DataSnap and i decided to add a new Transactional Data Module, perfect, i click on File / New / Other and select the MultiTier tab... ooops, it only says Remote DataModule!!!

Where is my Transactional Data Module!! Well, it seems that the Wizard didnt make it for the official Delphi 2006 release (as i said officially), BUT... after a quick "let me ask Mister Google" i found this good entry on Borland's Chris Bensen blog. Good stuff it is there, notice that you will have to enter "both" (Free) in the component factory section if you want to specify support for both Single and Apartment Threading Models, the option in the wizard only offers Single or Apartment.

Anyway it seems that Delphi 2006 supports them fully and there is no problem with it. (We already deployed our newly D2006 compiled modules).

Another way to do it is just to open your project with Delphi 7 and add the transactional data module, save, close and go back to D2006. (Hey, i still use the D7 help file :P)

Friday, January 13, 2006

Marco Cantu's eBook Delphi 2006 first draft

I mentioned before on the borland nontech newsgroups that Marco Cantu was planning to extend his Mastering Delphi 2005 book.

Well, here is the link to his initial Delphi 2006 ebook first draft. I can say that Marco's book is great, it is part of a good collection of Delphi .Net books on my office, which i will be waiting to increase with his next book, which i expect to be available when Delphi 2007/2008 comes out.

Enjoy the good reading.


Monday, January 09, 2006

2005 is gone, welcome 2006!

Well, personally and professionally 2005 was a great year for me, i spent my Christmas in my beautiful and warm country, the perfect way to close a good year.

But now, it is 2006, and what better way to start the year than with the BEST DELPHI EVER, yes sir, i am right now installing the Man, the Mighty One, the only Delphi not bashed so far in the non-technical borland newsgroups... Mr. Delphi 2006.

So far so good, i'm installing right now my standard components: JVCL 3.10, SUISkin and ExpressGrid.

If all these guys come up right, then we are ready to move, yup, i'm not thinking twice, i'm going all the way, i'm migrating from Delphi 7. It is worth it and the feedback so far has been A+.

So, people, the time is now, Delphi 3, 4, 5, 6 and 7 users, we have our safe spot is Delphi 2006.

Let the party begin.

Pst. It looks like i will have a lack of sleep this coming days. :)

Friday, December 09, 2005

Danny Thorpe message for the Delphi Community

Post taken from the delphi.non-technical newsgroups. I'm including the text in order to avoid confusions, if you want to see the real text, go to the google newsgroups, it should show up there.


"
Members of the Delphi Community,


As you've no doubt read in other threads in this newsgroup, I have left
Borland to seek new opportunities at Google.

This was not a sudden action. I have tried my best to ensure a smooth
transition for the Delphi team, starting with transition plan
discussions with Borland management more than nine months ago.

Delphi is built by a team, not by any individual. Far greater talent
than mine has come and gone from the team, and Delphi presses on. More
importantly, far greater talent remains in the team, some of it as yet
untapped.

As you may know, my philosphy is that teams should be built to
anticipate, tolerate, and support the comings and goings of individuals
on the team. Everyone will eventually leave the team - either by
choice, or by pine box. To ignore this is childish.

I have full confidence in the Delphi team to continue to deliver the
right stuff to keep Delphi current, innovative, and competitive for
years to come. Though there have been some difficult spots between
myself and Borland corporate management, the internal changes in
attitude and messaging in recent months from Borland corporate toward
Delphi have turned my faith in Borland supporting Delphi back toward
the positive. I'm sure that will only get better as Todd Neilsen
steps in as the new CEO.

I'm also pleased that in some small measure my departure is creating
opportunities for advancement within the Delphi team, and that Borland
management (Boz and Steve Todd) was very supportive of "redrawing the
map" under the guidance of Allen, Michael, Eli, and myself. Several
individuals on the team have been promoted in title and/or in pay as a
result of this change. Many of those have not seen promotion or pay
raises for as long as 5 years. Borland has also committed to opening up
several new positions in the Delphi group in Scotts Valley, which may
be filled with entry or mid level engineering talent. This alone is a
significant reversal of the "No new hires in Scotts Valley" edict
earlier this year by then-CEO Dale Fuller.

I was not snatched away from Borland, and I am not leaving Borland for
lack of money. I sought out Google, and I'll be making at Google
exactly what I made at Borland, which is nicely comfortable but not
excessive. There were other suitors (including the obvious one) but,
quite frankly, Google outmaneuvered them.

Could Borland have bought me back? No, because I didn't leave for
money. Why, then? Opportunity. I'm going to Google to pursue ideas
and opportunities that are simply beyond Borland. I love Delphi, I
know it inside out, but there's a lot more in me than just Delphi.

After 15 exciting years doing a wide variety of things at Borland, it's
time for me to do something /completely/ different.

This is not goodbye. This is just changing channels.

-Danny Thorpe
Engineer, Google.
"

Thanks Danny, your legacy on our amazing development tool will never be forgotten. May the force be with you in your new ventures.


Nos vemos pronto.

Wednesday, December 07, 2005

Danny Thorpe left Borland.

In my opinion one of the smartest guys i have the honor to met, it was on a great developer's three day conference in Toronto where i got the pleasure to listen and share some time with the guy behind the latest improvements on the Delphi compiler.

After 15 years (some people say 20 :P) of working with Borland he is leaving for a new great adventure in Google, helping on the development of lots of new things related to FireFox. Before leaving, he gave the Delphi community a last gift, by helping to provide one of the strongest Delphi versions ever. Delphi 2006.

Borland, the Delphi team and the Delphi community for sure will miss him, i'm happy to know that for a couple of months now, new people is already taking his place. New minds working on the progress of the language, environment, etc that we love so much. In my opinion, the future looks very bright, we have a roadmap, we have a strong Delphi version and we have the chance of fresh ideas coming into Delphi.

Thanks Danny, you are 'Da Man. Enjoy your new venture and keep in touch with the community.

Monday, November 28, 2005

Long nights of development...

Lately i have being a bit unplug from my blogging duties.

The reason, a big personal project i'm trying to pull out. Just for fun, let me extend a bit into it.

It is developed in WIN32 using DataSnap, Indy, the Quantum Express Grid and JVL/JVCL. No other component is allowed :) (well, i need some sound recording, so, im looking for some replacement to the MMTOOLS, if you guys know of any, please let me know).

My Datasnap modules on this occassion sit on Transactional Data Modules on MTS, using Free threading. My previous experiences with it have return amazing performance advantages of using connection and object pooling in coordination with a good load balancing and redundancy techniques thanx to the DataSnap built in load balancer.

Initially i tried to use a very good ntier framework called KbMw, but the learning curve and my short time to bring this project alive stopped me from doing it (once it is up and running i will try to port the project to it).

The Quantum Grid is just amazing, i haven't even scratch the surface of these components and i'm already shocked with the possibilities, if you guys have the budget, go and get them. They support VCL.Net and i'm waiting to see its Express bars working on VCL.Net too.

I still haven't decided what is going to be the web technology i will implement for the web front. ASP.Net? playing safe with nice ISAPI Dll's? or a cool combination of ISAPI DLL's and Ajax?

I need to implement some interfaces between different systems, and DCOM is not an option due to security restrictions among the products, my initial thoughts went to SOAP but recently i've being reading about REST and i think i will give it a shot. I want to thank Marco Cantú on his blog for bringing some light to the topic.

I have to go for now, but, i will go deep into my experiences with all these later on.

Tuesday, November 15, 2005

Delphi 2006 Tour - Toronto

Well, i was supposed to post this a bit earlier, so people can find this information useful, but i am extremly busy at work.

Today, November 15th, Borland Canada will be showing the new features and enhancements of Borland Delphi 2006. An amazing event conducted by Mighty Michael Li.

For more information please visit the Toronto Delphi Users Group.

Hope to see you all there.

Tuesday, November 01, 2005

DataSnap... as good as it gets.

Well, for the last 2 years since i started using DataSnap, i can't stop feeling amazed of how good it is. I know that you guys may say that now its all about .Net Remoting and BDP, but, ladies and gents, DataSnap is extremly versatile and easy to use, and definitly a proven way of implementing VERY effective multi tier systems.

These days i've being using lots of nested datasets in mix with the Quantum Grid, you can't imagine the THOUSANDS of lines of code i'm saving myself everyday with these lethal combination.

I mean it, for the same amount of database operations, we have at work complete hard drives of code in Java. Write this down, it is until you work with a language not as versatile and powerful as Delphi when you realize HOW MUCH YOU LOVE IT.

I must admit that i really like the way KbMw does things, but DataSnap is so integrated into all the Delphi stuff that the idea of migrating all the code to KbMw is something for the long term.

Borland has not stopped the support on DataSnap although i must admit is extremly stable and mature, it is not their main concern, but i feel that its adoption is growing instead of going away, specially on WIN32 systems. I hope we can get some minors enhancements and a firm fix to the multi-procesor issues experienced with socket connections, cause i cant wait to set our systems on some nice MultiCore Opteron processors.

Good night, cya all later.

Sunday, October 23, 2005

24 HOUR DELPHI 2006 MARATHON - BDN RADIO!

Well people, at 12:01 AM Pacific Time.

3:01 Eastern Time, the Delphi 2006 BDN Radio Marathon starts!!

Click here to get more information about the different speakers and schedules for this great event.

I'm taking my headphones to work. :)

Cya all there.

Saturday, October 22, 2005

The Real Costa Rica.

A totally non-Delphi related post.

I'm from Costa Rica, the last 6 years i've being traveling around the world and now i'm in Canada. My country, cause of its touristic potential, is very popular these days, so, browsing the internet i found this website wrote by a US guy living down there.

I love reading the point of view of foreign visitors, usually, if objective, are very entertaining and gives me an idea on how the world may see us, (if they see us :)).

Go here and enjoy reading, is worth it. I laugh a lot on the Odd and Ends section.

Monday, October 10, 2005

New Delphi starting to appear on Borland's website.

Well, the mighty one is starting to show his head out of the egg shell.

For the first images of it, go here or here.

There is still not a public announcement of it, but Borland will start to receive pre-orders in October 17. It will ship out someday end of this year (possibly end of november).

Tuesday, September 27, 2005

Delphi Roadmap revealed!

The delphi roadmap for the next 3 years is up. Great news.

It was displayed at EKON 9 conference.

The Roadmap

  • Dexter (end 2005) will have ECO 3 (with ECO Basic in all Delphi editions), specific support for 64bit .net, a full-blown version of Together for Delphi, focus on performance and quality, Fastcode Memory Manager, SQL Server Unicode in dbexpress, BDP Connection pooling, BDP SQl tracing, BDP Data Hub error reconciliation, new refactories and lots more.
  • Highlander (2006) will support net 2.0 and provide a VCL for .NET 2.0, VCL for Compact Framework, support for 64bit .NET 2.0
  • Delphi for Vista (2007) will include a VCL for Avalon and Indigo support
  • Delphi/C++ for win64 (circa 2007).

* Taken from Marco Cantú notes.

Check a picture of the roadmap taken by Bob Swart.

I dont need to explain more, the picture says it all. :)

VCL becomes again the key factor around Delphi development, with ever changing MS specs, a common ground is needed and VCL give us that.

VCL works with Linux, Win32 and .Net, and it will support CF and Avalon in the coming future.

No need to redesign or alter your applications. woo hoo.

Saturday, September 24, 2005

The first virtual world plague.

In what is to be known as the first virtual world plague, players from the famous Blizard's World of Warcraft game (I'm an addict Starcraft player) suffered a terrible plague that almost wipe out their virtual world population, Orcs laugh while they saw their human counterparts dying.

More information here.

Lol.

Thursday, September 22, 2005

Delphi and LINQ.

Danny Thorpe, Borland's Chief Scientist, just came back from the PDC and express his impressions about LINQ and its future on Delphi.

Take a look at it here.

Promising future ahead. :)

Monday, September 19, 2005

Want to assist to a Borland Conference?

Now you have a nice selection of them, look for your country here, or
take a nice "technical vacation" :)

Can't wait for Dexter.!!!


Ekon 9 - German Developer Conference
September 26-30
Frankfurt, Germany
http://www.entwicklerkonferenz.de/


Borland Developer Conference US
November 8-10
San Francisco, California
http://www.borland.com/conf2005/


Borland Conference Brazil
November 17-19
Sao Paolo, Brazil
http://info.borland.com.br/borcon/


Borland Developer Conference Europe
November 29-30
Amsterdam, The Netherlands
http://www.borconeurope.com/


Borland Developer Conference France
December 14-15
Paris, France
http://www.borland.fr/news/events/index.html

BDNradio: The 8 Hours of InterBase

I'm happy to announce to all the Interbase fans, the next great Borland Radio event.

Please tune in on Thursday, Sept 22nd, 7am Pacific Time.

Don't miss it!!


Check the borland Event section here.

Friday, September 16, 2005

Wednesday, September 14, 2005

Google get in on Microsoft's nerves?

It sounds like payback time for me.

After MS got more than 30 Borland employees through the years, they are suddenly feeling the same brain migration thanks to powerful mighty Google, to the extreme of MS CEO throwing chairs and blessing google in all its aspects. Very entertaining, link here.

Tuesday, September 13, 2005

Borland Developers Conference!!

Very nice introduction to the agenda and speakers of the Borland's Developer Conference this November in San Francisco.

Check this great presentation.

My intention is to assist to the conference, but, it all depends on how some business around that time work out. If they do, then, i will not go :P.

Monday, September 12, 2005

Ebay buys SKYPE!!!!!!

One of the most popular Delphi developed programs Skype is close to be part of Ebay's realm.

The rumors talk about a 3 to 4 billion dollar deal. Hey, thats a lot for a nicely done Delphi development. My kudos to the Skype team, their software is a great example of high engineering.

Oracle buys Siebel!

Well, when i worked for Acer Corporation, i used Siebel. It was a very good system on that time (7 years ago) by now, it is one of the best CRM software packages out there.

Now with Oracle's adquisition of PeopleSoft and Siebel things will change and SAP should start to worry.

The deal was closed with a 5.85 Billion dollars. lol, just that?

More details here.

Also check siebel's website.

Tuesday, September 06, 2005

Brazil a Delphi World.

It is time for Brazil to enjoy the "Extreme Performance".

Aggh, thats the kind of marketing i want to see around here!!

Have an awesome time down there guys!

Saturday, September 03, 2005

DevExpress and KbmMW ... My new toys.

Hi,

Well, i finally picked a Grid for my new project, the favorite after a big response from the borland forum was Dev Express Quantum Grid 5. My comments so far: amazing drag and drop grouping of columns.

On the other side, i'm trying to install, and learn my new KbmMW Enteprise multi-tier framework, so far i'm having problems trying to install it under Delphi 7, it seems to be reconigzing a different version of the Indy components (9 instead of 10). The memory table is working properly, so at least i have one right.

I will keep you posted of my progress with this new powerful toys.

Cya all.

Pst. Allen Bauer post another unofficial patch for Delphi 2005. It is already installed on my computer and it seems to help a lot. Thanks Delphi team, in you guys we trust.

Tuesday, August 09, 2005

Agghh he is really selling Borland out ... :)

More good stuff coming from Mr Bauer, now, another beautiful "use at your own risk" patch, which basically means, as you can imagine, that i'm already using it :D.

Cheers and go HERE! to get it, go soon, available NOW!.

Thanks Allen! Really really thank you.

Mr. Bauer little secret.

Well, it was supposed to be a secret, but, i couldn't manage to keep it like that. :P

Sooo... click here to find more:

Allen Bauer's little secret.

MOOOOAHAHAHAHA!

By the way, D2005 is not giving me much trouble, i'm starting small to medium size projects, and it is going so far, so good.

Quick update.

Hi guys, it is a while since my last post.

I left my previous job (2.7 years), it was an amazing time, lots of good people and i had the opportunity to work like crazy on Delphi 5 and 7. But now it is time to move on.

Now i'm playing lots more with Delphi 2005 for personal projects.
I have lots of new ventures coming and it promises to be a good year, i think i will be buying Dexter (Delphi 2006) by the end of this year.

I should receive the book "Mastering Delphi 2005" this week from Amazon. Lots to learn, i will be moving to a nice learning curve around ASP.Net and ECO II.

In the meanwhile i'm getting knowledge on WebLogic and Java deployment in general as part of a project i have in mind.

Anyway, keep the Delphi hype going... talk to y'all soon.

Wednesday, July 13, 2005

Missed a part of the marathon? no worries!

Go here to listen to previous parts of the marathon so far.

24 HOURS OF DELPHI! - GOING GREAT SO FAR!!

This is a picture of the "recording" studio of the 24 hour marathon.

:) DavidI is doing a great job staying up for soooo loooong.

Keep the good work!!

remember get into it at: http://bdn.borland.com

Tuesday, July 12, 2005

Sunday, July 10, 2005

24 Hours of Delphi -- July 13!!

Well, there are already several blogs talking about this, but we need to make enough noise cause it's an event that you can NOT miss.

The day July 13th, 2005.

This link will give you a complete schedule of activities and the different starting time in different time zones.

I am planning most of the day, specially interested on the Delphi Road maps, and migration stories. So, see you guys there. ;)

Tuesday, June 28, 2005

ECO II Resources...

I will try to add more links about ECO when i found them, but, this compilation should be enough to have anyone moving forward on the "lovely" world of ECO.

Borland:
Borland's Web Page
Borland's Developer Network: Make things fast with ECO II (video)
Borland's Developer Network: Create an ECO Space from an existing Database.
Borland's ECO Wikki

Third parties:
Creating a Blog with ECO.
How to do Things: ECO.
(The entire HowToDo site is built with ECO)

ECO related Blogs:
Malcom Groves
Jonas Hogstrom (Borland)
Jesper Hogtrom (Borland)
(i will suspect they are brothers eh?)
Peter Morris

Newsgroups:
Borland

If you find more, please add comments with their URLs , so other people can use them.

Tuesday, June 07, 2005

ECO II Conference - How was it?

Well, people, there are things that you heard about, but you dont buy it, or you may believe it but you dont think they can be that good, UNTIL the moment you see it.

Well, ECO II is that. The next great thing in Rapid Application Development, in a matter of minutes with a few clicks we had a nice small application with database, GUI, Business logic, etc running without writing a single line of code. Nope, not even 1.

If you know how to do boxes and lines (UML design), thats it! you are on it. It really makes you think of all what you have done all these years :(.

I mean it, it is AWESOME, if you have not seen it go here and get an idea of it. IT'S WORTH IT!

The conference was great, John gave a good overview of D2005. We got a small taste of Dexter (D2006), the compact framework and finally some nice refactoring to keep us happy.

Two lucky participants got D2005 to take home courtesy of Borland Canada. I got a marker :)

Finally, let me thank the Toronto Delphi Users Group, you guys are doing a fantastic job, thank you John for bring up all the goodies and keep us smiling with Delphi and Thank you Borland Canada to support us.

Saturday, May 28, 2005

ECO II Conference - Toronto

The Borlander John Kaster will be here in T.O. giving us a very welcome and needed conference about ECO II. The day, June 6th, location, so far looks like the North York Library as initially planned. For more information visit the Toronto's Delphi Users Group.

I expect a good assistance to this meeting, so, see you all there.

Wednesday, May 18, 2005

Ad Hoc SQL vs Stored Procedures

Well, i had the pleasure to assist to a Michael Li's conference about Security using ASP.Net in Delphi 2005.

One of the topics was the famous "SQL Injection" menace. I felt bad initially cause i use Ad Hoc SQL on my everyday, is extremely versatile, and you can build great search queries at run time. More static operations like reporting, specific updates and very plain searchs on tables are usually perfect places for stored procedures.

Maybe a difference is that i use parameterized ad Hoc sql, never pure text insertion (eg. "select * from users where id = '+id.text+'"), but i must admit that for user validation procedures i use stored procs.

I think that for abstraction of tables in a program, there is nothing better than ad Hoc, I never considered appropiate to have hundreds of sps to manage every single update. Constant changing databases will prove to be a hell for the hundreds of sps that depends from that table that you just changed.

Well, after that conference, i decided to do a little research about this topic and i found a great "good and bad" discussion about it.

Check it here at the Server Side, it brings some light to both sides of the discussion.

Good to read, enjoy.


Pst. btw, I will keep using my ad hoc queries. :)

Friday, May 13, 2005

New delphi Book coming...

The new Marco Cantú's book "Mastering 2005" will be available in stores this coming June.

You can pre order it here!

Based on its content table, it promises to be a great addition to the Delphi library.

Enjoy.

Wednesday, May 11, 2005

Help improving Delphi!!!

Please take some of your time and fill up this survey.

Its a very well done poll, and will definitly help improving the product. Make some time and go for it!.

Wednesday, April 27, 2005

Microsoft feeling the pressure?

I don't hate MS, i really dont. But i support any other software company that gives a different flavor of what we already get from MS.

I love google, and they are doing great against msn search. I love Borland, and they have their ups and downs, but they havent let me down with Delphi. The last example on this, is Linux adoption by goverments.

I found this interesting article about the topic. Enjoy.

Friday, April 15, 2005

Negotiating a contract...

The first time i had a contract job, my contractor practially abused me. :P

Long nights, lots of work. Low money.

After that point, i get sharper when the time for negotiation comes. One guy in the Borland forums post a nice article that talks about the matter, and give TIPs on how to deal with this situations.

I wished i read that before. :P

Wednesday, April 13, 2005

Necessity in Software Design.

I found this very interesting post about what drive us to make decisions.

A the end of the post they applied it to Software design, i like specially the phrase "they have specific goals and will do only the absolute minimum necessary to achieve those goals" when talking about the users behaviour while making a decision.

Sometimes we try to provide all the possible options, and we design with this concept in mind, thinking that it will make our software more complete, at the end, offering all those options waste our development time and they may never be used.




Wednesday, April 06, 2005

We are moving up!!

Based on this ranking Delphi is going up in popularity, usually its ranked in 10th and 9th, but in the last months is going up.

I think it's time for those abandom Classic VB to move to Delphi where backwards compatibility matters!!.

Oh thinking about that, i found this interesting guide about migrating Visual Source Safe projects to StarTeam. A good option if you get the Architect / Enterprise version of Delphi that includes a StarTeam license.

Tuesday, April 05, 2005

Games made in Delphi. COOL STUFF!!

Age of Wonders is made in Delphi.

Want more?, take a look at the finalist from the Delphi Developers Gaming community competition this year.

Click here and start playing

ASP.Net security conference in the TDUG group

Hi people,

Yesterday i went to the TDUG (Toronto Delphi Users Group) meeting, we were initially expecting the visit of John Kaster but, due to out of control personal reasons, he couldn't attend and we had the "just on time" assistance of Michael Li (Management Consultant from Infocan)

Michael gave us an interesting conference about asp.net security, running off course on lovely Delphi 2005. Most of the issues brought up were already known by many, but, it was always interesting to see how all the people (me included) did a mental check of their own projects to see if we were commiting one of the security flaws that Michael was explaining to us. Usually, a simple smile, or a gesture let the rest know the insides of a typical problem in our code (some people just said, 'oh f@ck! i do that).

Anyway it was interesting, the additional info about Michael's scuba shark experiences were also great (supported by video). Finally, Borland Canada was also kind enough to give away a Borland Delphi 2005 architecht version and some cool tshirts. (i do like the tshirts, i love going with those "become a development super hero, use Delphi 2005" to some MS events, really i do :) ).

But hey! now i have a cool blue desk clock courtesy of Borland which i already have on top of my monitor. :D

Thank you guys! good stuff.

And keep up the good work TDUG group.!!

A painless self-hosted Git service

Remember how a part of my NAS setup was to host my own Git server? Well that forced me to review options and I stumble into Gitea .  A extr...