After spending couple of days arranging over thirty thousand files into the new folder structure, I spent today going throug Build Automator scripts and editor projects to change paths from the old source paths to the new ones. Tedious, error prone and utterly boring but had to be done!


Tomorrow I will finally get to start setting up the version control.

I'm using the latest builds of Subversion and TortoiseSVN. Yesterday I got a suggestion about using VisualSVN Server as management program for the Subversion repositories. Installing VisualSVN will probably be the first thing I do tomorrow to see how it works and then move on to get the repositories set up. Then it's on to finish setting up the repositories (I have most of them set up already) and get this thing all working nice and smooth!

Once I have all of this up and running, I will do a series of blogs about how to set this up. I am NOT an expert on this and have been fortunate to have some people in the Clarion community help me out, most notably Rick Martin, who did a webinar on this very subject on June 5, 2009 at Clarion Live (View webinar) and another one on August 6, 2010 (View webinar) Rick gave me some good ideas on how to set up the folder structure and I'm very grateful for that!

Why do I need version control? Good question! Stay tuned for the answer:)

Arnor Baldvinsson

Microsoft has just released the first beta build of Visual Studio LightSwitch to MSDN subscribers. You can find it at the MSDN download site under the "New Downloads" section and then under "Visual Studio 2010". The full DVD image download is 507MB.

For more information about LightSwitch visit the Microsoft LightSwitch page. Watch the keynote presentation where, Jason Zander, Corporate Vice President, Visual Studio, announces a new addition to the Visual Studio product line. There are also couple of other videos that go a bit further demonstrating the product, but they all deal with exactly the same scenario so they repeat a lot of stuff.

LightSwitch is a new developer tool that makes creating business applications easy. In many ways it is like Clarion for SilverLight. We are looking forward to taking a good look at this too during the beta cycle and I am downloading beta 1 as I write this!

Arnor Baldvinsson

Apparently my brain kept working on the redirection problem that I blogged about yesterday as when I woke up the morning I had a good clue what the problem was: Long path names. That turned out to be at least big part of the problem. However, it was not quite that simple, it never is! I didn't have time to do a complete research into the problem and nail down everything, but here is my findings and theories.

It appears that the compiler has issues finding files if the path to them includes pathnames that are more than 8 characters long. For example:

C:\Dev\Prod\Utilities\Src

causes problems, but

C:\DEV\PROD\UTILIT~1\SRC

does not cause a problem. But like I said, that is just part of it, as:

C:\Dev\Prod\XPTheme\Src

also caused problem. Either the problem is that there were other paths in the *.INC
line that use long path names (and there were) OR the compiler didn't grasp somehow that

C:\DEV\PROD\XPTHEME\SRC

is a short path name! I'm not sure which it is and didn't have time to figure it out.

Using a macro for any part of the path fixes the problem completely. For example, I created this macro:

DEV=C:\Dev

and then used

%DEV%\Prod\Utilities\Src

and there was no problem at all. So using the macros somehow makes the IDE correctly interpret the path name and probably convert it to a short path and the compiler is happy. When I had cleaned everything up, I ended up with just two macros being defined in my C60EE.ini:

Prod=C:\Dev\Prod
Dev=C:\Dev

I also came to a final consensus on the folder structures I'm using, which seems to be working pretty well so far. The Dev folder has 3 folders now:

C:\Dev\Prod Products. Each product has its own subfolder so it can be easily added to version control. This way the entire product folder can be checked out and committed.
C:\Dev\Projects Non product projects. This folder contains client projects, in-house projects and anything that cannot be classified as a product, free or commercial.
C:\Dev\Source Other sources. This is basically a catch all folder for anything that doesn't directly belong in either of the above. Currently it holds templates and classes that I use in some of my own apps, but are neither a product or a project on their own, nor do they belong to a specific product or project.

With the structure in place I spent most of today copying and moving files from my old structure to the new one and test compiling various projects and products in both Clarion 6.3.9053 which I use for one client project, and Clarion 6.3.9058, which I use for pretty much everything else.

