Update (5 December 2006)
Changes for this month include the following:
- Updated the main help file by adding a Contents View. The Contents View opens up in a separate
window and provides a top-level view of the entire help file:
The Contents View is very useful because you can see the entire help structure at a glance. This
change is also a stepping stone to updating all Ubercode help to use the compiled HTML (chm)
- Fixed a bug in the compiler which occurs when floating point literals were compiled under
non-English locales. Thank-you Vincent for providing accurate error reporting - this was a big
help! The bug happened because there were multiple routines for converting numbers to strings, and
some routines were dependent on the locale and others weren't. This caused a problem for
Str() which converts floating point numbers to strings, since the output of Str()
should always use a decimal point to make the string parseable by Val(). This has been fixed
by internal changes to the routines that handle numeric to string conversions, and by using a core
set of routines in all cases. The fix will be distributed as a compiler update, or possibly in the
next upgrade depending on final testing.
- Added extra pictures to the European Shareware Conference (ESWC) write-up. These pictures show
the winner being awarded the ESWC Epsilon Award. Scroll down to the end of the European Shareware
Conference article for a closer look.
- Put some festive Christmas decorations up on the website - Ho ho ho and all that!
- Finally there is a new monthly Ubercode download - download it now
and try the latest release!
ESWC - European Shareware Conference (4 Nov 2006 - 5 Nov 2006)
Over the weekend of the 4th to 5th November, I attended the European Shareware Conference. The conference is aimed at micro
ISV's and Shareware Businesses, and is presented in the prestigious (and expensive!) Crowne Plaza
hotel in Cambridge, UK. Here's a picture:
The conference started with a discussion of Search Engine Optimization. According to Dave
Collins the most important rule is that there are no rules that describe what to do to optimize
your site! After presentations from Gary Elfring and Robert Martin, there was a very interesting
From left to right, the panel consists of Bob Walsh (Moderator), Gary Elfring (Elfring fonts),
Dave Collins (Shareware promotions), Sharon Housley (Notepage), Phil Schnyder (Avanquest), and
Robert Martin (Infacta). The panel talked about the most important opportunities for micro ISVs in
2006 - 2007. These were:
- Customer relationships are not just one-way - it's not just about making a sale and forgetting
the customer. Instead, build a relationship with the customer by keeping them updated, asking for
feedback and including their improvements in new versions.
- Develop and test under Windows Vista. If you're quick to market with a Vista version, you may
even steal a march on your competitors.
- Create real-time feeds based on your name and company name using products like ego-search. You
can be directly notified as soon as someone discusses you, allowing you to reply directly.
Bob Walsh then motivated everyone to direct action by asking what immediate things we would do
as a result of the panel's suggestions. I won a prize of his book "From Micro-ISV to reality" for
committing to test under Windows Vista - thanks Bob! So I have to make a Windows Vista tested
version of Ubercode within the next few months, or Bob will ask for his book back!
Round about this time some of the power sockets failed because of overload, so I couldn't use my
laptop for a while. The overload was because the room was cold so the hotel staff supplied extra
After lunch (which I ducked out of) Tony Edgecombe talked about building customer trust. Some
important lessons are: Always act in the best interests of your customers, offer a Money Back
Guarantee, and use Authenticode to sign your EXE files. I am pleased to report Ubercode Software
currently does at least two of these! Authenticode signing is even more important with Windows
Vista, since unsigned EXEs cause Windows to pop up nasty warnings.
The next session is with Marcel Hartgerink (Wibu) who discussed software protection in detail.
This is one of the more technical sessions and Marcel's product CodeMeter implements protection
based on time, number of uses and number of simultaneous users. The CodeMeter is a hardware based
device (dongle). This should be very secure, since it is based on an encrypted USB key or PCMCIA
This was followed by the afternoon panel session:
This panel consists of Marck Pearlstone (Brainstorm software), Michael Lehman (Microsoft), Sinan
Karaca (Installaware), Thomas Wetzel (Wisco) and Marcel Hartgerink (Wibu systems). Some interesting
things emerged from this panel, including the statement that Dot Net v3 is primarily a marketing
release based on Dot Net v2 plus Windows FX. Also Michael Lehman of Microsoft confirmed the Windows
32 / 64 bit API is still being implemented in the forthcoming Windows Vista release.
Sinan Karaca of InstallAware then showed us his new installer, which is intended for creating
MSI (Microsoft Installer) files for Windows. MSI files are Microsoft's new installer technology
which works under Windows 2000, XP and Vista. Sinan used to work at Install Shield and was part of
a group that left to found their own business.
The final session on Saturday was from Thomas Wetzel (Wisco) who discussed Google ad-words. He
pointed out it's easy to lose money with Google ad-words since these exist primarily to make money
for Google, not for you. Careful use of ad-words requires techniques such as the following:
- Use several words that accurately target your product.
- Use negative words so your ad-words are not wasted on searches using words you don't want.
- Make sure you include a "call to action" with your ad-word phrase.
- Use different advert text and measure the response to different ad-words, as a way of measuring
the effectiveness of the ad-words.
- If you are number one on the ad-word list, you're spending too much money. Reduce the amount
you bid for the ad-words to ensure you are number two or number three.
- Be sure to measure the response to the ad-words, since you need to know whether they are
earning money. If you are not measuring the response, you are wasting your money on ad-words.
- When measuring the response, you should know what the most commonly used keywords are, you
should know your click-through rate and the ultimate conversion rate. Monitor performance at least
once a week.
- Delete any ads with a low click-through rate.
Sunday 5th November - European Shareware Conference
To the surprise of Dave Collins (Shareware Promotions), most people made it to the 9am Sunday
morning session! During this session Dave gave a list of do's and don'ts for websites. Here's the
list of things you should do:
- Customers need confidence that you are trustworthy. The site should include terms and
conditions and money back guarantees.
- Make sure testimonials that can be backed up. Testimonials should not be limited to a separate
page that no-one reads, instead they should be inserted inline with page content.
- Reassure customers by providing a current phone number and address.
- Use product photos, screen shots and photos of real people. This gives credibility and
reassures customers that you have a real business.
- Make sure there are site links on the bottom of a page. If a customer is dedicated enough to
read to the bottom of the page, don't abandon them!
- Explain what you are and what you do, and make sure your site focuses on your product. Speak to
your customers in the language they understand.
- Your website is your main selling tool - if necessary spend money to make it look good.
- Use log file analysis programs to monitor your site.
... and here's the list of things you shouldn't do:
- Don't have too many links per page and don't use tiny fonts.
- Don't use home-designed graphics and don't use the clip-art included with Microsoft
- Don't let your site get out of date and make sure copyright dates are current. "Last updated
July 1997" does not inspire confidence so you should update monthly or more frequently.
- Don't use too much text on a page. Keep pages as clear and as short as possible by removing
fluff words and unnecessary sentences.
- Don't make people hunt around for information about your products. Make sure the website is
clear and focused.
- If visitors want to download a trial copy, don't make their life difficult by asking for
information you don't need.
In the next session Thomas Wetzer (Wisco) discussed software protection. I don't understand why
German software developers are so interested in this subject, but anyway here is Thomas discussing
what to do about software pirates:
By offering them a discount he converts about 20% of them into legitimate users! Here are
Thomas's suggestions for software protection:
- No protection. This is the model used by Winzip up to version 8.1, which allows unregistered
users to continue using the product.
- Make the full version available only after purchase. This can be bypassed by the publication of
the full version by hackers, although this is less likely.
- Offer protection via licence keys. This can be bypassed by hackers posting valid keys, or by
hackers disassembling your licence key validation code and creating their own key generator.
- Partial key validation. To offer defence against key generators, you can have a longer key and
only validate against part of it at one time.
- Continued use after refunds. To protect against this, Thomas suggests keys are time
- Hardware locking. Using this technique, an application can be locked to a particular hard disk
serial number or network card MAC address. This method causes an extra support burden because
computer configurations change over time.
- Product activation. This is the same model used by Microsoft with Windows XP and Office 2003,
where the application "phones home" and validates its details against a central server. Thomas
suggested the application only phoned home during a regular update check, to avoid the annoyance of
making the customer's computer connect across the internet without asking.
- Software protection packages such as Armadillo. During the question session several people said
they found Armadillo's protection was limited, as determined hackers find ways around it.
- Hardware based protection. Use of dongles and hardware locks is about the only way of making
hacker proof applications. But most applications do not justify the expense or customer
inconvenience of hardware protection devices.
A lively discussion then took place about what information could be sent back when an
application "phones home". Thomas said it was OK to send back personally identifiable information,
whereas other people had the view this information should not be sent without customer
My personal views on protection are: (1) The only reliable methods are product activation and
hardware locks (2) it doesn't matter anyway since the only purpose of protection is to keep honest
folks honest, and you shouldn't spend too long in a war against hackers who have nothing creative
At 11.00 the e-commerce panel kicked off:
From left to right, the panel consists of: Jessy Jex (not visible), Phil Schnyder (Avanquest),
Edward Leigh (Osolis), Daniel Kleinburg (Plimus), Guy Wilnai (Plimus), Sharon Housley (Notepage),
Dave Collins (Shareware promotions) and David Boventer (ESWC). David thanked everyone for turning
up, then questions took place about secure ordering. People are frustrated at having to re-enter
credit card details each time when visiting different sites and having to keep track of different
passwords and login details. The panel made the point that Microsoft offered the Microsoft Passport
/ Wallet service which retained credit card details, but Passport had met a lot of opposition.
Another useful suggestion was for developers to have several different prices, for example there
could be a Lite version and a Professional version, or there could be monthly payment options for
more expensive products.
During the lunch break, I spoke to Bob Gibson at Tucows software. He helped fix a problem I had
with getting the Ubercode download listed on Tucows. Many thanks Bob,
and here are the Tucows mascots:
After the lunch break, Dave Collins (Shareware promotions) kicked off at 1.30pm by discussing
Google adwords. He made some intersting points:
- Adwords are all about making for money for Google, not for the advertiser.
- The adwords system is made deliberately complicated with defaults that are biased in Google's
favor. For example it defaults to wide matching, and it hides away options that you can use to
target your adwords.
- It is critical to monitor the success of the adwords, so that you can know which adwords are
generating the most income. It is likely that a small number of ads are generating most of your
income, so you have to know the effectiveness of each adword.
- Make sure you set a realistic daily budget as a safety net.
- Use multiple landing pages, Google doesn't like single landing pages.
- Run a campaign or adwords for at least a week, so you can accurately measure how effective the
Following Dave's presentation, the Sunday afternoon panel answered questions on supporting your
This panel consists of Gary Elfring (Elfring fonts), Tony Edgecombe (Frogmore), Marck Pearlstone
(Brainstorm software), Bob Walsh (My Micro ISV), Thomas Wetzel (Wisco), and Marcel Hartgerink (Wibu
systems). Some interesting facts that emerged were:
- One person in the audience with about 20,000 customers reported they had about 100 support
emails per week. This is equivalent to about 5000 emails per year and means each customer is 25%
likely to contact you per year (very approximately!)
- There was a general consensus that phone support was a luxury for most shareware authors
selling packages in the $100 range. Developers were concerned their time would be used up in simple
support issues. However it's important to have a phone number and to pick up calls from this
number, in case a customer phones up to check you exist.
- This led to a related issue - how much support should users get? There is a viewpoint that any
support issue is a problem in your software, so all support issues are important and should be
addressed. According to Bob Walsh, a request for technical support is a sales opportunity and a
chance to establish contact with a user and show the credibility of your business. I agree with
this, and all licenced Ubercode customers are entitled to full technical
After the mid-afternoon coffee break, Michael Lehman of Microsoft presented Project Glidepath.
This project is aimed at micro ISVs to help them move forwards to Windows Vista. Here we have
Michael at the start of his talk:
Project Glidepath helps developers with the following:
- It offers documentation and help files to assist developers using the classic Windows API to
port to Vista.
- There is a Project Glidepath community which discusses Vista development issues. Also the
Project Glidepath spotlight focuses on particular ISVs who are porting their code to Vista.
Spotlight requires developers to be using the new dot net v3 libraries, also it requires developers
to use the new task based dialogs (instead of MessageBox) and to use the new Open file
- Windows Vista developers can be listed in the Windows marketplace, which is an on-line
collection of Windows applications that can be downloaded. Also Microsoft have a regular micro ISV
spotlight, where a particular product is given focus for a few days.
- The Windows Vista Logo is available at two levels. The "Works with Windows Vista"
self-certification is free, and external certification is available for a fee from external
- It offers extension packages to Visual Studio 2005 Standard Edition. These extensions help
Borland Delphi and Visual Basic v6 developers adapt their programs to work under Windows Vista. As
far as I can tell, extensions are blocks of managed code that implement the new parts of Windows
that work differently in Vista.
The final session for the day is a website critique offered by Dave Collins (Shareware
Promotions) and Bob Walsh (My Micro ISV). Here's a picture of Dave warming up to rip someone's site
Several people (including me) volunteered to have our sites critiqued. Dave offered useful
suggestions to everyone prepared to volunteer their sites, and I think he was disappointed that
none of the sites were truly terrible!
Sunday evening - ESWC Awards
After the conference was over, the Epsilon Award was given to the author of the best shareware
program. Here is David Boventer, the efficient and friendly ESWC chairman, deep in conversation
with the Lord Mayor of Cambridge:
The Epsilon Award was then presented to Alcohol-Soft.com for their useful CD / DVD backup
software. Here is a picture of the presentation of the award:
Well, that's enough about the conference. I learnt a lot during this conference, and would like
to say a big Thank You! to everyone who helped me and who gave me feedback. If I have missed
anything out or got any details wrong, contact me and I will fix it.
Improvements to Basic compiler (1 October 2006)
Changes for this month include the following:
- Added more sections to the Technical Support area, in particular to
address multi tasking.
- Provided an update of the Basic compiler. You can download and install the Basic compiler as
described last month.
- I am still deciding the best approach for Ubercode Basic. There are two potential approaches:
(i) Create a version of Basic that is as close as possible in terms of syntax to Visual Basic,
warts and all. (ii) Create an improved version of Basic with the "language warts" removed, and also
a syntax converter that converts Visual Basic into improved Basic. On balance I prefer option two,
especially if the conversion can be made automatic.
Prototype of Basic compiler (5 September 2006)
At long last, a prototype of the Basic compiler is available. You can compile and run the
following Basic program:
' HelloWorld Basic program
Function MyStringFunc(Byval number As Integer) As String
Dim NumberWord As String
Select Case number
NumberWord = "First"
NumberWord = "Second"
NumberWord = "Third"
MyStringFunc = "My " + NumberWord + " Basic Program!"
Public Sub main()
Dim MyString As String
Let MyString = MyStringFunc(1)
This is standard structured Basic. The program starts at main, it declares a string
variable MyString, then calls a function and copies the result into the string variable. The
call to Msgbox displays the resulting string. You can make this work as follows:
- Download and install the Visual Fred Trial Pack.
- Download vbc.exe from the same download page and copy it into the c:\program
files\visualfred\bin folder (both downloads are free of charge and you don't have to register
or give your email address).
- Create a simple Basic program. You can cut and paste the code above and save it as
c:\hello.bas. Or if you want something even simpler, try this:
Public Sub Main()
Call Msgbox("My First Program")
- To compile the program, open a command prompt (DOS box).
- Type cd c:\program files\visualfred\bin to change into the folder containing the Basic
- Type vbc c:\hello.bas -i"\program files\visualfred\libs" -gfpc to compile the
- Type c:\hello to run the example.
The current limitations with this release are: it can only compile one file at a time, it is not
fully integrated with the Developer Environment, and some of the library functions do not have the
correct names (eg Strupper instead of Ucase). These limitations will be fixed in the next
Update (5 August 2006)
Progress has been slow over the last month, since I have to find a new place to live. My
flatmate is leaving Jersey (one of the UK channel islands) and is returning to London. I can't stay
in the same flat because I wasn't born in Jersey so I am forbidden from renting property. Instead I
have to find expensive "non-qualified" housing, which
has no rights and from which you can be forcibly evicted by
the police with no notice. This violates the European Convention on Human Rights, which explains
why Jersey has not ratified it 6 years after it
first appeared on the statute books. As you can see from this friendly community sing-along,
Jersey doesn't really want you here unless you're a tourist:
Jersey Evening Post, 8th April 2006
You can tell the locals because they are the ones smiling. On a more positive note I have
prepared new downloads of the Ubercode Trial Pack which incorporates
the latest minor changes and bug fixes. Other changes include:
- Registered customers can download the latest full release directly from the website. Thanks to
Roy Scott for this idea!
- I haven't spent as long as I wanted on Ubercode Basic. But as a result of taking a step back,
areas of similarity and difference to Microsoft Visual Basic have become clear.
- Run Time Library. All functions, subroutines, methods and properties will be the same as
in Microsoft Visual Basic - here is a full list.
However the initial release of Ubercode Basic will not include some of the more obscure functions,
primarily the financial functions. I prefer to get version 1 released first and will include the
more obscure functions later on.
- Data types. All Microsoft Visual Basic data types will be implemented using the same
type name. In some cases types will be identical bit-for-bit (eg 4-byte integral types), in other
cases the types have the same name but a different internal structure (Datetime, UDTs).
- Objects and events. To start with, only the intrinsic Microsoft Visual Basic control
objects will be supported. The objects implemented by ActiveX will be implemented as additional
intrinsic controls later on. Also the implementation of Ubercode Basic events will make them
portable to Linux later on, which means some of the more obscure events may not be included.
- ActiveX. ActiveX objects pose the biggest problem, since Ubercode Basic will run under
Linux as well as Windows, but ActiveX is not supported under Linux. What I will do is recode the
ActiveX controls as intrinsic controls (see above) and eventually provide support for using COM
objects under Windows.
- Syntax. The Microsoft Visual Basic syntax is difficult to formally define using a
language grammar. For example brackets are optional round parameters, brackets round ByRef
parameters cause them to be evaluated and to be passed by value, type declaration characters are
optional and cause semantic differences, all of which confuses beginners. Therefore Ubercode Basic
has a much simplified syntax, and includes a pre-processor that automatically converts 'warty'
Microsoft Visual Basic into Ubercode Basic (this happens behind the scenes so you don't need to
worry about it!).
- Technical Support. After Microsoft dropped support for Visual Basic, businesses are
concerned because they don't know whether to continue using it or whether to undergo a massive
re-write using VB.NET. Therefore Ubercode Basic includes one year's free support which can be
extended to three years and renewed thereafter.
- Portability. Again, to reassure businesses that have made a large investment in
Microsoft Visual Basic, there will be a portability guarantee. What this means, if anything in
Microsoft Visual Basic doesn't work in Ubercode Basic, it will be added to Ubercode Basic as a bug
fix, or in a new release, or a work around will be provided. The longer term objective is, anything
possible in Microsoft Visual Basic will be possible in Ubercode Basic.
- Developer Environment and Compiler. Ubercode Basic will share the existing Developer
Environment with Ubercode, and as a step in this direction, syntax highlighting for both languages
exists in the Developer Environment. Also Ubercode Basic will use a compiler, meaning Basic
programs can be compiled to proper EXE files.
- Not a Clone. Ubercode Basic will not be a clone of Microsoft Visual Basic -
cloning Visual Basic would be very difficult from a legal and technical viewpoint. Instead Ubercode
Basic will be compatible with Microsoft Visual Basic, and will be an easy upgrade path for existing
Visual Basic programmers.
Update (4 July 2006)
Here is a photo of the Ubercode standard pack. It is supplied with a CD, Manual and durable
Update (6 June 2006)
- There are new Trial Packs for both Ubercode and Visual Fred
(Visual Fred is a beta product largely compatible with Visual Basic Version 5 and Version 6)
- This month the main development tasks have centered around the compiler. I have changed the
internals to make it possible to compile both types of input code from the same compiler core. This
task has proved somewhat complicated and has taken most of my efforts this month!
- There is an interesting review of
Ubercode at scottserver.net.
Update (11 May 2006)
It's time for another photo so here is the office where Ubercode is developed. The computer is
one of several in the room, connected via a 100mb network. The network is for testing Ubercode
under different versions of Windows on different makes of computer. I have tested Ubercode under
Windows 95 / 98 / ME, Windows 2000 and Windows XP. The electronic equipment on the right used to
belong to my father when he was a practicing radio amateur (call sign G3OGR). You can see a Yaesu
FT101, Wayne-Kerr signal generator and an oscilloscope I constructed myself.
I hope that satisfies everyone's curiosity! The other changes for this month include:
- A new download of the Trial Pack is ready. This is free to
download and intstall, and it does not require product activation or registration.
- The Technical Support database has been further improved. Pages have
been re-named so they match their purpose, and more pages have been added on many different topics.
There are now over 150 topics in the database.
- New functions ArraySort and ListSort have been added to sort arrays of strings
and lists of strings.
- The debugger has been improved to show the current length of dynamic strings and the current
bounds of resizable arrays. Also it shows the maximum size of fixed size strings and the bounds of
fixed size arrays.
Update (3 April 2006)
- There is a new Trial Pack download for both Ubercode and Visual
Fred (Visual Fred is a beta product largely compatible with Visual Basic Version 5 and Version
- An improved version of Meminfo is available which correctly reports the amount of free
memory when run on computers with more than 2GB of virtual memory. Before this, a signed integer
overflow occured, which incorrectly reported memory over 2GB as a negative value. This is now
- The Technical Support pages have been completely re-worked. The new
support site includes the FAQ, information on Getting Started, questions about the web site,
technical papers and all other documentation. Take a moment to visit the new improved support
Update (1 March 2006)
- A new "Labels" program has been written, for printing labels on inkjet and laser printers. This
program lets you choose the size of the labels, the number of labels, other details like the
colours and fonts, and then prints the labels. This is useful for address labels, registration
stickers and so on.
- To run the program, download the latest Trial Pack and look for
the Labels example. The download does not require your email address, or registration, or
internet activation. At Ubercode Software we believe you should be free to try our new software
without spending time filling in forms.
- Also there is another Visual Fred beta - this is the new version of Basic intended to be
largely compatible with Visual Basic Version 5 and Version 6.
- There are downloadable and packaged versions of all Ubercode software. This has made it
possible to reduce the price of the downloadable packages.
International Developer Article (6 February 2006)
The main activity this month has been preparation of an article for the International Developer magazine. This magazine has
interesting articles about software development and other related issues. Other changes
- Work continues on Visual Fred - the compiler for this language will be a modified version of
the current Ubercode compiler, and the two languages will share the same run time library code. By
doing this the two languages (Ubercode and Visual Fred) will share well over 90% of their
- A new Trial Pack download is ready. This can be downloaded and
installed free of charge without needing to register or needing to provide your email address.
Update (1 January 2006)
Happy New Year! The core Ubercode software is working reliably under Windows XP and all previous
versions of Windows (back to Windows 95). Other recent improvements include the following
- A new download of the Trial Pack is ready - this includes some
extra example programs.
- Another Visual Fred beta has been added to the website. This is an experimental version of a
language intended to be largely compatible with classic VB.
- The pricing structure has been changed - there are now Download-only and Packaged versions of
all Ubercode software. This has made it possible to reduce the price of the Download packages.
- Removed the Christmas decorations from the website!