Revert "Undid all the weirdness caused by copilot, never again"
This reverts commit d2bf400202.
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 171 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 228 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 45 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="icon" href="favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<meta name="theme-color" content="#000000" />
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="The Personal Website of Gregory Campbell"
|
||||||
|
/>
|
||||||
|
<link rel="apple-touch-icon" href="logo192.png" />
|
||||||
|
<!--
|
||||||
|
manifest.json provides metadata used when your web app is installed on a
|
||||||
|
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||||
|
-->
|
||||||
|
<link rel="manifest" href="manifest.json" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
/>
|
||||||
|
<title>Gregory J Campbell</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
<div id="root"></div>
|
||||||
|
<!--
|
||||||
|
This HTML file is a template.
|
||||||
|
If you open it directly in the browser, you will see an empty page.
|
||||||
|
|
||||||
|
You can add webfonts, meta tags, or analytics to this file.
|
||||||
|
The build step will place the bundled scripts into the <body> tag.
|
||||||
|
|
||||||
|
To begin the development, run `npm start` or `yarn start`.
|
||||||
|
To create a production bundle, use `npm run build` or `yarn build`.
|
||||||
|
-->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"short_name": "My Website",
|
||||||
|
"name": "The Website of Gregory Campbell",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "favicon.ico",
|
||||||
|
"sizes": "64x64 32x32 24x24 16x16",
|
||||||
|
"type": "image/x-icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "logo192.png",
|
||||||
|
"type": "image/png",
|
||||||
|
"sizes": "192x192"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "logo512.png",
|
||||||
|
"type": "image/png",
|
||||||
|
"sizes": "512x512"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start_url": ".",
|
||||||
|
"display": "standalone",
|
||||||
|
"theme_color": "#000000",
|
||||||
|
"background_color": "#ffffff"
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# https://www.robotstxt.org/robotstxt.html
|
||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
@@ -28,6 +28,7 @@ export const Home = () => {
|
|||||||
<img
|
<img
|
||||||
src={meImage}
|
src={meImage}
|
||||||
alt="Portrait of Gregory Campbell"
|
alt="Portrait of Gregory Campbell"
|
||||||
|
className="homeimage"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
decoding="async"
|
decoding="async"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -4,39 +4,24 @@ import ProjectCard from './components/ProjectCard';
|
|||||||
|
|
||||||
// Import all project images
|
// Import all project images
|
||||||
import StateMachine from './assets/StateMachine.png';
|
import StateMachine from './assets/StateMachine.png';
|
||||||
import HSV from './assets/HSV.png';
|
|
||||||
import skin2 from './assets/skin2.png';
|
import skin2 from './assets/skin2.png';
|
||||||
import EulerExample from './assets/EulerExample.png';
|
import EulerExample from './assets/EulerExample.png';
|
||||||
import EulerCycle from './assets/EulerCycle.png';
|
|
||||||
import Hangman from './assets/Hangman.png';
|
import Hangman from './assets/Hangman.png';
|
||||||
import KnightsTour from './assets/KnightsTour.png';
|
import KnightsTour from './assets/KnightsTour.png';
|
||||||
import TextAnalyzer from './assets/TextAnalyzer.png';
|
import TextAnalyzer from './assets/TextAnalyzer.png';
|
||||||
import AlgorithmComparison from './assets/AlgorithmComparison.png';
|
import AlgorithmComparison from './assets/AlgorithmComparison.png';
|
||||||
import ShowingOff from './assets/ShowingOff.jpg';
|
import ShowingOff from './assets/ShowingOff.jpg';
|
||||||
import MJB from './assets/MJB.jpg';
|
|
||||||
import GunControl from './assets/GunControl.png';
|
|
||||||
import Palish from './assets/Palish.png';
|
|
||||||
import WH from './assets/W&H.png';
|
|
||||||
import SRS from './assets/SRS.png';
|
|
||||||
|
|
||||||
|
|
||||||
// Map imgName to imported images
|
// Map imgName to imported images
|
||||||
const imageMap = {
|
const imageMap = {
|
||||||
StateMachine,
|
StateMachine,
|
||||||
HSV,
|
|
||||||
skin2,
|
skin2,
|
||||||
EulerExample,
|
EulerExample,
|
||||||
EulerCycle,
|
|
||||||
Hangman,
|
Hangman,
|
||||||
KnightsTour,
|
KnightsTour,
|
||||||
TextAnalyzer,
|
TextAnalyzer,
|
||||||
AlgorithmComparison,
|
AlgorithmComparison,
|
||||||
ShowingOff,
|
ShowingOff,
|
||||||
MJB,
|
|
||||||
GunControl,
|
|
||||||
Palish,
|
|
||||||
WH,
|
|
||||||
SRS
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const projects = [
|
const projects = [
|
||||||
@@ -51,12 +36,8 @@ const projects = [
|
|||||||
title: 'Python Skin Detection Algorithms',
|
title: 'Python Skin Detection Algorithms',
|
||||||
link: 'https://github.com/gjcampbell777/python-photo-skin-detection',
|
link: 'https://github.com/gjcampbell777/python-photo-skin-detection',
|
||||||
description: 'Replicated multiple skin detection algorithms in Python and modernized them for Python 3.',
|
description: 'Replicated multiple skin detection algorithms in Python and modernized them for Python 3.',
|
||||||
imgName: 'HSV',
|
|
||||||
imgAlt: 'Skin detection image after',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
imgName: 'skin2',
|
imgName: 'skin2',
|
||||||
imgAlt: 'Skin detection image before',
|
imgAlt: 'Skin detection before/after',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Euler Checking Algorithm',
|
title: 'Euler Checking Algorithm',
|
||||||
@@ -65,10 +46,6 @@ const projects = [
|
|||||||
imgName: 'EulerExample',
|
imgName: 'EulerExample',
|
||||||
imgAlt: 'Euler example'
|
imgAlt: 'Euler example'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
imgName: 'EulerCycle',
|
|
||||||
imgAlt: 'Euler cycle output',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: 'Fortran Hangman',
|
title: 'Fortran Hangman',
|
||||||
link: 'https://github.com/gjcampbell777/fortran-hangman',
|
link: 'https://github.com/gjcampbell777/fortran-hangman',
|
||||||
@@ -99,30 +76,11 @@ const projects = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'My Many Games',
|
title: 'My Many Games',
|
||||||
|
link: 'https://gregorysoup.itch.io',
|
||||||
description: 'A selection of games made with Unity and Godot.',
|
description: 'A selection of games made with Unity and Godot.',
|
||||||
imgName: 'ShowingOff',
|
imgName: 'ShowingOff',
|
||||||
imgAlt: 'Game showcase'
|
imgAlt: 'Game showcase'
|
||||||
},
|
}
|
||||||
{
|
|
||||||
imgName: 'MJB',
|
|
||||||
imgAlt: 'Magical Jumping Bean'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
imgName: 'GunControl',
|
|
||||||
imgAlt: 'Gun Control'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
imgName: 'Palish',
|
|
||||||
imgAlt: 'Palish'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
imgName: 'WH',
|
|
||||||
imgAlt: 'Wally And Harv Escape the Fireball and Brick Factory'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
imgName: 'SRS',
|
|
||||||
imgAlt: 'Super Robo Squad'
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export const Projects = () => {
|
export const Projects = () => {
|
||||||
@@ -138,6 +96,14 @@ export const Projects = () => {
|
|||||||
<aside>Look at what I've created!</aside>
|
<aside>Look at what I've created!</aside>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<p>This page contains the projects I've done in the past, present and future.</p>
|
||||||
|
<p>
|
||||||
|
If you want to see what I'm currently working on, you can see all my updates{' '}
|
||||||
|
<a href="https://twitter.com/Gregory_Soup" target="_blank" rel="noreferrer noopener">here</a>.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
{projects.map((p) => (
|
{projects.map((p) => (
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
key={p.title}
|
key={p.title}
|
||||||
|
|||||||