Friday, 8 January 2010

"I didn't know you could do that."

Some tips & tricks that make Wessex Premier easier to use.

  1. Use the "Tab" key to move from box to box on the main form - its been designed to move in a logical order and is quicker than using the mouse.
  2. After clicking "Total Price" hold the cursor over the Moulding ID box and it will give you the Supplier & the Supplier Number - the new WPP4 will also show the quantity needed and how much is in stock too.
  3. Moulding not in the database? - Type "GUEST" into the Moulding ID box, then when you click "Total Price" you will be asked for the width (in Mm) & price (per Mt.) and the program will work out the price.
  4. Want to give the customer a special price? In the new WPP4 you can double-click the total price box and then enter the agreed price (it will be shown in green as a prompt, and blue if the minimum charge has been applied).
  5. Using the "Enter" (Return) key is the same as clicking "Total Price", but quicker.
  6. Press the "Esc" key to clear the form, again quicker than using the mouse.
  7. "Alt" + "R" is the same as pressing the "Reset" button in Wessex Premier & the Full version of WPP4.
All that goes to make the Wessex Pricing Programs the easiest & quickest to use of any frame pricing program.

Friday, 4 December 2009

New Program

I'm pleased to reveal that after 2 years development Wessex Premier Professional will be released at the Spring Fair in February 2010 at the NEC.
It's a major redesign of Wessex Premier, as well as being two programs in one. You can start off with the Basic version which issues prices and just uses the Mouldings part of the database. Then, when ready, you can upgrade to the Full version which keeps track of Work Tickets, Invoices and so on. All the records, labels and values from the Basic version are carried across thus making upgrading as painless as possible.


Above is a screenshot of the main form of the Basic version.
The main form of the Full version will be familiar to all who know the original Wessex Premier. Its layout has proved to be easy to use and understand as well as being versatile.

The Full version has many new features, which I won't detail here except to say that none of the features have been included for their own sake - they all help to make the program quicker, more productive and easier to use.

For those of you interested in the technical details - The program has been written in VB 2008, and uses the .Net Framework 2.0. This enables the program to be restarted programmatically, and I don't need to use a third party control for the menustrip customization.
Perhaps the bit I'm most pleased with is something you hardly notice - the buttons, I haven't counted but there must be about 50 of them in the program. Previously the graded shading on them was achieved calling a sub-routine every time the control was "painted" (ie. many time a second). Now I've written a custom control which does this and more (the lettering moves to indicate the button has been clicked and a dotted line appears when the button "has focus"). By including this new control the final compiled program was some 25% smaller, all contributing to the efficiency of the new program.


We've been using this new version of Wessex Premier in our shop since the summer and have been really pleased, I certainly wouldn't go back to the previous version.
So I look forward to talking about it to people at the Spring Fair.

Saturday, 31 October 2009

A Database tweak


Fiddly things databases - just when you think you have everything just so, something else comes along to upset the balance.

I recently came across one such hiccup (or a least potential hiccup) in the "Mouldings" table of the Wessex Premier database.
The field "Supplier No" is structured not to allow duplicates. Now 99.9% of the time this will make no difference at all, in fact it can be very useful as it means that the mouldings which are duplicated between Wessex & Frinton cannot be duplicated in the program's database records. However, it could be that 2 different suppliers use the same number, or the user may want to show both the Wessex and the Frinton records.

So, how to solve the problem? I tried various programmatic solutions, but none worked consistently. So, given that most users probably wouldn't want to change the database file, what's the answer for those that do?

You'll need to use Microsoft Access (I tried this on Open Office Base, but no joy).
First of all "Export" (copy) the database file (called "V3.mdb") to a suitable location, as it's always best to work on a copy rather than the master file.
Double-clicking the file will open it in Access (assuming that is your default database program). On the left hand side you'll see a list of the tables ("Customers", "WorkTickets" and so on) Double-click the "Mouldings" table to open it. A chart with all the records will be displayed.
In the top left just above the table list is "Views", click this and select "Design View". The main window will now show a list of the fields in the Mouldings table and their properties. (see below)


Select "Supplier No". Below is a list of the properties for that field.
Select "Indexed" and change "Yes, (No Duplicates)" to "Yes, (Duplicates OK)".
"Save" the changes and you're done, all that remains is to "Import" the modified file back into Wessex Premier.

Points to note -

You should regard this "tweak" as one way only, because, once you have added a record with the same supplier number as another record, Access will not allow you to change back.

You change any of the other properties at your peril!

The above screenshot was from Office 2007, be sure, however, to save the database as an Access 2000/2003 file (ie. a .mdb file not a .mdbx file).

