Skip to content
View seapagan's full-sized avatar

Highlights

  • Pro

Organizations

@seapagan-fem

Block or report seapagan

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
seapagan/README.md

Grant Ramsay

Python Backend and API developer with Front-end skills

I have been programming in one form or other since I was 10 (ZX81 BASIC FTW), which is over 40 years of wrist strain and no dates.

  • 🌍  I'm based in United Kingdom
  • 🖥️  See my portfolio at My Website
  • ✉️  You can contact me at seapagan@gmail.com
  • 🧠  I'm learning Rust!
  • 🤝  I'm open to collaborating on Python API's (specifically using FastAPI) and General Python backend and DevOps projects
  • ⚡  I spent 27 years working offshore in the Oil & Gas sector working on (and then running) Seismic Survey vessels all over the world.

Skills

My current languages of choice are Python, HTML/CSS etc, React, and Vanilla Javascript, and I've just started to learn Rust.

PythonJavaScriptGitRustNeovimVS CodeHTML5ReactCSS3SassNodeJSPostgreSQLFast APISupabaseDockerLinuxRaspberry Pi


Current Projects

I'm currently actively working on a few projects, generally in Python, including:

  • fastapi-template
    • A Configurable template for a FastAPI application, with Authentication and User integration.
  • sqliter-py
    • A very lightweight Object-Relational Mapping (ORM) library for SQLite databases in Python. This is in very active development right now and lacking several main features. The use-case for this is more in CLI applications and tools rather than web applications.
  • simple-toml-settings
    • A Python library to save your settings in a TOML file.
  • github-changelog-md
    • Automatically generate a Markdown CHANGELOG from your GitHub Repository.
  • py-maker
    • A fully customizable Python application to bootstrap Poetry-based boilerplate for you to start developing your Python applications quicker! Includes linting and Pytest libraries.
  • lice2
    • Generate license files for your projects both as a standalone program and a python library. This is a fork and continuation of the original lice project which has been abandoned for several years, re-written in modern Python and with many new features.
  • A poetry plugin to check for 'yanked' packages
    • This also includes a GitHub Action to check this Automatically.
  • UPRN Tool
    • Python script and API to take the raw 'AddressBase Premium' files from Ordnance Survey and make something usable, stored in a PostgreSQL database. The Frontend is written in ReactJs and allows fast searching.
  • fastapi-redis-cache-reborn
    • A simple and robust caching solution for FastAPI that interprets request header values and creates proper response header values (powered by Redis). This is another abandoned package that I have revived and made compatible with modern Python and FastAPI, plus adding new features.
  • URL Shortener 2
    • URL Shortener Version 2. Rebuilt using my Fastapi-template project - original version was based on a realpython.com tutorial, with additional functionality
  • pyBlog
    • Django-based Blog engine with Comments, Tags, Likes, Pinned Posts, WYSIWYG Editing and more. Fully Responsive. This has been semi-abandoned for about 6 months, but I am planning to pick it up again soon.
  • poectrl
    • A reasonably niche project to control the PoE ports on a Ubiquiti TS-8-PRO Switch, with plans to support other models. I use this to automatically control the power to my home/external CCTV cameras and switches.
  • django-rundevserver
    • A Django Extension to run a configurable Django development server from the command line
  • openapi-readme
    • Generate Markdown from an OpenAPI JSON spec file.