So tomorrow will be the day that I convert all my editor projects to work with the new folder structure as well as my Build Automator scripts. Then I will get this on to a virtual machine and test the structure with Subversion to make sure that it holds up for the version control!

Arnor Baldvinsson

I have spent most of the last week or so getting Subversion version control and TortoiseSVN up and running on our network. I will blog about that experience later, but to cut a long story short I have come to the realization that I have to change the folder structure that I use for my projects and products. They just don't work well for version control at all!

For about 10 years or so I have used a pretty good structure, that goes something like this:

C:\Clarion\Apps\C63\Products\Automator
C:\Clarion\Apps\C63\Products\AutomatorDLL
C:\Clarion\Apps\C63\Products\Utilities
C:\Clarion\Clarion6
C:\Clarion\Shared\LibSrc\Automator
C:\Clarion\Shared\LibSrc\Utilities
C:\Clarion\Shared\Templates\Automator
C:\Clarion\Shared\Templates\Utilities
C:\Clarion\VC\Automator

Rather than being separated by products or projects, the folders are separated by over all contents, such as Apps, Shared, etc. Apps are then first separated by what version of Clarion they are being compiled in, then if they are projects (which are in-house projects), products or client projects.

The problem with this is that the separation of products is at the very lowest level of the folder structure, where as for version control, it should be as close to the top as possible so you can check out and commit the entire folder tree for all realted product or project files at the highest possible level. So I have decided on structure like this one:

C:\Clarion\Clarion6
C:\Dev\Prod\Automator\Apps\C63\Automator
C:\Dev\Prod\Automator\Apps\C63\AutomatorDLL
C:\Dev\Prod\Automator\Apps\VC\Automator
C:\Dev\Prod\Automator\Src
C:\Dev\Prod\Automator\Tpl
C:\Dev\Prod\Utilities\Apps
C:\Dev\Prod\Utilities\Src
C:\Dev\Prod\Utilities\Tpl

This way I can for example check Build Automator out at C:\Dev\Prod and it will work with everything related to that product.

This of course requires a lot of changes to all sorts of files, such as the redirection files (RED files), Build Automator scripts, Editor projects, etc. Definitely not a walk in the park and as I'm kind of feeling my way around this it's very, very different from the way I have worked for many years and the older the dog, the slower it is to pick up new tricks:)

I expected the RED file to be relatively easy, but it has proved to be one of the most challenging; for a reason I'm not yet sure of.

Clarion allows you to set up "macros" in the C60EE.INI file as shortcuts to the folders. This is done in the [Redirection Macros] section in the INI file like this:

Shared=C:\Clarion\Shared
SharedTpl=C:\Clarion\Shared\Templates
SharedImg=C:\Clarion\Shared\Images
SharedIco=C:\Clarion\Shared\Icons
SH_Automator=C:\Clarion\Shared\LibSrc\Automator
SH_Catalyst=C:\Clarion\Shared\LibSrc\Catalyst
SH_CCS=C:\Clarion\Shared\LibSrc\CCS
SH_Files=C:\Clarion\Shared\LibSrc\Filesandstuff
SH_Magic=C:\Clarion\Shared\LibSrc\Magic
SH_Other=C:\Clarion\Shared\LibSrc\Other
SH_Previewer=C:\Clarion\Shared\LibSrc\Previewer
SH_Utilities=C:\Clarion\Shared\LibSrc\Utilities
SH_Xplore=C:\Clarion\Shared\LibSrc\Xplore
SH_LibSrc=C:\Clarion\Shared\LibSrc

My corresponding Redirection file entries looked like this:

*.clw=.\Z-CLW ; .; .\CLASSFILES; %ROOT%\LIBSRC; 
  %ROOT%\3RDPARTY\LIBSRC;%SH_AUTOMATOR%; %SH_CATALYST%; 
  %SH_CCS%; %SH_FILES%; %SH_MAGIC%; %SH_OTHER%; 
  %SH_PREVIEWER%; %SH_UTILITIES%; %SH_XPLORE%;
  %SH_LibSrc%\PowerOffice

