5th December 2006 Update
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) format.
- 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!
November 4th to 5th 2006 - European Shareware Conference (ESWC)
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 panel session:

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 heaters:

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 card:

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 office.
- 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 limited.
- 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 approval.
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 to do.
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 ads are.
Following Dave's presentation, the Sunday afternoon panel answered questions on supporting your users:

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 support.
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 dialogs.
- 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 agencies.
- 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 to shreds:

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.
October 2006 update
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.
5th September 2006 update
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
Case 1
NumberWord = "First"
Case 2
NumberWord = "Second"
Case 3
NumberWord = "Third"
End Select
MyStringFunc = "My " + NumberWord + " Basic Program!"
End Function
Public Sub main()
Dim MyString As String
Let MyString = MyStringFunc(1)
Call Msgbox("Hello World", MyString)
End Sub
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("Hello World", "My First Program")
End Sub
- 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 compiler (vbc.exe).
- Type vbc c:\hello.bas -i"\program files\visualfred\libs" -gfpc to compile the program.
- 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 release.
5th August 2006 update
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.
4th July 2006 update
Here is a photo of the Ubercode standard pack. It is supplied with a CD, Manual and durable case:

6th June 2006 update
- 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.
11th May 2006 update
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.
3rd April 2006 update
- 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 6)
- 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 fixed.
- 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 pages!
March 2006 update
- 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 (6th 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 include:
- 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 code.
- 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.
January 2006 update
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 changes:
- 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!
|