diff --git a/asset-manifest.json b/asset-manifest.json index 7ead10b..ef109ea 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { "main.css": "/static/css/main.d8fb1f37.chunk.css", - "main.js": "/static/js/main.c85db8d8.chunk.js", - "main.js.map": "/static/js/main.c85db8d8.chunk.js.map", + "main.js": "/static/js/main.7817a97e.chunk.js", + "main.js.map": "/static/js/main.7817a97e.chunk.js.map", "runtime-main.js": "/static/js/runtime-main.63efa834.js", "runtime-main.js.map": "/static/js/runtime-main.63efa834.js.map", "static/css/2.85610714.chunk.css": "/static/css/2.85610714.chunk.css", @@ -24,6 +24,6 @@ "static/css/2.85610714.chunk.css", "static/js/2.8c603c54.chunk.js", "static/css/main.d8fb1f37.chunk.css", - "static/js/main.c85db8d8.chunk.js" + "static/js/main.7817a97e.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 325293d..818d243 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Jake Cover
\ No newline at end of file +Jake Cover
\ No newline at end of file diff --git a/static/js/main.c85db8d8.chunk.js b/static/js/main.7817a97e.chunk.js similarity index 78% rename from static/js/main.c85db8d8.chunk.js rename to static/js/main.7817a97e.chunk.js index 60b7bce..830b41b 100644 --- a/static/js/main.c85db8d8.chunk.js +++ b/static/js/main.7817a97e.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonppersonal-website-static"]=this["webpackJsonppersonal-website-static"]||[]).push([[0],{101:function(e,t,i){},102:function(e,t,i){},103:function(e,t,i){},104:function(e,t,i){},109:function(e,t,i){},125:function(e,t,i){},126:function(e,t,i){},131:function(e,t,i){},150:function(e,t,i){"use strict";i.r(t);var r=i(1),n=i(0),s=i(17),c=i.n(s),a=(i(101),i(102),i(103),i(104),i(12));function o(){return Object(r.jsxs)("footer",{className:"site-footer",children:[Object(r.jsxs)("div",{className:"footer-grid",children:[Object(r.jsx)("div",{className:"blurb",children:Object(r.jsxs)("p",{className:"text-justify",children:["Made with \u2615 and \u2764\ufe0f by Jake Cover, a CS student who really needs to find something witty and interesting to put here soon. Feel free to reach out!",Object(r.jsx)("br",{}),"Checklist Icon by Arthur Shlain from the Noun Project"]})}),Object(r.jsxs)("div",{className:"links-container",children:[Object(r.jsx)("h2",{children:"Links and Stuff"}),Object(r.jsxs)("ul",{className:"footer-links",children:[Object(r.jsx)("li",{children:Object(r.jsx)(a.b,{to:"/",children:"Home"})}),Object(r.jsx)("li",{children:Object(r.jsx)(a.b,{to:"/contact",children:"Contact"})}),Object(r.jsx)("li",{children:Object(r.jsx)(a.b,{to:"/resume",children:"Resume"})}),Object(r.jsx)("li",{children:Object(r.jsx)("a",{href:"https://github.com/JakeCover",children:"GitHub"})})]})]})]}),Object(r.jsx)("hr",{}),Object(r.jsx)("div",{className:"copyright-text",children:"Copyright \xa9 2020 All Rights Reserved by Jake Cover"})]})}i(109);var l=i(153),d=i(155),j=i(156);function h(){return Object(r.jsxs)("header",{className:"header",id:"myHeader",children:[Object(r.jsx)(a.b,{to:"/",className:"navbar-brand",children:Object(r.jsx)("h1",{children:"Jake Cover"})}),Object(r.jsx)(l.a,{href:void 0,className:"icon",onClick:function(){return function(){var e=document.getElementById("myHeader");"header"===e.className?e.className+=" responsive":e.className="header"}()},children:Object(r.jsx)(j.a,{className:"fa fa-bars"})}),Object(r.jsxs)(d.b,{className:"headerLinks",children:[Object(r.jsx)(a.b,{className:"nav-link",to:"/",children:Object(r.jsx)("h2",{children:"Home"})}),Object(r.jsx)(a.b,{className:"nav-link",to:"/contact",children:Object(r.jsx)("h2",{children:"Contact"})}),Object(r.jsx)(a.b,{className:"nav-link",to:"/resume",children:Object(r.jsx)("h2",{children:"Resume"})}),Object(r.jsx)("a",{className:"nav-link",href:"https://github.com/JakeCover",target:"_blank",rel:"noreferrer",children:Object(r.jsx)("h2",{children:"GitHub"})})]})]})}var b=i(7),m=function(){return Object(r.jsx)("div",{children:Object(r.jsx)("h1",{style:{margin:"auto"},children:"Contact"})})},u=(i(125),i(126),i(83)),x=i.n(u),g=i(84),O=i.n(g),f=i(157),p=i.p+"static/media/SanDiego.35f8cc09.svg",v=i.p+"static/media/distest.6bf47b83.svg",A=i.p+"static/media/scoresaver.3f65e348.svg",k=i.p+"static/media/HashiCorp_Logo_no_text.344aecaa.png";function y(e){var t=e.title,i=e.text,n=e.link,s=e.org;return void 0===n?Object(r.jsx)("div",{className:"OneWide GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"title",children:[Object(r.jsx)("h2",{children:t}),s&&Object(r.jsx)("h3",{children:s})]}),Object(r.jsx)("div",{className:"description",children:Object(r.jsx)("p",{children:i})})]})}):Object(r.jsx)("a",{className:"OneWide GridElement Link",href:n,rel:"noreferrer",target:"_blank",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"title",children:[Object(r.jsx)("h2",{children:t}),s&&Object(r.jsx)("h3",{children:s}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsx)("div",{className:"description",children:Object(r.jsx)("p",{children:i})})]})})}function w(e){var t=e.image_url,i=e.image_alt,n=e.title,s=e.text,c=e.link,a=e.org;return void 0===c?Object(r.jsx)("div",{className:"OneWide Pic GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsx)("div",{className:"image",children:Object(r.jsx)("img",{src:t,alt:i})}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})}):Object(r.jsx)("a",{className:"OneWide Pic GridElement Link",href:c,target:"_blank",rel:"noreferrer",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"image",children:[Object(r.jsx)("img",{src:t,alt:i}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})})}function N(e){var t=e.image_url,i=e.image_alt,n=e.title,s=e.text,c=e.link,a=e.org;return void 0===c?Object(r.jsx)("div",{className:"Medium GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsx)("div",{className:"image",children:Object(r.jsx)("img",{src:t,alt:i})}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})}):Object(r.jsx)("a",{className:"Medium GridElement Link",href:c,target:"_blank",rel:"noreferrer",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"image",children:[Object(r.jsx)("img",{src:t,alt:i}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})})}function D(e){var t=e.image_url,i=e.image_alt,n=e.title,s=e.text,c=e.link,a=e.org;return void 0===c?Object(r.jsx)("div",{className:"FourByOne GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsx)("div",{className:"image",children:Object(r.jsx)("img",{src:t,alt:i})}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})}):Object(r.jsx)("a",{className:"FourByOne GridElement Link",href:c,target:"_blank",rel:"noreferrer",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"image",children:[Object(r.jsx)("img",{src:t,alt:i}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})})}function I(){return Object(n.useEffect)((function(){var e=document.querySelector("#project-grid");if(e){var t=new x.a(e,{itemSelector:".GridElement",gutter:0,columnWidth:".GridSizer",percentPosition:!0});O()(e).on("progress",(function(){setTimeout((function(){var e;return null===(e=t.layout)||void 0===e?void 0:e.call(t)}),200)}))}})),Object(r.jsx)("div",{children:Object(r.jsxs)("div",{id:"project-grid-parent",children:[Object(r.jsxs)("div",{id:"project-header",children:[Object(r.jsx)("h2",{children:" My Projects"}),Object(r.jsxs)("p",{children:["A gallery of some of my most interesting projects. Look for"," ",Object(r.jsx)(f.a,{}),", click those projects for more information!"]})]}),Object(r.jsxs)("div",{id:"project-grid",children:[Object(r.jsx)("div",{className:"GridSizer"}),Object(r.jsx)(y,{title:"ElaticMatch",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/labs-elastic-match"}),Object(r.jsx)(y,{title:"John Peter",org:"CodeDay",text:"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/codeday/johnpeter-discord"}),Object(r.jsx)(y,{title:"CopyMoji",org:"BetterDiscord",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.",link:"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"}),Object(r.jsx)(w,{image_url:p,image_alt:"CodeDay San Diego Logo",org:"CodeDay",title:"CodeDay San Diego",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://event.codeday.org/sandiego"}),Object(r.jsx)(D,{image_url:"data:image/png;base64,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",image_alt:"Foresight Sports Logo",title:"Foresight Sports",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."}),Object(r.jsx)(w,{image_url:v,image_alt:"Distest Logo",title:"Distest",org:"Random Projects",text:"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"}),Object(r.jsx)(w,{image_url:A,image_alt:"Scoresaver Logo",title:"ScoreSaver",org:"Random Projects",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/ScoreSaverExtention"}),Object(r.jsx)(N,{image_url:k,image_alt:"HashiCorp Logo",title:"Hashicorp Stack Sysadmin",org:"CodeDay, Random Projects",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 at any scale, from one personal server to large corporate backends."}),Object(r.jsx)(y,{title:"Personal Website",org:"Random Projects",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.",link:"https://github.com/JakeCover/PersonalWebsite_Static"}),Object(r.jsx)(y,{title:"Nomad Job Templates Tool",link:"https://github.com/JakeCover/NomadJobTemplatesTool",org:"Random Projects",text:"A little custom tool to allow you to use jinga-esque text substitutions in Nomad jobfiles to help centralize the definition of service traefik tags. This mainly makes it easier to update and change networking configuration across many jobs easily."}),Object(r.jsx)(y,{title:"Assorted Discord Bots",org:"Random Projects",text:"I've made quite a number of discord bots over time! Some of them, like ReplyBot, which added a reply functionality to Discord years before they finally implemented it first-party, have been obsoleted nowadays, others like DiscordChannelMirror really aren't significantly notable, and many more have been lost to time and past me's lack of understanding of the importance of backup. I digress, however I really do love writing these sorts of applications!"})]})]})})}var M=i(61),G=i.n(M),S=i(85),T=i(46),C=(i(131),i(154)),J=i(86),B=i.n(J);function E(){var e=Object(n.useState)({introduction:"",lastfm:{artist:"nobody",playing:!1,track:"nothing"}}),t=Object(T.a)(e,2),i=t[0],s=t[1];function c(){return a.apply(this,arguments)}function a(){return(a=Object(S.a)(G.a.mark((function e(){var t;return G.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,B.a.get("https://api.jakecover.me");case 3:t=e.sent,s(t.data),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),console.error(e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}return Object(n.useEffect)((function(){c();var e=setInterval(c,1e4);return function(){clearInterval(e)}}),[]),i.lastfm.playing?Object(r.jsxs)("li",{children:["listening to ",i.lastfm.track," by ",i.lastfm.artist]}):Object(r.jsx)("li",{children:"not listening to anything right now."})}function R(){function e(t,i,r,n,s){var c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=i+n,o=r+s;return++c>25?[a,o]:Math.abs(t-a/o)>.001?t>a/o?e(t,a,o,n,s,c):e(t,i,r,a,o,c):[a,o]}function t(){var t=(new Date).getTime()-0xedb89b32e0,i=function(){var e=new Date,t=Math.round(new Date(e.getFullYear(),0,1).getTime());return Math.round(new Date(e.getFullYear(),11,31,23,59,59,999).getTime())-t}(),r=Math.floor(t/i),n=e(Math.floor(t%i/1e3)/(i/1e3),0,1,1,1),s=Object(T.a)(n,2),c=s[0],a=s[1];return"".concat(r," and ").concat(c,"/").concat(a)}var i=Object(n.useState)(t()),s=Object(T.a)(i,2),c=s[0],a=s[1];function o(){a(t())}return Object(n.useEffect)((function(){o();var e=setInterval(o,5e3);return function(){clearInterval(e)}}),[]),Object(r.jsxs)("li",{children:[c," years old"]})}function Y(){return Object(r.jsx)("div",{id:"about-me-parent",children:Object(r.jsxs)("div",{id:"about-me",className:"about-me-card",children:[Object(r.jsx)("h1",{children:" Hi! I'm Jake!"}),Object(r.jsxs)("div",{id:"info-parent",children:[Object(r.jsxs)("div",{id:"specific-info",children:[Object(r.jsx)("h2",{children:" A bit about me:"}),Object(r.jsxs)("ul",{children:[Object(r.jsxs)("li",{children:[Object(r.jsx)("b",{children:"Name"}),": Jake Cover"]}),Object(r.jsx)("li",{children:"Occupation: Student"}),Object(r.jsx)("li",{children:"Location: Southern California"}),Object(r.jsxs)("li",{children:["Projects:"," ",Object(r.jsx)("button",{onClick:function(){var e;return null===(e=document.getElementById("project-header"))||void 0===e?void 0:e.scrollIntoView({behavior:"smooth",block:"start"})},children:"Down there"})]}),Object(r.jsxs)("li",{children:["Resume: ",Object(r.jsx)(a.b,{to:"/resume",children:"Over here"})]}),Object(r.jsxs)("li",{children:["Find Me:",Object(r.jsxs)("ul",{children:[Object(r.jsxs)("li",{children:["Email: ",Object(r.jsx)("button",{onClick:function(){window.prompt("Thanks for being a human! Here's my email:",atob("Y29udGFjdEBqYWtlY292ZXIubWU="))},children:"Click This"})]}),Object(r.jsxs)("li",{children:["Twitter:"," ",Object(r.jsx)(C.a,{title:":(",children:Object(r.jsx)("a",{href:"https://github.com/JakeCover",target:"_blank",rel:"noreferrer",children:"@cobular_"})})]}),Object(r.jsxs)("li",{children:["GitHub:"," ",Object(r.jsx)("a",{href:"https://github.com/JakeCover",target:"_blank",rel:"noreferrer",children:"JakeCover"})]}),Object(r.jsxs)("li",{children:["Telegram:"," ",Object(r.jsx)("a",{href:"https://t.me/cobular",target:"_blank",rel:"noreferrer",children:"@cobular"})]}),Object(r.jsx)("li",{children:"Elsewhere: Probably @cobular"})]})]})]})]}),Object(r.jsxs)("div",{id:"fun-info",children:[Object(r.jsx)("h2",{children:"I'm:"}),Object(r.jsxs)("ul",{children:[Object(r.jsx)(R,{}),Object(r.jsxs)(C.a,{title:"Hey! This part is still a work in progress, check back in a bit to see if it's working!",children:[Object(r.jsx)(E,{}),Object(r.jsx)("li",{children:"doing (general stuff - in class, projects, sleeping, games)"})]}),Object(r.jsx)("li",{children:"rather colorblind"})]})]})]})]})})}function H(){return Object(r.jsxs)("div",{id:"home",children:[Object(r.jsx)(Y,{}),Object(r.jsx)(I,{})]})}function P(){return Object(r.jsx)("div",{children:Object(r.jsx)("h1",{style:{margin:"auto"},children:"Resume"})})}function U(){return Object(r.jsx)("main",{children:Object(r.jsxs)(b.c,{children:[Object(r.jsx)(b.a,{exact:!0,path:"/",component:H}),Object(r.jsx)(b.a,{path:"/contact",component:m}),Object(r.jsx)(b.a,{path:"/resume",component:P})]})})}var X=function(){return Object(r.jsxs)("div",{className:"App",style:{maxWidth:1823,margin:"auto"},children:[Object(r.jsx)(h,{}),Object(r.jsx)(U,{}),Object(r.jsx)(o,{})]})},z=function(e){e&&e instanceof Function&&i.e(3).then(i.bind(null,158)).then((function(t){var i=t.getCLS,r=t.getFID,n=t.getFCP,s=t.getLCP,c=t.getTTFB;i(e),r(e),n(e),s(e),c(e)}))};c.a.render(Object(r.jsx)(a.a,{children:Object(r.jsx)(X,{})}),document.getElementById("root")),z()}},[[150,1,2]]]); -//# sourceMappingURL=main.c85db8d8.chunk.js.map \ No newline at end of file +(this["webpackJsonppersonal-website-static"]=this["webpackJsonppersonal-website-static"]||[]).push([[0],{101:function(e,t,i){},102:function(e,t,i){},103:function(e,t,i){},104:function(e,t,i){},109:function(e,t,i){},125:function(e,t,i){},126:function(e,t,i){},131:function(e,t,i){},150:function(e,t,i){"use strict";i.r(t);var r=i(1),n=i(0),s=i(17),c=i.n(s),a=(i(101),i(102),i(103),i(104),i(12));function l(){return Object(r.jsxs)("footer",{className:"site-footer",children:[Object(r.jsxs)("div",{className:"footer-grid",children:[Object(r.jsx)("div",{className:"blurb",children:Object(r.jsxs)("p",{className:"text-justify",children:["Made with \u2615 and \u2764\ufe0f by Jake Cover, a CS student who really needs to find something witty and interesting to put here soon. Feel free to reach out!",Object(r.jsx)("br",{}),"Checklist Icon by Arthur Shlain from the Noun Project"]})}),Object(r.jsxs)("div",{className:"links-container",children:[Object(r.jsx)("h2",{children:"Links and Stuff"}),Object(r.jsxs)("ul",{className:"footer-links",children:[Object(r.jsx)("li",{children:Object(r.jsx)(a.b,{to:"/",children:"Home"})}),Object(r.jsx)("li",{children:Object(r.jsx)(a.b,{to:"/contact",children:"Contact"})}),Object(r.jsx)("li",{children:Object(r.jsx)(a.b,{to:"/resume",children:"Resume"})}),Object(r.jsx)("li",{children:Object(r.jsx)("a",{href:"https://github.com/JakeCover",children:"GitHub"})})]})]})]}),Object(r.jsx)("hr",{}),Object(r.jsx)("div",{className:"copyright-text",children:"Copyright \xa9 2020 All Rights Reserved by Jake Cover"})]})}i(109);var o=i(153),d=i(155),j=i(156);function h(){return Object(r.jsxs)("header",{className:"header",id:"myHeader",children:[Object(r.jsx)(a.b,{to:"/",className:"navbar-brand",children:Object(r.jsx)("h1",{children:"Jake Cover"})}),Object(r.jsx)(o.a,{href:void 0,className:"icon",onClick:function(){return function(){var e=document.getElementById("myHeader");"header"===e.className?e.className+=" responsive":e.className="header"}()},children:Object(r.jsx)(j.a,{className:"fa fa-bars"})}),Object(r.jsxs)(d.b,{className:"headerLinks",children:[Object(r.jsx)(a.b,{className:"nav-link",to:"/",children:Object(r.jsx)("h2",{children:"Home"})}),Object(r.jsx)(a.b,{className:"nav-link",to:"/contact",children:Object(r.jsx)("h2",{children:"Contact"})}),Object(r.jsx)(a.b,{className:"nav-link",to:"/resume",children:Object(r.jsx)("h2",{children:"Resume"})}),Object(r.jsx)("a",{className:"nav-link",href:"https://github.com/JakeCover",target:"_blank",rel:"noreferrer",children:Object(r.jsx)("h2",{children:"GitHub"})})]})]})}var b=i(7),m=function(){return Object(r.jsx)("div",{children:Object(r.jsx)("h1",{style:{margin:"auto"},children:"Contact"})})},u=(i(125),i(126),i(83)),x=i.n(u),O=i(84),g=i.n(O),f=i(157),p=i.p+"static/media/SanDiego.35f8cc09.svg",v=i.p+"static/media/distest.6bf47b83.svg",A=i.p+"static/media/scoresaver.3f65e348.svg",k=i.p+"static/media/HashiCorp_Logo_no_text.344aecaa.png";function y(e){var t=e.title,i=e.text,n=e.link,s=e.org;return void 0===n?Object(r.jsx)("div",{className:"OneWide GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"title",children:[Object(r.jsx)("h2",{children:t}),s&&Object(r.jsx)("h3",{children:s})]}),Object(r.jsx)("div",{className:"description",children:Object(r.jsx)("p",{children:i})})]})}):Object(r.jsx)("a",{className:"OneWide GridElement Link",href:n,rel:"noreferrer",target:"_blank",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"title",children:[Object(r.jsx)("h2",{children:t}),s&&Object(r.jsx)("h3",{children:s}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsx)("div",{className:"description",children:Object(r.jsx)("p",{children:i})})]})})}function w(e){var t=e.image_url,i=e.image_alt,n=e.title,s=e.text,c=e.link,a=e.org;return void 0===c?Object(r.jsx)("div",{className:"OneWide Pic GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsx)("div",{className:"image",children:Object(r.jsx)("img",{src:t,alt:i})}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})}):Object(r.jsx)("a",{className:"OneWide Pic GridElement Link",href:c,target:"_blank",rel:"noreferrer",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"image",children:[Object(r.jsx)("img",{src:t,alt:i}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})})}function N(e){var t=e.image_url,i=e.image_alt,n=e.title,s=e.text,c=e.link,a=e.org;return void 0===c?Object(r.jsx)("div",{className:"Medium GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsx)("div",{className:"image",children:Object(r.jsx)("img",{src:t,alt:i})}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})}):Object(r.jsx)("a",{className:"Medium GridElement Link",href:c,target:"_blank",rel:"noreferrer",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"image",children:[Object(r.jsx)("img",{src:t,alt:i}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})})}function D(e){var t=e.image_url,i=e.image_alt,n=e.title,s=e.text,c=e.link,a=e.org;return void 0===c?Object(r.jsx)("div",{className:"FourByOne GridElement",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsx)("div",{className:"image",children:Object(r.jsx)("img",{src:t,alt:i})}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})}):Object(r.jsx)("a",{className:"FourByOne GridElement Link",href:c,target:"_blank",rel:"noreferrer",children:Object(r.jsxs)("div",{className:"GridElementInternal",children:[Object(r.jsxs)("div",{className:"image",children:[Object(r.jsx)("img",{src:t,alt:i}),Object(r.jsx)(f.a,{className:"LinkIcon"})]}),Object(r.jsxs)("div",{className:"description",children:[Object(r.jsx)("h2",{children:n}),a&&Object(r.jsx)("h3",{children:a}),Object(r.jsx)("p",{children:s})]})]})})}function I(){return Object(n.useEffect)((function(){var e=document.querySelector("#project-grid");if(e){var t=new x.a(e,{itemSelector:".GridElement",gutter:0,columnWidth:".GridSizer",percentPosition:!0});g()(e).on("progress",(function(){setTimeout((function(){var e;return null===(e=t.layout)||void 0===e?void 0:e.call(t)}),200)}))}})),Object(r.jsx)("div",{children:Object(r.jsxs)("div",{id:"project-grid-parent",children:[Object(r.jsxs)("div",{id:"project-header",children:[Object(r.jsx)("h2",{children:" My Projects"}),Object(r.jsxs)("p",{children:["A gallery of some of my most interesting projects. Look for"," ",Object(r.jsx)(f.a,{}),", click those projects for more information!"]})]}),Object(r.jsxs)("div",{id:"project-grid",children:[Object(r.jsx)("div",{className:"GridSizer"}),Object(r.jsx)(y,{title:"ElaticMatch",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/labs-elastic-match"}),Object(r.jsx)(y,{title:"John Peter",org:"CodeDay",text:"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/codeday/johnpeter-discord"}),Object(r.jsx)(y,{title:"CopyMoji",org:"BetterDiscord",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.",link:"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"}),Object(r.jsx)(w,{image_url:p,image_alt:"CodeDay San Diego Logo",org:"CodeDay",title:"CodeDay San Diego",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://event.codeday.org/sandiego"}),Object(r.jsx)(D,{image_url:"data:image/png;base64,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",image_alt:"Foresight Sports Logo",title:"Foresight Sports",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."}),Object(r.jsx)(w,{image_url:v,image_alt:"Distest Logo",title:"Distest",org:"Random Projects",text:"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"}),Object(r.jsx)(w,{image_url:A,image_alt:"Scoresaver Logo",title:"ScoreSaver",org:"Random Projects",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/ScoreSaverExtention"}),Object(r.jsx)(N,{image_url:k,image_alt:"HashiCorp Logo",title:"Hashicorp Stack Sysadmin",org:"CodeDay, Random Projects",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 at any scale, from one personal server to large corporate backends."}),Object(r.jsx)(y,{title:"Personal Website",org:"Random Projects",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.",link:"https://github.com/JakeCover/PersonalWebsite_Static"}),Object(r.jsx)(y,{title:"Nomad Job Templates Tool",link:"https://github.com/JakeCover/NomadJobTemplatesTool",org:"Random Projects",text:"A little custom tool to allow you to use jinga-esque text substitutions in Nomad jobfiles to help centralize the definition of service traefik tags. This mainly makes it easier to update and change networking configuration across many jobs easily."}),Object(r.jsx)(y,{title:"Assorted Discord Bots",org:"Random Projects",text:"I've made quite a number of discord bots over time! Some of them, like ReplyBot, which added a reply functionality to Discord years before they finally implemented it first-party, have been obsoleted nowadays, others like DiscordChannelMirror really aren't significantly notable, and many more have been lost to time and past me's lack of understanding of the importance of backup. I digress, however I really do love writing these sorts of applications!"})]})]})})}var M=i(61),G=i.n(M),S=i(85),T=i(46),C=(i(131),i(154)),J=i(86),B=i.n(J);function E(){var e=Object(n.useState)({introduction:"",lastfm:{artist:"nobody",playing:!1,track:"nothing",url:void 0}}),t=Object(T.a)(e,2),i=t[0],s=t[1];function c(){return a.apply(this,arguments)}function a(){return(a=Object(S.a)(G.a.mark((function e(){var t;return G.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,B.a.get("https://api.jakecover.me");case 3:t=e.sent,s(t.data),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),console.error(e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}return Object(n.useEffect)((function(){c();var e=setInterval(c,1e4);return function(){clearInterval(e)}}),[]),i.lastfm.playing?Object(r.jsx)("li",{children:Object(r.jsxs)("a",{href:i.lastfm.url,target:"_blank",rel:"noreferrer",style:{color:"inherit",textDecoration:"inherit"},children:["listening to ",i.lastfm.track," by"," ",i.lastfm.artist]})}):Object(r.jsx)("li",{children:"not listening to anything right now."})}function R(){function e(){var e=new Date,t=Math.round(new Date(e.getFullYear(),0,1).getTime());return Math.round(new Date(e.getFullYear(),11,31,23,59,59,999).getTime())-t}function t(e,i,r,n,s){var c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=i+n,l=r+s;return++c>25?[a,l]:Math.abs(e-a/l)>.001?e>a/l?t(e,a,l,n,s,c):t(e,i,r,a,l,c):[a,l]}var i=e(),s=(new Date).getTime(),c=Object(n.useCallback)((function(){var i=(new Date).getTime()-0xedb89b32e0,r=e(),n=Math.floor(i/r),s=t(Math.floor(i%r/1e3)/(r/1e3),0,1,1,1),c=Object(T.a)(s,2),a=c[0],l=c[1];return"".concat(n," and ").concat(a,"/").concat(l)}),[i,s]),a=Object(n.useState)(c()),l=Object(T.a)(a,2),o=l[0],d=l[1];var j=Object(n.useCallback)((function(){d(c())}),[c]);return Object(n.useEffect)((function(){j();var e=setInterval(j,5e3);return function(){clearInterval(e)}}),[j]),Object(r.jsxs)("li",{children:[o," years old"]})}function Y(){return Object(r.jsx)("div",{id:"about-me-parent",children:Object(r.jsxs)("div",{id:"about-me",className:"about-me-card",children:[Object(r.jsx)("h1",{children:" Hi! I'm Jake!"}),Object(r.jsxs)("div",{id:"info-parent",children:[Object(r.jsxs)("div",{id:"specific-info",children:[Object(r.jsx)("h2",{children:" A bit about me:"}),Object(r.jsxs)("ul",{children:[Object(r.jsxs)("li",{children:[Object(r.jsx)("b",{children:"Name"}),": Jake Cover"]}),Object(r.jsx)("li",{children:"Occupation: Student"}),Object(r.jsx)("li",{children:"Location: Southern California"}),Object(r.jsxs)("li",{children:["Projects:"," ",Object(r.jsx)("button",{onClick:function(){var e;return null===(e=document.getElementById("project-header"))||void 0===e?void 0:e.scrollIntoView({behavior:"smooth",block:"start"})},children:"Down there"})]}),Object(r.jsxs)("li",{children:["Resume: ",Object(r.jsx)(a.b,{to:"/resume",children:"Over here"})]}),Object(r.jsxs)("li",{children:["Find Me:",Object(r.jsxs)("ul",{children:[Object(r.jsxs)("li",{children:["Email: ",Object(r.jsx)("button",{onClick:function(){window.prompt("Thanks for being a human! Here's my email:",atob("Y29udGFjdEBqYWtlY292ZXIubWU="))},children:"Click This"})]}),Object(r.jsxs)("li",{children:["Twitter:"," ",Object(r.jsx)(C.a,{title:":(",children:Object(r.jsx)("a",{href:"https://github.com/JakeCover",target:"_blank",rel:"noreferrer",children:"@cobular_"})})]}),Object(r.jsxs)("li",{children:["GitHub:"," ",Object(r.jsx)("a",{href:"https://github.com/JakeCover",target:"_blank",rel:"noreferrer",children:"JakeCover"})]}),Object(r.jsxs)("li",{children:["Telegram:"," ",Object(r.jsx)("a",{href:"https://t.me/cobular",target:"_blank",rel:"noreferrer",children:"@cobular"})]}),Object(r.jsx)("li",{children:"Elsewhere: Probably @cobular"})]})]})]})]}),Object(r.jsxs)("div",{id:"fun-info",children:[Object(r.jsx)("h2",{children:"I'm:"}),Object(r.jsxs)("ul",{children:[Object(r.jsx)(R,{}),Object(r.jsx)(E,{}),Object(r.jsx)(C.a,{title:"Hey! This part is still a work in progress, check back in a bit to see if it's working!",children:Object(r.jsx)("li",{children:"doing (general stuff - in class, projects, sleeping, games)"})}),Object(r.jsx)("li",{children:"rather colorblind"})]})]})]})]})})}function H(){return Object(r.jsxs)("div",{id:"home",children:[Object(r.jsx)(Y,{}),Object(r.jsx)(I,{})]})}function P(){return Object(r.jsx)("div",{children:Object(r.jsx)("h1",{style:{margin:"auto"},children:"Resume"})})}function U(){return Object(r.jsx)("main",{children:Object(r.jsxs)(b.c,{children:[Object(r.jsx)(b.a,{exact:!0,path:"/",component:H}),Object(r.jsx)(b.a,{path:"/contact",component:m}),Object(r.jsx)(b.a,{path:"/resume",component:P})]})})}var X=function(){return Object(r.jsxs)("div",{className:"App",style:{maxWidth:1823,margin:"auto"},children:[Object(r.jsx)(h,{}),Object(r.jsx)(U,{}),Object(r.jsx)(l,{})]})},z=function(e){e&&e instanceof Function&&i.e(3).then(i.bind(null,158)).then((function(t){var i=t.getCLS,r=t.getFID,n=t.getFCP,s=t.getLCP,c=t.getTTFB;i(e),r(e),n(e),s(e),c(e)}))};c.a.render(Object(r.jsx)(a.a,{children:Object(r.jsx)(X,{})}),document.getElementById("root")),z()}},[[150,1,2]]]); +//# sourceMappingURL=main.7817a97e.chunk.js.map \ No newline at end of file diff --git a/static/js/main.7817a97e.chunk.js.map b/static/js/main.7817a97e.chunk.js.map new file mode 100644 index 0000000..004b399 --- /dev/null +++ b/static/js/main.7817a97e.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/Footer.tsx","components/Header.tsx","components/Contact.tsx","images/SanDiego.svg","images/distest.svg","images/scoresaver.svg","images/HashiCorp_Logo_no_text.png","components/ProjectGrid.tsx","images/foresightsports.png","components/AboutMe.tsx","components/Home.tsx","components/Resume.tsx","components/Main.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["Footer","className","to","href","Header","id","onClick","x","document","getElementById","showHideHamburger","MenuOutlined","target","rel","Contact","style","margin","SmallElement","title","text","link","org","undefined","LinkOutlined","SmallElementPic","image_url","image_alt","src","alt","MediumElement","LargeElementPic","ProjectGrid","useEffect","elem","querySelector","msnry","Masonry","itemSelector","gutter","columnWidth","percentPosition","ImagesLoaded","on","setTimeout","layout","CodeDaySD","Distest","Scoresaver","Hashicorp","LastFmLi","useState","introduction","lastfm","artist","playing","track","url","nowPlayingData","setNowPlayingData","updateNowPlaying","a","axios","get","songRequestData","data","console","error","interval","setInterval","clearInterval","color","textDecoration","Age","milliseconds_year","dateObj","Date","dateInit","Math","round","getFullYear","getTime","searchSternBorcotTree","left_n","left_d","right_n","right_d","count","center_n","center_d","abs","millisecondsYear","time","memoizedCallbackCalcAge","useCallback","ageMs","yearMs","ageYearsComponent","floor","target_n","target_d","age","setAge","memoizedCallbackUpdateAge","AboutMe","scrollIntoView","behavior","block","window","prompt","atob","Home","Resume","Main","exact","path","component","App","maxWidth","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render"],"mappings":"0YAIO,SAASA,IACd,OACE,yBAAQC,UAAU,cAAlB,UACE,sBAAKA,UAAU,cAAf,UACE,qBAAKA,UAAU,QAAf,SACE,oBAAGA,UAAU,eAAb,6KAGE,uBAHF,6DAOF,sBAAKA,UAAU,kBAAf,UACE,iDACA,qBAAIA,UAAU,eAAd,UACE,6BACE,cAAC,IAAD,CAAMC,GAAI,IAAV,oBAEF,6BACE,cAAC,IAAD,CAAMA,GAAI,WAAV,uBAEF,6BACE,cAAC,IAAD,CAAOA,GAAI,UAAX,sBAEF,6BACE,mBAAGC,KAAK,+BAAR,+BAKR,uBACA,qBAAKF,UAAU,iBAAf,sE,sCC7BC,SAASG,IAad,OACE,yBAAQH,UAAW,SAAUI,GAAI,WAAjC,UACE,cAAC,IAAD,CAAMH,GAAG,IAAID,UAAU,eAAvB,SACE,8CAEF,cAAC,IAAD,CACEE,UAAM,EACNF,UAAU,OACVK,QAAS,kBApBf,WACE,IAAIC,EAAIC,SAASC,eAAe,YAEZ,WAAhBF,EAAEN,UAEJM,EAAEN,WAAa,cAGfM,EAAEN,UAAY,SAYGS,IAHjB,SAKE,cAACC,EAAA,EAAD,CAAcV,UAAW,iBAG3B,eAAC,IAAD,CAAOA,UAAW,cAAlB,UACE,cAAC,IAAD,CAAMA,UAAU,WAAWC,GAAG,IAA9B,SACE,wCAGF,cAAC,IAAD,CAAMD,UAAU,WAAWC,GAAG,WAA9B,SACE,2CAEF,cAAC,IAAD,CAAMD,UAAU,WAAWC,GAAG,UAA9B,SACE,0CAEF,mBACED,UAAU,WACVE,KAAK,+BACLS,OAAO,SACPC,IAAI,aAJN,SAME,gD,WCjDGC,EAAU,WACnB,OACI,8BACI,oBAAIC,MAAO,CAACC,OAAQ,QAApB,wB,2DCHG,MAA0B,qCCA1B,MAA0B,oCCA1B,MAA0B,uCCA1B,MAA0B,mDCsCzC,SAASC,EAAT,GAAqE,IAA7CC,EAA4C,EAA5CA,MAAOC,EAAqC,EAArCA,KAAMC,EAA+B,EAA/BA,KAAMC,EAAyB,EAAzBA,IACzC,YAAaC,IAATF,EAEA,qBAAKnB,UAAW,sBAAhB,SACE,sBAAKA,UAAW,sBAAhB,UACE,sBAAKA,UAAW,QAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,OAEf,qBAAKpB,UAAW,cAAhB,SACE,4BAAIkB,WAOZ,mBACElB,UAAW,2BACXE,KAAMiB,EACNP,IAAK,aACLD,OAAQ,SAJV,SAME,sBAAKX,UAAW,sBAAhB,UACE,sBAAKA,UAAW,QAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,IACb,cAACE,EAAA,EAAD,CAActB,UAAW,gBAE3B,qBAAKA,UAAW,cAAhB,SACE,4BAAIkB,WAOd,SAASK,EAAT,GAO2B,IANzBC,EAMwB,EANxBA,UACAC,EAKwB,EALxBA,UACAR,EAIwB,EAJxBA,MACAC,EAGwB,EAHxBA,KACAC,EAEwB,EAFxBA,KACAC,EACwB,EADxBA,IAEA,YAAaC,IAATF,EAEA,qBAAKnB,UAAW,0BAAhB,SACE,sBAAKA,UAAW,sBAAhB,UACE,qBAAKA,UAAW,QAAhB,SACE,qBAAK0B,IAAKF,EAAWG,IAAKF,MAE5B,sBAAKzB,UAAW,cAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,IAEb,4BAAIF,YAOZ,mBACElB,UAAW,+BACXE,KAAMiB,EACNR,OAAQ,SACRC,IAAK,aAJP,SAME,sBAAKZ,UAAW,sBAAhB,UACE,sBAAKA,UAAW,QAAhB,UACE,qBAAK0B,IAAKF,EAAWG,IAAKF,IAC1B,cAACH,EAAA,EAAD,CAActB,UAAW,gBAE3B,sBAAKA,UAAW,cAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,IACb,4BAAIF,YAOd,SAASU,EAAT,GAO2B,IANzBJ,EAMwB,EANxBA,UACAC,EAKwB,EALxBA,UACAR,EAIwB,EAJxBA,MACAC,EAGwB,EAHxBA,KACAC,EAEwB,EAFxBA,KACAC,EACwB,EADxBA,IAEA,YAAaC,IAATF,EAEE,qBAAKnB,UAAW,qBAAhB,SACE,sBAAKA,UAAW,sBAAhB,UACE,qBAAKA,UAAW,QAAhB,SACE,qBAAK0B,IAAKF,EAAWG,IAAKF,MAE5B,sBAAKzB,UAAW,cAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,IACb,4BAAIF,YAOZ,mBACIlB,UAAW,0BACXE,KAAMiB,EACNR,OAAQ,SACRC,IAAK,aAJT,SAME,sBAAKZ,UAAW,sBAAhB,UACE,sBAAKA,UAAW,QAAhB,UACE,qBAAK0B,IAAKF,EAAWG,IAAKF,IAC1B,cAACH,EAAA,EAAD,CAActB,UAAW,gBAE3B,sBAAKA,UAAW,cAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,IACb,4BAAIF,YAOhB,SAASW,EAAT,GAO2B,IANzBL,EAMwB,EANxBA,UACAC,EAKwB,EALxBA,UACAR,EAIwB,EAJxBA,MACAC,EAGwB,EAHxBA,KACAC,EAEwB,EAFxBA,KACAC,EACwB,EADxBA,IAEA,YAAaC,IAATF,EAEA,qBAAKnB,UAAW,wBAAhB,SACE,sBAAKA,UAAW,sBAAhB,UACE,qBAAKA,UAAW,QAAhB,SACE,qBAAK0B,IAAKF,EAAWG,IAAKF,MAE5B,sBAAKzB,UAAW,cAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,IACb,4BAAIF,YAOZ,mBACElB,UAAW,6BACXE,KAAMiB,EACNR,OAAQ,SACRC,IAAK,aAJP,SAME,sBAAKZ,UAAW,sBAAhB,UACE,sBAAKA,UAAW,QAAhB,UACE,qBAAK0B,IAAKF,EAAWG,IAAKF,IAC1B,cAACH,EAAA,EAAD,CAActB,UAAW,gBAE3B,sBAAKA,UAAW,cAAhB,UACE,6BAAKiB,IACJG,GAAO,6BAAKA,IACb,4BAAIF,YAOP,SAASY,IAkBd,OAjBAC,qBAAU,WACR,IAAIC,EAAOzB,SAAS0B,cAAc,iBAElC,GAAID,EAAM,CACR,IAAME,EAAQ,IAAIC,IAAQH,EAAM,CAC9BI,aAAc,eACdC,OAAQ,EACRC,YAAa,aACbC,iBAAiB,IAGnBC,IAAaR,GAAMS,GAAG,YAAY,WAChCC,YAAW,kCAAMR,EAAMS,cAAZ,aAAM,OAAAT,KAAkB,YAMvC,8BACE,sBAAK9B,GAAI,sBAAT,UACE,sBAAKA,GAAI,iBAAT,UACE,iDACA,4FAC8D,IAC5D,cAACkB,EAAA,EAAD,IAFF,qDAKF,sBAAKlB,GAAI,eAAT,UACE,qBAAKJ,UAAW,cAChB,cAACgB,EAAD,CACEC,MAAO,cACPG,IAAK,UACLF,KACE,mPAEFC,KAAM,kDAER,cAACH,EAAD,CACEC,MAAO,aACPG,IAAK,UACLF,KACE,iNAEFC,KAAM,iDAER,cAACH,EAAD,CACEC,MAAO,WACPG,IAAK,gBACLF,KACE,mMAEFC,KACE,oFAGJ,cAACI,EAAD,CACEC,UAAWoB,EACXnB,UAAW,yBACXL,IAAK,UACLH,MAAO,oBACPC,KACE,+HAEFC,KAAM,uCAER,cAACU,EAAD,CACEL,UCzRG,6+PD0RHC,UAAW,wBACXR,MAAO,mBACPC,KACE,mNAGJ,cAACK,EAAD,CACEC,UAAWqB,EACXpB,UAAW,eACXR,MAAO,UACPG,IAAK,kBACLF,KACE,+OAEFC,KAAM,yCAER,cAACI,EAAD,CACEC,UAAWsB,EACXrB,UAAW,kBACXR,MAAO,aACPG,IAAK,kBACLF,KACE,qLAEFC,KAAM,qDAGR,cAACS,EAAD,CACEJ,UAAWuB,EACXtB,UAAW,iBACXR,MAAO,2BACPG,IAAK,2BACLF,KACE,mZAGJ,cAACF,EAAD,CACIC,MAAO,mBACPG,IAAK,kBACLF,KACE,mLAEFC,KAAM,wDAEV,cAACH,EAAD,CACEC,MAAO,2BACPE,KAAM,qDACNC,IAAK,kBACLF,KACE,4PAGJ,cAACF,EAAD,CACEC,MAAO,wBACPG,IAAK,kBACLF,KACE,md,wEElUd,SAAS8B,IAAY,IAAD,EAC0BC,mBAAyB,CACnEC,aAAc,GACdC,OAAQ,CACNC,OAAQ,SACRC,SAAS,EACTC,MAAO,UACPC,SAAKlC,KAPS,mBACXmC,EADW,KACKC,EADL,cAWHC,IAXG,2EAWlB,4BAAAC,EAAA,+EAEkCC,IAAMC,IAAI,4BAF5C,OAEUC,EAFV,OAIIL,EAAkBK,EAAgBC,MAJtC,gDAMIC,QAAQC,MAAR,MANJ,0DAXkB,sBA8BlB,OATAlC,qBAAU,WACR2B,IAEA,IAAMQ,EAAWC,YAAYT,EAAkB,KAE/C,OAAO,WACLU,cAAcF,MAEf,IACCV,EAAeL,OAAOE,QAEtB,6BACE,oBACEnD,KAAMsD,EAAeL,OAAOI,IAC5B5C,OAAQ,SACRC,IAAI,aACJE,MAAO,CAAEuD,MAAO,UAAWC,eAAgB,WAJ7C,0BAMgBd,EAAeL,OAAOG,MANtC,MAMgD,IAC7CE,EAAeL,OAAOC,YAKxB,sEAGT,SAASmB,IAEP,SAASC,IACP,IAAMC,EAAU,IAAIC,KACdC,EAAWC,KAAKC,MACpB,IAAIH,KAAKD,EAAQK,cAAe,EAAG,GAAGC,WAKxC,OAHgBH,KAAKC,MACnB,IAAIH,KAAKD,EAAQK,cAAe,GAAI,GAAI,GAAI,GAAI,GAAI,KAAKC,WAE1CJ,EAGnB,SAASK,EACPrE,EACAsE,EACAC,EACAC,EACAC,GAEmB,IADnBC,EACkB,uDADF,EAGVC,EAAmBL,EAASE,EAC5BI,EAAmBL,EAASE,EAElC,QAJAC,EAIY,GAAW,CAACC,EAAUC,GAE9BX,KAAKY,IAAI7E,EAAS2E,EAAWC,GAAY,KAEvC5E,EAAS2E,EAAWC,EACfP,EACLrE,EACA2E,EACAC,EACAJ,EACAC,EACAC,GAGGL,EACLrE,EACAsE,EACAC,EACAI,EACAC,EACAF,GAGG,CAACC,EAAUC,GAkBpB,IAAME,EAAmBjB,IACnBkB,GAAO,IAAIhB,MAAOK,UAElBY,EAA0BC,uBAlBhC,WACE,IAAIC,GAAQ,IAAInB,MAAOK,UAAY,aAC7Be,EAAStB,IACTuB,EAAoBnB,KAAKoB,MAAMH,EAAQC,GAH5B,EAKYd,EADDJ,KAAKoB,MAAOH,EAAQC,EAAU,MAEjCA,EAAS,KAChC,EACA,EACA,EACA,GAVe,mBAKVG,EALU,KAKAC,EALA,KAYjB,MAAM,GAAN,OAAUH,EAAV,gBAAmCE,EAAnC,YAA+CC,KAMI,CACnDT,EACAC,IAvEW,EA0ESzC,mBAAS0C,KA1ElB,mBA0ENQ,EA1EM,KA0EDC,EA1EC,KAgFb,IAAMC,EAA4BT,uBAJlC,WACEQ,EAAOT,OAGgD,CACvDA,IAaF,OAVA5D,qBAAU,WACRsE,IAEA,IAAMnC,EAAWC,YAAYkC,EAA2B,KAExD,OAAO,WACLjC,cAAcF,MAEf,CAACmC,IAEG,+BAAKF,EAAL,gBAGF,SAASG,IAMd,OACE,qBAAKlG,GAAI,kBAAT,SACE,sBAAKA,GAAI,WAAYJ,UAAW,gBAAhC,UACE,gDAEA,sBAAKI,GAAI,cAAT,UACE,sBAAKA,GAAI,gBAAT,UACE,kDAEA,+BACE,+BACE,qCADF,kBAGA,qDACA,+DACA,2CACY,IACV,wBACEC,QAAS,kCACPE,SAASC,eAAe,yBADjB,aACP,EAA2C+F,eAAe,CACxDC,SAAU,SACVC,MAAO,WAJb,2BAWF,0CACU,cAAC,IAAD,CAAMxG,GAAI,UAAV,0BAEV,0CAEE,+BACE,yCACS,wBAAQI,QAxCjC,WAEEqG,OAAOC,OAAO,6CAA8CC,KAD9C,kCAuCS,2BAET,0CACW,IACT,cAAC,IAAD,CAAS3F,MAAO,KAAhB,SACE,mBACEf,KAAM,+BACNS,OAAO,SACPC,IAAI,aAHN,4BASJ,yCACU,IACR,mBACEV,KAAM,+BACNS,OAAO,SACPC,IAAI,aAHN,0BAQF,2CACY,IACV,mBACEV,KAAM,uBACNS,OAAO,SACPC,IAAI,aAHN,yBAQF,0EAKR,sBAAKR,GAAI,WAAT,UACE,sCACA,+BACE,cAACmE,EAAD,IAEA,cAACvB,EAAD,IACA,cAAC,IAAD,CACE/B,MACE,0FAFJ,SAKE,+FAIF,iEC5PP,SAAS4F,IACd,OACE,sBAAKzG,GAAI,OAAT,UACE,cAAC,EAAD,IACA,cAAC,EAAD,OCRC,SAAS0G,IACd,OACE,8BACE,oBAAIhG,MAAO,CAAEC,OAAQ,QAArB,sBCEC,SAASgG,IACd,OACE,+BACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAOC,OAAO,EAAMC,KAAM,IAAKC,UAAWL,IAC1C,cAAC,IAAD,CAAOI,KAAM,WAAYC,UAAWrG,IACpC,cAAC,IAAD,CAAOoG,KAAM,UAAWC,UAAWJ,SCK5BK,MAVf,WACE,OACE,sBAAKnH,UAAU,MAAOc,MAAO,CAACsG,SAAU,KAAMrG,OAAQ,QAAtD,UACE,cAAC,EAAD,IACA,cAACgG,EAAD,IACA,cAAC,EAAD,QCGSM,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,OCDdQ,IAASC,OACP,cAAC,IAAD,UACE,cAAC,EAAD,MAEFxH,SAASC,eAAe,SAM1B6G,M","file":"static/js/main.7817a97e.chunk.js","sourcesContent":["import \"./Footer.scss\"\nimport { Link } from \"react-router-dom\";\n\n\nexport function Footer() {\n return (\n \n );\n};\n","import React from \"react\";\nimport \"./Header.scss\";\nimport { Button, Space } from \"antd\";\nimport { Link } from \"react-router-dom\";\nimport { MenuOutlined } from \"@ant-design/icons\";\n\nexport function Header() {\n function showHideHamburger() {\n var x = document.getElementById(\"myHeader\");\n // @ts-ignore\n if (x.className === \"header\") {\n // @ts-ignore\n x.className += \" responsive\";\n } else {\n // @ts-ignore\n x.className = \"header\";\n }\n }\n\n return (\n
\n \n

Jake Cover

\n \n showHideHamburger()}\n >\n \n \n\n \n \n

