- ID de l'analyse :
- c547af1f-a6f2-4af2-8bfe-80b5633e127aTerminée
- URL soumise :
- https://jarv.is/
- Fin du rapport :
Liens : 18 trouvé(s)
Liens sortants identifiés à partir de la page
Lien | texte |
---|---|
https://www.youtube-nocookie.com/embed/rLwbzGyC6t4?hl=en&fs=1&showinfo=1&rel=0&iv_load_policy=3 | Boston |
https://reactjs.org/ | React |
https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/ | vanilla JavaScript |
https://jamstack.wtf/ | Jamstack sites |
https://nodejs.org/en/ | Node.js |
https://www.jetbrains.com/lp/php-25/ | LAMP |
https://bugcrowd.com/jakejarvis | application security |
https://www.cloudflare.com/learning/serverless/what-is-serverless/ | serverless stacks |
https://github.com/jakejarvis?tab=repositories&q=github-actions&type=source&language=&sort=stargazers | DevOps automation |
https://tuftsdaily.com/news/2012/04/06/student-designs-iphone-joeytracker-app/ | been |
Variables JavaScript : 16 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
webpackChunk_N_E | object |
__next_set_public_path__ | function |
next | object |
__NEXT_DATA__ | object |
__SSG_MANIFEST_CB | function |
__NEXT_P | object |
_N_E | object |
Messages de journal de console : 0 trouvé(s)
Messages consignés dans la console web
HTML
Le corps HTML de la page en données brutes
<!DOCTYPE html><html lang="en-US" class="t-lcODYe" style="color-scheme: light;"><head><meta charset="utf-8" data-next-head=""><title data-next-head="">Jake Jarvis – Front-End Web Developer in Boston, MA</title><meta name="robots" content="index,follow" data-next-head=""><meta name="description" content="Hi there! I'm a frontend web developer based in Boston, Massachusetts specializing in the JAMstack, modern JavaScript frameworks, and progressive web apps." data-next-head=""><meta name="twitter:card" content="summary" data-next-head=""><meta name="twitter:site" content="@jakejarvis" data-next-head=""><meta name="twitter:creator" content="@jakejarvis" data-next-head=""><meta property="og:title" content="Jake Jarvis – Front-End Web Developer in Boston, MA" data-next-head=""><meta property="og:description" content="Hi there! I'm a frontend web developer based in Boston, Massachusetts specializing in the JAMstack, modern JavaScript frameworks, and progressive web apps." data-next-head=""><meta property="og:url" content="https://jarv.is/" data-next-head=""><meta property="og:type" content="website" data-next-head=""><meta property="og:image" content="https://jarv.is/_next/static/media/me.e5fd4429.jpg" data-next-head=""><meta property="og:image:alt" content="Jake Jarvis – Front-End Web Developer in Boston, MA" data-next-head=""><meta property="og:locale" content="en_US" data-next-head=""><meta property="og:site_name" content="Jake Jarvis" data-next-head=""><link rel="canonical" href="https://jarv.is/" data-next-head=""><meta name="viewport" content="width=device-width, initial-scale=1" data-next-head=""><meta name="author" content="Jake Jarvis" data-next-head=""><meta name="google-site-verification" content="qQhmLTwjNWYgQ7W42nSTq63xIrTch13X_11mmxBE9zk" data-next-head=""><meta name="msvalidate.01" content="164551986DA47F7F6FC0D21A93FFFCA6" data-next-head=""><link rel="icon" href="/_next/static/media/favicon.a0dbc989.ico" sizes="any" data-next-head=""><link rel="icon" href="/_next/static/media/favicon.23bed15d.png" type="image/png" data-next-head=""><link rel="apple-touch-icon" href="/_next/static/media/apple-touch-icon.91ee4c16.png" sizes="180x180" data-next-head=""><link rel="manifest" href="/site.webmanifest" data-next-head=""><link rel="alternate" href="/feed.xml" type="application/rss+xml" title="Jake Jarvis (RSS)" data-next-head=""><link rel="alternate" href="/feed.atom" type="application/atom+xml" title="Jake Jarvis (Atom)" data-next-head=""><link rel="humans" href="/humans.txt" data-next-head=""><link rel="pgpkey" href="/pubkey.asc" type="application/pgp-keys" data-next-head=""><script type="application/ld+json" data-next-head="">{"@context":"https://schema.org","@type":"Person","name":"Jake Jarvis","url":"https://jarv.is/","sameAs":["https://jarv.is/","https://github.com/jakejarvis","https://keybase.io/jakejarvis","https://twitter.com/jakejarvis","https://medium.com/@jakejarvis","https://www.linkedin.com/in/jakejarvis/","https://www.facebook.com/jakejarvis","https://www.instagram.com/jakejarvis/","https://fediverse.jarv.is/@jake"]}</script><link rel="preload" as="image" imagesrcset="/_next/image/?url=%2F_next%2Fstatic%2Fmedia%2Fselfie.7d009bf4.jpg&w=96&q=60 1x, /_next/image/?url=%2F_next%2Fstatic%2Fmedia%2Fselfie.7d009bf4.jpg&w=256&q=60 2x" data-next-head=""><style id="stitches">--sxs{--sxs:0 t-lcODYe t-kvkHIy}@media{:root,.t-lcODYe{--fonts-sans:'Geist', system-ui, sans-serif;--fonts-mono:'Geist Mono', ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;--colors-backgroundInner:#ffffff;--colors-backgroundOuter:#fcfcfc;--colors-backgroundHeader:rgba(252,252,252,0.7);--colors-text:#202020;--colors-mediumDark:#515151;--colors-medium:#5e5e5e;--colors-mediumLight:#757575;--colors-light:#d2d2d2;--colors-kindaLight:#e3e3e3;--colors-superLight:#f4f4f4;--colors-superDuperLight:#fbfbfb;--colors-link:#0e6dc2;--colors-linkUnderline:rgba(14,109,194,0.4);--colors-success:#44a248;--colors-error:#ff1b1b;--colors-warning:#f78200;--colors-codeText:#313131;--colors-codeBackground:#fdfdfd;--colors-codeComment:#656e77;--colors-codeKeyword:#029cb9;--colors-codeAttribute:#70a800;--colors-codeNamespace:#f92672;--colors-codeLiteral:#ae81ff;--colors-codePunctuation:#111111;--colors-codeVariable:#d88200;--colors-codeAddition:#44a248;--colors-codeDeletion:#ff1b1b;--sizes-maxLayoutWidth:865px;--radii-corner:0.6rem;--transitions-fade:0.25s ease;--transitions-linkHover:0.2s ease-in-out}.t-kvkHIy{--colors-backgroundInner:#1e1e1e;--colors-backgroundOuter:#252525;--colors-backgroundHeader:rgba(37,37,37,0.85);--colors-text:#f1f1f1;--colors-mediumDark:#d7d7d7;--colors-medium:#b1b1b1;--colors-mediumLight:#959595;--colors-light:#646464;--colors-kindaLight:#535353;--colors-superLight:#272727;--colors-superDuperLight:#1f1f1f;--colors-link:#88c7ff;--colors-linkUnderline:rgba(136,199,255,0.4);--colors-success:#78df55;--colors-error:#ff5151;--colors-warning:#f2b702;--colors-codeText:#e4e4e4;--colors-codeBackground:#212121;--colors-codeComment:#929292;--colors-codeKeyword:#3b9dd2;--colors-codeAttribute:#78df55;--colors-codeNamespace:#f95757;--colors-codeLiteral:#d588fb;--colors-codePunctuation:#cccccc;--colors-codeVariable:#fd992a;--colors-codeAddition:#78df55;--colors-codeDeletion:#ff5151}}--sxs{--sxs:1 k-gGcuSd k-kkkVcT kRAfLo cWnTPW}@media{@keyframes k-gGcuSd{0%{transform:scale(1)}2%{transform:scale(1.25)}4%{transform:scale(1)}6%{transform:scale(1.2)}8%{transform:scale(1)}100%{transform:scale(1)}}@keyframes k-kkkVcT{0%{transform:rotate(0deg)}5%{transform:rotate(14deg)}10%{transform:rotate(-8deg)}15%{transform:rotate(14deg)}20%{transform:rotate(-4deg)}25%{transform:rotate(10deg)}30%{transform:rotate(0deg)}100%{transform:rotate(0deg)}}*,::before,::after{box-sizing:border-box}html{line-height:1.15;tab-size:4;-webkit-text-size-adjust:100%}body{margin:0}hr{height:0;color:inherit}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp,pre{font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}button,[type='button'],[type='reset'],[type='submit']{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}[type='search']{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}html{font-family:var(--fonts-sans)}body{background-color:var(--colors-backgroundInner);transition:background var(--transitions-fade)}code,kbd,samp,pre{font-family:var(--fonts-mono)}}--sxs{--sxs:2 c-ijetuc c-hRZPRE c-bpIbAA c-coWCMU c-jZTOcW c-cIJLdn c-ircnMg c-dUvoov c-kBuSEt c-cRUDQG c-isrdta c-fFxUcP c-jhvBPD c-hEBfGi c-iFqlrM c-fVopks c-bADEBd c-fanidY c-iktAiM c-ktKSxF c-jfIUze c-gsXNnN c-kPrkqU c-gkUhtZ c-hPxEjz c-ftWGVj c-wXJaY c-fyCuZI c-gZskWx c-egFTxJ c-cXBWxM c-frCoBg c-bPNjhd c-jtLgmk c-eQZpKm c-jGlSdI c-geQyBr c-cyKpGk c-PJLV c-eHLywy c-jEFzux c-fcKlyh c-eFRhLn c-nnJtK c-fqQGzg c-seBUO c-eFGshj c-jnKxow c-gHhLQ c-itFlCw c-evRCPi c-fokRaO c-NAiAP c-kYFqNh c-gZAmmx c-fJbaBZ}@media{.c-ijetuc{border:0;clip:rect(0 0 0 0);height:1px;width:1px;margin:-1px;padding:0;overflow:hidden;position:absolute}.c-ijetuc:focus{padding:1rem;position:fixed;top:10px;left:10px;z-index:99999;width:auto;height:auto;clip:auto;background:var(--colors-superDuperLight);color:var(--colors-link);border:2px solid var(--colors-kindaLight);border-radius:var(--radii-corner);text-decoration:underline}.c-hRZPRE{display:flex;flex-direction:column;min-height:100vh}.c-coWCMU{width:100%;height:4.5em;padding:0.7em 1.5em;border-bottom:1px solid var(--colors-kindaLight);background-color:var(--colors-backgroundHeader);transition:background var(--transitions-fade), border var(--transitions-fade);z-index:9999;-webkit-backdrop-filter:saturate(180%) blur(5px);backdrop-filter:saturate(180%) blur(5px)}@media (max-width: 768px){.c-coWCMU{padding:0.75em 1.25em;height:5.9em}}.c-jZTOcW{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:var(--sizes-maxLayoutWidth);margin:0 auto}.c-kBuSEt{height:auto;max-width:100%;border-radius:var(--radii-corner)}.c-dUvoov{width:50px;height:50px;border:1px solid var(--colors-light);border-radius:50%}@media (max-width: 768px){.c-dUvoov{width:70px;height:70px;border-width:2px}}.c-cRUDQG{margin:0 0.6em;font-size:1.15em;font-weight:500;letter-spacing:0.02em;line-height:1}@media (max-width: 768px){.c-cRUDQG{display:none}}.c-ircnMg{color:var(--colors-link);text-decoration:none}.c-cIJLdn{display:inline-flex;flex-shrink:0;align-items:center;color:var(--colors-mediumDark)}.c-cIJLdn:hover,.c-cIJLdn:focus-visible{color:var(--colors-link)}@media (max-width: 768px){.c-cIJLdn:hover .c-dUvoov,.c-cIJLdn:focus-visible .c-dUvoov{border-color:var(--colors-linkUnderline)}}.c-fFxUcP{display:inline-flex;padding:0;margin:0}@media (max-width: 768px){.c-fFxUcP{width:100%;justify-content:space-between;margin-left:1em}}@media (max-width: 380px){.c-fFxUcP{margin-left:1.4em}}.c-jhvBPD{display:inline-block;margin-left:1em;list-style:none}@media (max-width: 768px){.c-jhvBPD{margin-left:0}}@media (max-width: 380px){.c-jhvBPD:first-of-type{display:none}}.c-iFqlrM{display:inline;width:1.25em;height:1.25em;vertical-align:-0.3em}@media (max-width: 768px){.c-iFqlrM{width:1.8em;height:1.8em}}.c-fVopks{font-size:0.925em;font-weight:500;letter-spacing:0.025em;margin-left:0.7em}@media (max-width: 768px){.c-fVopks{display:none}}.c-hEBfGi{display:inline-block;color:var(--colors-mediumDark);padding:0.6em}.c-bADEBd{border:0;padding:0.6em;margin-right:-0.6em;background:none;cursor:pointer;color:var(--colors-mediumDark)}.c-bADEBd:hover,.c-bADEBd:focus-visible{color:var(--colors-warning)}@media (max-width: 768px){.c-isrdta{max-width:325px}}@media (max-width: 380px){.c-isrdta{max-width:225px}}.c-bpIbAA{position:sticky;top:0}.c-fanidY{width:100%;padding:1.5em}.c-iktAiM{max-width:var(--sizes-maxLayoutWidth);margin:0 auto;display:block}.c-ktKSxF{margin-top:0;margin-bottom:0.6em;font-size:1.7em;font-weight:600;text-align:center}@media (max-width: 768px){.c-ktKSxF{font-size:1.8em}}.c-jfIUze{font-size:0.9em;line-height:1.7;color:var(--colors-text)}@media (max-width: 768px){.c-jfIUze{font-size:0.925em;line-height:1.85}}.c-gsXNnN{margin-left:0;padding-left:1.25em;border-left:0.25em solid var(--colors-link);color:var(--colors-mediumDark)}.c-kPrkqU{display:block;line-height:0;margin:1em auto;text-align:center}.c-gkUhtZ{margin-top:1em;margin-bottom:0.5em;line-height:1.5;scroll-margin-top:5.5rem}@media (max-width: 768px){.c-gkUhtZ{scroll-margin-top:6.5rem}}.c-gkUhtZ:hover .c-hPxEjz,.c-gkUhtZ .c-hPxEjz:focus-visible{opacity:1}.c-hPxEjz{margin:0 0.4em;padding:0 0.2em;color:var(--colors-medium);opacity:0}.c-hPxEjz:hover,.c-hPxEjz:focus-visible{color:var(--colors-link)}@media (max-width: 768px){.c-hPxEjz{margin:0 0.2em;padding:0 0.4em;opacity:1}}.c-ftWGVj{position:relative;width:100%;margin:1em auto;color:var(--colors-codeText)}.c-ftWGVj .c-egFTxJ{display:block;overflow-x:auto;padding:1em;font-size:0.9em;tab-size:2}.c-ftWGVj .c-egFTxJ .line-number::before{display:inline-block;width:1.5em;margin-right:1.5em;text-align:right;color:var(--colors-codeComment);content:attr(line);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}.c-ftWGVj .c-egFTxJ .code-line:first-of-type{margin-right:3em}.c-fyCuZI{line-height:1;cursor:pointer}.c-gZskWx{width:1.25em;height:1.25em;vertical-align:-0.3em}.c-wXJaY{position:absolute;top:0;right:0;padding:0.65em;background-color:var(--colors-backgroundInner);border:1px solid var(--colors-kindaLight);border-top-right-radius:var(--radii-corner);border-bottom-left-radius:var(--radii-corner);transition:background var(--transitions-fade), border var(--transitions-fade)}.c-egFTxJ{background-color:var(--colors-codeBackground);border:1px solid var(--colors-kindaLight);border-radius:var(--radii-corner);transition:background var(--transitions-fade), border var(--transitions-fade)}.c-cXBWxM{margin-left:1.5em;padding-left:0}.c-frCoBg{padding-left:0.25em}.c-jtLgmk{width:100%;padding:1.25em 1.5em;border-top:1px solid var(--colors-kindaLight);background-color:var(--colors-backgroundOuter);color:var(--colors-mediumDark);transition:background var(--transitions-fade), border var(--transitions-fade)}@media (max-width: 768px){.c-jtLgmk{padding:1em 1.25em}}.c-eQZpKm{display:flex;width:100%;max-width:var(--sizes-maxLayoutWidth);margin:0 auto;justify-content:space-between;font-size:0.8em;line-height:2.3}@media (max-width: 768px){.c-eQZpKm{display:block}}.c-jGlSdI{color:var(--colors-mediumDark)}.c-geQyBr{display:inline-block;color:var(--colors-error)}@media (prefers-reduced-motion: no-preference){.c-geQyBr{animation:k-gGcuSd 10s ease 7.5s infinite;will-change:transform}}.c-cyKpGk{display:inline;width:1.25em;height:1.25em;vertical-align:-0.25em;margin:0 0.075em}.c-bPNjhd{flex:1}.c-eHLywy{text-align:center;font-size:0.9em;line-height:1.8;margin:1.25em 1em 0 1em;color:var(--colors-mediumLight)}.c-jEFzux{margin:0 0 0.5em -1px;font-size:1.75em;font-weight:500;line-height:1.1;color:var(--colors-text)}@media (max-width: 768px){.c-jEFzux{font-size:1.6em}}.c-fcKlyh{display:inline-block;margin-left:0.1em;font-size:1.2em}@media (prefers-reduced-motion: no-preference){.c-fcKlyh{animation:k-kkkVcT 5s ease 1s infinite;transform-origin:65% 80%;will-change:transform}}.c-eFRhLn{margin:0.5em 0 0.5em -1px;font-size:1.2em;font-weight:400;line-height:1.4;color:var(--colors-text)}@media (max-width: 768px){.c-eFRhLn{font-size:1.25em}}.c-nnJtK{margin:0.85em 0;font-size:0.95em;line-height:1.7;color:var(--colors-text)}.c-nnJtK:last-of-type{margin-bottom:0}@media (max-width: 768px){.c-nnJtK{font-size:0.925em;line-height:1.825}}.c-fqQGzg{color:var(--colors-mediumLight)}.c-seBUO{margin:0 0.1em;font-size:0.6em}.c-eFGshj{vertical-align:-0.25em;stroke-width:0.5}.c-jnKxow{margin:0 0.15em;letter-spacing:0.075em;word-spacing:-0.4em}.c-gHhLQ{margin:1.5em auto;height:0.175em;border:0;background-color:var(--colors-light)}.c-evRCPi{margin:1em auto;text-align:center}.c-fokRaO{font-size:0.9em;line-height:1.5;color:var(--colors-medium);margin-top:-0.4em}.c-itFlCw{margin:1em auto}.c-itFlCw figcaption{font-size:0.9em;line-height:1.5;color:var(--colors-medium)}.c-NAiAP{margin:1em auto}.c-kYFqNh{padding:0.175em 0.3em;font-size:0.925em;page-break-inside:avoid}.c-gZAmmx{display:inline;width:1.2em;height:1.2em;vertical-align:-0.15em;margin-right:0.1em;fill:currentColor}.c-fJbaBZ{width:100%;display:block;margin:1em auto;border:2px solid var(--colors-kindaLight);border-radius:var(--radii-corner)}}--sxs{--sxs:3 c-hEBfGi-coRMrW-current-false c-ircnMg-hAOWUE-underline-true c-gkUhtZ-fnfLEp-divider-true c-fyCuZI-kPtprH-copied-false c-PJLV-gaLeFu-responsive-true c-hEBfGi-bQvbla-current-true}@media{.c-hEBfGi-coRMrW-current-false:hover,.c-hEBfGi-coRMrW-current-false:focus-visible{margin-bottom:-0.2em;border-bottom:0.2em solid var(--colors-kindaLight)}.c-ircnMg-hAOWUE-underline-true{---underlineColor:var(--colors-linkUnderline);background-image:linear-gradient(var(---underlineColor), var(---underlineColor));background-position:0% 100%;background-repeat:no-repeat;background-size:0% 2px;padding-bottom:3px}@media (prefers-reduced-motion: no-preference){.c-ircnMg-hAOWUE-underline-true{transition:background-size var(--transitions-linkHover)}}.c-ircnMg-hAOWUE-underline-true:hover,.c-ircnMg-hAOWUE-underline-true:focus-visible{background-size:100% 2px}.c-gkUhtZ-fnfLEp-divider-true{padding-bottom:0.25em;border-bottom:1px solid var(--colors-kindaLight)}.c-fyCuZI-kPtprH-copied-false{color:var(--colors-mediumDark)}.c-fyCuZI-kPtprH-copied-false:hover,.c-fyCuZI-kPtprH-copied-false:focus-visible{color:var(--colors-link)}.c-PJLV-gaLeFu-responsive-true{position:relative;padding-top:56.25%}.c-PJLV-gaLeFu-responsive-true .c-dDwIrI{position:absolute;top:0;left:0}.c-hEBfGi-bQvbla-current-true{margin-bottom:-0.2em;border-bottom:0.2em solid var(--colors-linkUnderline)}}--sxs{--sxs:6 c-ircnMg-ikeOPau-css c-ircnMg-iiuedIb-css c-cyKpGk-icdQTrv-css c-jGlSdI-idZakdZ-css c-jGlSdI-ibAObXr-css c-ircnMg-iePtfAL-css c-ircnMg-ifvHAvo-css c-ircnMg-ijclXSS-css c-ircnMg-ihqdIAg-css c-ircnMg-icEYBVz-css c-ircnMg-iexeSXv-css c-ircnMg-ikjCEeE-css c-ircnMg-icntmzu-css c-ircnMg-ielVfZD-css c-ircnMg-igdXYXS-css c-ircnMg-ifJgGVE-css c-ircnMg-ibOQcxc-css c-ircnMg-ikLHafA-css c-ircnMg-idKLjvk-css c-ircnMg-igEtxlK-css c-ircnMg-ieVykbU-css c-ircnMg-ihwXdCv-css c-ircnMg-iliIVnW-css c-ircnMg-ijCeZWw-css c-ircnMg-iiWVCgu-css c-ircnMg-ilomHgQ-css c-ircnMg-idrgdLL-css c-ircnMg-ihcvCov-css c-ircnMg-ifCrDDv-css c-ircnMg-ihJVCXK-css c-ircnMg-igiFVUv-css c-hRZPRE-idJQjtl-css c-egFTxJ-inkYLS-css c-ircnMg-ijzDybH-css c-fJbaBZ-igsyqVh-css c-itFlCw-igKRIQW-css c-gsXNnN-ibfJDaD-css}@media{.c-ircnMg-ikeOPau-css{color:var(--colors-text)}.c-ircnMg-iiuedIb-css{line-height:1}.c-cyKpGk-icdQTrv-css{stroke-width:2}.c-jGlSdI-idZakdZ-css:hover,.c-jGlSdI-idZakdZ-css:focus-visible{color:var(--colors-medium)}.c-jGlSdI-ibAObXr-css{padding-bottom:2px;border-bottom:1px solid var(--colors-light)}.c-jGlSdI-ibAObXr-css:hover,.c-jGlSdI-ibAObXr-css:focus-visible{border-color:var(--colors-kindaLight)}.c-ircnMg-iePtfAL-css{font-weight:700}.c-ircnMg-ifvHAvo-css{color:#fb4d42;---underlineColor:rgba(251,77,66,0.4)}.t-kvkHIy .c-ircnMg-ifvHAvo-css{color:#ff5146;---underlineColor:rgba(255,81,70,0.4)}.c-ircnMg-ijclXSS-css{color:#1091b3;---underlineColor:rgba(16,145,179,0.4)}.t-kvkHIy .c-ircnMg-ijclXSS-css{color:#6fcbe3;---underlineColor:rgba(111,203,227,0.4)}.c-ircnMg-ihqdIAg-css{color:#f48024;---underlineColor:rgba(244,128,36,0.4)}.t-kvkHIy .c-ircnMg-ihqdIAg-css{color:#e18431;---underlineColor:rgba(225,132,49,0.4)}.c-ircnMg-icEYBVz-css{color:#04a699;---underlineColor:rgba(4,166,153,0.4)}.t-kvkHIy .c-ircnMg-icEYBVz-css{color:#08bbac;---underlineColor:rgba(8,187,172,0.4)}.c-ircnMg-iexeSXv-css{color:#6fbc4e;---underlineColor:rgba(111,188,78,0.4)}.t-kvkHIy .c-ircnMg-iexeSXv-css{color:#84d95f;---underlineColor:rgba(132,217,95,0.4)}.c-ircnMg-ikjCEeE-css{color:#8892bf;---underlineColor:rgba(136,146,191,0.4)}.t-kvkHIy .c-ircnMg-ikjCEeE-css{color:#a4afe3;---underlineColor:rgba(164,175,227,0.4)}.c-ircnMg-icntmzu-css{color:#00b81a;---underlineColor:rgba(0,184,26,0.4)}.t-kvkHIy .c-ircnMg-icntmzu-css{color:#57f06d;---underlineColor:rgba(87,240,109,0.4)}.c-ircnMg-ielVfZD-css{color:#0098ec;---underlineColor:rgba(0,152,236,0.4)}.t-kvkHIy .c-ircnMg-ielVfZD-css{color:#43b9fb;---underlineColor:rgba(67,185,251,0.4)}.c-ircnMg-igdXYXS-css{color:#ff6200;---underlineColor:rgba(255,98,0,0.4)}.t-kvkHIy .c-ircnMg-igdXYXS-css{color:#f46c16;---underlineColor:rgba(244,108,22,0.4)}.c-ircnMg-ifJgGVE-css{color:#4169e1;---underlineColor:rgba(65,105,225,0.4)}.t-kvkHIy .c-ircnMg-ifJgGVE-css{color:#8ca9ff;---underlineColor:rgba(140,169,255,0.4)}.c-ircnMg-ibOQcxc-css{color:#9932cc;---underlineColor:rgba(153,50,204,0.4)}.t-kvkHIy .c-ircnMg-ibOQcxc-css{color:#d588fb;---underlineColor:rgba(213,136,251,0.4)}.c-ircnMg-ikLHafA-css{color:#e40088;---underlineColor:rgba(228,0,136,0.4)}.t-kvkHIy .c-ircnMg-ikLHafA-css{color:#fd40b1;---underlineColor:rgba(253,64,177,0.4)}.c-ircnMg-ikLHafA-css:hover{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='30' style='font-size:24px'><text y='50%' transform='rotate(-70 0 0) translate(-20, 6)'>🪄</text></svg>") 5 5, auto}.c-ircnMg-idKLjvk-css{color:#ff1b1b;---underlineColor:rgba(255,27,27,0.4)}.t-kvkHIy .c-ircnMg-idKLjvk-css{color:#f06060;---underlineColor:rgba(240,96,96,0.4)}.c-ircnMg-igEtxlK-css{color:#f78200;---underlineColor:rgba(247,130,0,0.4)}.t-kvkHIy .c-ircnMg-igEtxlK-css{color:#fd992a;---underlineColor:rgba(253,153,42,0.4)}.c-ircnMg-ieVykbU-css{color:#f2b702;---underlineColor:rgba(242,183,2,0.4)}.t-kvkHIy .c-ircnMg-ieVykbU-css{color:#ffcc2e;---underlineColor:rgba(255,204,46,0.4)}.c-ircnMg-ihwXdCv-css{color:#5ebd3e;---underlineColor:rgba(94,189,62,0.4)}.t-kvkHIy .c-ircnMg-ihwXdCv-css{color:#78df55;---underlineColor:rgba(120,223,85,0.4)}.c-ircnMg-iliIVnW-css{color:#009cdf;---underlineColor:rgba(0,156,223,0.4)}.t-kvkHIy .c-ircnMg-iliIVnW-css{color:#29bfff;---underlineColor:rgba(41,191,255,0.4)}.c-ircnMg-ijCeZWw-css{color:#3e49bb;---underlineColor:rgba(62,73,187,0.4)}.t-kvkHIy .c-ircnMg-ijCeZWw-css{color:#7b87ff;---underlineColor:rgba(123,135,255,0.4)}.c-ircnMg-iiWVCgu-css{color:#973999;---underlineColor:rgba(151,57,153,0.4)}.t-kvkHIy .c-ircnMg-iiWVCgu-css{color:#db60dd;---underlineColor:rgba(219,96,221,0.4)}.c-ircnMg-ilomHgQ-css{color:#8d4eff;---underlineColor:rgba(141,78,255,0.4)}.t-kvkHIy .c-ircnMg-ilomHgQ-css{color:#a379f0;---underlineColor:rgba(163,121,240,0.4)}.c-ircnMg-idrgdLL-css{color:#0073b1;---underlineColor:rgba(0,115,177,0.4)}.t-kvkHIy .c-ircnMg-idrgdLL-css{color:#3b9dd2;---underlineColor:rgba(59,157,210,0.4)}.c-ircnMg-ihcvCov-css{color:#de0c0c;---underlineColor:rgba(222,12,12,0.4)}.t-kvkHIy .c-ircnMg-ihcvCov-css{color:#ff5050;---underlineColor:rgba(255,80,80,0.4)}.c-ircnMg-ifCrDDv-css{color:#757575;---underlineColor:rgba(117,117,117,0.4)}.t-kvkHIy .c-ircnMg-ifCrDDv-css{color:#959595;---underlineColor:rgba(149,149,149,0.4)}.c-ircnMg-ihJVCXK-css{color:#6d6eff;---underlineColor:rgba(109,110,255,0.4)}.t-kvkHIy .c-ircnMg-ihJVCXK-css{color:#7b87ff;---underlineColor:rgba(123,135,255,0.4)}.c-ircnMg-igiFVUv-css{color:#6fcc01;---underlineColor:rgba(111,204,1,0.4)}.t-kvkHIy .c-ircnMg-igiFVUv-css{color:#8edb34;---underlineColor:rgba(142,219,52,0.4)}.c-hRZPRE-idJQjtl-css{font-family:'Comic Neue', 'Comic Sans MS', 'Comic Sans', 'Geist', system-ui, sans-serif;font-weight:700;cursor:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAZklEQVR4AWIAgn/uBT6A9uoAAwAQiIJo97/0Rgy0ANoJH8MPeEgtqwPQEACqCoQHAKECQKgAECoAhAoAoQJAqAAQxh1oPQfcW3kJpxHtL1AAHAwEwwdYiH8BIEgBTBRAAAEEEEAAG7mRt30hEhoLAAAAAElFTkSuQmCC") 2 1, auto}.c-hRZPRE-idJQjtl-css a:hover,.c-hRZPRE-idJQjtl-css button{cursor:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAgMAAAAOFJJnAAAACVBMVEVHcEwAAAD///8W1S+BAAAAAXRSTlMAQObYZgAAAEdJREFUeAFjoAVghTGkHIhghMAYmQEwxlIYYxlYlSiQMQEsELUKyli1ahWYwQZjMGIwGLKQGA4QA1EYEP0rGVAZrKGhSF4BAHw/HsVwshytAAAAAElFTkSuQmCC") 16 12, auto}.c-hRZPRE-idJQjtl-css em{font-style:revert !important}.c-hRZPRE-idJQjtl-css header > nav > a:first-of-type > span:last-of-type{font-size:1.4em;font-weight:700}.c-hRZPRE-idJQjtl-css header > nav > ul > li > a > span{font-size:1.1em;font-weight:700;line-height:1.1}.c-hRZPRE-idJQjtl-css main > div > div{font-size:1.1em;text-align:center}.c-hRZPRE-idJQjtl-css footer > div{font-size:0.95em}.c-egFTxJ-inkYLS-css{font-size:0.8em;font-weight:400}.c-ircnMg-ijzDybH-css{font-size:0.95em}.c-fJbaBZ-igsyqVh-css{height:500px;max-width:100%;margin:0.6em 0}.c-itFlCw-igKRIQW-css{margin-bottom:0}.c-gsXNnN-ibfJDaD-css{overflow-wrap:break-word}}</style><link rel="preload" href="/_next/static/media/93f479601ee12b01.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font=""><link rel="preload" href="/_next/static/media/569ce4b8f30dc480.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font=""><script id="restore-theme" data-nscript="beforeInteractive">(function(){try{var e=document.documentElement,t=e.classList,a=["t-lcODYe","t-kvkHIy"],o="undefined"!=typeof Storage?window.localStorage.getItem("theme"):null,c=(o&&"dark"===o)??window.matchMedia("(prefers-color-scheme: dark)").matches?1:0;t.remove(...a),t.add(a[c]||""),e.style.colorScheme=1==c?"dark":"light"}catch(e){}})()</script><link rel="preload" href="/_next/static/css/0d4345bc1f7a4d11.css" as="style"><link rel="stylesheet" href="/_next/static/css/0d4345bc1f7a4d11.css" data-n-g=""><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e2b3edf940b52bd2.js" defer=""></script><script src="/_next/static/chunks/framework-01c21befc8fbca17.js" defer=""></script><script src="/_next/static/chunks/main-0276bebfb4129619.js" defer=""></script><script src="/_next/static/chunks/pages/_app-0169c2cc263aa3d1.js" defer=""></script><script src="/_next/static/chunks/pages/index-f688945cb1fda8d9.js" defer=""></script><script src="/_next/static/2JW6LkNDukf4nRc2F8FMh/_buildManifest.js" defer=""></script><script src="/_next/static/2JW6LkNDukf4nRc2F8FMh/_ssgManifest.js" defer=""></script><script src="/_vercel/insights/script.js" defer="" data-sdkn="@vercel/analytics/react" data-sdkv="1.4.1"></script></head><body><div id="__next"><a href="#skip-nav" tabindex="0" class="c-ijetuc">Skip to content</a><div class="c-hRZPRE"><header class="c-coWCMU c-bpIbAA"><nav class="c-jZTOcW"><a rel="author" title="Jake Jarvis" class="c-ircnMg c-cIJLdn" href="/"><img alt="Photo of Jake Jarvis" width="70" height="70" decoding="async" data-nimg="1" class="c-kBuSEt c-dUvoov" style="color:transparent" srcset="/_next/image/?url=%2F_next%2Fstatic%2Fmedia%2Fselfie.7d009bf4.jpg&w=96&q=60 1x, /_next/image/?url=%2F_next%2Fstatic%2Fmedia%2Fselfie.7d009bf4.jpg&w=256&q=60 2x" src="/_next/image/?url=%2F_next%2Fstatic%2Fmedia%2Fselfie.7d009bf4.jpg&w=256&q=60"><span class="c-cRUDQG">Jake Jarvis</span></a><ul class="c-fFxUcP c-isrdta"><li class="c-jhvBPD"><a class="c-ircnMg c-hEBfGi c-hEBfGi-bQvbla-current-true" title="Home" aria-label="Home" href="/"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="c-iFqlrM" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg><span class="c-fVopks">Home</span></a></li><li class="c-jhvBPD"><a class="c-ircnMg c-hEBfGi c-hEBfGi-coRMrW-current-false" title="Notes" aria-label="Notes" href="/notes/"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="c-iFqlrM" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"></path></svg><span class="c-fVopks">Notes</span></a></li><li class="c-jhvBPD"><a class="c-ircnMg c-hEBfGi c-hEBfGi-coRMrW-current-false" title="Projects" aria-label="Projects" href="/projects/"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="c-iFqlrM" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><span class="c-fVopks">Projects</span></a></li><li class="c-jhvBPD"><a class="c-ircnMg c-hEBfGi c-hEBfGi-coRMrW-current-false" title="Contact" aria-label="Contact" href="/contact/"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="c-iFqlrM" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg><span class="c-fVopks">Contact</span></a></li><li class="c-jhvBPD"><button title="Toggle Dark Mode" aria-label="Toggle Dark Mode" class="c-bADEBd"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="c-iFqlrM" aria-hidden="true" style="transform: rotate(90deg);"><mask id="mask-:R36b9m:"><rect x="0" y="0" width="100%" height="100%" fill="white"></rect><circle r="9" fill="black" style="cx: 100%; cy: 0%;"></circle></mask><circle cx="12" cy="12" fill="currentColor" mask="url(#mask-:R36b9m:)" style="r: 5px;"></circle><g stroke="currentColor" style="opacity: 1;"><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></g></svg></button></li></ul></nav></header><main class="c-fanidY"><div id="skip-nav"></div><div class="c-iktAiM"><h1 class="c-jEFzux">Hi there! I'm Jake. <span class="c-fcKlyh">👋</span></h1><h2 class="c-eFRhLn">I'm a frontend web developer based in the<!-- --> <a target="_blank" rel="noopener noreferrer" title=""Boston Accent Trailer - Late Night with Seth Meyers" on YouTube" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ifvHAvo-css" href="https://www.youtube-nocookie.com/embed/rLwbzGyC6t4?hl=en&fs=1&showinfo=1&rel=0&iv_load_policy=3">Boston</a> <!-- -->area.</h2><p class="c-nnJtK">I specialize in<!-- --> <a target="_blank" rel="noopener noreferrer" title="React Official Website" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ijclXSS-css" href="https://reactjs.org/">React</a> <!-- -->and<!-- --> <a target="_blank" rel="noopener noreferrer" title=""The Cost of Javascript Frameworks" by Tim Kadlec" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ihqdIAg-css" href="https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/">vanilla JavaScript</a> <!-- -->to make nifty<!-- --> <a target="_blank" rel="noopener noreferrer" title="WTF is Jamstack?" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-icEYBVz-css" href="https://jamstack.wtf/">Jamstack sites</a> <!-- -->with dynamic<!-- --> <a target="_blank" rel="noopener noreferrer" title="Node.js Official Website" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-iexeSXv-css" href="https://nodejs.org/en/">Node.js</a> <!-- -->services. But I still know my way around less buzzwordy stacks like<!-- --> <a target="_blank" rel="noopener noreferrer" title="25 Years of PHP History" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ikjCEeE-css" href="https://www.jetbrains.com/lp/php-25/">LAMP</a>, too.</p><p class="c-nnJtK">Whenever possible, I also apply my experience in<!-- --> <a target="_blank" rel="noopener noreferrer" title="Jake Jarvis on Bugcrowd" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-icntmzu-css" href="https://bugcrowd.com/jakejarvis">application security</a>,<!-- --> <a target="_blank" rel="noopener noreferrer" title=""What is serverless computing?" on Cloudflare" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ielVfZD-css" href="https://www.cloudflare.com/learning/serverless/what-is-serverless/">serverless stacks</a>, and<!-- --> <a target="_blank" rel="noopener noreferrer" title="My repositories tagged with "github-actions" on GitHub" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-igdXYXS-css" href="https://github.com/jakejarvis?tab=repositories&q=github-actions&type=source&language=&sort=stargazers">DevOps automation</a>.</p><p class="c-nnJtK">I fell in love with<!-- --> <a title="My Terrible, Horrible, No Good, Very Bad First Websites" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ifJgGVE-css" href="/previously/">frontend web design</a> <!-- -->and<!-- --> <a title="Jake's Bulletin Board, circa 2003" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ibOQcxc-css" href="/notes/my-first-code/">backend programming</a> <!-- -->when my only source of income was<!-- --> <a title="🎉 Cranky Birthday Boy on VHS Tape 📼" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ikLHafA-css" href="/birthday/">the Tooth Fairy</a>. <span class="c-fqQGzg">I've improved a bit since then, I think? 🤷</span></p><p class="c-nnJtK">Over the years, some of my side projects<!-- --> <a title="Powncer segment on The Lab with Leo Laporte (G4techTV)" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-idKLjvk-css" href="/leo/">have</a> <a target="_blank" rel="noopener noreferrer" title=""Student designs iPhone JoeyTracker app" on The Tufts Daily" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-igEtxlK-css" href="https://tuftsdaily.com/news/2012/04/06/student-designs-iphone-joeytracker-app/">been</a> <a target="_blank" rel="noopener noreferrer" title=""The Facebook Effect" by David Kirkpatrick (Google Books)" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ieVykbU-css" href="https://www.google.com/books/edition/The_Facebook_Effect/RRUkLhyGZVgC?hl=en&gbpv=1&dq=%22jake%20jarvis%22&pg=PA226&printsec=frontcover&bsq=%22jake%20jarvis%22">featured</a> <a target="_blank" rel="noopener noreferrer" title=""The new Facebook is on a roll" on CNN Money" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ihwXdCv-css" href="https://money.cnn.com/2007/06/01/technology/facebookplatform.fortune/index.htm">by</a> <a target="_blank" rel="noopener noreferrer" title=""Middio: A YouTube Scraper for Major Label Music Videos" on Wired" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-iliIVnW-css" href="https://www.wired.com/2007/04/our-web-servers/">various</a> <a target="_blank" rel="noopener noreferrer" title=""Fresh Faces in Tech: 10 Kid Entrepreneurs to Watch" on Gigaom" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ijCeZWw-css" href="https://gigaom.com/2009/10/06/fresh-faces-in-tech-10-kid-entrepreneurs-to-watch/6/">media</a> <a target="_blank" rel="noopener noreferrer" title=""Your Next Client? The CEO's Son" on Advertising Age" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-iiWVCgu-css" href="https://adage.com/article/small-agency-diary/client-ceo-s-son/116723/">outlets</a>.</p><p class="c-nnJtK">You can find my work on<!-- --> <a target="_blank" rel="me noopener noreferrer" title="Jake Jarvis on GitHub" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ilomHgQ-css" href="https://github.com/jakejarvis">GitHub</a> <!-- -->and<!-- --> <a target="_blank" rel="me noopener noreferrer" title="Jake Jarvis on LinkedIn" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-idrgdLL-css" href="https://www.linkedin.com/in/jakejarvis/">LinkedIn</a>. I'm always available to connect over<!-- --> <a title="Send an email" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ihcvCov-css" href="/contact/">email</a> <sup class="c-seBUO"><a target="_blank" rel="pgpkey authn noopener" title="My Public Key" class="c-ircnMg c-ircnMg-ifCrDDv-css" href="/pubkey.asc"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="c-eFGshj" height="1.25em" width="1.25em" xmlns="http://www.w3.org/2000/svg"><path d="M6 9V7.25C6 3.845 8.503 1 12 1s6 2.845 6 6.25V9h.5a2.5 2.5 0 0 1 2.5 2.5v8a2.5 2.5 0 0 1-2.5 2.5h-13A2.5 2.5 0 0 1 3 19.5v-8A2.5 2.5 0 0 1 5.5 9Zm-1.5 2.5v8a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1v-8a1 1 0 0 0-1-1h-13a1 1 0 0 0-1 1Zm3-4.25V9h9V7.25c0-2.67-1.922-4.75-4.5-4.75-2.578 0-4.5 2.08-4.5 4.75Z"></path></svg> <code class="c-jnKxow">2B0C 9CF2 51E6 9A39</code></a></sup>,<!-- --> <a target="_blank" rel="me noopener noreferrer" title="Jake Jarvis on Mastodon" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-ihJVCXK-css" href="https://fediverse.jarv.is/@jake">Mastodon</a>, or<!-- --> <a target="_blank" rel="noopener noreferrer" title="Send SMS to +1 (617) 917-3737" class="c-ircnMg c-ircnMg-hAOWUE-underline-true c-ircnMg-igiFVUv-css" href="sms:+1-617-917-3737">SMS</a> <!-- -->as well!</p></div></main><footer class="c-jtLgmk c-bPNjhd"><div class="c-eQZpKm"><div>Content<!-- --> <a title="Creative Commons Attribution 4.0 International" class="c-ircnMg c-jGlSdI" href="/license/">licensed under <!-- -->CC-BY-4.0</a>,<!-- --> <a title="Previously on..." class="c-ircnMg c-jGlSdI" href="/previously/">2001</a> <!-- -->– <!-- -->2024<!-- -->.</div><div>Made with<!-- --> <span title="Love" class="c-geQyBr"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="c-cyKpGk c-cyKpGk-icdQTrv-css" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M14 20.408c-.492.308-.903.546-1.192.709-.153.086-.308.17-.463.252h-.002a.75.75 0 0 1-.686 0 16.709 16.709 0 0 1-.465-.252 31.147 31.147 0 0 1-4.803-3.34C3.8 15.572 1 12.331 1 8.513 1 5.052 3.829 2.5 6.736 2.5 9.03 2.5 10.881 3.726 12 5.605 13.12 3.726 14.97 2.5 17.264 2.5 20.17 2.5 23 5.052 23 8.514c0 3.818-2.801 7.06-5.389 9.262A31.146 31.146 0 0 1 14 20.408Z"></path></svg></span> <!-- -->and<!-- --> <a target="_blank" rel="noopener noreferrer" title="Powered by Next.js" aria-label="Next.js" class="c-ircnMg c-jGlSdI c-jGlSdI-idZakdZ-css" href="https://nextjs.org/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" role="img" viewBox="0 0 24 24" class="c-cyKpGk" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M18.665 21.978C16.758 23.255 14.465 24 12 24 5.377 24 0 18.623 0 12S5.377 0 12 0s12 5.377 12 12c0 3.583-1.574 6.801-4.067 9.001L9.219 7.2H7.2v9.596h1.615V9.251l9.85 12.727Zm-3.332-8.533 1.6 2.061V7.2h-1.6v6.245Z"></path></svg></a>.<!-- --> <a target="_blank" rel="noopener noreferrer" title="View Source on GitHub" class="c-ircnMg c-jGlSdI c-jGlSdI-ibAObXr-css" href="https://github.com/jakejarvis/jarv.is">View source.</a></div></div></footer></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"2JW6LkNDukf4nRc2F8FMh","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script><next-route-announcer><p aria-live="assertive" id="__next-route-announcer__" role="alert" style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; top: 0px; width: 1px; white-space: nowrap; overflow-wrap: normal;"></p></next-route-announcer></body></html>