Netlify
tcp/443 tcp/80
Open service 35.157.26.135:80 · thomasrandolph.info
2026-02-07 10:47
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Sat, 07 Feb 2026 10:47:18 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KGVVD58GFSTWB3WSK1REA590 Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/
Open service 2a05:d014:58f:6200::258:80 · thomasrandolph.info
2026-02-07 10:47
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Sat, 07 Feb 2026 10:47:18 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KGVVD57Q4QAQV7M605NCYEDC Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/
Open service 63.176.8.218:80 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:18 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N88FC9661CWXJ8WX7835 Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/
Open service 2a05:d014:58f:6200::259:443 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; hit
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:09 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2N0040A2VC38BJHCEXR6K
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 2a05:d014:58f:6200::258:443 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; fwd=miss
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:09 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2MZE0QZ373V4PZXGF9V0Q
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 35.157.26.135:443 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; fwd=miss
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:09 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2MZFK8GTVTPEPS9RAJ309
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 35.157.26.135:80 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:16 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N6V4MG42HVQPFC43WJKF Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/
Open service 63.176.8.218:443 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 2
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; hit
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:08 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2MZ013E90Z607V4WAA0FX
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 35.157.26.135:443 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 3
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; hit
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:09 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2MZF0GV6S1F098ZER4EGA
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 2a05:d014:58f:6200::259:443 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; fwd=miss
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:09 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2MZP0ZFP7SEYJJHVJR9MV
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 63.176.8.218:80 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:16 GMT Location: https://resume.thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N6P3NP79TQ9R8K8T4WYJ Content-Length: 50 Connection: close Redirecting to https://resume.thomasrandolph.info/
Open service 35.157.26.135:80 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:16 GMT Location: https://resume.thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N6PK4J1K6WGAGEA9T84F Content-Length: 50 Connection: close Redirecting to https://resume.thomasrandolph.info/
Open service 2a05:d014:58f:6200::258:80 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:17 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N8503FTQGP2J45NZBSWY Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/
Open service 2a05:d014:58f:6200::258:443 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; fwd=miss
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:09 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2MZK7SK5VMZM43VNFT7YJ
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 2a05:d014:58f:6200::259:80 · thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:17 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N80KTNR4ZYN69P81BPB8 Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/
Open service 2a05:d014:58f:6200::259:80 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:17 GMT Location: https://resume.thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N7E5RZXXH7799CXNJS1X Content-Length: 50 Connection: close Redirecting to https://resume.thomasrandolph.info/
Open service 63.176.8.218:443 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 2
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; hit
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Thu, 08 Jan 2026 05:53:08 GMT
Etag: "f07a94b54fc8148aa90979bbd928fd34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KEE2MYX9Q6089NRRHG4CA187
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 2a05:d014:58f:6200::258:80 · resume.thomasrandolph.info
2026-01-08 05:53
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Thu, 08 Jan 2026 05:53:16 GMT Location: https://resume.thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KEE2N6KEG9C0487E0B283RFG Content-Length: 50 Connection: close Redirecting to https://resume.thomasrandolph.info/
Open service 2a05:d014:58f:6200::258:80 · thomasrandolph.info
2026-01-02 21:49
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Fri, 02 Jan 2026 21:49:18 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KE0AZDW4JNYQ1MGZY9RGTG6H Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/
Open service 2a05:d014:58f:6200::258:443 · thomasrandolph.info
2026-01-02 21:49
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; fwd=miss
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Fri, 02 Jan 2026 21:49:18 GMT
Etag: "11bbeed8ea53a3e0f6db1a336fa3ee34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KE0AZE4VQXM779MFE4PCYY5D
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 2a05:d014:58f:6200::259:443 · thomasrandolph.info
2026-01-02 21:49
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Cache-Control: public,max-age=0,must-revalidate
Cache-Status: "Netlify Edge"; fwd=miss
Content-Length: 54944
Content-Type: text/html; charset=UTF-8
Date: Fri, 02 Jan 2026 21:49:18 GMT
Etag: "11bbeed8ea53a3e0f6db1a336fa3ee34-ssl"
Server: Netlify
Strict-Transport-Security: max-age=31536000
X-Nf-Request-Id: 01KE0AZE8PR44K1AT5VRGBJ48B
Connection: close
Page title: Thomas O. Randolph :: Javascript Developer
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Thomas O. Randolph :: Javascript Developer</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
<link rel="stylesheet" href="./fa/fa.css" />
<style>
@import url('https://fonts.googleapis.com/css?family=Rubik:300,400|Work+Sans&display=swap');
:root{
--color-text: rgba( 49, 49, 49, 1 );
--color-high-contrast-text: rgba( 0, 0, 0, 1 );
--color-struts: rgba( 204, 204, 204, 1 );
--color-almost-brightest: rgba( 250, 250, 250, 1 );
--color-info: hsla( 220, 86%, 71%, 1 );
--color-info-struts: hsla( 220, 86%, 38%, 1 );
--color-heart: rgba( 255, 0, 0, 1 );
--color-forgejo: hsla( 0, 100%, 41.6%, 1 );
--color-mastodon: rgb( 99, 100, 255, 1 );
--color-firefox: hsla( 35, 100%, 50%, 1 );
--color-stack-exchange:hsl( 26.5, 90.4%, 54.9%, 1 );
--color-bar-chart: rgba( 19, 14, 102, 1 );
--color-tag: rgba( 101, 80, 116, 1 );
--color-job-tag: rgba( 102, 215, 134, 1 );
}
*{
box-sizing: border-box;
}
html{
line-height: 20px; /* Chrome bug with rem strikes again :-/ */
font-size: 10px;
font-family: 'Work Sans', sans-serif;
color: #313131;
}
body{
width: 80rem;
max-width: 90%;
min-width: 30rem;
margin: auto;
margin-bottom: 3rem;
font-size: 1.4rem;
}
h1,
h2,
h3{
font-family: 'Rubik', sans-serif;
margin: 0;
}
p{
margin: 0;
}
h2,
h3{
font-weight: 300;
}
h1{
font-size: 2rem;
}
h2{
font-size: 1.8rem;
}
h3{
font-size: 1.6rem;
}
ul{
margin: 0;
padding-left: 1.5rem;
list-style-position: inside;
}
hr{
border: 0;
background-color: var( --color-struts );
height: 1px;
margin: 2rem auto;
}
#highlights-bar,
#deeper-dive{
float: left;
padding: 1rem;
}
#highlights-bar{
width: 35%;
}
#deeper-dive{
width: 65%;
border-left: 1px solid var( --color-struts );
}
#deeper-dive > hr:first-of-type{
display: none;
}
@media screen and (max-width: 844px){
#highlights-bar,
#deeper-dive{
float: none;
width: 100%;
}
#highlights-bar{
padding-bottom: 0;
}
#deeper-dive{
border: 0;
padding-top: 0;
}
#deeper-dive > hr:first-of-type{
display: block;
}
}
#highlights-bar .profile{
text-align: center;
}
#highlights-bar .profile img{
border-radius: 50%;
display: block;
height: auto;
margin: auto;
margin-bottom: 1rem;
width: 50%;
}
#highlights-bar .profile h2{
margin: 1rem;
}
#
Open service 2a05:d014:58f:6200::259:80 · thomasrandolph.info
2026-01-02 21:49
HTTP/1.1 301 Moved Permanently Content-Type: text/plain; charset=utf-8 Date: Fri, 02 Jan 2026 21:49:18 GMT Location: https://thomasrandolph.info/ Server: Netlify X-Nf-Request-Id: 01KE0AZDP9HATP2JDCW5XZC303 Content-Length: 43 Connection: close Redirecting to https://thomasrandolph.info/