[{"content":"Since June 2024, I have worked one of the in-house Results specialists for British Ice Skating (BIS). In this time, I\u0026rsquo;ve managed results for 27 events and counting. These include:\n3 ISU international events 1 ISU Challenger series event 2 national championships 2 adult national championships In addition to configuring, deploying and maintaining the judging system, I have been involved in scheduling, livestreaming and venue media production and have developed a good understanding of what goes into making a successful figure skating competition. I also maintain the results website for BIS.\nIf you are hosting a skating competition and are in need of Results services, please reach out to contact@rghayes.com. I am happy to discuss any aspect of results, and can discuss fees if you want my help setting up competition databases. I am also open to discussing running Results for your competition in-person - just reach out.\nBackground image credit: Chris DeSort (@desort_design) on Unsplash.\n","date":"5 April 2026","externalUrl":null,"permalink":"/results/","section":"","summary":"","title":"Results for Figure Skating Competitions","type":"page"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/categories/figure-skating/","section":"Categories","summary":"","title":"Figure Skating","type":"categories"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/tags/fsm/","section":"Tags","summary":"","title":"FSM","type":"tags"},{"content":" Top line # For figure skating competitions, the Figure Skating Manager software, created by Swiss Timing, is used throughout Europe (and much of the rest of the world, with the exception of North America and Japan). This software produces a website that tracks the scores of the competitors, and acts as an official record of the competition upon completion.\nThe site, however, is a rather bare-bones affair, has limited scope for customisation, and is often not flexible enough to deal with the kinds of last minute changes that are routine at lower-level skating competitions where the world\u0026rsquo;s press is not thronging at the doors. I therefore felt compelled to create a piece of software to aid in managing the website throughout the event, in order to take some of the pressure off the Results operators and give them time to do things like eat lunch and drink water.\nThe result is FSM Web Uploader, available on GitHub (linked at bottom of article).\nScreenshot of FSM Web Uploader main screen What is FSM Web Uploader? # The program is designed as a very basic, upload only FTP client. The key features are as follows:\nMonitors the website output directory of FSM for changes to upload. Monitors PDF output directory of FSM to upload results as they become available. Selectively uploads judging panels only after the start time of the segment (by reading timetable from index page). Performs arbitrary text replacements to the HTML files before upload (e.g., to allow for changing the default link destinations). How is it made? # FSM Web Uploader was my first foray into GUI creation, so I wanted to use a system that would allow me to create a GUI graphically. I also needed to create the program quickly so that I could start using it, so I needed something I could write in Python since that\u0026rsquo;s where my familiarity is. I therefore opted to use PySide6, the Python bindings of Qt, as this seemed to be a common recommendation for creating GUIs that still had a wealth of functionality for creating more complex applications. (Side note: this is not a complex application. I just felt it was worth learning something that I could potentially push further in the future.)\nAs it transpires, I quite enjoy the Qt programming style (in Python, at least). The basic idea (as I understand it) is that, rather than directly tying functions to GUI elements, signals can be passed back and forth between parts of the program, and importantly between threads, to allow the GUI to remain responsive whilst compute tasks are handled in the background.\nThe result is that you end up with classes something like the PdfCopier class below:\nclass PdfCopier(QObject): copy_successful = Signal(str) def __init__(self, destination: str): super().__init__() self.destination_filepath = destination @Slot(str, str) def copy_pdf(self, source_filepath: str): try: shutil.copyfile( source_filepath, os.path.join( self.destination_filepath, os.path.basename(source_filepath) ), ) self.copy_successful.emit(source_filepath) except PermissionError as e: LOGGER.error(f\u0026#34;Error copying file: {e}\u0026#34;) This class:\nWaits for a Signal from the filesystem watcher - the Signal is received by the copy_pdf function with the @Slot(str,str) decorator, which tells Qt what arguments to expect Copies the requested PDF Emits a new Signal back to the GUI to tell it that the copy has completed successfully (or logs an error if it hasn\u0026rsquo;t). Using QObject and QThread, it\u0026rsquo;s possible to have filesystem or network operations performed on secondary threads whilst the GUI thread remains unblocked, meaning that you can still click the close button even when processes are still occurring.\nThe program also relies heavily on the excellent watchdog library (found here), which monitors directories for filesystem events and sends these signals to your program to let you react accordingly.\nThough this program will surely seem remedial to a lot of programmers, it very much helped me broaden my horizons from the largely data analysis/computational programming I was used to doing and think about programs that have to do more than take an input and provide an output.\nQuestions? # If you have any questions, please reach out by any of the contact methods on the homepage of the site.\nIf you want to contribute to the program, please do! Pull requests are very welcome (provided that they\u0026rsquo;re from a human on some level).\nFind the code on GitHub # rghskate/fsm-web-uploader FTP uploader for FS Manager websites Python 1 0 ","date":"5 April 2026","externalUrl":null,"permalink":"/posts/2026-04-05_fsm_web_uploader/","section":"Posts","summary":"A simple FTP client for managing websites created by Figure Skating Manager.","title":"FSM Web Uploader","type":"posts"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/tags/ftp/","section":"Tags","summary":"","title":"FTP","type":"tags"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/categories/programming/","section":"Categories","summary":"","title":"Programming","type":"categories"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/tags/programming/","section":"Tags","summary":"","title":"Programming","type":"tags"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/tags/python/","section":"Tags","summary":"","title":"Python","type":"tags"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/tags/qt/","section":"Tags","summary":"","title":"Qt","type":"tags"},{"content":"","date":"5 April 2026","externalUrl":null,"permalink":"/tags/skating/","section":"Tags","summary":"","title":"Skating","type":"tags"},{"content":"Photo galleries from the various places I\u0026rsquo;ve had the good fortune to visit over the years.\n","date":"5 April 2026","externalUrl":null,"permalink":"/categories/gallery/","section":"Categories","summary":"","title":"Gallery","type":"categories"},{"content":"","date":"4 April 2026","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","date":"4 April 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"If you\u0026rsquo;re looking for something in particular, you can browse posts by category, or by tag.\n","date":"4 January 2026","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"Hi there!\nI\u0026rsquo;m Rob Hayes, and this is my site documenting my various projects/travels from my geoscience research to my hobby coding projects. Below is my CV. A PDF version is also linked here.\nCV # Employment # Technical Operations Officer June 2024 - Present British Ice Skating, Sheffield, UK Deploy computers for skating competition judging, create databases for competitions, and write code to assist in these tasks.\nHighlights:\nDevelop desktop applications using Python to streamline competition management, using libraries including PyQt6, FastAPI, numpy and Pandas/Polars. Manage and maintain a large variety of IT and audio-visual equipment, and deploy said equipment in challenging conditions at events. Effectively prioritise administration tasks, including event scheduling and database management. Postdoctoral Researcher February 2023 - February 2024 Friedrich Alexander Universität, Erlangen, Germany Researched sediment flux in Early Mesozoic successions.\nHighlights:\nReconstructed paleoenvironments from fluvial deposits using data collected from fieldwork and drill cores. Designed efficient work flows using ArcGIS Pro and Python to increase sediment flux modelling iterations by a factor of 10. Wrote tools to leverage AI image recognition for the analysis of grain size distribution in thin sections. Graduate Assistant August 2018 - January 2022 Department of Geosciences, University of Arizona, Tucson AZ, USA Delivered teaching of practical sessions in geoscience subjects to classes of 20+ undergraduate students, graded assignments and handled student concerns.\nHighlights:\nTaught lectures and labs in sedimentology to undergraduate classes, in addition to teaching general classes to non-geoscience majors. Organised field trips for up to 50 students, including ensuring health and safety of students was properly managed, receiving more than 80% positive feedback during student evaluation. Balanced multiple parallel projects, including student engagement, examination and academic research projects. Handled student concerns and complaints in accordance with university guidelines on privacy and safeguarding. Machine Learning Research Project Assistant June 2019 - August 2019 Department of Geosciences, University of Arizona, Tucson AZ, USA Contributed to training of machine learning model investigating links between volcanism and climate change. Results of study published as cover article of November 2022 edition of GSA Today. Lecture Note Taker October 2017 - May 2018 University of Leicester AccessAbility Centre, Leicester, UK Prepared lecture notes on a variety of subjects to assist students with additional learning access requirements. Paleoclimate Lab Assistant January 2017 - May 2017 Department of Geosciences, University of Arizona, Tucson AZ, USA Processed 600 samples of lacustrine sediment for Loss On Ignition analysis, managing and organising sample records. Education # PhD of Geoscience August 2018 - January 2022 Department of Geosciences, University of Arizona, Tucson AZ, USA Earned a doctorate of Geoscience from the University of Arizona studying under Prof. Pete DeCelles, researching the Triassic paleogeography of western North America.\nHighlights:\nGraduated with GPA of 3.9. Developed specialist knowledge of fluvial sedimentology through extensive fieldwork and literature research. Measured more than 6 km of sedimentary logs at fine scale detail and collected more than 5,000 paleocurrent measurements to build paleogeographic reconstructions of the southwestern US. Earned a total of $27,000 grants and scholarships from Geological Society of America, Arizona Geological Society and University of Arizona. MGeol Geology with Palaeobiology September 2014 - July 2018 School of Geography, Geology and the Environment, Uinversity of Leicester, UK Earned an integrated master's degree in geology with palaeobiology, completing a thesis on the behaviour of plastic subjected to geological processes under the supervision of Prof. Sarah Gabbott.\nHighlights:\nGraduated with First Class Honours. Performed extensive labwork, including pyrolysis GCMS and infinite focus microscopy Performed principal component analysis and other parametric statistical tests on complex textural datasets using R and SPSS. Won East Midlands Geological Society Beryl Whittaker Award for best dissertation. Volunteering # Organised junior education section at Tucson Gem and Mineral Show in 2020 and 2022, interacting with hundreds of guests at the largest gem trade show in the world. Operated successful event with very limited budget. Acted as Audio/Visual technician for GeoDaze 2022, a geological conference held at the University of Arizona, ensuring the smooth operation of technology during presentations. Served as treasurer for the Association of Women Geoscientists (AWG) Southern Arizona Chapter during 2021 and 2022, managing funds and creating an automated system for reporting budgets to the central AWG organisation. Publications # Hayes, R.G., DeCelles, P.G., and Amadori, C., 2025, Sedimentological and paleoslope reconstruction of the late triassic chinle formation, western USA: Constraints on models for dynamic subsidence: Geological Society of America Bulletin, v. 137, no. 7–8, 3587-3605, https://doi.org/10.1130/b37816.1 Pelletier, J.D., Hayes, R.G., Hoch, O., Fenerty, B., and McGuire, L.A., 2025, Geometric constraints on tributary fluvial network junction angles: Earth Surface Dynamics, v. 13, no. 2, 219-238, https://doi.org/10.5194/esurf-13-219-2025 Amadori, C., Maino, M., Marini, M., Casini, L., Carrapa, B., Jepson, G., Hayes, R.G., Nicola, C., Reguzzi, S., and Giulio, A.D., 2023, The role of mantle upwelling on the thermal history of the Tertiary-Piedmont Basin at the Alps-Apennines tectonic boundary: Basin Research, https://doi.org/10.1111/bre.12752 Hayes, R., and DeCelles, P., 2022, Reconstructing paleosinuosity and sedimentary mass balance in the upper triassic shinarump paleoriver in utah and arizona, u.s.a.: Journal of Sedimentary Research, v. 92, no. 12, 1207-1232, https://doi.org/10.2110/jsr.2021.122 Park, S., Carrapa, B., Ducea, M., Surdeanu, M., Hayes, R., and Collins, D., 2022, Answering geosciences research questions at a global scale via a hybrid machine-human learning approach: A case study of the link between climate and volcanism: GSA Today, https://doi.org/10.1130/gsatg528a.1 ","date":"4 January 2026","externalUrl":null,"permalink":"/about/","section":"","summary":"","title":"About me","type":"page"},{"content":"","date":"4 January 2026","externalUrl":null,"permalink":"/","section":"","summary":"","title":"","type":"page"},{"content":"","date":"17 May 2025","externalUrl":null,"permalink":"/tags/holiday/","section":"Tags","summary":"","title":"Holiday","type":"tags"},{"content":"Some holiday snaps from my trip to Japan, just to balance out the preponderence of rocks. There are still some rocks though.\n","date":"17 May 2025","externalUrl":null,"permalink":"/posts/2025-05-17_japan_holiday/","section":"Posts","summary":"Holiday pictures from Tokyo and Kyoto.","title":"Holiday in Japan","type":"posts"},{"content":"","date":"17 May 2025","externalUrl":null,"permalink":"/tags/japan/","section":"Tags","summary":"","title":"Japan","type":"tags"},{"content":"","date":"21 May 2022","externalUrl":null,"permalink":"/tags/arizona/","section":"Tags","summary":"","title":"Arizona","type":"tags"},{"content":"","date":"21 May 2022","externalUrl":null,"permalink":"/tags/colorado/","section":"Tags","summary":"","title":"Colorado","type":"tags"},{"content":"","date":"21 May 2022","externalUrl":null,"permalink":"/tags/fieldwork/","section":"Tags","summary":"","title":"Fieldwork","type":"tags"},{"content":"","date":"21 May 2022","externalUrl":null,"permalink":"/tags/geology/","section":"Tags","summary":"","title":"Geology","type":"tags"},{"content":"Photos from the final field season of my PhD on the Colorado Plateau. Everyone raise a glass for my faithful 4Runner.\n","date":"21 May 2022","externalUrl":null,"permalink":"/posts/2022-05-21_summer_fieldwork/","section":"Posts","summary":"Photos from my final season of PhD fieldwork.","title":"Summer Fieldwork 2022","type":"posts"},{"content":"","date":"21 May 2022","externalUrl":null,"permalink":"/tags/usa/","section":"Tags","summary":"","title":"USA","type":"tags"},{"content":"","date":"21 May 2022","externalUrl":null,"permalink":"/tags/utah/","section":"Tags","summary":"","title":"Utah","type":"tags"},{"content":"","date":"12 June 2021","externalUrl":null,"permalink":"/tags/nevada/","section":"Tags","summary":"","title":"Nevada","type":"tags"},{"content":"Photos from the penultimate solo field season of my PhD, including a perilous journey to the valley of disappointment and a brief interlude of getting stuck in Lake Powell.\n","date":"12 June 2021","externalUrl":null,"permalink":"/posts/2021-06-12_summer_fieldwork/","section":"Posts","summary":"Photos from across the Colorado Plateau, including a visit to Lake Powell.","title":"Summer Fieldwork 2021","type":"posts"},{"content":"Photos from my Christmas field season on the Colorado Plateau, featuring temperatures as low as -16°C (which is presumably very low in Farenheit too).\n","date":"30 December 2020","externalUrl":null,"permalink":"/posts/2020-12-30_winter_fieldwork/","section":"Posts","summary":"Photos from the Colorado Plateau in the snow.","title":"Winter Fieldwork 2020","type":"posts"},{"content":"Photos from my 2020 fieldwork season on the Colorado Plateau, brief holiday week (also mostly on the Colorado Plateau), and the mandatory photo of the Wave.\n","date":"25 May 2020","externalUrl":null,"permalink":"/posts/2020-05-25_summer_fieldwork/","section":"Posts","summary":"Photos from my 2020 fieldwork season.","title":"Summer Fieldwork 2020","type":"posts"},{"content":"","date":"19 April 2020","externalUrl":null,"permalink":"/tags/hiking/","section":"Tags","summary":"","title":"Hiking","type":"tags"},{"content":"Photos from Mt. Wrightson, the tallest mountain in southern Arizona that is also within 90 minutes drive of Tucson.\n","date":"19 April 2020","externalUrl":null,"permalink":"/posts/2020-04-19_mt_wrightson/","section":"Posts","summary":"Photos from Mt. Wrightson, southern Arizona.","title":"Mt. Wrightson","type":"posts"},{"content":"Photos from my first fieldwork excursion in the cold (in America - English fieldwork is almost always cold).\n","date":"15 October 2019","externalUrl":null,"permalink":"/posts/2019-10-15_oct_fieldwork/","section":"Posts","summary":"Photos from the Colorado Plateau in the autumn.","title":"Autumn Fieldwork 2019","type":"posts"},{"content":"Photos from my first field season on the Colorado Plateau, with pictures from Arizona, Utah, Colorado and New Mexico. Mechanical failures omitted for brevity.\n","date":"15 June 2019","externalUrl":null,"permalink":"/posts/2019-06-15_summer_fieldwork/","section":"Posts","summary":"Photos from across the Colorado Plateau.","title":"Summer Fieldwork 2019","type":"posts"},{"content":"Photos from a structural geology field trip to the area surrounding Indian Bread Rocks in Southern Arizona.\n","date":"2 March 2019","externalUrl":null,"permalink":"/posts/2019-03-02_saz_fieldwork/","section":"Posts","summary":"Photos from Indian Bread Rocks, S. AZ","title":"Southern Arizona Fieldtrip","type":"posts"},{"content":"","date":"21 September 2017","externalUrl":null,"permalink":"/tags/italy/","section":"Tags","summary":"","title":"Italy","type":"tags"},{"content":"","date":"21 September 2017","externalUrl":null,"permalink":"/tags/sicily/","section":"Tags","summary":"","title":"Sicily","type":"tags"},{"content":"Photos from the geology trip to Sicily during the final year of my undergraduate degree.\n","date":"21 September 2017","externalUrl":null,"permalink":"/posts/2017-09-21_sicily/","section":"Posts","summary":"Photos from eastern Sicily.","title":"Sicily Fieldwork","type":"posts"},{"content":"Photos from a camping trip to Zion National Park with the Society of Earth Science Students during my undergraduate year abroad to the University of Arizona. Horseshoe Bend and a random windcut cave also make an appearance for good measure.\n","date":"15 March 2017","externalUrl":null,"permalink":"/posts/2017-03-15_zion/","section":"Posts","summary":"Photos from Zion National Park, Utah.","title":"Zion National Park Visit","type":"posts"},{"content":"","date":"14 March 2016","externalUrl":null,"permalink":"/tags/uk/","section":"Tags","summary":"","title":"UK","type":"tags"},{"content":"","date":"14 March 2016","externalUrl":null,"permalink":"/tags/wales/","section":"Tags","summary":"","title":"Wales","type":"tags"},{"content":"Photos from a paleontology focused field trip to Wales during my undergrad. Fossils not in evidence due to incompetent photography.\n","date":"14 March 2016","externalUrl":null,"permalink":"/posts/2016-03-14_wales/","section":"Posts","summary":"Photos from a paleontology focused field trip to Wales.","title":"Welsh Basin Fieldtrip","type":"posts"},{"content":"Photographs from my time spent around the village of Vallcebre in the Spanish Pyrenees on my independent mapping project during my undergraduate degree.\n","date":"1 June 2015","externalUrl":null,"permalink":"/posts/2015-06-01_catalunya/","section":"Posts","summary":"Photos from around Vallcebre, Spain.","title":"Catalunya Fieldwork","type":"posts"},{"content":"","date":"1 June 2015","externalUrl":null,"permalink":"/tags/spain/","section":"Tags","summary":"","title":"Spain","type":"tags"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]