Thursday, November 12, 2009

File Viking - beta 2

The beta for our new File Viking (Drag & Drop File Processor) started last week. The first bugs were found and quickly fixed.

For those who tried beta 1..... Did you find "Settings -> Options -> Move Baskets shortcut"?
For example, use CTRL+SHIFT+/ to "move them". See vikings dancing on your screen - press the shortcut to move those baskets out of the way (quickly press again and again to have some fun!)

New Beta Version

The new beta release adds ZIP support... Drag & drop files on an icon floating above your desktop and they are zipped to
D:\MyBackups\{yyyy}{mm}{dd}\{hour}{min}.zip.
Missing directories are automatically created. Yes, {yyyy} is replaced by 2009.

New: 64 Bit downloads are available.
New: When a basket is processing the files you've dropped on it, it will show you a progress indicator.
Fixed: Crash when repeatedly closing an empty "configure basket" window (Thank you for reporting, Dees).
Fixed: Tooltips on Windows XP (and probably other compatibility issues on XP and Win2000).

Do you want to help Beta Testing

Send me an email (support at fileviking dot com).

Graphics

Below are some mockups Nataly made for File Viking (click for a larger version). I wish I could link to her website, but I don't think she has one yet. Anyway, don't you agree even the mockups look great? Do we really need 64mln "True Color" pictures? Personally, I like this charcoal style. But sure, full color images will be added.

These are exciting days! Expect File Viking early 2010, we will add a lot more features for you before we release!!

Friday, October 23, 2009

Some Quick Notes....

Are you already getting bored by messages from software-vendors telling you their programs are "7" compatible? I won't bore you with the details, but rest assured, our programs are compatible with all current Windows Operating Systems.

In other news...

We now also have a German Language Blog.

Progress on our new File Viking program is great. We hope to have the first beta ready next week. On the website are a few (clumsy) demo video's and helpfiles available for you to look at.

Thursday, October 8, 2009

New WatchDirectory Beta

We just uploaded a new beta for WatchDirectory with the following new features and fixes:

  • Fixed: The Auto FTP plugin would try to "CWD" to the file on the FTP server. This was harmless on most FTP servers, but some servers would abort the upload.
  • New: All plugins that support Dynamic Naming have a new variable for milliseconds: {msec}.
  • New: The Run Any Program plugin can now be used as a SubTask in the SubTask plugin.
  • New: Various plugins that support the File Security settings now also allow you to select "do not change file permissions".

You can find the download on our beta forum.

Sunday, October 4, 2009

WatchFTP 2.2 beta 3

Hi,

We have a new WatchFTP beta on available on our support forum. This new beta supports 4 new Proxy methods and has the ability to rename files it has downloaded.

We expect to release this new version relatively soon, maybe 1 or 2 weeks from now.

Gert

Saturday, October 3, 2009

Why I Love Microsoft

It has become a common issue to give "bad press" on everything Microsoft related, so I thought I should write about my recent experience.

Recently, one of our computers refused to install Vista Service pack 2. I called Microsoft (Yes, I had to wait a long time on the phone, yes, the "telephone menu" was annoying, yes, the music while waiting was not my taste).

First I got contact with, what I believe, was their first line support (the guy that asks you to try to reboot your computer to see if that helps). WOW! This was a good experience: I spoke to a Dutch guy (my own language), he immediately understood this issue was not "reboot-to-see-if-it-helps".

He connected me to their 2nd line support and I talked with Roy for about an hour. He was polite, very patient, and extremely helpful. The funny thing is: the issue with this computer is not resolved yet (I probably need to reinstall), but I still feel Roy helped me a lot!

Oh, I am totally off-topic on this post already, so... If you are a Developer, check out these links, The History of Visual Studio:
part 1
part 2

A really interesting story about VS, how it all started (yes, Visual Basic 1.0).

Sunday, September 13, 2009

File Viking - Status

I mentioned this new program in an earlier post. As always, progress is slower than originally planned - this says more about our planning- than our programming-capabilities, by the way ;-)

Beta Testers

We can still use some beta testers for this new program. Beta testers receive a free copy when it is released, obviously. Interested? We expect to have the first beta available somewhere next month.

If you want to help, send an email to gert@watchdirectory.net, use the subject "SKUNKWORKS - Beta".

Sunday, September 6, 2009

The Truth About Amsterdam

The capitol of The Netherlands, Amsterdam, received some bad press by TV host Bill O’Reilly from Fox News. Two inhabitants of Amsterdam created a website called The Truth About Amsterdam where they defend Amsterdam. Below are 2 video's with their answer to Bill. More videos are available on their website.