*.inc=.\Z-INC ; .\CLASSFILES; %ROOT%\LIBSRC; 
  %ROOT%\3RDPARTY\LIBSRC;%SH_AUTOMATOR%; %SH_CATALYST%; 
  %SH_CCS%; %SH_FILES%; %SH_MAGIC%; %SH_OTHER%; 
  %SH_PREVIEWER%; %SH_UTILITIES%; %SH_XPLORE%;
  %SH_LibSrc%\PowerOffice

This works great and no problems with this at all.

But what I found today was that my changes for *.clw files and *.equ files (Equate files) as well as *.trn seem to work just great, the same cannot be said for the entry for the *.inc files! Currently I have this in my new Redirection file:

*.clw=.\Z-CLW ; .; .\CLASSFILES; %ROOT%\LIBSRC; 
  %ROOT%\3RDPARTY\LIBSRC; C:\Dev\Prod\Automator\Src; 
  C:\Dev\Prod\Utilities\src; C:\Dev\Prod\Checkbf\src; 
  C:\Dev\Prod\ITMB\src; C:\Dev\Prod\ITME\src; 
  C:\Dev\Prod\ITML\src;  C:\Dev\Prod\Outlookbar\src; 
  C:\Dev\Prod\PowerToolbar\src;C:\Dev\Prod\Previewer\src; 
  C:\Dev\Prod\SQLBrowse\src; C:\Dev\Prod\Taskpanel\src; 
  C:\Dev\Prod\WinFix\src; C:\Dev\Prod\XPlore\src; 
  C:\Dev\Prod\XPTheme\src

*.inc=.\Z-INC ; .; .\CLASSFILES; %ROOT%\LIBSRC; 
  %ROOT%\3RDPARTY\LIBSRC; C:\Dev\Prod\Automator\Src; 
  C:\Dev\Prod\Utilities\src; C:\Dev\Prod\XPTheme\src

This works without any issues for the *.clw (as well as the *.equ files, which I'm not showing here) but not so for the *.inc files! The compiler simply will not find *.inc files in the Automator, Utilities and XPTheme folders (there are several more, but I'm concentrating on just those to start with).

However, if I create a macro for the C:\Dev\Prod\Automator\Src and C:\Dev\Prod\Utilities\src paths, and use that macro in the Redirection file, everything compiles without a problem! I.e.

[Redirection Macros]
BA=C:\Dev\Prod\Automator
UT=C:\Dev\Prod\Utilities

*.inc=.\Z-INC ; .; .\CLASSFILES; %ROOT%\LIBSRC; 
  %ROOT%\3RDPARTY\LIBSRC; %BA%\Src; %UT%\Src;

Since I had set up macros for all the *.inc folders last time I guess I never ran into this anomaly before, or maybe that was why I had created all those macros - just can't remember!

Bottom line is that if something weird happens in your redirection file and it doesn't seem to work, try to create a macro in the INI file and see if that helps! Note, that in order to create the macros, you MUST close the Clarion IDE! In the INI the macro does NOT include the %, i.e. BA defined in the INI becomes %BA% when used in the Redirection file.

Arnor Baldvinsson

I was in Barnes and Noble today and bought two books that looked interesting.

The first one is Seth Godin's book "Purple Cow" It is about the importance of making your company or product stand out in the marketplace, just like a purple cow would do in a field of green grass and a flock of brown cows. No matter what line of work you are in, some form of marketing is something that we all do. There are people who are natuarlly good at it and then there is the rest of us who have to work at it! This book has 218 reviews at Amazon.com and get's mixed reviews. Some readers feel it doesn't really deliver much substance and is more a book written to show how smart the author is rather than to show us how to learn from his smartness, which I guess kind of makes him a smartass;) The edition that I have was published in 2009, but I'm not sure when this book was first published. The oldest reviews on Amazon.com are all from May 8, 2003.

