Description

This project was for a client with a large amount of Flickr data and photos that wanted to transition to a new custom site.

Transferred over 15,000 pictures and all data from Flickr via Flickr API. Making over 100,000 API calls for EXIF, album and photo data. The client was mainly interested in preserving tag and album data.

Built a photo site from scratch implementing a database schema for the data and a file structure for photos. Development was iterative with feedback from the client at each stage influencing the next.

Made a new complete tagging system that allows spaces and special characters which uses the existing tag data from the API data.

The site allows new content to be added and uses React via an API for uploading and selecting content.

Deployed the site and all content via SSH to a VPS running Ubuntu Linux which serves the site using Nginx and Gunicorn, the site is also secured with SSL.

Description

Web page that allows users to search for Wikipedia articles and displays the results with title and brief description.

The Wikipedia API is used to get the results which are displayed on a very minimalistic page.

All links open in a new tab.

A random Wikipedia page can also be opened.

Description

Wiki-goo is a mash up of the Wikipedia and google maps APIs. Given an address it returns a marker for that address and Wikipedia articles related to that area so you can discover interesting things connected to that area.

Bootstrap has been used for basic styling and Bootstrap Toggle toggle for sliding buttons.

Description

A todo list made using django and following TDD principles.

It features custom passwordless authorisation.

This project is me following the book TDD with Python Link to book and

repository of that book here, by chapters here.

Description

Presentation Timer is a small application intended to help academics and other people practice presentations with strict time limits. It allows for up to two warnings to be displayed visually or audibly or both at any time during the presentation. The visual warning is modeled after how academic conferences warn presenters about how much time they have remaining.

Requirements about the presentation process at conferences were elicited from Jaana Eigi who provided valuable insights. This is the JavaScript version that runs as a static single page app.

Description

A generic eCommerce site site with call to action, user accounts and payment processing using stripe API.

Description

Quizzer is a small desktop application that reads an SQLite database of countries and then asks what the capital of a randomly chosen country is.

It presents this in the form of a multiple choice question with one correct answer and three incorrect answers.

This is a webapp version of an earlier Tkinter project which does the same.

Description

Pricing service keeps track of product prices on an external website and emails users via mail-gun API when a specified price point is reached.

Description

Presentation Timer is intended to help academics and other people practice presentations with strict time limits.

It allows for up to two warnings to be displayed visually, audibly or both at any time during the presentation. The visual warning is modeled after how academic conferences warn presenters about how much time they have remaining.

Requirements about the presentation process at conferences were elicited from Dr Jaana Eigi who provided valuable insights.

The program is written in python and uses the Tkinter interface to present a GUI to the user.

It has also been converted to a standalone program using py2exe.

Description

Quizzer is a small desktop application that reads an SQLite database of countries and then asks what the capital of a randomly chosen country is.

It presents this in the form of a multiple choice question with one correct answer and three incorrect answers.

The application uses Tkinter to present itself as a GUI for the user to interact with. I wrote this mainly as a small project to familiarise myself with the Tkinter interface.

Description

A Gödel tribute page made on codepen as practice and as part of a freecodecamp tutorial.

Description

Data comes from JSONPlaceholder.

Changes to the data are all local but API calls are used to to get data and in changing that data as if the data were changed.

Axion is used to make API requests.

Bootstrap is used for styling.

The context API is used for data flow.

Description

Allows for searching for videos with instant search.

Five results are returned, each can be clicked on and will load in the main area to watch.

These are displayed as embedded videos. Which can be useful for getting around YouTube restrictions.

This was part of a course for learning react and react router.

Description

A Tictactoe game where you play either an AI or a human then guess if your opponent was human of AI.

This was made as part of a Lynda.com course called full stack react.

I used yarn for dependency management.

Description

The async web app messaging service found in static-server

Messages can be posted by multiple clients the page will then automatically update for all clients.

The messages are stored on a Mongodb database on mLab.

Made as part of a Lynda.com course.

Description

Made as part of free code camp front end projects.

Plays an audio sound when the work or play time is done. The sound does not work on CodePen as it depends on a local audio file.

Description

An issue tracker site with the following specification:

Features

Issues can be added and the person who added the the issue is shown.

The issue has a text description, status and category, categories include:

1. bug

2. enhancements

3. documentation

Issues can be added and edited via Django admin.

Statistics about the average, longest and shortest time taken to solve the issues are shown in the header.

Categories are implemented in the database.

Django auth is used to implement a superuser who can change, add or edit any issues.

A staff account type (StaffUser in the model) can view issues but cannot edit or change anything.

Database

SQLite

Installation instructions

A virtualenv is required using python 3.6 along with all dependencies listed in requirements.txt

After activating your virtualenv dependencies can be installed with:

pip install -r requirements.txt

Running the server and accessing the app

Navigate to issuesite and run:

python manage.py runsever

Description

A small demo project to record mouse movements and play them back.

A JS array is used to store mouse coordinates.

Clicks are also recorded and logged to the screen along with the window size and a UUID.

Play back is done with jQuery and CSS.

Description

The analysis are in jupyter notebooks, if you click on either of them above github should render the output for them.

Multi bat species cohabitation at roost sites was explored. Bat species abundance counts were grouped and then clustering based on derived statistical values using the k-means algorithm. Silhouette analysis was used to judge clustering quality. This was then compared to actual cohabitation counts at roost sites.

Chisquared test was used to determine if the differences between roost and hibernation abundance is significant.