The truth about Amsterdam, our response to Bill

Amsterdam versus O’Reilly 2

Tuesday, September 1, 2009

WatchFTP 2.2 beta 2

We have a new beta for WatchFTP: 2.2 beta 2.

New in this beta:

  • Previously, files bigger than 4GB would not download properly.
  • French language support (helpfile is not translated yet).
    We are very interested to here about the quality of this translation. Any remarks you have, please send an email to eric@watchftp.com
  • Separate installers for each supported language.
    Previously, the user interface language was detected by the operating system. There was no way to use the English interface on a German language operating system. This new version will bypass the automatic detection and always use the language depending on the download you have installed.

Download links can be found in this forum post.

Friday, August 7, 2009

Many tasks, little time

The last WatchDirectory update introduced several features that help people who run a lot of WatchDirectory tasks. This post describes them in more detail and introduces a little undocumented feature.

Find Tasks

Version 4.5.9 has a new option to Find Tasks. Use the menu "View -> Find" or the keyboard shortcut CTRL+F to invoke it. Enter any search term and the WD Control Center will search all visible columns for the entered text. All tasks that have a matching text will be selected and optionally scrolled to top.

There is also an option to "Clear previous results". If you deselect it you can do multiple "finds" to select all the tasks you want.

When all desired tasks are selected you can Start them all at once by clicking the "Play" button. If one of the tasks selected is already running you will find the play-button is disabled (grayed). To enable the play-button you must either:

  • De-select the running tasks:
    Ctrl+Click the selected running task to de-select it
  • Force the Play-button to become active:
    Hold down CTRL and SHIFT while you click play. Only the not-running selected tasks will be started.

Group Tasks by Color

Also new: you can assign one of 6 colors to a task. Select one or more tasks and right-click them. Select the menu-option "Set Color" and assign a color to the selected task(s). After doing this for the first time, 2 things will happen:

  • A new column will show
    This column contains a colored "dot" for the tasks. Clicking the column header will sort all tasks by their assigned color.
  • A new color toolbar will show
    This toolbar allows you to quickly select all tasks having the same color. You can disable this new toolbar using the "View ->Toolbars" menu option.

So now you can, for example, assign "green" to all tasks related to "Incoming Customer Orders" and assign "red" to all tasks related to "Fulfilled Orders".

Click the red dot on the new toolbar to select all "Fulfilled Orders" tasks and start or stop them all at once.

Undocumented - named colors

Maybe "red" is not so obvious... You may be wondering, was it green or red I used for "Fulfilled Orders"?? When you hover your mouse over the colors toolbar, the Control Center will read the description to show from the Windows Registry. If not found there, it will use the default (non descriptive) text for this color to show.

If you want easier, intuitive descriptions for these colors, download this file: ColorDescriptions.txt. (you must right-click, "save as" this link, otherwise it may show as rubbish in your browser). Save it to your desktop and open it with notepad (or another plain-text editor). Inside the file you find several lines like:

"1"="Statusbar message for Red\\npopup for red"

(followed by "2"=, "3"=..."6"=, one for each color). Change the text anyway you like, but please make sure it keeps this same format (especially the "\\n" part is important). For example, change this line to

"1"="Select all Fulfilled Orders\\nFulfilled Orders"

The text before "\\n" is showed on the statusbar. The text after "\\n" is shown as a little yellow notification when you hover your mouse over this color.

After you made the desired changes to ColorDescriptions.txt, rename it to ColorDescriptions.reg (ignore warnings from Windows). Now double-click the ColorDescriptions.reg file to import these settings into the Windows Registry. When you restart the WatchDirectory Control Center, you will see your new descriptions.

Just a reminder

If you have bought a version 4.x license from us, you can upgrade this license free of charge. Just install the latest "evaluation version" on top of your current install so it will see your current settings, tasks and license info.

Download here or for the German lanuage version: here.

Saturday, August 1, 2009

Q&A - Load Balancing Humans

Q&A

One of our customers, USA Transcription Services, uses WatchDirectory to automatically send work from clients to transcriptionists. Clients upload work to a directory monitored by WatchDirectory and WatchDirectory sends it to the transcriptionist assigned to the client.

Normally each client has a dedicated transcriptionist, but some clients send a lot of work to transcribe - more work than one employee can handle in a reasonable time. What is needed is to assign 2 transcriptionists to such a client, making sure no work is duplicated (done by both).

Lori, my contact at USA Transcription Services, asked if I knew a way to solve this.

Solution Outline

