About me is ready

replace/e77aff86510386d6f69db2c66fb1d7e6642376a3
Cobular 5 years ago
parent 895ccd8cb1
commit 5f76685897

File diff suppressed because one or more lines are too long

37
package-lock.json generated

@ -1211,35 +1211,6 @@
} }
} }
}, },
"@fortawesome/fontawesome-common-types": {
"version": "0.2.32",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz",
"integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w=="
},
"@fortawesome/fontawesome-svg-core": {
"version": "1.2.32",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz",
"integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==",
"requires": {
"@fortawesome/fontawesome-common-types": "^0.2.32"
}
},
"@fortawesome/free-solid-svg-icons": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz",
"integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==",
"requires": {
"@fortawesome/fontawesome-common-types": "^0.2.32"
}
},
"@fortawesome/react-fontawesome": {
"version": "0.1.14",
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.14.tgz",
"integrity": "sha512-4wqNb0gRLVaBm/h+lGe8UfPPivcbuJ6ecI4hIgW0LjI7kzpYB9FkN0L9apbVzg+lsBdcTf0AlBtODjcSX5mmKA==",
"requires": {
"prop-types": "^15.7.2"
}
},
"@hapi/address": { "@hapi/address": {
"version": "2.1.4", "version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@ -3245,6 +3216,14 @@
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz",
"integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==" "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ=="
}, },
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"requires": {
"follow-redirects": "^1.10.0"
}
},
"axobject-query": { "axobject-query": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",

@ -23,7 +23,8 @@
"react-router-dom": "^5.2.0", "react-router-dom": "^5.2.0",
"react-scripts": "4.0.1", "react-scripts": "4.0.1",
"typescript": "^4.1.3", "typescript": "^4.1.3",
"web-vitals": "^0.2.4" "web-vitals": "^0.2.4",
"axios": "^0.21.1"
}, },
"scripts": { "scripts": {
"start": "react-scripts start", "start": "react-scripts start",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 264 KiB

@ -7,7 +7,7 @@
<meta name="theme-color" content="#000000" /> <meta name="theme-color" content="#000000" />
<meta <meta
name="description" name="description"
content="Web site created using create-react-app" content="Jake Cover's Personal Website"
/> />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!-- <!--
@ -24,7 +24,7 @@
work correctly both with client-side routing and a non-root public URL. work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`. Learn how to configure a non-root public URL by running `npm run build`.
--> -->
<title>React App</title> <title>Jake Cover</title>
</head> </head>
<body> <body>
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 44 KiB

@ -1,10 +1,10 @@
{ {
"short_name": "React App", "short_name": "jakecover.me",
"name": "Create React App Sample", "name": "Jake Cover's Personal Website",
"icons": [ "icons": [
{ {
"src": "favicon.ico", "src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16", "sizes": "256x256 128x128 64x64 32x32 24x24 16x16",
"type": "image/x-icon" "type": "image/x-icon"
}, },
{ {

@ -6,7 +6,7 @@ import { Main } from "./components/Main";
function App() { function App() {
return ( return (
<div className="App"> <div className="App" style={{maxWidth: 1823, margin: "auto"}}>
<Header /> <Header />
<Main /> <Main />
<Footer /> <Footer />

@ -0,0 +1,86 @@
#about-me-parent {
margin-left: 10px;
margin-right: 10px;
display: flex;
flex-direction: row;
justify-content: center;
b {
font-weight: 600;
}
.about-me-card {
background: #61dafb;
border-radius: 5px;
margin: 0 5px 0;
padding: 10px;
width: fit-content;
}
#about-me {
background: #61dafb;
border-radius: 5px;
padding: 15px;
width: fit-content;
#info-parent {
display: flex;
flex-direction: row;
#specific-info {
flex: 1 1 0;
}
#fun-info {
flex: 1 1 0;
}
@media screen and (max-width: 660px) {
flex-direction: column;
}
}
h1 {
font-family: "Fira Code", monospace;
font-weight: 500;
}
h2 {
font-family: "Fira Code", monospace;
line-height: normal;
margin-bottom: 0;
font-weight: 400;
text-align: left;
}
p {
font-family: "Montserrat", sans-serif;
font-size: 16px;
margin: 0;
}
ul {
text-align: left;
padding-left: 40px;
margin-bottom: 0;
}
li {
font-family: "Montserrat", sans-serif;
font-size: 18px;
list-style-type: symbols("+");
list-style-position: inside;
}
}
}
button {
background: none!important;
border: none;
padding: 0!important;
color: #1890ff;
cursor: pointer;
}

@ -0,0 +1,177 @@
import "./AboutMe.scss";
import { Link } from "react-router-dom";
import { Tooltip } from "antd";
import { useState, useEffect } from "react";
import axios from "axios";
const TelegramOutlinedSvg = () => {
return (
<svg
width="24px"
height="24px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
style={{
fillRule: "evenodd",
clipRule: "evenodd",
strokeLinejoin: "round",
strokeMiterlimit: 1.41421,
}}
>
<path
id="telegram-1"
d="M18.384,22.779c0.322,0.228 0.737,0.285 1.107,0.145c0.37,-0.141 0.642,-0.457 0.724,-0.84c0.869,-4.084 2.977,-14.421 3.768,-18.136c0.06,-0.28 -0.04,-0.571 -0.26,-0.758c-0.22,-0.187 -0.525,-0.241 -0.797,-0.14c-4.193,1.552 -17.106,6.397 -22.384,8.35c-0.335,0.124 -0.553,0.446 -0.542,0.799c0.012,0.354 0.25,0.661 0.593,0.764c2.367,0.708 5.474,1.693 5.474,1.693c0,0 1.452,4.385 2.209,6.615c0.095,0.28 0.314,0.5 0.603,0.576c0.288,0.075 0.596,-0.004 0.811,-0.207c1.216,-1.148 3.096,-2.923 3.096,-2.923c0,0 3.572,2.619 5.598,4.062Zm-11.01,-8.677l1.679,5.538l0.373,-3.507c0,0 6.487,-5.851 10.185,-9.186c0.108,-0.098 0.123,-0.262 0.033,-0.377c-0.089,-0.115 -0.253,-0.142 -0.376,-0.064c-4.286,2.737 -11.894,7.596 -11.894,7.596Z"
/>
</svg>
);
};
const LastFmLi = () => {
const [nowPlayingSong, setNowPlayingSong] = useState<string>("nothing");
const [nowPlayingArtist, setNowPlayingArtist] = useState<string>("no-one");
const updateNowPlaying = async () => {
try {
const songData = await axios.get(
"https://jsonplaceholder.typicode.com/posts"
);
console.log(songData.data);
} catch (err) {
console.error(err);
}
};
useEffect(() => {
updateNowPlaying();
const interval = setInterval(updateNowPlaying, 10000);
return () => {
clearInterval(interval);
};
}, []);
return <li>listening to ____ by ____</li>;
};
const Age = () => {
const [age, setAge] = useState(
Math.round((new Date().getTime() - 1021004428000) / 1000)
);
const UpdateAge = () => {
setAge(Math.round((new Date().getTime() - 1021004428000) / 1000));
};
useEffect(() => {
UpdateAge();
const interval = setInterval(UpdateAge, 1000);
return () => {
clearInterval(interval);
};
}, []);
return (
<li>
<span style={{ fontFamily: "Fira Code" }}>{age}</span> seconds old{" "}
</li>
);
};
export const AboutMe = () => {
const EmailHandler = () => {
const email = "Y29udGFjdEBqYWtlY292ZXIubWU=";
window.prompt("Thanks for being a human! Here's my email:", atob(email));
};
return (
<div id={"about-me-parent"}>
<div id={"about-me"} className={"about-me-card"}>
<h1> Hi! I'm Jake!</h1>
<div id={"info-parent"}>
<div id={"specific-info"}>
<h2> A bit about me:</h2>
<ul>
<li>
<b>Name</b>: Jake Cover
</li>
<li>Occupation: Student</li>
<li>Location: Southern California</li>
<li>
Projects:{" "}
<button
onClick={() =>
document.getElementById("project-header")?.scrollIntoView({
behavior: "smooth",
block: "start",
})
}
>
Down there
</button>
</li>
<li>
Resume: <Link to={"/resume"}>Over here</Link>
</li>
<li>
Find Me:
<ul>
<li>
Email: <button onClick={EmailHandler}>Click This</button>
</li>
<li>
Twitter:{" "}
<Tooltip title={":("}>
<a
href={"https://github.com/JakeCover"}
target="_blank"
rel="noreferrer"
>
@cobular_
</a>
</Tooltip>
</li>
<li>
GitHub:{" "}
<a
href={"https://github.com/JakeCover"}
target="_blank"
rel="noreferrer"
>
JakeCover
</a>
</li>
<li>
Telegram:{" "}
<a
href={"https://t.me/cobular"}
target="_blank"
rel="noreferrer"
>
@cobular
</a>
</li>
<li>Elsewhere: Probably @cobular</li>
</ul>
</li>
</ul>
</div>
<div id={"fun-info"}>
<h2>I'm:</h2>
<ul>
<Age />
<LastFmLi />
<li>
doing (general stuff - in class, projects, sleeping, games)
</li>
</ul>
</div>
</div>
</div>
</div>
);
};

@ -10,6 +10,10 @@
p { p {
font-family: "Montserrat", sans-serif; font-family: "Montserrat", sans-serif;
@media screen and (min-width: 900px) {
font-size: 16px;
}
} }
} }
@ -17,6 +21,14 @@
display: flex; display: flex;
justify-content: space-evenly; justify-content: space-evenly;
.blurb {
flex: 9;
}
.links-container {
flex: 4;
}
.footer-links { .footer-links {
padding-left: 0; padding-left: 0;
margin: 0; margin: 0;

@ -1,4 +1,6 @@
import "./Footer.scss" import "./Footer.scss"
import { Link } from "react-router-dom";
export const Footer = () => { export const Footer = () => {
return ( return (
@ -16,16 +18,13 @@ export const Footer = () => {
<h2>Links and Stuff</h2> <h2>Links and Stuff</h2>
<ul className="footer-links"> <ul className="footer-links">
<li> <li>
<a href="index.html">Home</a> <Link to={"/"}>Home</Link>
</li>
<li>
<a href="contact.html">Contact</a>
</li> </li>
<li> <li>
<a href="about.html">About</a> <Link to={"/contact"}>Contact</Link>
</li> </li>
<li> <li>
<a href="resume.html">Resume</a> <Link to={"/resume"}>Resume</Link>
</li> </li>
<li> <li>
<a href="https://github.com/JakeCover">GitHub</a> <a href="https://github.com/JakeCover">GitHub</a>

@ -22,6 +22,7 @@ header {
h2 { h2 {
margin: 0; margin: 0;
border-radius: 5px; border-radius: 5px;
line-height: normal;
&:hover { &:hover {
background: #ddd; background: #ddd;
@ -36,30 +37,52 @@ header {
h2:last-of-type { h2:last-of-type {
margin-right: 5px; margin-right: 5px;
} }
}
/* Hide the link that should open and close the topnav on small screens */
.icon {
display: none;
}
/* Hide the link that should open and close the topnav on small screens */ @media screen and (max-width: 660px) {
.icon { h2 {
display: none; display: none;
} }
@media screen and (max-width: 660px) { .icon {
h2 { margin-left: auto;
display: none; display: block;
} position: absolute;
top: 19px;
right: 24px;
font-size: 30px;
border: none;
}
.icon { .headerLinks {
margin-left: auto; visibility: hidden;
display: block; transition: visibility 0s, opacity 0.5s linear;
}
} }
} }
@media screen and (max-width: 660px) { @media screen and (max-width: 660px) {
&.responsive { &.responsive {
background: #282c34; display: block;
.headerLinks {
visibility: visible;
display: flex;
flex-direction: column;
align-items: flex-start;
}
h1 {
text-align: left;
}
h2 { h2 {
display: block; display: block;
margin-left: 5px;
} }
} }
} }

@ -1,9 +1,8 @@
import React from "react"; import React from "react";
import "./Header.scss"; import "./Header.scss";
import { Space } from "antd"; import { Button, Space } from "antd";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import {MenuOutlined} from "@ant-design/icons"; import { MenuOutlined } from "@ant-design/icons";
export const Header = () => { export const Header = () => {
function showHideHamburger() { function showHideHamburger() {
@ -23,6 +22,13 @@ export const Header = () => {
<Link to="/" className="navbar-brand"> <Link to="/" className="navbar-brand">
<h1>Jake Cover</h1> <h1>Jake Cover</h1>
</Link> </Link>
<Button
href={void 0}
className="icon"
onClick={() => showHideHamburger()}
>
<MenuOutlined className={"fa fa-bars"} />
</Button>
<Space className={"headerLinks"}> <Space className={"headerLinks"}>
<Link className="nav-link" to="/"> <Link className="nav-link" to="/">
@ -35,15 +41,13 @@ export const Header = () => {
<Link className="nav-link" to="/resume"> <Link className="nav-link" to="/resume">
<h2>Resume</h2> <h2>Resume</h2>
</Link> </Link>
<a className="nav-link" href="https://github.com/JakeCover">
<h2>GitHub</h2>
</a>
<a <a
href={void(0)} className="nav-link"
className="icon" href="https://github.com/JakeCover"
onClick={() => showHideHamburger()} target="_blank"
rel="noreferrer"
> >
<MenuOutlined className={"fa fa-bars"}/> <h2>GitHub</h2>
</a> </a>
</Space> </Space>
</header> </header>

@ -1,13 +1,2 @@
#about-me {
background: #61dafb;
border-radius: 5px;
margin: 10px auto;
padding: 10px;
width: fit-content;
p {
font-family: "Montserrat", sans-serif;
font-size: 16px;
}
}

@ -1,16 +1,12 @@
import "./Home.scss" import "./Home.scss";
import {ProjectGrid} from "./ProjectGrid"; import { ProjectGrid } from "./ProjectGrid";
import {AboutMe} from "./AboutMe";
export const Home = () => { export const Home = () => {
return ( return (
<div id={"home"}> <div id={"home"}>
<div id={"about-me"}> <AboutMe />
<p> <ProjectGrid />
Hi! I'm Jake, a CS student from the west coast! Take a look at some of my projects below! <br/> </div>
This site is still under construction, so pardon the duplicate information and the horrendous colors. The final version should be up soon! );
</p> };
</div>
<ProjectGrid/>
</div>
)
}

@ -1,6 +1,6 @@
@import "~include-media/dist/_include-media.scss"; @import "~include-media/dist/_include-media.scss";
$breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-large: 1560px); $breakpoints: (x-small: 400px, small: 660px, medium: 900px, large: 1300px, x-large: 1560px);
// Override Sass min() // Override Sass min()
@function min($numbers...) { @function min($numbers...) {
@ -12,11 +12,36 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
@return m#{a}x(#{$numbers}); @return m#{a}x(#{$numbers});
} }
#project-grid-parent {
#project-grid {
margin: 10px; margin: 10px;
background: #FFD43B; background: #FFD43B;
border-radius: 5px; border-radius: 5px;
& > #project-header {
background: grey;
border-radius: 5px 5px 0 0;
margin-bottom: 2px;
padding: 5px;
h2 {
margin-bottom: 0;
font-family: "Fira Code", monospace;
font-size: 24px;
}
p {
margin: 0 0 3px;
font-family: "Montserrat", sans-serif;
font-size: 18px;
}
}
}
#project-grid {
//padding: 10px; //padding: 10px;
@include media("<=x-small") { @include media("<=x-small") {
@ -36,26 +61,26 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
@include media(">=small", "<medium") { @include media(">=small", "<medium") {
.GridSizer, .OneWide { .GridSizer, .OneWide {
width: 32%; width: 33%;
} }
.FourByOne { .FourByOne {
width: 95%; width: 99%;
} }
} }
@include media(">=medium", "<large") { @include media(">=medium", "<large") {
.GridSizer, .OneWide { .GridSizer, .OneWide {
width: 24.5%; width: 24.9%;
} }
.FourByOne { .FourByOne {
width: 73%; width: 74.6%;
} }
} }
@include media(">=large", "<x-large") { @include media(">=large", "<x-large") {
.GridSizer, .OneWide { .GridSizer, .OneWide {
max-width: 300px; max-width: 300px;
width: 19.5%; width: 19.9%;
} }
.FourByOne { .FourByOne {
width: 58.5%; width: 58.5%;
@ -81,12 +106,12 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
border-radius: 5px; border-radius: 5px;
background: lightcyan; background: lightcyan;
box-shadow: 0 1px 2px rgba(0,0,0,0.15); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
transition: box-shadow 0.3s ease-in-out; transition: box-shadow 0.3s ease-in-out;
} }
.GridElementInternal:hover { .GridElementInternal:hover {
box-shadow: 0 2px 5px rgba(0,0,0,0.3); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
} }
h2 { h2 {
@ -159,6 +184,6 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
font-size: 24px; font-size: 24px;
color: black; color: black;
background: rgba(224,255,255, 0.7); background: rgba(224, 255, 255, 0.7);
border-radius: 5px; border-radius: 5px;
} }

@ -16,6 +16,7 @@ import CodeDaySD from "../images/SanDiego.svg";
import Foresight from "../images/foresightsports.png"; import Foresight from "../images/foresightsports.png";
import Distest from "../images/distest.svg"; import Distest from "../images/distest.svg";
import Scoresaver from "../images/scoresaver.svg"; import Scoresaver from "../images/scoresaver.svg";
import Hashicorp from "../images/HashiCorp_Logo_no_text.png";
type GridElementImageProps = { type GridElementImageProps = {
@ -163,93 +164,101 @@ export const ProjectGrid = () => {
}); });
return ( return (
<div id={"project-grid-parent"}> <div>
<div id={"project-grid"}> <div id={"project-grid-parent"}>
<div className={"GridSizer"} /> <div id={"project-header"}>
<OneWide <h2>&lt;/&gt; My Projects</h2>
title={"ElaticMatch"} <p>
org={"CodeDay"} A gallery of some of my most interesting projects. Look for <LinkOutlined />, click those projects for more information!
text={"A set of tools, including a custom suggestion and weighting system, as well as a custom matching algorithm that I wrote and used to match around 350 students to the best-fitting mentors in the CodeDay Labs summer internship program in 2020."} </p>
link={"https://github.com/codeday/labs-elastic-match"} </div>
/> <div id={"project-grid"}>
<OneWide
title={"John Peter"} <div className={"GridSizer"}/>
org={"CodeDay"} <OneWide
text={ title={"ElaticMatch"}
"John Peter is a Discord bot used for moderation and server management for Virtual CodeDay. It has a very extensive featureset, and has been used for multiple CodeDays and has worked with over 1000 students." org={"CodeDay"}
} text={"A set of tools, including a custom suggestion and weighting system, as well as a custom matching algorithm that I wrote and used to match around 350 students to the best-fitting mentors in the CodeDay Labs summer internship program in 2020."}
link={"https://github.com/codeday/johnpeter-discord"} link={"https://github.com/codeday/labs-elastic-match"}
/> />
<OneWide <OneWide
title={"CopyMoji"} title={"John Peter"}
org={"BetterDiscord"} org={"CodeDay"}
text={ text={
"An extension for the alternate discord client BetterDiscord that changes the functionality of copying emoji to copy the actual emoji characters rather than their names from the discord client." "John Peter is a Discord bot used for moderation and server management for Virtual CodeDay. It has a very extensive featureset, and has been used for multiple CodeDays and has worked with over 1000 students."
} }
link={"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"} link={"https://github.com/codeday/johnpeter-discord"}
/> />
<OneWidePic <OneWide
image_url={CodeDaySD} title={"CopyMoji"}
image_alt={"CodeDay San Diego Logo"} org={"BetterDiscord"}
org={"CodeDay"} text={
title={"CodeDay San Diego"} "An extension for the alternate discord client BetterDiscord that changes the functionality of copying emoji to copy the actual emoji characters rather than their names from the discord client."
text={ }
"A 24 hour hackathon occurring around the world a few times a year. I volunteered for and then later ran the San Diego event." link={"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"}
} />
link={"https://event.codeday.org/sandiego"} <OneWidePic
/> image_url={CodeDaySD}
<FourByOneGridElement image_alt={"CodeDay San Diego Logo"}
image_url={Foresight} org={"CodeDay"}
image_alt={"Foresight Sports Logo"} title={"CodeDay San Diego"}
title={"Foresight Sports"} text={
text={ "A 24 hour hackathon occurring around the world a few times a year. I volunteered for and then later ran the San Diego event."
"Foresight Sports creates advanced augmented reality sports experiences. I created multiple games using Unity that took data from their launch monitor technology and translated it into a seamless experience." }
} link={"https://event.codeday.org/sandiego"}
/> />
<OneWidePic <FourByOneGridElement
image_url={Distest} image_url={Foresight}
image_alt={"Distest Logo"} image_alt={"Foresight Sports Logo"}
title={"Distest"} title={"Foresight Sports"}
org={"Random Projects"} text={
text={ "Foresight Sports creates advanced augmented reality sports experiences. I created multiple games using Unity that took data from their launch monitor technology and translated it into a seamless experience."
"Distest is a testing library I wrote for Discord bots that allows for full integration tests of bots, improving the discord bot development workflow significantly. As far as I know, it's the only tool available for this sort of testing." }
} />
link={"https://github.com/JakeCover/distest"} <OneWidePic
/> image_url={Distest}
<OneWidePic image_alt={"Distest Logo"}
image_url={Scoresaver} title={"Distest"}
image_alt={"Scoresaver Logo"} org={"Random Projects"}
title={"ScoreSaver"} text={
org={"Random Projects"} "Distest is a testing library I wrote for Discord bots that allows for full integration tests of bots, improving the discord bot development workflow significantly. As far as I know, it's the only tool available for this sort of testing."
text={ }
"A Chrome extension to help you download beatsaber songs directly from ScoreSaber. No more searching for mapper names on BeatSaver, just download the newest ranked songs directly!" link={"https://github.com/JakeCover/distest"}
} />
link={"https://github.com/JakeCover/ScoreSaverExtention"} <OneWidePic
/> image_url={Scoresaver}
<OneWide image_alt={"Scoresaver Logo"}
title={"Personal Website"} title={"ScoreSaver"}
org={"Random Projects"} org={"Random Projects"}
text={ text={
"You're looking at it! There's not a whole lot to this, it's just a React site hosted on GitHub Pages, but I didn't know React before starting on this so I'm pretty proud of it." "A Chrome extension to help you download beatsaber songs directly from ScoreSaber. No more searching for mapper names on BeatSaver, just download the newest ranked songs directly!"
} }
link={"https://github.com/JakeCover/PersonalWebsite_Static"} link={"https://github.com/JakeCover/ScoreSaverExtention"}
/> />
<OneWidePic <OneWide
image_url={"http://jakecover.me/images/codedaysd.png"} title={"Personal Website"}
image_alt={"CodeDay San Diego Logo"} org={"Random Projects"}
title={"CodeDay"} text={
text={ "You're looking at it! There's not a whole lot to this, it's just a React site hosted on GitHub Pages, but I didn't know React before starting on this so I'm pretty proud of it."
"CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges\n attendees to create a game or an app." }
} link={"https://github.com/JakeCover/PersonalWebsite_Static"}
/> />
<OneWidePic <OneWidePic
image_url={"http://jakecover.me/images/codedaysd.png"} image_url={Hashicorp}
image_alt={"CodeDay San Diego Logo"} image_alt={"HashiCorp Logo"}
title={"CodeDay"} title={"Hashicorp Stack Sysadmin"}
text={ org={"CodeDay, Random Projects"}
"CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges\n attendees to create a game or an app." text={
} "I've setup and used a stack consisting of Nomad, Consul, and Vault along with Traefik both at CodeDay, where it runs almost every service we have, as well as at home, where I use it to run a number of assorted services on a few old machines. I strongly recommend it, it's very powerful and not all that complex to get started with!"
/> }
/>
<OneWide
title={"CodeDay"}
text={
"CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges\n attendees to create a game or an app."
}
/>
</div>
</div> </div>
</div> </div>
); );

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

@ -1,2 +1,2 @@
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400,600&family=Montserrat:wght@400;600;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Montserrat:wght@400;600;700&display=swap');

Loading…
Cancel
Save