In 1994 there was a call for help from the swedish contest manager about software for supporting the contest result management for the activity contests. He had inherited an old GW-Basic program from the previous manager but that program no longer worked reliably. I answered this but before any work was done the most immediate problems were solved.
A year later a new request was sent out. I answered again and this time got the assignment to make the software work better. I never even though about upgrading the old software. Instead I started writing something new from start. Earlier the same year Borland had released it's new windows development environment Delphi. We had bought it at work and since I liked it so much I had also got a license for myself, so delphi was the natural choice.
On december 7 1995 the first user interface draft was done and was sent to Derek for review. In the software version management software I wrote the following:
Detta är version 0.0.0.0 Den har skickats till Derek för att få hans synpunkter. Ännu är funktionaliteten begränsad till själva prorammets utseende.
Today i do not know if he got it working. I have no records of any feedback, but that could have been over the phone and even if I keep every single outgoing and many incoming mails I get I do not record whats said over the phone.
Once more he got the old software working again but during 1996 I kept working on it so that it would be ready for serious use by 1997. On 13th december 1996 version 0.5 was shipped and 15th january 1997 version 0.6. With this version only two major things were missing.
Both these points were adressed later that year, even if the EDI support was kind of minimal.
Version 1.0 was relased 5th of January 1998. By that time I was sure enough the software was working. The previous versions had been used to produce results during 1997 and only minor problems had been found. I had also run a lot of tests with fake data to find bugs not easily found during normal use.
Even if minimal EDI support had been available for some time it was not until version 1.1 was released 16th of August 1999 EDI really became useful. It was kind of at that time internet had exploded aswell and people really started using EDI files to send in their logs. This had been a major undertaking and several thousands of new lines of code had been produced to handle this.
Since that a lot of versions have passed but no major rewrite
was done until in 2004. The internal structure had not changed
since the software was new. Borland was dropping support for their
database engine (BDE) which I had been using. I wanted to be able
to add QSO-checking between logs and the code was kind of filled
with DB code everywhere. Something had to be done.
I decided to go firebird for starters. I also decided I wanted a
new DB structure and DB access classes separated from the rest of
the code. To draw the DB-schema I eventually found ArgoUML. Using that tool I
could do serious analysis and managed to get most of what I wanted
modelled. Since it's a freeware tool nothing is perfect but the
developers are active and today it's much better than when I found
it.
For the DB access classes I wanted to use code generation. No
acceptable tools were found to start so I started writing a XSLT
transform that would read .XMI files from ArgoUML and turn into
code. This very soon turned out to be a too large task. So after
some additional looking I found UML-QVT. This tool takes
XMI files and does an initial transform into what they call
XMI-Light. That is a simpler representation of parts of UML and
writing the stylesheets to produce code was now much easier.
It took a lot of work anyway to get stuff working. My family must
have thought I was crazy because even during a party at my sister I
brought my computer so that I could produce code while not
eating... Anyway, on 4th January 2005 version 2.0 was released. The
last two days I had to drop support for the new 28MHz contest which
I had originally intended to support. The rules were simply too
different.
After this I have had to make > 10 fix releases during 2005 due
to errors. Of these the first 5 were during the first 35 days after
release!
As the year proceeded the contest manager started complaining about the program beeing slow. Well, I had checked and seen no problems so what was he really talking about. In June I tried with one of his databases instead of my test data. Well, importing a log took > 3 seconds per QSO. What had happened? I started searching but did not find the reason to a start. It had to be the database itself since I could see that my code was not doing anything bad. But as always it turned out I was to blame. I had used a TIBTable component where I really should have used a TIBQuery component. That caused every single record of a updated tabel to be re-read after an insert. For each QSO stored i would get:
No wonder it was slow. there were >30000 records in that table.
This is were code generation shows its very best strengths. To change this I only needed to change the code templates in the generator and then I could regenerate all those files where the wrong component had been used. Time to fix <1 day. No bugs. Had I done this by hand in each of the 16 files where it's used I would sure enough made a typing mistake somewhere that would not have been discovered until too late, plus that it would have taken much longer to fix.
Log storage times were now down from 3 seconds per QSO to about 0.6 milliseconds per QSO. A log with ~300 QSOs that previously took 15 minutes to store would not take something like 0.2 seconds. Quite an improvement.
During 2006 there were an opening for use of the 3.4GHz band in Sweden. Coneseqently I added it aswell. There were also a few minor fixes during the year, for instance I had made a mistake when it comes to contest dates for the quarterly contest.
For the year 2007 there was only a minor change in the rules regarding yearly results. I have implemented this and also added the 70MHz band just in case. You never know when someone gets a license application through the authorities. The have actually not said it is impossible, just that they will treat it somewhat like 50MHz. You may come in with an application and they will treat it as a commercial application and grant you allocation to specific frequencies of they are not in conflict with other users.