Dominic Smith : Amateur Radio : QSOs

QSOs beta

An explanation of the software that I have written to publish my logs and to give a webpage to each of my QSOs.

Browsing / Searching my logs

You can browse results for a complex log-search (such as 'stations with the prefix F, contacted in February of any year by M0BLF') by constructing a simple page address on my site. You can try this below. Notice how '*' is added as a wildcard if needed, and that '/' in a callsign is converted to '-'. The order of the parts which make up the address is important but only my callsign is mandatory (leaving everything else blank will show you my full log).

http://www.domsmith.co.uk
 /amateur-radio/qsos
/
(required)
/

/

/

/

/


or
PFX-
or No filter

Retrieve QSO Information by QSO ID

At the heart of the service is a unique, permanent, ID given to each QSO. This ID is case-sensitive. If you know a QSO ID, you can retrieve my log entry for that QSO:

http://www.domsmith.co.uk
 /amateur-radio/qsos
/
(required)

About /qsos

The primary aim of this service is to put my log at the centre of my website by ensuring that every QSO that I make has its own permanent, linkable, page automatically generated from my log. The main features include:

  • Forms the basis of both general log-search and contest/dxpedition-specific log-searches on my site.
  • Browseable Contest Logs aid transparency.
  • Produces the DXCC and IOTA tables on this site.
  • Generates end-of-year reports of QSO activity.
  • Embeddable log-search as a widget within Google Wave, etc.
  • I can log from anywhere via mobile internet.
  • Can display contacts as they are made during DXpeditions and contests, helping to reduce dupes.
  • Allows you to request a bureau QSL card for any QSO when viewing the QSO information.
  • If you blog about our QSO, you can link to the QSO record, thereby aiding in the development of the semantic web.
  • Information returned in XDIF with appropriate HTTP status, both aiding AJAX searches and allowing you to write scripts to search the log and extract data. (More technical information)
  • Potential for automatic logging when using digital modes.
  • Many other possibilities for the future, including adding QR-codes pointing to the QSO URL on QSL Cards (see example below), thereby aiding QSL Card validation.
Example of a QR-Code for a QSO URL

FAQs

  1. Where did you get the idea for this?
    The inspiration for this service comes from bbc.co.uk/programmes.
  2. When did you develop it?
    I started development of it in May 2008, and plan to take it out of beta in January 2010. That said, I am sure that development will be ongoing and that it will continue to grow.
    (Update 2-Feb-2010: I did not actually take the service out of beta in January as I am still developing some of the linked data used by the system, and a forthcoming server reconfiguration might well break it temporarily too).
  3. Where can I get the source code?
    I do not release it. I regard this service very much as a proof-of-concept, rather than an anything which others could use. It has been developed for my circumstances and the technology in use on this server. Since I cannot guarantee that it will work elsewhere, I would be unable to support the software if I did release the code. If you are a developer, feel free to email me to ask me questions, though!.
  4. Isn't releasing logs a bad idea?
    The ARRL have acknowledged that they cannot prevent logs from being made available on the internet and so the DXCC rule about this has been lifted. I believe that publishing logs aids transparency in awards and contests and that there are great possibilities if eveyone shared their logs in a standard format. That said, the code does automatically withhold frequencies of QSOs made in the last 30 minutes (to prevent 'self-spotting') and I can also choose to withhold callsigns in DXpedition logs to prevent 'trawling' for QSOs. I also use this for contest logs where the deadline for receiving logs has not yet been reached.

Technical Information

Where multiple QSOs are returned, the page contains a maximum of 50 QSOs. If there are more, you can add a GET request variable to the URL to display a specific page of results. eg. ?page=3 for QSOs 101-150. On pages with multiple QSOs, a <pageInfo> element is added, which contains the current page number <pageNum>, the total number of pages for the query <maxPages> and the total number of QSOs <totalQsos>.

On pages with multiple QSOs, results are returned in date ascending order, except when browsing a whole log for one of my callsigns, in which case date descending order is used. This behaviour can be overridden by supplying ?sort=ASC or ?sort=DESC (for ascending and descending respectively) as a GET request. The value of the <order> element (within <pageInfo>) is either ASC or DESC, confirming the sort direction applied.

All of /qsos/ is blocked in robots.txt to prevent crawling.

This service uses an implementation of the draft xDIF format (XML Data Interchange Format, an implementation of ADIF in XML) to return the log data in a computer-understandable format, which is then transformed in XSLT to make it human-readable. The principle deviations, at present, from the xDIF specification include the fact that the time is never returned, and that if multiple QSOs are found, my equipment and location are not returned. Additionally, the <request_url> element, containing a URL from which a request for a QSL card can be obtained, is sent within the <confirm> element. Once development is reasonably stable, I will post fuller details on the xDIF discussion list. Because of the technology used, the results for multiple QSOs will fail to display in older/mobile browsers without XML/XSLT support. When only one QSO is returned, a special mobile version of the page will be shown to user agents which cannot be positively identified as XSL complient.

Appropriate HTTP status headers are returned (ie. 404 if the QSO is Not in the Log; 400 for a malformatted request, 300 if there are multiple results; 200 if one and only one QSO is found).

In the case of DXpedition logs and contest logs for which the deadline has not yet passed, callsigns and exchanges will not be displayed (unless, in the case of callsigns, you have searched on that callsign). Additionally, to avoid self-spotting, frequencies are withheld if the QSO has been made within the last thirty minutes.

The xDIF returned is also used for the AJAX-based lookups on some DXpedition and contest pages on this site, for example IARU 2008 Log-Search.

If you are interested, you can view the XSLT pages applied to multiple QSOs (HTTP Status 300) and to individual QSOs (HTTP Status 200).