The second book is called "Your Virtual Success: Finding Profitability in an Online World" by Alan Blume. This book is about virtual businesses and how to make them work. It is also a lot about marketing. Published on June 20, 2010, this book gets solid 5 stars at Amazon, but only 4 people have reviewed it so far.

I have only just started looking at them and will write about what I thought of them once I'm done reading them:)

My bedside reading these days are some of Patricia Cornwell's Scarpetta books.

Arnor Baldvinsson

1

For several months I have not been able to do much with the new Clarion 7 IDE because of crashes that would happen pretty frequently or about every 10 minutes. Needless to say that is not productive in any way and in fact I have stayed away from it, hoping that Softvelocity would get the IDE more stable. It has been a frustrating experience as I have tried many times to make the IDE work for me, with the only reliable outcome being consistent, yet random and unpredictable crashes or the IDE has simply disappeared without any warning.

Last week I was contacted by a customer who was having some odd things happening with a Legacy (clarion template chain) application in Clarion 7.2 that used our Previewer and asked if I had experienced any issues. I have to admit that I don't do much product testing with Legacy anymore and haven't tested any Legacy apps in Clarion 7. So I decided this would be a good time to create a small legacy app in Clarion 7 and see how it worked. To cut a long story short, an hour and 5 crashes later I had a Legacy app that compiled and worked fine and reported that to my client. But the experience was anything but good. 5 crashes and a feeling that the IDE was very fragile. Admittedly I was running it on an older computer with XP and not much power in it, but still. I also have Clarion 7 on my Vista64 quad core computer with 8GB of RAM and I had experienced exactly the same issues on it as on my XP.

A friend of mine, John Hickey of GoPositive Software and ClarionLive fame contacted me this morning and offered to do a private webinar with me to see if he could help get over those crashes as he has been using Clarion 7 for a while. Arnold Young also chimed in as well so we could all compare settings and see what was going on. We spent an hour talking about the different settings and John shared with us what changes he makes that seem to make the environment much more stable than the default settings that Clarion 7 comes with, which I have been using with not so good results.

After we were done, I repeated my Legacy app creation and while there is a bug somewhere in the Legacy Wizard and/or the TXA import other than that problem (which leads to a crash) the rest went smoothly. No other changes were made, i.e. I did the test on my old XP machine, with the same dictionary, same Clarion 7.2 build (7283) and same steps. So I'm very happy to report that those changes do seem to have cut the random crashes down completely. I messed with the app a bit for about half an hour and C7 was just humming along nicely and no problems in sight. Below I'm detailing the settings that I changed based on John's advice and he graciously allowed me to post this information on my blog. I really hope this may help others who have been having those random, yet predictable and very frustrating crashes, to become productive with the new IDE!

To start, select "Tools | Options" from the main menu. Select the Clarion entry in the list on the left and it will expand to show several nodes of Clarion specific settings and select the "Clarion | Clarion for Windows | General" node as shown below.

Clarion - General

By default the second radio button is checked, "Parse all hand coded projects in the solution and only applications opened for editing" and the "Use lightweight parsing mode" is also checked. The change that we made here was to select the "Disable project parsing" This affects code completion, but this apparently is one of the major cause of crashes.

Next navigate to the "Text Editor | Clarion specific options | Code Completion"

Code Completion

The change we made here was to uncheck the "Enable Code Completion" turning code completion completely off. The Code completion adds quite a bit of time parsing the projects and sources and this seems to be contributing to the instability of the IDE.

Since we are in the Options window, there are two more settings that will improve your experience, while not contributing to fixing the crashes, but since we are already in this window we might as well look at them!

Navigate to the "WINDOW Structure Designer | General" node and in the "Designer Area Options" check the "Show Property Toolbar".

Window Structure Designer

Now repeat in the "REPORT Structure Designer | General node:

Report Structure Designer

When you open the Window designer or the Report designer you will now see the familiar property toolbar from the older IDE where you have quick access to the text, use variable and font settings of the selected control, see below.

