Welcome to my collection of hobby software projects. This page catalogs various programming experiments and tools I’ve developed in my spare time. In the future, I’ll expand this section with more detailed explanations of the code, methodologies, and availability options. For now, you can explore each project by following the links below, which will take you to interactive demonstrations.

Hosting Infrastructure

Each project is containerised and hosted using Docker images running on a dedicated server. While I make these available for demonstration purposes, please note:

  • These projects are hosted on modest hardware with no uptime guarantees
  • Functionality may occasionally change, typically to fix issues or improve the user experience
  • The original code is generally preserved when creating new versions, allowing for comparison between iterations

Update (5 February 2024): Due to increasing popularity, all tools have been migrated to a dedicated server running a reverse proxy system. This infrastructure upgrade means all projects now use secure connections (HTTPS) and are served from my domain rather than direct IP addresses.

Project Catalogue

Magic Eight Ball

Magic Eight Ball

  • A simple interactive fortune-telling toy implemented in Python
  • Uses a minimalist HTML design with basic templating
  • Provides random answers to yes/no questions in the spirit of the classic toy

Sudoku Solver Evolution

My Sudoku solver has gone through several iterations, each improving upon the previous version:

Sudoku Solver v1

  • Initial proof-of-concept built with Flask and Python
  • Extremely basic user interface with minimal styling
  • Uses a fundamentally inefficient solving algorithm
  • Can be overwhelmed by complex or impossible puzzles

Sudoku Solver v1.1

  • Maintains the same core solving algorithm as v1
  • Features an improved web interface that better visualises the puzzle
  • Shares the same limitations and inefficiencies of the original version

Sudoku Solver v2

  • Significant rewrite of the codebase while still using Python and Flask
  • Implements intelligent validation to detect impossible puzzles early
  • Employs a smarter solving approach that eliminates testing numbers that can no longer be used
  • Drastically reduces solving time compared to earlier versions
  • Provides more accurate iteration counting
  • Enhanced HTML interface with replay functionality and improved SEO elements

Sudoku Solver v2 (January 2024 Update)

  • Resolves reliability issues when handling impossible puzzles
  • Significantly improved accessibility with keyboard navigation (tabbing between cells)
  • Revolutionary new solving methodology:
    • Prioritises cells with the fewest possible candidates
    • Focuses on solving surrounding cells first
    • Uses intelligent backtracking when no immediate solution is available
    • Reduces solution attempts to approximately 1/100th of the v2 algorithm
    • Completely abandons the brute-force approach used in earlier versions

Noughts and Crosses v1

  • Slightly fuller implementation of Noughts and Crosses than the other projects.
  • More like a mini-site with better formatting and the starts of a user system
    • Pretend you are in the 80’s and do a little bit of Wargaming!

Technical Implementation Details

While not extensively documented yet, these projects share some common technical characteristics:

  • Backend development primarily in Python
  • Web interfaces built with Flask
  • Containerisation using Docker for consistent deployment
  • Reverse proxy setup for secure HTTPS access
  • Modular design allowing for iterative improvements

Future Developments

I plan to expand this portfolio with:

  • More detailed technical documentation for each project
  • Source code availability information
  • Additional projects currently in development
  • Performance metrics and comparison between different versions
  • Design rationale and lessons learned

Check back periodically for updates, as I’ll be adding new projects and enhancing documentation for existing ones.