Thomas Fishwick

Tom.

Nice to meet you!
I'm Tom Fishwick

My main experience from work is as a developer for Elite 3E (VB.Net & SQL) and MatterSphere (C#). This involves creating new screens and workflows and integrating them with various APIs. As well as these I have made an ASP.Net site serving a Vue.JS application, and various other JavaScript applications.

In my spare time I have created various apps in Python, JavaScript, React Native and Android. Plus I have some experience in PHP.


Skills

Python

5 Years Experience

SQL (MS SQL Server, SQLite, MariaDB)

10 Years Experience

VB.Net

10 Years Experience

C#

7 Years Experience

JavaScript

12 Years Experience

SQL Server Reporting Services (SSRS)

6 Years Experience

MATLAB

1 Year Experience

HTML

12 Years Experience

Docker

2 Years Experience


Projects

A screenshot of a graph with two stocks jumping up and down in price over time and an input to add in more stocks.
Chart the Stock Market
This project started as my answer to FreeCodeCamp Chart the Stock Market.

Here I created a flask app with web sockets.

This started life with the JavaScript being in charge of the visualisations in D3. This used a huge amount of code to draw the graph. I then decided to get Python to parse the data and draw the graph, passing the Base64 string back to JavaScript. Jupyter Labs was useful to design the function and then I copied the code out into a python file.

After quite a few attempts I got the app onto Heroku. This was quite a bit more complicated than I thought it would be. I first found out about the existence of Gunicorn and then how to use it. From this I also found out about using .env files in Python (something that I had done in Node.JS and thought would be a good idea in Python).

This has since moved to first Railway.app and now render.com. With the JavaScript becoming TypeScript and being in charge of the visualisations using ChartJS.

Live Link Source
A screenshot of a dashboard centred around a graph of Predicted vs actual expenses, on the left are various options to give your demographic data and at the bottom is your predicted health costs.
Predict Health Costs With Regression
This project started as my answer to FreeCodeCamp Predict Health Costs With Regression.

Here I created my first Streamlit App, and then discovered how hard it was to put streamlit into a Docker container.

Here you can see the difference between the model's predictions and the actual data. You can then use the controls to predict your health costs.

I later revisited it to tear out all of the TensorFlow code and replace its model with a Random Forest Regressor

Live Link Source
There is a picture of a cute cat balancing on top of a door. Above is a button to pick a different image and below is the result of the prediction (cat).
Cat and Dog Image Classifier
This started out as my answer to FreeCodeCamp Cat and Dog Image Classifier.

I created a Node.JS app which uses TensorFlow.JS with the converted model I made to determine whether the image passed is more likely to be a cat or a dog (with not so great accuracy).

Live Link Source
A table of SMSes with their predictions of spam/ham. Above inputs to enter in new messages.
SMS Classifier
This project originally started as my answer to FreeCodeCamp SMS Classifier.

In this project I created my first Flask Web App (not including the tutorial I did). Plus my first Docker Container (outside of a tutorial). Originally this used TensorFlow as the machine learning library, but I have now changed this to SciKit Learn.

In the web app you can test the classification of various texts, the client side JavaScript will post a request to the API which in turn will consult the saved SKLearn model. You can then press the "Add to database" button, this will push it into the local database (a SQLite database inside the Docker container). In the data table at the front end you can flip the classification of messages between spam and ham. You can also delete that entry out of the database.

Pressing the "Retrain Model" button will cause the Flask server to retrain the Machine Learning model on the data in the SQLite database. It will then test the model against the validation data from FreeCodeCamp (the main data is also from FreeCodeCamp). This may take a little while, it will then save the model in the Docker container and then use that. To build the model manually you can run the file modelmaker.py.

Source
Android Version of the XKCD Reader App, showing the comic of March of the Penguins.
XKCD Reader
My XKCD Reader app, which uses React-Native to render the XKCD website.

The Android APK file (tested on my phone and in the Android emulator) is available at the link above.

Live Link
A complicated circular graph showing the numbers of different data types in the Knowledge Graph.
PizzaKG
This project was something I did after university following the specifications of the SWTKG module which I didn't take.

Live Link Source

Certifications


Contact

I would love to hear about your company and how I could help. Please fill in the form, and I'll get back to you as soon as possible.


Posts

  • XSLT Pages

    I have updated my Sitemap and Atom feeds to display as though they are HTML. Inspired by the idea of not repeating myself, which I wasn’t because generally Jekyll had one copy of this data in the source code, but then two copies in the output.

  • UI Update

    Here I explain some of the main changes, such as the new NavBar and the removal of BootStrap from the site.
  • Blog Questions Challenge

    I first saw this challenge on Adactio’s blog.

  • Ruby Chess

    I created a chess game as part of the Odin Project.

  • React Terminal

    We do this not because it is easy, but because we thought it would be easy - Some guy on Reddit

  • React

    The remaining React pages now lives here.

  • VueJS

    Continuing on from my previous post where I moved one of my React Pages, I have now removed VueJS from my main site.

  • Recipe Box Move

    The time finally came when this site got too big and I started moving things.

  • Farewell to Railway

    Recently Railway.app announced a change to their pricing structure, so I took the opportunity to revamp my flask app that ran on there to chart the stock market. It now uses Chart JS instead of MatPlotLib as the most visible difference from before.

  • Scarlet Sentinels Welcomes New Recruits

    The Scarlet Sentinels Chapter welcomes Lieutenant Kieran Cadmus and Librarian Zao Urbane as its first Primaris Space Marines.

  • End of University

    A brief summary of what I did in my university projects
  • Machine Learning and Model Railway Making

    Making a model railway diorama with the help of a machine learning translation model
  • Different Report Types

    In my time at McMillan William’s/Taylor Rose MW and as a student at City University I have used various different reporting packages.

  • Automating Documents with Word

    A brief look at various ways of automating Word documents
  • Kill Team

    Sargent Griff Snipa stared out at the wastes of Orthanc. His squad of Boyz had set up shop at a way station halfway between two of the hive cities on the planet. They had been dispatched to locate a human relic, an Inquisitor’s digital gun. Said inquisitor had taunted Big Boss Head-Rippa with it and his transport had been shot down over the way station after his retreat from the Orks at Hive Veritas.

  • Blood Bowl 1st Match

    My first Blood-Bowl match, with a few embellishments

subscribe via RSS