Command Toolbar

The final tip on the performance and crashes is found in the application options. So close the Options window and use "Tools | Application Options" from the Clarion 7 main menu. Note that if an application is open, this menu item is disabled.

This will bring up the "Application Options" window.

Application Options

The changes we made there were to turn the Auto-Save OFF by setting the "Auto-save limit (MB):" to zero. This may or may not contribute to the crashes. John has this set to zero while Arnold was using the default setting of 16MB. I have set it to zero to start with.

While you are in there, if you haven't done so already, you might want to consider turning off the "Require a dictionary" checkbox at the top. It is not of much use but can cause problems if you open application that do not have any dictionary as you will not be allowed to save them!

That's it! I will be using these settings to start with but what little I have done today indicates that these changes have added considerably to the stability of the IDE. If you have any further tips or suggestions to improve the stability and user experience of Clarion 7 then please do not hesitate to send me an email or comment on this blog.

PS: If the IDE is indeed stable with those changes I will start to add them back one at a time until I hopefully can put my finger on what and where the instability is coming from and that might help Softvelocity in their quest to fix this.
Arnor Baldvinsson

In the past couple of days we have been getting spam from... well... us...B) Not really, but someone out there is sending spam with the support@icetips.com in the From header, like:

From: "icetips.com" <support@icetips.com>

The real sender is from industryd0463@resaleworld.com or some other name at resaleworld.com, but even this is bogus. I have been in touch with them and they assured me that this email address does not exist on their servers and has nothing to do with them. In my case the URL in the email is pointing to http://www.bims.web.tr/index2.html which can't be resolved, and pinging it says it can't be found, but the .tr country extension belongs to Turkey.

The content of the email is text indicating that your account needs to be attended to with a link, something like this:

"REFERENCE: Your Email to .

You recently sent email to a mailbox that requires authentication of the sender to reduce spam. Before your message can be delivered you must confirm that you are the sender by clicking on the link below and then clicking on the "Deliver" button that will be displayed. Once you have completed this step, no further authorization will be required for future emails that you send to this address.

Please confirm your email by visiting the URL

Thank you for your cooperation in helping us to fight spam.

Regards,
icetips.com Account Services
-------------------------"

So if you get an email like this, you can be absolutely sure that it has nothing to do with us and did not come from us!

Arnor Baldvinsson

Last Monday, Ed Robinson CEO of Aptimize (http://www.aptimize.com) talked at our .NET user group meeting in Redmond, about optimizing web sites. He pointed out one of the tools they use, http://www.webpagetest.org It is very interesting to run this on your site to see how it will perform.

It lists every item that is downloaded, every file, how long it takes to download, how long the server response is etc. It gives you a really good idea how long a website takes to load from various parts of the world as they route the signal through various servers, for example in the United States, Britain, the Netherlands, New Zealand etc. Four things that Ed suggested to make pages faster to load:

  1. Minify css and javascript files and anything else that can be minified. This can drastically reduce the size of those files as it cuts out all whitespace and with js files it also reduces the length of parameters and variable names.
  2. Use sprites for images. This means fewer downloads, fewer roundtrip requests.
  3. Consolidate files that are sent to the browser, such as css and javascript. This also reduces the number of requests to the server.
  4. Compress anything that can be compressed. Here is an article about compression using php or .htaccess Here is an article on how to set compression on the Apache webserver.

I found an excellent writeup of website optimization that explains each of those items in more detail. Ed's talk was only 15 minutes, but by itself, was worth the 7 hour total time for the trip (including waiting an hour for the ferry after missing the last one by 2 minutes;)

We are in the process of slightly redesigning the Icetips website and the plan is to have it up by the end of June 2010 and we will definitely be looking into how to optimize it as much as we can. We all like fast websites and none of us like waiting for a web page to load! It will be an interesting experiment and I hope you will see a much quicker website by the time we are done with it:)

Arnor Baldvinsson