{"id":34039716,"url":"https://github.com/mbridak/winterfielddaylogger","last_synced_at":"2026-04-06T02:01:31.786Z","repository":{"id":40568804,"uuid":"322134596","full_name":"mbridak/WinterFieldDayLogger","owner":"mbridak","description":"Winter Field Day logger written in Python 3 using PyQt5","archived":false,"fork":false,"pushed_at":"2025-10-07T01:38:13.000Z","size":298690,"stargazers_count":11,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-03-14T04:44:05.012Z","etag":null,"topics":["adif","amateur-radio","amateurradio","arrl","cabrillo","cloudlog","field-day","ham-radio","linux","logger","logging","n1mm","pyqt5","python","python3","radio","wfd","winter-field-day"],"latest_commit_sha":null,"homepage":"https://mbridak.github.io/WinterFieldDayLogger/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mbridak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://paypal.me/k6gte"]}},"created_at":"2020-12-17T00:17:31.000Z","updated_at":"2026-02-10T20:51:48.000Z","dependencies_parsed_at":"2024-03-03T02:47:36.647Z","dependency_job_id":null,"html_url":"https://github.com/mbridak/WinterFieldDayLogger","commit_stats":{"total_commits":424,"total_committers":2,"mean_commits":212.0,"dds":0.05660377358490565,"last_synced_commit":"190e4192ae72f0c148c74b36ddd3163d534f1e6d"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/mbridak/WinterFieldDayLogger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbridak%2FWinterFieldDayLogger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbridak%2FWinterFieldDayLogger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbridak%2FWinterFieldDayLogger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbridak%2FWinterFieldDayLogger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbridak","download_url":"https://codeload.github.com/mbridak/WinterFieldDayLogger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbridak%2FWinterFieldDayLogger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31456664,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adif","amateur-radio","amateurradio","arrl","cabrillo","cloudlog","field-day","ham-radio","linux","logger","logging","n1mm","pyqt5","python","python3","radio","wfd","winter-field-day"],"created_at":"2025-12-13T21:46:45.968Z","updated_at":"2026-04-06T02:01:31.779Z","avatar_url":"https://github.com/mbridak.png","language":"Python","funding_links":["https://paypal.me/k6gte"],"categories":[],"sub_categories":[],"readme":"# K6GTE Winter Field Day logger (PyQt5)\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)  [![Python: 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)  [![Made With:PyQt5](https://img.shields.io/badge/Made%20with-PyQt5-red)](https://pypi.org/project/PyQt5/) ![PyPI - Downloads](https://img.shields.io/pypi/dm/wfdlogger?label=PYPI-Downloads\u0026logo=pypi)\n\n[Winter Field Day](https://www.winterfieldday.com/) is a once a year 24hr\nemergency preparidness event for radio amateurs (Hams). During the event, we try\nand make as many radio contacts with other Hams in a 24 hour period. Bonus\npoints are awarded for operating outside or using alternate power sources, such\nas battery/solar/wind. You can find out more about Winter Field Day by visiting\nthe [WFDA](https://winterfieldday.com/). You can find out more about amateur radio\nby visiting the [ARRL](https://www.arrl.org/).\n\nThe logger is written in Python 3, and uses the PyQT5 lib. Qt5 is cross\nplatform so it might work on everything. I have tested it on Linux, Rasperry\nPi OS and Windows 10. This code is based off of a logger I had done earlier\nusing Python and the curses library wich can be found\n[here](https://github.com/mbridak/wfd_py_logger) and one written for ARRL\nField Day [here](https://github.com/mbridak/FieldDayLogger).\n\nThe log is stored in an sqlite3 database file 'WFD.db'. If you need to wipe\neverything and start clean, just delete this file and re-run wfdlogger\n\nThe logger client will generate a cabrillo for submission, An ADIF file so you\ncan merge contacts into your normal Log, and a Statistics file with a band mode\nbreakdown.\n\nThe server if used, will generate a group cabrillo file to submit.\n\n![Snapshot of main screen](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/loggerscreenshot.png)\n\n## Table Of Contents\n\n- [K6GTE Winter Field Day logger (PyQt5)](#k6gte-winter-field-day-logger-pyqt5)\n  - [Table Of Contents](#table-of-contents)\n  - [Caveats](#caveats)\n  - [Recent Changes](#recent-changes)\n  - [WB8ERJ's blog writeup](#wb8erjs-blog-writeup)\n  - [Installing, Updating, Removing Client](#installing-updating-removing-client)\n  - [Running Client](#running-client)\n  - [The Server](#the-server)\n    - [Server install](#server-install)\n    - [Server Documentation](#server-documentation)\n  - [What to do first](#what-to-do-first)\n  - [Logging](#logging)\n  - [Features](#features)\n    - [Radio Polling via flrig or rigctld](#radio-polling-via-flrig-or-rigctld)\n    - [Cloudlog, QRZ, HamDB, HamQTH useage](#cloudlog-qrz-hamdb-hamqth-useage)\n    - [N1MM packets for Node-Red Dashboard](#n1mm-packets-for-node-red-dashboard)\n    - [XPlanet marker file](#xplanet-marker-file)\n    - [Editing an existing contact](#editing-an-existing-contact)\n    - [Super Check Partial](#super-check-partial)\n    - [Section partial check](#section-partial-check)\n    - [DUP checking](#dup-checking)\n    - [Autofill](#autofill)\n  - [CW](#cw)\n    - [CW Settings](#cw-settings)\n    - [CW Macros](#cw-macros)\n    - [CW Macros (Run vs S\\\u0026P)](#cw-macros-run-vs-sp)\n    - [cwdaemon speed changes and stop sending](#cwdaemon-speed-changes-and-stop-sending)\n  - [When the event is over](#when-the-event-is-over)\n  - [Group / Club logging](#group--club-logging)\n  - [Server configuration](#server-configuration)\n  - [Client configuration for groups](#client-configuration-for-groups)\n  - [Chat Window](#chat-window)\n  - [How to know the server is there](#how-to-know-the-server-is-there)\n  - [Logging reliability](#logging-reliability)\n  - [Generating the cabrillo file](#generating-the-cabrillo-file)\n  - [I'm sure there are short cummings](#im-sure-there-are-short-cummings)\n\n## Caveats\n\nWFD only has a generic digital mode designator 'DI', which gets exported to the\ncabrillo file. But ADIF and CloudLog needed something else, So I Chose RTTY.\nFeel free to change it to what ever you will use. Just search for the two\nplaces in the code 'RTTY' is used and Bob's your dads brother.\n\n## Recent Changes\n\n- [24.2.19] Fixed the fix for the datetime.utc deprecation. Older Python versions work again.\n- [24.1.27] Change band/mode when dropdowns are changed. removed some deprecations.\n- [23.2.3] Added visual cue as to validity of logged class and section.\n- [23.1.30] Changed Cabrillo tag 'CONTEST' to WFD.\n- [23.1.28] xplanet markers not generating.\n- [23.1.27] Fixed order of CW macro buttons.\n- [23.1.23] Visual tweaks\n- [23.1.20] UI now resizable.\n- [23.1.14] Safer access to dict keys.\n- [23.1.14] Added app icons.\n- [22.12.28] Repackaged for pypi pip installation.\n- [22.12.28] Removed use of BeautifulSoup and lxml. Migrated to xmltodict.\n- [22.12.27] WFDA preferres `DG` as the mode indicator for digital.\n- [22.12.16] Changed the RAC sections for 2023. Thanks for the heads up WB8ERJ!\n- [22.11.12] 2023 scoring and antenna bonus.\n- [22.10.13] Added N1MM XML status packets. So you can use [Kyle AA0Z's Node-Red dashboard](https://github.com/kylekrieg/Node-Red-Contesting-Dashboard).\n- [22.10.9] Added a group contact aggregation server. So multiple clients can participate in WFD together.\n\n## WB8ERJ's blog writeup\n\n[Mike's Tech Blog WB8ERJ](https://mikestechblog.com/how-to-install-winter-field-day-logging-software-for-raspberry-pi/)\n\n## Installing, Updating, Removing Client\n\n```bash\n#install\npip install wfdlogger\n\n#update\npip install -U wfdlogger\n\n#remove\npip uninstall wfdlogger\n```\n\n## Running Client\n\nIn a terminal type:\n\n```bash\nwfdlogger\n```\n\n## The Server\n\n### Server install\n\n```bash\npip install wfdserver\n```\n\n### Server Documentation\n\n[wfdserver](https://github.com/mbridak/wfdserver)\n\n## What to do first\n\nOn first run, there will be a dialog box asking you for your call class and\nsection. if you need to change this later, the entry fields can be found at\nthe bottom of the screen.\n\nIf you're participating as a member of a group, do not put your groups/club\ncall as your call. Enter your own call. The group call will be polled from\nthe server.\n\n![Snapshot focused on bottom of window](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/yourstuff.png)\n\n## Logging\n\nOkay you've made a contact. Enter the call in the call field. As you type it\nin, it will do a super check partial (see below). Press TAB or SPACE to advance\nto the next field. Once the call is complete it will do a DUP check (see below).\nIt will try and Autofill the next fields (see below). When entering the\nsection, it will do a section partial check (see below). Press the ENTER key\nto submit the Q to the log. If it's a busted call or a dup, press the ESC key\nto clear all inputs and start again.\n\n## Features\n\n### Radio Polling via flrig or rigctld\n\nIf you run flrig or rigctld on a computer connected to the radio, it can be\npolled for band/mode updates automatically. Click the gear icon at the bottom\nof the screen to set the IP and port. There is a radio icon at the bottom of\nthe logging window to indicate polling status.\n\n![Snapshot of settings dialog](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/catSettings.png)\n\n### Cloudlog, QRZ, HamDB, HamQTH useage\n\nIf you use either Cloudlog logging or QRZ/HamDB/HamQTH lookup you can click\nthe gear icon to enter your credentials.\n\nQ's are pushed to CloudLog as soon as they are logged.\n\nThe QRZ/HamDB/HamQTH lookup is only used to get the Op name and gridsquare for\nthe call. Mainly because when a Q is pushed to CloudLog it will not show as a\npin on the map unless it has a gridsquare. So this is a scratch my own itch\nfeature. HAMDB.org is used by default since it's free. If both are checked it\nwill it will use QRZ then fallback to HAMDB.\n\n### N1MM packets for Node-Red Dashboard\n\nIf you wish to use Kyle AA0Z's Node-Red contest dashboard, edit these settings.\n\n![N1MM settings](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/n1mm_settings.png)\n\n### XPlanet marker file\n\nIf you use QRZ/HamdDB/HamQTH lookups you can also generate an\n[XPlanet](http://xplanet.sourceforge.net/) markerfile which will show little\npips on the map as contacts are logged.\n\n![Snapshot of xplanet window](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/xplanet.png)\n\nThe above launched with an example command:\n\n```bash\nxplanet -body earth -window -longitude -117 -latitude 38 -config Default -projection azmithal -radius 200 -wait 5\n```\n\n### Editing an existing contact\n\nDouble click a contact in the upper left of the screen to edit or delete it.\n\n![Snapshot of edit qso dialog](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/editqso.png)\n\n### Super Check Partial\n\nIf you type more than two characters in the callsign field the program will\nfilter the input through a \"Super Check Partial\" routine and show you possible\nmatches to known contesting call signs. Is this useful? Doubt it.\n\n![Snapshot of main screen focused on super check partial output](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/scp.png)\n\n### Section partial check\n\nAs you type the section abbreviation you are presented with a list of all\npossible sections that start with what you have typed.\n\n![Snapshot of main screen focused on section check partial output](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/sectioncheck.png)\n\n### DUP checking\n\nOnce you type a complete callsign and press TAB or SPACE to advance to the\nnext field. The callsign is checked against previous callsigns in your log.\nIt will list any prior contact made showing the band and mode of the contact.\nIf the band and mode are the same as the one you are currently using, the\nlisting will be highlighted, the screen will flash, a bell will sound to alert\nyou that this is a DUP. At this point you and the other OP can argue back and\nforth about who's wrong. In the end you'll put your big boy pants on and make\na decision if you'll enter the call or not.\n\n![Snapshot of main screen focused on dup checking output](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/dupe.png)\n\n### Autofill\n\nIf you have worked this person before on another band/mode the program will\nload the class and section used previously for this call so you will not have\nto enter this info again.\n\n## CW\n\n### CW Settings\n\nSupport is provided for both cwdaemon and PyWinkeyer.\n\n![Settings dialog tab for CW](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/cw_settings.png)\n\nDefalt port for cwdaemon is 6789 and for PyWinkeyer is 8000.\n\n### CW Macros\n\nThe program will check in the current working directory for a file called\n`cwmacros.txt` It will parse the file\nand configure the row of 12 buttons along the bottom half of the window.\nThe macros can be activated by either pressing the corresponding function key,\nor by directly clicking on the button. You can check the file to glean it's\nstructure, but it's pretty straight forward. Each line has 4 sections separated\nby the pipe `|` character.\nHere's an example line.\n\n`R|F2|Run Exch|{HISCALL} {MYCLASS} {MYSECT}`\n\nThe first field is an `R` if the macro is to be shown while in Run mode.\nOtherwise an `S` for Search and Pounce. The second field is the function key\nto program. The third is the text label to put in the button. Lastly the\nfourth is the text you would like to send.\n\nA limited set of substitution macros are offered.\n\n`{MYCALL}`\n`{HISCALL}`\n`{MYCLASS}`\n`{MYSECT}`\n\nThese are pulled straight from the onscreen input fields. Combined with normal\ntext this should have you covered for most of your exchange needs.\n\n### CW Macros (Run vs S\u0026P)\n\nYou can toggle the macros in use between Run and Search and Pounce by clicking\nthe button to the left of the Generate Logs button at the botton right portion\nof the screen.\n\n![Picture showing buttons](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/run_sp.png)\n\nThis can also be used to reload the macros if you edit them while the program\nis running.\n\n### cwdaemon speed changes and stop sending\n\nIf you are using cwedaemon for sending, you can use:\n\n`CTRL+Esc` to abort sending.\n\n`PgUp` Increase sending speed.\n\n`PgDown` Decrease sending speed.\n\n## When the event is over\n\nAfter the big weekend, once you've swept up all the broken beer bottles and\nwiped the BBQ sauce off your chin, go ahead and click the Generate Logs button.\n\n![Snapshot of main screen focused on generate logs button](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/genlog.png)\n\nThis will generate the following:\n\nAn ADIF log 'WFD.adi'.\n\nA Cabrillo log 'Yourcall.log'. Which you edit to fill in your address etc. If\nyour not using Windows, you must ensure whatever editor you use uses CR/LF\nline endings. Cause whatever they use at the Winter Field Day society will\nchoke with out them. To be safe you might want to run it through 'unix2dos'\nbefore submitting it.\n\nA 'Statistics.txt' file which breaks down your band mode usage. Each unique\nband/mode combo is a multiplier.\n\n## Group / Club logging\n\nI have added a group contact aggrigating server. This can be run on the same\ncomputer as the client program, or on a separate dedicated PC or Raspberry Pi\non the same network.\n\n![Picture showing main server screen](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/server_pic.png)\n\n## Server configuration\n\nThe configuration file for the server is a JSON file 'server_preferences.json'.\nIt's generated automatically on the first run of the server `wfdserver`.\nSo start the server then press CTRL-C to quit it, then edit the josn file.\n\n```json\n{\n    \"ourcall\": \"W1AW\",\n    \"ourclass\": \"3O\",\n    \"oursection\": \"ORG\",\n    \"name\": \"Hiram Maxim\",\n    \"address\": \"225 Main Street\",\n    \"city\": \"Newington\",\n    \"state\": \"CT\",\n    \"postalcode\": \"06111\",\n    \"country\": \"USA\",\n    \"email\": \"Hiram.Maxim@arrl.net\",\n    \"bonus\": {\n        \"altpower\": false,\n        \"outdoors\": false,\n        \"notathome\": false,\n        \"antenna\": false,\n        \"satellite\": false\n    },\n    \"mullticast_group\": \"224.1.1.1\",\n    \"multicast_port\": 2239,\n    \"interface_ip\": \"0.0.0.0\",\n    \"node_red_server_ip\": \"127.0.0.1\",\n    \"node_red_server_port\": 12062\n}\n```\n\nFeel free to leave the last 3 items as they are unless you have good\nreason not too. The rest should be straight forward.\n\nUnder the bonuses section, if your group qualifies for a bonus, put `true` next\nto the type of bonus.\n\n## Client configuration for groups\n\nIn the settings dialog there is now a tab labeled 'Group Operation'.\n\n![Picture showing settings dialog tab](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/group_server_settings.png)\n\nGo ahead and place a check next to 'Connect to server'. Rejoyce and let\nmerriment be had by all. Be sure and have your callsign already set before\nchecking this. If you forgot, Uncheck it, set your callsign and then check it.\n\nA couple of things will change on the client when this is done. You will see\nthat your callsign will disappear and be replaced with your clubs call that the\nserver reports. The portion of the screen where all the different ARRL sections\nare displayed will be replaced by a group chat window and a column showing the\nstation call, band and mode of other participants.\n\n![Picture showing logger screen changes](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/group_chat.png)\n\nIf more than one operator is on the same band/mode, their names will be\nhighlighted in the operators list. Feel free to yell at eachother in the chat.\n\n![Picture showing band and mode conflict](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/band_conflict_client.png)\n\n## Chat Window\n\nThe chat window is pretty straight forward. If someone mentions you in the chat\nthat line will be highlighted with an accent color. If you find the font size\ndoes not work for you, can adjust the size by: Placing your mouse cursor in the\nchat window, then rotate your mouse wheel while holding down the Control key.\n\nThere is one command you can type into the chat window that may be of use.\nif you type @stats into the window the server will dump out the groups stats\ninto the chat.\n\n```text\nServer: \nBand   CW    PH    DG\n 160     0     0     0\n  80     0     0    25\n  40     0   159     0\n  20     1   162   126\n  15     0     0     0\n  10     0     0     0\n   6     0    17     0\n   2     0     0     0\n\nScore: 1284\nLast Hour: 271\nLast 15: 81\n```\n\nSince most people will not be able to see the screen of the server, if it has\none at all. You may find this useful.\n\n## How to know the server is there\n\nMost likely, the server will be in some other tent/building/area of the room.\nEvery 10 seconds or so the server will send out a UDP network packet saying\nit's there. As long as your client keeps seeing these packets the group call\nindicator at the bottom of the screen will look like:\n\n![Picture showing server status](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/server_okay.png)\n\nBut if about 30 seconds go by with no update from the server, the indicator\nwill change to:\n\n![Picture showing server status](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/server_not_pinging.png)\n\nGo check on it.\n\n## Logging reliability\n\nAs mentioned before, We're using UDP traffic to pass data back and forth to the\nserver. UDP traffic is a 'Fire and forget' method. Akin to a bunch of people\nin the same room yelling at eachother. Everyone can hear you, but you don't\nknow if anyone heard what you said. This has both advantages and disadvantages.\nOne advantage is that your program is not stuck waiting for a reply or timeout,\nlocking up your user interface. The disadvantage is you have no idea if anyone\ntook note of what you had said.\n\nThis works fine in a local network since the traffic doesn't have to survive\nthe trip through the big bad tubes of the internet. That being said, someone\nmay trip on a cord, unplugging the router/switch/wireless gateway. Or someone\nmay be trying to use WIFI and they are Soooooo far away you can barely see\ntheir tent. Or worse you have EVERYONE on WIFI, and there are packet collisions\ngalore degrading your network.\n\nTo account for this, the client logging program keeps track of recent packets\nsent, noting the time they were sent at. The server after getting a packet,\ngenerates a response to the sender with it's unique identifyer. Once the client\ngets the response from the server, it will remove the request on the local side\nand print a little message giving you a visual confirmation that the command was\nacted upon by the server. If the server does not respond either because the\nresponse was lost or the request never made it to reply too. The client will\nresend the packet every 30 seconds until it gets a reply.\n\nBut all this may still result in the server not having a copy of your contact.\nTo account for this, when the \"Generate Logs\" button is pressed on the client,\nthe client will resend all the logged contacts that have not gotten responses\nfrom the server. You can keep doing this, if need be,  until it gets them all.\n\nThere is a visual indicator giving you an idea of how many if any contacts have\nnot been verified. The `Generate Logs` button will change serving this purpose.\n\n![picture of generate log button showing count of unverified contacts](https://github.com/mbridak/WinterFieldDayLogger/raw/main/pics/unverified_indicator.png)\n\nThe client will resend all the unverified contacts to the server as part of\nthe log generation process.\n\nChat traffic is best effort. Either everyone sees your plea for more beer or\nthey don't. No retry is made for chat traffic. Just get your butt up and make\nthe trip to the cooler.\n\n## Generating the cabrillo file\n\nIf any of the networked clients presses the 'Generate Logs' button on their\nscreen, the server will be told to generate it's cabrillo file, it will be\nnamed 'WhatEverYourClubCallIs.log'.\n\nLater you can also launch the server with '-l' flag on the command line\nand the server will generate the log and then exit.\n\n## I'm sure there are short cummings\n\nIt's early days, and I've mainly tested the operations with the client logging\nprogram and several simulated operators, see file in `testing/simulant.py`.\nReal world use for Winter Field Day outside of January is hard to come by. So I'm sure\nthere are a couple of things I forgot, or didn't account for.\n\nIf you are part of a group of linux using Hams, please take this for a spin and\ntell me what I missed or could do better. Like a dry run, to make sure I'm not an idiot.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbridak%2Fwinterfielddaylogger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbridak%2Fwinterfielddaylogger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbridak%2Fwinterfielddaylogger/lists"}