Home

\n \n\n \n

Contact

\n \n \n

Resume

\n \n \n

GitHub

\n \n
\n
\n );\n}\n","export const Contact = () => {\n return (\n
\n

Contact

\n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/SanDiego.35f8cc09.svg\";","export default __webpack_public_path__ + \"static/media/distest.6bf47b83.svg\";","export default __webpack_public_path__ + \"static/media/scoresaver.3f65e348.svg\";","export default __webpack_public_path__ + \"static/media/HashiCorp_Logo_no_text.344aecaa.png\";","/**\n * TODO:\n * - For things that can't be linked, use to signal that clicking will open a modal https://ant.design/components/modal/\n * in order to give a more complex writeup and some pictures\n * - Tooltip for modal and linkable items, possibly which displays a modal with an example card with tooltips or explanations\n * - Footer\n * - Responsive top bar\n *\n */\n\nimport \"./ProjectGrid.scss\";\nimport Masonry from \"masonry-layout\";\nimport ImagesLoaded from \"imagesloaded\";\n\nimport { useEffect } from \"react\";\nimport { LinkOutlined } from \"@ant-design/icons\";\nimport CodeDaySD from \"../images/SanDiego.svg\";\nimport Foresight from \"../images/foresightsports.png\";\nimport Distest from \"../images/distest.svg\";\nimport Scoresaver from \"../images/scoresaver.svg\";\nimport Hashicorp from \"../images/HashiCorp_Logo_no_text.png\";\n\ntype GridElementImageProps = {\n image_url: string;\n image_alt: string;\n title: string;\n text: string;\n link?: string;\n org?: string;\n};\n\ntype GridElementProps = {\n title: string;\n text: string;\n link?: string;\n org?: string;\n};\n\nfunction SmallElement({ title, text, link, org }: GridElementProps) {\n if (link === undefined) {\n return (\n
\n
\n
\n

{title}

\n {org &&

{org}

}\n
\n
\n

{text}

\n
\n
\n
\n );\n }\n return (\n \n
\n
\n

{title}

\n {org &&

{org}

}\n \n
\n
\n

{text}

\n
\n
\n \n );\n}\n\nfunction SmallElementPic({\n image_url,\n image_alt,\n title,\n text,\n link,\n org,\n}: GridElementImageProps) {\n if (link === undefined) {\n return (\n
\n
\n
\n {image_alt}\n
\n
\n

{title}

\n {org &&

{org}

}\n\n

{text}

\n
\n
\n
\n );\n }\n return (\n \n
\n
\n {image_alt}\n \n
\n
\n

{title}

\n {org &&

{org}

}\n

{text}

\n
\n
\n \n );\n}\n\nfunction MediumElement({\n image_url,\n image_alt,\n title,\n text,\n link,\n org,\n}: GridElementImageProps) {\n if (link === undefined) {\n return (\n
\n
\n
\n {image_alt}\n
\n
\n

{title}

\n {org &&

{org}

}\n

{text}

\n
\n
\n
\n );\n }\n return (\n \n
\n
\n {image_alt}\n \n
\n
\n

{title}

\n {org &&

{org}

}\n

{text}

\n
\n
\n \n );\n}\n\nfunction LargeElementPic({\n image_url,\n image_alt,\n title,\n text,\n link,\n org,\n}: GridElementImageProps) {\n if (link === undefined) {\n return (\n
\n
\n
\n {image_alt}\n
\n
\n

{title}

\n {org &&

{org}

}\n

{text}

\n
\n
\n
\n );\n }\n return (\n \n
\n
\n {image_alt}\n \n
\n
\n

{title}

\n {org &&

{org}

}\n

{text}

\n
\n
\n \n );\n}\n\nexport function ProjectGrid() {\n useEffect(() => {\n var elem = document.querySelector(\"#project-grid\");\n\n if (elem) {\n const msnry = new Masonry(elem, {\n itemSelector: \".GridElement\",\n gutter: 0,\n columnWidth: \".GridSizer\",\n percentPosition: true,\n });\n\n ImagesLoaded(elem).on(\"progress\", () => {\n setTimeout(() => msnry.layout?.(), 200);\n });\n }\n });\n\n return (\n
\n
\n
\n

</> My Projects

\n

\n A gallery of some of my most interesting projects. Look for{\" \"}\n , click those projects for more information!\n

\n
\n
\n
\n \n \n \n \n \n \n \n\n \n \n \n \n
\n
\n
\n );\n}\n","export default \"data:image/png;base64,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\"","import \"./AboutMe.scss\";\nimport { Link } from \"react-router-dom\";\nimport { Tooltip } from \"antd\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport axios from \"axios\";\n\ninterface NowPlayingData {\n introduction: string;\n lastfm: {\n artist: string;\n track: string;\n playing: boolean;\n url: string | undefined;\n };\n}\n\nfunction LastFmLi() {\n const [nowPlayingData, setNowPlayingData] = useState({\n introduction: \"\",\n lastfm: {\n artist: \"nobody\",\n playing: false,\n track: \"nothing\",\n url: undefined,\n },\n });\n\n async function updateNowPlaying() {\n try {\n const songRequestData = await axios.get(\"https://api.jakecover.me\");\n\n setNowPlayingData(songRequestData.data);\n } catch (err) {\n console.error(err);\n }\n }\n\n useEffect(() => {\n updateNowPlaying();\n\n const interval = setInterval(updateNowPlaying, 10000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n if (nowPlayingData.lastfm.playing) {\n return (\n
  • \n \n listening to {nowPlayingData.lastfm.track} by{\" \"}\n {nowPlayingData.lastfm.artist}\n \n
  • \n );\n }\n return
  • not listening to anything right now.
  • ;\n}\n\nfunction Age() {\n // Accounts for leap years and stuff\n function milliseconds_year() {\n const dateObj = new Date();\n const dateInit = Math.round(\n new Date(dateObj.getFullYear(), 0, 1).getTime()\n );\n const dateEnd = Math.round(\n new Date(dateObj.getFullYear(), 11, 31, 23, 59, 59, 999).getTime()\n );\n return dateEnd - dateInit;\n }\n\n function searchSternBorcotTree(\n target: number,\n left_n: number,\n left_d: number,\n right_n: number,\n right_d: number,\n count: number = 0\n ): [number, number] {\n count++;\n const center_n: number = left_n + right_n;\n const center_d: number = left_d + right_d;\n // Check to see if we've gone too deep\n if (count > 25) return [center_n, center_d];\n // Check to see if we're close enough to the target\n if (Math.abs(target - center_n / center_d) > 0.001) {\n // Look right down the tree\n if (target > center_n / center_d)\n return searchSternBorcotTree(\n target,\n center_n,\n center_d,\n right_n,\n right_d,\n count\n );\n // Ok now look left\n return searchSternBorcotTree(\n target,\n left_n,\n left_d,\n center_n,\n center_d,\n count\n );\n }\n return [center_n, center_d];\n }\n\n function CalcAge() {\n let ageMs = new Date().getTime() - 1021004428000;\n const yearMs = milliseconds_year();\n const ageYearsComponent = Math.floor(ageMs / yearMs);\n const ageSecondsComponent = Math.floor((ageMs % yearMs) / 1000);\n const [target_n, target_d] = searchSternBorcotTree(\n ageSecondsComponent / (yearMs / 1000),\n 0,\n 1,\n 1,\n 1\n );\n return `${ageYearsComponent} and ${target_n}/${target_d}`;\n }\n\n const millisecondsYear = milliseconds_year();\n const time = new Date().getTime();\n // eslint-disable-next-line\n const memoizedCallbackCalcAge = useCallback(CalcAge, [\n millisecondsYear,\n time,\n ]);\n\n const [age, setAge] = useState(memoizedCallbackCalcAge());\n\n function UpdateAge() {\n setAge(memoizedCallbackCalcAge());\n }\n\n const memoizedCallbackUpdateAge = useCallback(UpdateAge, [\n memoizedCallbackCalcAge,\n ]);\n\n useEffect(() => {\n memoizedCallbackUpdateAge();\n\n const interval = setInterval(memoizedCallbackUpdateAge, 5000);\n\n return () => {\n clearInterval(interval);\n };\n }, [memoizedCallbackUpdateAge]);\n\n return
  • {age} years old
  • ;\n}\n\nexport function AboutMe() {\n function EmailHandler() {\n const email = \"Y29udGFjdEBqYWtlY292ZXIubWU=\";\n window.prompt(\"Thanks for being a human! Here's my email:\", atob(email));\n }\n\n return (\n
    \n
    \n

    Hi! I'm Jake!

    \n\n
    \n
    \n

    A bit about me:

    \n\n
      \n
    • \n Name: Jake Cover\n
    • \n
    • Occupation: Student
    • \n
    • Location: Southern California
    • \n
    • \n Projects:{\" \"}\n \n document.getElementById(\"project-header\")?.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n })\n }\n >\n Down there\n \n
    • \n
    • \n Resume: Over here\n
    • \n
    • \n Find Me:\n
        \n
      • \n Email: \n
      • \n
      • \n Twitter:{\" \"}\n \n \n @cobular_\n \n \n
      • \n
      • \n GitHub:{\" \"}\n \n JakeCover\n \n
      • \n
      • \n Telegram:{\" \"}\n \n @cobular\n \n
      • \n
      • Elsewhere: Probably @cobular
      • \n
      \n
    • \n
    \n
    \n
    \n

    I'm:

    \n
      \n \n\n \n \n
    • \n doing (general stuff - in class, projects, sleeping, games)\n
    • \n \n
    • rather colorblind
    • \n
    \n
    \n
    \n
    \n
    \n );\n}\n","import \"./Home.scss\";\nimport { ProjectGrid } from \"./ProjectGrid\";\nimport { AboutMe } from \"./AboutMe\";\n\nexport function Home() {\n return (\n
    \n \n \n
    \n );\n}\n","export function Resume() {\n return (\n
    \n

    Resume

    \n
    \n );\n}\n","import { Route, Switch } from \"react-router-dom\";\nimport { Contact } from \"./Contact\";\nimport { Home } from \"./Home\";\nimport { Resume } from \"./Resume\";\n\nexport function Main() {\n return (\n
    \n \n \n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport \"./App.scss\";\nimport { Footer } from \"./components/Footer\";\nimport { Header } from \"./components/Header\";\nimport { Main } from \"./components/Main\";\n\nfunction App() {\n return (\n
    \n
    \n
    \n
    \n
    \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.scss\";\nimport \"./imports.scss\"\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport { HashRouter } from \"react-router-dom\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.c85db8d8.chunk.js.map b/static/js/main.c85db8d8.chunk.js.map deleted file mode 100644 index e5018d0..0000000 --- a/static/js/main.c85db8d8.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/Footer.tsx","components/Header.tsx","components/Contact.tsx","images/SanDiego.svg","images/distest.svg","images/scoresaver.svg","images/HashiCorp_Logo_no_text.png","components/ProjectGrid.tsx","images/foresightsports.png","components/AboutMe.tsx","components/Home.tsx","components/Resume.tsx","components/Main.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["Footer","className","to","href","Header","id","onClick","x","document","getElementById","showHideHamburger","MenuOutlined","target","rel","Contact","style","margin","SmallElement","title","text","link","org","undefined","LinkOutlined","SmallElementPic","image_url","image_alt","src","alt","MediumElement","LargeElementPic","ProjectGrid","useEffect","elem","querySelector","msnry","Masonry","itemSelector","gutter","columnWidth","percentPosition","ImagesLoaded","on","setTimeout","layout","CodeDaySD","Distest","Scoresaver","Hashicorp","LastFmLi","useState","introduction","lastfm","artist","playing","track","nowPlayingData","setNowPlayingData","updateNowPlaying","a","axios","get","songRequestData","data","console","error","interval","setInterval","clearInterval","Age","searchSternBorcotTree","left_n","left_d","right_n","right_d","count","center_n","center_d","Math","abs","CalcAge","ageMs","Date","getTime","yearMs","dateObj","dateInit","round","getFullYear","milliseconds_year","ageYearsComponent","floor","target_n","target_d","age","setAge","UpdateAge","AboutMe","scrollIntoView","behavior","block","window","prompt","atob","Home","Resume","Main","exact","path","component","App","maxWidth","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render"],"mappings":"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","file":"static/js/main.c85db8d8.chunk.js","sourcesContent":["import \"./Footer.scss\"\nimport { Link } from \"react-router-dom\";\n\n\nexport function Footer() {\n return (\n
    \n
    \n
    \n

    \n Made with ☕ and ❤️ by Jake Cover, a CS student who really needs to find something\n witty and interesting to put here soon. Feel free to reach out!\n
    \n Checklist Icon by Arthur Shlain from the Noun Project\n

    \n
    \n
    \n

    Links and Stuff

    \n
      \n
    • \n Home\n
    • \n
    • \n Contact\n
    • \n
    • \n Resume\n
    • \n
    • \n GitHub\n
    • \n
    \n
    \n
    \n
    \n
    \n Copyright © 2020 All Rights Reserved by Jake Cover\n
    \n
    \n );\n};\n","import React from \"react\";\nimport \"./Header.scss\";\nimport { Button, Space } from \"antd\";\nimport { Link } from \"react-router-dom\";\nimport { MenuOutlined } from \"@ant-design/icons\";\n\nexport function Header() {\n function showHideHamburger() {\n var x = document.getElementById(\"myHeader\");\n // @ts-ignore\n if (x.className === \"header\") {\n // @ts-ignore\n x.className += \" responsive\";\n } else {\n // @ts-ignore\n x.className = \"header\";\n }\n }\n\n return (\n
    \n \n

    Jake Cover

    \n \n showHideHamburger()}\n >\n \n \n\n \n \n

    Home

    \n \n\n \n

    Contact

    \n \n \n

    Resume

    \n \n \n

    GitHub

    \n \n
    \n
    \n );\n}\n","export const Contact = () => {\n return (\n
    \n

    Contact

    \n
    \n )\n}\n","export default __webpack_public_path__ + \"static/media/SanDiego.35f8cc09.svg\";","export default __webpack_public_path__ + \"static/media/distest.6bf47b83.svg\";","export default __webpack_public_path__ + \"static/media/scoresaver.3f65e348.svg\";","export default __webpack_public_path__ + \"static/media/HashiCorp_Logo_no_text.344aecaa.png\";","/**\n * TODO:\n * - For things that can't be linked, use to signal that clicking will open a modal https://ant.design/components/modal/\n * in order to give a more complex writeup and some pictures\n * - Tooltip for modal and linkable items, possibly which displays a modal with an example card with tooltips or explanations\n * - Footer\n * - Responsive top bar\n *\n */\n\nimport \"./ProjectGrid.scss\";\nimport Masonry from \"masonry-layout\";\nimport ImagesLoaded from \"imagesloaded\";\n\nimport { useEffect } from \"react\";\nimport { LinkOutlined } from \"@ant-design/icons\";\nimport CodeDaySD from \"../images/SanDiego.svg\";\nimport Foresight from \"../images/foresightsports.png\";\nimport Distest from \"../images/distest.svg\";\nimport Scoresaver from \"../images/scoresaver.svg\";\nimport Hashicorp from \"../images/HashiCorp_Logo_no_text.png\";\n\ntype GridElementImageProps = {\n image_url: string;\n image_alt: string;\n title: string;\n text: string;\n link?: string;\n org?: string;\n};\n\ntype GridElementProps = {\n title: string;\n text: string;\n link?: string;\n org?: string;\n};\n\nfunction SmallElement({ title, text, link, org }: GridElementProps) {\n if (link === undefined) {\n return (\n
    \n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n
    \n
    \n

    {text}

    \n
    \n
    \n
    \n );\n }\n return (\n \n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n \n
    \n
    \n

    {text}

    \n
    \n
    \n \n );\n}\n\nfunction SmallElementPic({\n image_url,\n image_alt,\n title,\n text,\n link,\n org,\n}: GridElementImageProps) {\n if (link === undefined) {\n return (\n
    \n
    \n
    \n {image_alt}\n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n\n

    {text}

    \n
    \n
    \n
    \n );\n }\n return (\n \n
    \n
    \n {image_alt}\n \n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n

    {text}

    \n
    \n
    \n \n );\n}\n\nfunction MediumElement({\n image_url,\n image_alt,\n title,\n text,\n link,\n org,\n}: GridElementImageProps) {\n if (link === undefined) {\n return (\n
    \n
    \n
    \n {image_alt}\n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n

    {text}

    \n
    \n
    \n
    \n );\n }\n return (\n \n
    \n
    \n {image_alt}\n \n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n

    {text}

    \n
    \n
    \n \n );\n}\n\nfunction LargeElementPic({\n image_url,\n image_alt,\n title,\n text,\n link,\n org,\n}: GridElementImageProps) {\n if (link === undefined) {\n return (\n
    \n
    \n
    \n {image_alt}\n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n

    {text}

    \n
    \n
    \n
    \n );\n }\n return (\n \n
    \n
    \n {image_alt}\n \n
    \n
    \n

    {title}

    \n {org &&

    {org}

    }\n

    {text}

    \n
    \n
    \n \n );\n}\n\nexport function ProjectGrid() {\n useEffect(() => {\n var elem = document.querySelector(\"#project-grid\");\n\n if (elem) {\n const msnry = new Masonry(elem, {\n itemSelector: \".GridElement\",\n gutter: 0,\n columnWidth: \".GridSizer\",\n percentPosition: true,\n });\n\n ImagesLoaded(elem).on(\"progress\", () => {\n setTimeout(() => msnry.layout?.(), 200);\n });\n }\n });\n\n return (\n
    \n
    \n
    \n

    </> My Projects

    \n

    \n A gallery of some of my most interesting projects. Look for{\" \"}\n , click those projects for more information!\n

    \n
    \n
    \n
    \n \n \n \n \n \n \n \n\n \n \n \n \n
    \n
    \n
    \n );\n}\n","export default \"data:image/png;base64,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\"","import \"./AboutMe.scss\";\nimport { Link } from \"react-router-dom\";\nimport { Tooltip } from \"antd\";\nimport { useState, useEffect } from \"react\";\nimport axios from \"axios\";\n\ninterface NowPlayingData {\n introduction: string,\n lastfm: {\n artist: string,\n track: string,\n playing: boolean\n }\n}\n\nfunction LastFmLi() {\n const [nowPlayingData, setNowPlayingData] = useState({\n introduction: \"\",\n lastfm: {\n artist: \"nobody\",\n playing: false,\n track: \"nothing\"\n }\n });\n\n async function updateNowPlaying() {\n try {\n const songRequestData = await axios.get(\n \"https://api.jakecover.me\"\n );\n\n setNowPlayingData(songRequestData.data)\n } catch (err) {\n console.error(err);\n }\n }\n\n useEffect(() => {\n updateNowPlaying();\n\n const interval = setInterval(updateNowPlaying, 10000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n if (nowPlayingData.lastfm.playing) {\n return
  • listening to {nowPlayingData.lastfm.track} by {nowPlayingData.lastfm.artist}
  • ;\n }\n return
  • not listening to anything right now.
  • ;\n};\n\nfunction Age() {\n // Accounts for leap years and stuff\n function milliseconds_year() {\n const dateObj = new Date();\n const dateInit = Math.round(\n new Date(dateObj.getFullYear(), 0, 1).getTime()\n );\n const dateEnd = Math.round(\n new Date(dateObj.getFullYear(), 11, 31, 23, 59, 59, 999).getTime()\n );\n return dateEnd - dateInit;\n }\n\n function searchSternBorcotTree(\n target: number,\n left_n: number,\n left_d: number,\n right_n: number,\n right_d: number,\n count: number = 0\n ): [number, number] {\n count++;\n const center_n: number = left_n + right_n;\n const center_d: number = left_d + right_d;\n // Check to see if we've gone too deep\n if (count > 25) return [center_n, center_d];\n // Check to see if we're close enough to the target\n if (Math.abs(target - (center_n / center_d)) > 0.001) {\n // Look right down the tree\n if (target > (center_n / center_d))\n return searchSternBorcotTree(\n target,\n center_n,\n center_d,\n right_n,\n right_d,\n count\n );\n // Ok now look left\n return searchSternBorcotTree(\n target,\n left_n,\n left_d,\n center_n,\n center_d,\n count\n );\n }\n return [center_n, center_d];\n }\n\n function CalcAge() {\n let ageMs = new Date().getTime() - 1021004428000;\n const yearMs = milliseconds_year();\n const ageYearsComponent = Math.floor(ageMs / yearMs);\n const ageSecondsComponent = Math.floor((ageMs % yearMs) / 1000);\n const [target_n, target_d] = searchSternBorcotTree(\n ageSecondsComponent / (yearMs / 1000),\n 0,\n 1,\n 1,\n 1\n );\n return `${ageYearsComponent} and ${target_n}/${target_d}`;\n }\n\n const [age, setAge] = useState(CalcAge());\n\n function UpdateAge() {\n setAge(CalcAge());\n }\n\n useEffect(() => {\n UpdateAge();\n\n const interval = setInterval(UpdateAge, 5000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return (\n
  • \n {age} years old\n
  • \n );\n};\n\nexport function AboutMe() {\n function EmailHandler() {\n const email = \"Y29udGFjdEBqYWtlY292ZXIubWU=\";\n window.prompt(\"Thanks for being a human! Here's my email:\", atob(email));\n }\n\n return (\n
    \n
    \n

    Hi! I'm Jake!

    \n\n
    \n
    \n

    A bit about me:

    \n\n
      \n
    • \n Name: Jake Cover\n
    • \n
    • Occupation: Student
    • \n
    • Location: Southern California
    • \n
    • \n Projects:{\" \"}\n \n document.getElementById(\"project-header\")?.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n })\n }\n >\n Down there\n \n
    • \n
    • \n Resume: Over here\n
    • \n
    • \n Find Me:\n
        \n
      • \n Email: \n
      • \n
      • \n Twitter:{\" \"}\n \n \n @cobular_\n \n \n
      • \n
      • \n GitHub:{\" \"}\n \n JakeCover\n \n
      • \n
      • \n Telegram:{\" \"}\n \n @cobular\n \n
      • \n
      • Elsewhere: Probably @cobular
      • \n
      \n
    • \n
    \n
    \n
    \n

    I'm:

    \n
      \n \n \n \n
    • \n doing (general stuff - in class, projects, sleeping, games)\n
    • \n \n
    • \n rather colorblind\n
    • \n
    \n
    \n
    \n
    \n
    \n );\n}\n","import \"./Home.scss\";\nimport { ProjectGrid } from \"./ProjectGrid\";\nimport { AboutMe } from \"./AboutMe\";\n\nexport function Home() {\n return (\n
    \n \n \n
    \n );\n}\n","export function Resume() {\n return (\n
    \n

    Resume

    \n
    \n );\n}\n","import { Route, Switch } from \"react-router-dom\";\nimport { Contact } from \"./Contact\";\nimport { Home } from \"./Home\";\nimport { Resume } from \"./Resume\";\n\nexport function Main() {\n return (\n
    \n \n \n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport \"./App.scss\";\nimport { Footer } from \"./components/Footer\";\nimport { Header } from \"./components/Header\";\nimport { Main } from \"./components/Main\";\n\nfunction App() {\n return (\n
    \n
    \n
    \n
    \n
    \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.scss\";\nimport \"./imports.scss\"\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport { HashRouter } from \"react-router-dom\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""} \ No newline at end of file