Instead of sending work directly from the directory where clients upload work, we first need to distribute these files into separate directories, assigned to different transciptionists. These directories can then be monitored by another WatchDirectory task to send the work to the individual employees.

Solution 1 - Sort Files

Use the Sort Files plugin to distribute the detected files to employee folders. Create multiple "sort rules", making sure they are all "final" (so a file is only copied to one employee folder).

This solution depends on the names of the files uploaded by the customers. If you can be sure these names are quite random, you can base the sort rules on, for example, the first letter of the filename. The first sort-rule would use a mask like

*\a*;*\b*;*\c*;*\d*;*\e*;*\f*;*\g*;*\h*

so it copies all files with names starting with a, b, c, d, e, f, g and h (ignoring case), and the second rule would just use * as the mask - matching all files not handled by the first rule.

One problem: the masks as entered for sort-rule one will also match the file C:\Directory\ZZZZZZZZ.TXT because of the mask "*\d*".
So, in this case, it is better to enter the file masks as *directory\d* (or just *ory\d*).

Another problem, it can be quite hard to guarantee all files uploaded by clients have random names. Maybe better to use masks based on the second character of those names:

*\?a*;*\?b*;*\?c*;*\?d*;*\?e*;*\?f*;*\?g*;*\?h*

This post is not intended to go into the linguistic analysis of filenames but I think the letter 'E' is quite common as the second letter in English filenames

Solution 2 - A Batch File that distributes randomly

This is the solution Lori is using now. If you don't need rocket science precision (exactly half of the files go to directory-1, the other half goes to directory-2), this will work fine. Especially if you are dealing with a large number of files to distribute.
This solution uses the Run a Batch File task to start a script that uses the environment variable %RANDOM% to determine the target directory (and thus the employee that transcribes the file).
Here is the script:

SET TARGET1=C:\Uploads\Employee1
SET TARGET2=C:\Uploads\Employee2
rem get a random number (0 - ~32000)
rem and get the remainder of divide by 2, so we have a number 0 or 1 as the result
SET /a REMAINDER=%RANDOM% %% 2
SET TARGET=%TARGET1%
IF %REMAINDER% EQU 1 SET TARGET=%TARGET2%
rem move the detected file to TARGET
MOVE "%WD_FILE%" "%TARGET%"

If a client needs 3 employees, the script can be changed to (changes highlighted):

SET TARGET1=C:\Uploads\Employee1
SET TARGET2=C:\Uploads\Employee2
SET TARGET3=C:\Uploads\Employee3
rem get a random number (0 - ~32000)
rem and get the remainder of divide by 3, so we have a number 0, 1 or 2 as the result
SET /a REMAINDER=%RANDOM% %% 3
SET TARGET=%TARGET1%
IF %REMAINDER% EQU 1 SET TARGET=%TARGET2%
IF %REMAINDER% EQU 2 SET TARGET=%TARGET3%
rem move the detected file to TARGET
MOVE "%WD_FILE%" "%TARGET%"

Solution 3 - No Randomness

Random can be a tricky concept... I will let Dilbert Explain. To guarantee an even distribution of files you need to count the files, please see this forum post.

PS: I found the Dilbert comic only on web.archive.org. It must be somewhere on the official dilbert.com site as well, but I could not find it. If you have a link to the original pic on dilbert.com, please let me know.

August Special - Free Agenda At Once license

If you buy 2 or more WatchDirectory or WatchFTP licenses in August 2009, you can get a free license of this Great Organizer and ToDo-list program. A $40 gift from us to you!

If you are already a customer and buy one extra license (remember to contact us first for a 25% discount), this offer for a free Agenda At Once license is also valid.

Simply forward your order-confirmation email to support@watchdirectory.net, please allow a few days to process your request.

About Agenda At Once

Agenda At Once PIM for Windows combines the best aspects of other personal organizer applications. It's a complete PIM system, integrating to-do management, scheduling and planning, contact and note functions. In addition, it is easy to use and responsive, while being feature-packed but not power-hungry. With its optimally-designed interface, Agenda At Once will rapidly put you in charge of your - or your team's - personal information. You'll be saving time and accomplishing so much more that you'll be wondering how you ever managed without it.

Tuesday, July 28, 2009

8 processors but still waiting

Our new build system has lots of ram and a multicore hyperthreaded cpu: 4*2 processors. It is just unbelievable how responsive this Vista-64 machine is.

We are currently making some changes to the build process of WatchFTP, creating separate installers for each supported language. Previously, we created just one installer with a multilingual executable (thank you Sisulizer for a great localization product). The multilingual approach worked fine most of the time, however when a German customer living in France wants to run the English version of WatchFTP on his Spanish-language operating system it was just not possible. The operating system would select the language to display, not much you could do about it.