I have several repositories that are just to show off some techinqiues or integrations, how to solve some problems with a specific library or framework, or were used for me to learn a new technology.

  • link-page
    • A clean and basic landing page to show your homepage, github, social media etc. Written using FastAPI and Jinja2 templates. This is an example of how to use FastAPI and Jinja2 together.
  • fastapi-tui
    • Using Textual to create a Text User Interface (TUI) for a FastAPI application, allowing the logs to be viewed and the application to be controlled from a TUI (Terminal User Interface).
  • FastAPI Async with SQLAlchemy2
    • A Simple example how to use FastAPI with Async SQLAlchemy 2.0. At the time (and still now to an extent) there were no good examples of how to use version 2.0 of SQLAlchemy in Async mode with FastAPI.
  • uv-test
    • A test repo to investigate uv as a replacement for Poetry and pyenv for me in my projects. This is a work in progress and needs updating with my latest findings. My sqliter-py project is using uv as its build system and i love it so far.
  • fastapi-jinja-websockets
    • A quick simple example to show using FastAPI and Jinja templates using WebSockets to update an already served template.
  • capture-uvicorn-output
    • Example how to capture the output from a process in python, in this case uvicorn to capture the output of a FastAPI application. This was prelim-work for the fastapi-tui project.
  • github-contributions
    • Example showing how to list a users contributions to third-party GitHub repositories using Python and GraphQL, with a 'typer' CLI interface.

Non-python projects include:

  • bundlerepo
    • Pack a local or remote Git Repository into a single XML file for LLM Consumption. Based on the idea of 'repopack', but written in Rust from scratch.
  • lsplus
    • A rust project that is a vehicle for me to learn the language and the ecosystem, which is a clone of the *nix ls command with some extra features and blazingly fast compared to equivalent Python or Ruby implementations I was using previously.
  • dev-portfolio-app
    • A stand-alone React-based developers portfolio website, taking all data from local JSON files and displaying live information about your Github repositories (using their GraphGL API). Fully Responsive design.
  • mchdir (mcd)
    • A utility for creating a new folder then changing into it in one command, or creating and changing into a temporary folder. Written in Rust and using shell integration. I wrote this as doing mkdir then cd all the time was annoying me. It is a very simple project, but I use it all the time. It's also a decent example of how to integrate Rust with shell commands.
  • react-github-readme-button
    • A React component to display a Markdown-formatted README file in a modal popup
  • shopping-list
    • Shopping list app using vanilla JavaScript only. This was a project to learn how to use localStorage and to practice my JavaScript skills, and I use it every day for my shopping list!
  • linux-comfy-chair
    • Auto provision a new linux Ubuntu or Debian install with several coding languages, scripting tools, docker and other handy items. I use this all the time to auto-provision linux cloud or container instances. Written in Bash-script, it is way overdue for a conversion to Rust!
  • update-repo
    • A Ruby Gem to keep a folder of multiple cloned Git Repositories up to date. This was written many years ago when I worked offshore and had very limited internet access. This was probably my first 'real' open-source project back in 2016. I loved Ruby back then, but I have not used it for a long time sadly. Python, you are a cruel mistress.

I have also written several plugins for mkdocs, and one reasonably popular one for VSCode (https://github.com/gnramsay/vscode-create-python-module) that has 18k+ downloads.

Finally, for those who are interested, here are are my IDE and Editor settings:

  • NeoVim
    • This is my current Neovim configuration, specifically tailored for Python and Rust coding
  • VSCode
    • User and Programming language specific config files, extension lists, etc to reproduce my current VSCode dev setup if needed. I tend to use NeoVim more these days, but I still use VSCode for some projects.

Socials


My GitHub Stats

seapagan's GitHub stats

Pinned Loading

  1. fastapi-template fastapi-template Public template

    Configurable template for a FastAPI application, with Authentication and User integration.

    Python 148 11

  2. py-maker py-maker Public

    A fully customizable Python application to bootstrap Poetry-based boilerplate for you to start developing your Python applications quicker! Includes linting and Pytest libraries.

    Python 7 3

  3. github-changelog-md github-changelog-md Public

    Automatically generate a Markdown CHANGELOG from your GitHub Repository

    Python 2

  4. simple-toml-settings simple-toml-settings Public

    A Python library to save your settings in a TOML file.

    Python 2 1

  5. bundle-repo bundle-repo Public

    Pack a local or remote Git Repository into a single XML file for LLM Consumption. Written in Rust.

    Rust 15 1

  6. lice2 lice2 Public

    Generate license files for your projects both as a standalone program and a python library

    Python 1