The steps in Office 2003 look different, but are basically the same. (If that's not too double-dutch!)



Thursday, 1 October 2009

Backup or C***up?


As you continue to use Wessex Premier you accumulate data in the form of database records. Because we're using this program in the real world these records have a real importance to our businesses. In fact we would definitely have problems if the records suddenly disappeared. At the very least we would have to re-input all the moulding records and as for reconstructing the work ticket records - well, it doesn't bear imagining!

When the program was originally released there was the usual menu option to copy the database file to somewhere and a recommendation in the Help section to do this at least once a week. With 20/20 hindsight this was hugely optimistic.

Although computers and more specifically hard drives have become far more reliable over the years - them can still fail suddenly. In fact many take the view that once a hard drive is 4-5 years old you are on borrowed time.
So, what's the answer?
Of course, there are lots of answers (you knew that was coming didn't you?) and the trick is to find one that suits you.

In the (good?) old days of MSDOS you just got a bunch of floppy disks and copied the whole system onto them. With the coming of Windows that became unrealistic and just backing up (or not) your documents became the norm. With the greater reliability it was (is) very easy to let things slide and not take any precautions at all. Of course, as in other areas of life - take no precautions and you'll eventually get caught out!

After a couple of phone calls from framers telling me their computers had died, was there any way to get back their data? And no, they hadn't taken any copies! Well, I started to wonder how to lessen the worry and let the computer do the work.
The answer I came up with was to get the program to copy the database file to a specified location every time it was shut down (in most framing shops this means at the end of each day). Simple, eh? Of course it requires a bit of thought as to where the file is to be copied. The easiest being a USB flash drive permanently plugged in, or else a second hard drive in the computer (a network place should also be possible, though I haven't tried it). What you don't want to do is to copy the file to the same hard drive, because if that fails it takes your backed up file down too.

There are some points to beware of however, one is that USB flash drives can and do fail - so make sure you have a spare. The other is bit more complicated - suppose for some reason the database file you are using with the program becomes corrupted, when you shut the program down the corrupted database will over-write the previously saved good file. Not a good idea, - so if you suspect your database is not right then the correct action is to copy the backed-up file somewhere else before you shut the program down.


So much for protecting the data produced by Wessex Premier, but what about all the other important documents, photos, movies etc. that accumulate on your computer? Well, the obvious thing to do is copy them to an external hard drive (which are pretty cheap nowadays) or use another solution that I've been impressed with - namely backup to an external server. I've used Humyo (www.humyo.com) and the software they provide (so if you add or make changes to your documents these are uploaded to their servers straight away). This way, if the house goes up in flames it won't mean the lose of years of accounts, letters, pictures and so on. Another bonus is that I can access the account from any internet-connected computer - surprisingly useful.


Wednesday, 12 August 2009

File wars - XML v TXT v Registry


I'm afraid that this is going to be a bit of a geeky posting (you mean the others aren't?) and it's going to concern the advantages of using xml files over text files, but it's interesting, so read on.
Most serious programs need to save data in one form or another and there are lots of ways to accomplish this.
I'm going to divide this data into three types - 1 - Program preferences, 2 - Temporary data created by one part of the program and used by another part, 3 - Data records (ie. relational database)

For number 3 the answer is (relatively) straightforward - use a DBMS (database management system) such SQL Server, MySQL, MS Jet (as used by the Wessex Programs) or similar. All the complex database work is taken care of and there is a wealth of documentation to fall back on. (This may be the subject of a future posting.)
But for type 1 and 2 data, the answer is anything other than easy.
Program preferences traditionally have used the "Registry" to store values.
For those who haven't come across the Registry it is a (big) file where everything from the default Word font to the hardware available is stored. This is a really important file and changes to it could stop your computer working, that said if you (in XP) click "Start" - "Run" and then type "regedit" in the box you will see the registry in all its glory, - don't change anything though!
Preference Data
Now, the first two Wessex programs (WPP1 & WPP2) stored their preferences in the registry (Visual Basic makes this easy to do using the GetSetting & SaveSetting functions), but with Wessex Premier the preferences really got too many to save in this way. Programmers have a responsibility to keep registry entries to a minimum, one reason is that the values become too unwieldy to manipulate as a whole, another is that if the program is uninstalled the entries often remain and clog up the system (I ran a registry cleaning program recently on my laptop and found over a thousand orphan entries).So, what's the alternative? The one I chose was to write a "class"(a discrete piece of code that adds functionality to the program language) which mimicked the GetSetting & SaveSetting functions but instead of saving the values in the registry - they are saved to an XML file which is easy to save, move and copy.
Let's not get too technical here - what's an XML file? XML stands for Extensible Markup Language and can take the form Key - Sub-Key - Value, eg. "Glass" (key) "Standard Glass" (sub-key), "1.2" (value). Thus making it especially useful for data files.
Temporary Data
This use of XML was very successful, so I wondered if I could use this type of file for scenario 2 (temporary data created by one part of the program and used by another)?
In Wessex Premier price & work details can be saved to a file temporarily until the customer has finalized their order, they are then saved to the database - an invoice & work tickets are printed and the files used deleted.
When the program first came out this temporary save was achieved using Text (TXT) files. These type of files have been around for years, the values are separated by quotation marks, (eg "1.2""Landscape" etc). The program knows which value is which by its position in the file (eg 6th value is glass, 7th is job description and so on). All was fine and dandy until you wanted to note the mount margins in inches, such as - 2" t & s 2.25" b. Now the extra quotation marks confuse where one value ends and another begins, the program can't decipher the values and so can't save to the database. Once this problem was pointed out I solved the problem temporarily by not allowing the user to key in quotation marks.
But by using the XML format all this is avoided - instead of dealing with a preference file "user.xml" a file called "jobs.xml" (then "job1","job2" & so on) is saved until needed by the database and then deleted.

If you want to take a closer look at XML files (& see what's inside them) search for "XML Viewer" a small, free program that is easy to use.


Sunday, 2 August 2009

We can work it out


So, just how does a pricing program come up with the final price?
Well, it uses an algorithm (a set of made-up rules) to produce the answer.
The old two-way table sheet (which some framers still use) is a very simple algorithm - add the horizontal and vertical dimensions together, then go down the appropriate column adding in the various components, add VAT to get the final total.
The algorithms for computer pricing are different for each program. Some are closely guarded secrets and are very complex, while others (such as the Wessex Pricing Programs) are open and easy to understand. Because computers can work out millions of calculations a second it is tempting to make the algorithm and its application complex, in my experience this just makes the program too cumbersome to use in the real world.

I have used basically the same core algorithm in each of the Wessex Programs. It has stood up to the test of time (I'm still in business after 24 years!) so I can see no reason to change it. It is simple because (a) the user can stay in control of the pricing and (b) if the program starts to produce unexpected prices it is relatively easy to work out what's going wrong.

The algorithm I use is this - a base cost is added to the variable cost.
There, I said it was simple didn't I?!!



To put some meat on that idea's bones, imagine a piece of glass (say 10" x 8", that is 80 sq. inches) you've decided that you won't cut any piece of glass for under £2.50, and that you're going to charge glass @ 1 pence/sq. inch. So, the sum is quite a simple one 250 + (80 x 1) = 330 pence. Mounts can be worked out in the same way, while the frame itself can be a base cost + perimeter x moulding cost.
Each component can be worked out in this way, added together with VAT etc., all in a fraction of a second and with no arithmetical errors.
With me so far?

Now, if you think about it, by varying the base cost against the variable cost you can make small frame expensive and large frames cheap (high base cost / low variable cost) or vice-versa (low base cost / high variable cost). Most framers of course, go for somewhere in the middle.

So, not only is this algorithm simple - it's surprisingly sophisticated. Most importantly, however, it means that you, the framer, control your pricing, not the program.

Wednesday, 22 July 2009

Gentlemen v Players


Do you have to be a full time programmer to write a commercial program?

This question came into focus recently after reading a report in Art Business Today on the Framing Industry Awards. The article reported a speech made by the winner of the Innovation Award (a Norwegian Visualisation & Pricing program). It was stated that this program was top because it was written by an expert professional programmer, not some "framer with an interest in computers".

Now, I was always taught to "never disparage the competition", but I feel definitely disparaged! (as should the other framer/programmers out there).

The first point I would make is that writing a program is not rocket science, any more than learning a foreign language is. Microsoft (who market Visual Basic that I write in) go to huge lengths to make their product robust and easy to use. The same goes for Borland and their Delphi language that John MacAffee's Preview & Estlite uses.


The second point is that I've more than 20 years experience in writing programs for framers. I've also attended a college course (passing with distinction) and written articles on the subject, as well as being a professional framer for over 30 years. I'm sure that similar experience goes for the other framer/programmers too. So, a bit more than a slight interest in computers then.
As for professional programmers - you've only to look at the many programs that didn't run on Vista to see that sometimes you can be too clever for your own good.
In fact, it is precisely because programming is not our main bread & butter that framers can spend a large amount of their spare time optimising their programs, time that a professional would have to be paid for.

However, the most important point is that programs written by framers for framers are easier and more intuitive to use.
A program can be the most sophisticated, all-embracing package imaginable, but if it gets in the way of your framing or your dealings with your customers - it's useless.
My philosophy is that anyone in your framing shop should be able to give a price/issue a work-ticket, from the person at the top to the Saturday-helper. This is achieved by designing the program to be easy and good to use (see previous posts). This may mean that the pricing (or visualising) algorithm is simplified in order to make things more understandable and unobtrusive to use, but if this means the user can actually understand what's going on in the program - it's a compromise I'll take any day.

You have only to look at the Norwegian website (the memorably labelled www.aditxyz.no) to see that the winning program was written by someone who has never made a frame in their life or had to deal with a customer (or with any artistic sense, but then perhaps I'm just being hyper-critical!).
One of the issues many people have with programs is "bloat", which means that the program contains many features (which you've paid for) that you'll never need (MS Office immediately comes to mind - why not use Open Office for free?). Of course a feature you'll never use is another's must-have, but surely this emphasies even more the need for roots within the framing industry?
So - if you're in the market for framing software - beware and be wise!