Future WatchFTP versions will have the desired display language build-in. Sisulizer will create language specific (German, Spanish etc) copies of the original (English) executables. The display language will only depend on the installer you download from our websites.

Steps in our build process

  1. Build a "release" version of WatchFTP
    (Microsoft Visual Studio 2008 - C++ by the way)
  2. Run Sisulizer to create the multilingual executables
  3. Protect the core components (2 executables)
  4. Code-sign the EXE and DLLs
  5. Run Inno Setup to create the installer
  6. Code-sign the setup file
  7. Test the setup
    When we find issues, fix them and go back to step 1.
  8. When all is OK, a lot of other tasks like uploading to our website etc

The most time consuming step (several minutes) was step 3 (software protection). Not really a big deal, we don't release new versions that often. However, step 7 (test setup) can cause a lot of rebuilds (start at step 1) and the delays for software protection become very annoying.

It gets Worse!!

When we implement separate installers for the different languages we support, we will have to do step 3 (protect) for each language (currently German, Spanish and English. Soon we will have a French version as well).
This will make our already long build process 4 times longer - totally unacceptable.

Our great new computer doesn't help at all because all those steps need to be sequential. We can not code-sign (step 4) before the protection (step 3) is completed. Also, the protection phase is done with a single-threaded program, even if the computer has 1000 cpus, it will only use one of them.

How we solved it

Obviously, the protection step (nr 4) needs to be paralleled. We can launch the protector as a separate process for each of the languages. A first attempt (WRONG!!) in our build batch script:

....
ECHO ==STEP 2 Complete==>>C:\Temp\buildlog.txt
ECHO ==STEP 3 Starts - Software Protection==>>C:\Temp\buildlog.txt
Set LANGUAGE=ENGLISH
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"
Set LANGUAGE=SPANISH
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"
Set LANGUAGE=GERMAN
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"
Set LANGUAGE=FRENCH
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"
ECHO ==STEP 3 Complete==>>C:\Temp\buildlog.txt
ECHO ==STEP 4 Starts - Code Signing protected Executables ==>>C:\Temp\buildlog.txt

(note: the scripts shown in this post are very simplified without error checking etcetera).
The protect.bat file is called and based on the LANGUAGE variable it will protect a specific language version of WatchFTP. The beauty of the Start command is that it will launch a separate console (command prompt) to run the protect.bat script. In the example above 4 language versions are protected simultaneously, each using their own CPU. Obviously, because of disk usage, there is some slowdown - it won't complete 4 times as fast.

A small problem...

In case you didn't realize, the above script is sort of wrong: it continues running while the 4 "Protect.bat" files are not finished yet. So it gladly goes on to Step 4 (code signing), but there isn't anything to code-sign yet. We need to wait for the 4 protect.bat processes to complete before we can continue with Step 4.

And an easy fix

We have a small command prompt program called GdPUtil (Free Download). Please read the description of the -join parameter.

We added the following lines at the end of protect.bat so it signals to the main script it is ready:

....
"C:\Bin\GdPUtil.exe" -join protect%LANGUAGE% 1000
EXIT

And changed the original build script to

....
ECHO ==STEP 2 Complete==>>C:\Temp\buildlog.txt
ECHO ==STEP 3 Starts - Software Protection==>>C:\Temp\buildlog.txt
Set LANGUAGE=ENGLISH
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"
Set LANGUAGE=SPANISH
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"
Set LANGUAGE=GERMAN
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"
Set LANGUAGE=FRENCH
Start "Protecting %LANGUAGE%" "E:\Build\Protect.bat"

ECHO ==STEP 3 waiting for protection to complete ==>>C:\Temp\buildlog.txt

"C:\Bin\GdPUtil.exe" -join protectENGLISH 1000
"C:\Bin\GdPUtil.exe" -join protectSPANISH 1000
"C:\Bin\GdPUtil.exe" -join protectGERMAN 1000
"C:\Bin\GdPUtil.exe" -join protectFRENCH 1000

ECHO ==STEP 3 Complete==>>C:\Temp\buildlog.txt
ECHO ==STEP 4 Starts - Code Signing protected Executables ==>>C:\Temp\buildlog.txt

Now our script works like a champ! Even though it has to do 4 times as much work, it is only slightly slower than it used to be.

Why does this matter to you?

If you have long running scripts, have a good look if they can be broken up like we did in our build script. For example, are you uploading a file to multiple FTP servers in your script? If you have enough upload bandwidth but it is the FTP servers causing the slowdown, this technique can be very helpful.