Skip to content

Instantly share code, notes, and snippets.

View scivision's full-sized avatar
💭
I will be slow to respond.

scivision

💭
I will be slow to respond.
View GitHub Profile
@scivision
scivision / Readme.md
Last active June 11, 2025 16:45
Quickly upload WSJT-X default log to LoTW

Upload recent WSJT-X contacts to LoTW using ARRL TSQL command line interface without needing a separate logging program.

WSJT-X can connect to a logging program daemon, but for those to wish to simply upload new QSOs to LoTW, this Python script does it all by itself.

Requirements

  • Python >= 3.10
@scivision
scivision / wspr_wsjtx_raw_archive.py
Last active June 9, 2025 17:31
Create tar archive of WSPR / WSJT-X raw audio save files
#!/usr/bin/env python3
import os
import tarfile
import platform
from pathlib import Path
import argparse
from datetime import datetime
a = argparse.ArgumentParser(
description="Compress and upload raw WSPR data to science archive."
@scivision
scivision / email_extract_attachment.py
Last active June 6, 2025 21:43
Extract attachements from .eml email downloaded file from GMail, email client, etc.
#!/usr/bin/env python3
"""
Use Python stdlib "email" to extract attachments from an .eml file
as obtained from an email client or Download from Gmail etc.
based on https://gist.github.com/urschrei/5258588
"""
from pathlib import Path
@scivision
scivision / Readme.md
Last active June 1, 2025 19:26
GCC Gfortran 15.1.0 new bug with -Wall flag

GCC Gfortran 15.1.0 has a new bug that is fixed in Gfortran 15.2.0 release on any operating system (Windows, macOS, ...) that is triggered by -Wall

gfortran -Wall wall.f90 && ./a.out

wall.f90:38:12: >

@scivision
scivision / Readme.md
Created May 25, 2025 06:31
PyPI upload from GitHub Actions without API token

For each package, go into PyPI projects and add a publisher.

This uses separate jobs for build and publish as recommended to avoid a poisoned package from hijacking the publish to put hostile code in a package.

@scivision
scivision / CMakeLists.txt
Created May 25, 2025 05:50
Maidenhead locator in Fortran. See https://github.com/space-physics/maidenhead/ for Python
cmake_minimum_required(VERSION 3.14...4.0)
project(Maidenhead LANGUAGES Fortran)
enable_testing()
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
add_compile_options(-fno-backtrace -fimplicit-none)
endif()
add_library(maidenhead OBJECT maidenhead.f90)
@scivision
scivision / CMakeLists.txt
Last active March 31, 2025 21:50
CMake file permissions for find_library, find_file, find_path
cmake_minimum_required(VERSION 3.29)
project(find_perm LANGUAGES NONE)
set(noread_shared ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}noread_shared${CMAKE_SHARED_LIBRARY_SUFFIX})
set(noread_static ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}noread_static${CMAKE_STATIC_LIBRARY_SUFFIX})
# EXISTS requires read permissions
# https://cmake.org/cmake/help/latest/command/if.html#exists
# no read permissions means can't touch the file
@scivision
scivision / CMakeLists.txt
Last active May 25, 2025 03:58
time_t Year 2038 test with CMake, including _TIME_BITS=64
cmake_minimum_required(VERSION 3.20)
project(lang LANGUAGES C)
include(CheckSourceRuns)
include(CheckTypeSize)
check_type_size("time_t" TIME_T_SIZE)
if(NOT TIME_T_SIZE GREATER_EQUAL 8)
@scivision
scivision / BaslerPyPylon.py
Created March 10, 2025 20:25
PyPylon with Basler camera
#!/usr/bin/env python3
import pypylon
from matplotlib.pyplot import figure,draw,pause
#
Nblock = 10 # TODO workaround for Basler too many frames error
Nblocks = 100 # arbitrary number of frames to plot
def connect(camdev,camind=0):
@scivision
scivision / CMakeLists.txt
Last active February 11, 2025 19:08
MUMPS example via find_packge(MUMPS CONFIG)
cmake_minimum_required(VERSION 3.19)
project(MUMPS_example
LANGUAGES C Fortran
)
enable_testing()
file(GENERATE OUTPUT ${PROJECT_BINARY_DIR}/.gitignore CONTENT "*")