AmazonS3
tcp/443
CloudFront
tcp/80
.DS_Store” is an abbreviation for “Desktop Services Store”. These files are created automatically by Apples “Finder” software (which is part of their OS).
They store information about the files within a folder, including display options of folders, such as icon positions and view settings.
It may happen that .DS_Store files inadvertently leak filenames such as database backups or private administration panels.
Severity: low
Fingerprint: 5f32cf5d6962f09c684e525d684e525d544a49654858f1c198aa0700d4b2f5fd
Found 27 files trough .DS_Store spidering: /image-demo /image-demo/index.html /image-demo/script.js /image-demo/styles.css /images /images/icons /media /media/financial-charts /media/financial-tables /media/financial-workspaces /media/just /media/lalalab /media/mosaic-ab /media/mosaic-gyd /media/privavida /media/spotify-art /old /old/fonts /old/images /planner /planner/scripts /planner/scripts/libraries /planner/scripts/zoomview /secrets /secrets/instasongs /secrets/instasongs/hevc /twilio-test
Severity: low
Fingerprint: 5f32cf5d6962f09c9e04c3bc9e04c3bc31e23176688ca946d966c8216ce4c794
Found 22 files trough .DS_Store spidering: /image-demo /image-demo/index.html /image-demo/script.js /image-demo/styles.css /images /images/icons /media /media/financial-charts /media/financial-tables /media/financial-workspaces /media/just /media/lalalab /media/mosaic-ab /media/mosaic-gyd /media/privavida /media/spotify-art /old /old/fonts /old/images /planner /secrets /twilio-test
Severity: low
Fingerprint: 5f32cf5d6962f09cae99eea9ae99eea92c166c31f68d6fd54bf7de8cd8bbedc1
Found 23 files trough .DS_Store spidering: /image-demo /image-demo/index.html /image-demo/script.js /image-demo/styles.css /images /images/icons /media /media/financial-charts /media/financial-tables /media/financial-workspaces /media/just /media/lalalab /media/mosaic-ab /media/mosaic-gyd /media/privavida /media/spotify-art /old /old/fonts /old/images /planner /planner/scripts /secrets /twilio-test
Severity: low
Fingerprint: 5f32cf5d6962f09c3838040e3838040e5984de70c37bb0001ab4f23f2751e1a4
Found 20 files trough .DS_Store spidering: /image-demo /image-demo/index.html /image-demo/script.js /image-demo/styles.css /images /images/icons /media /media/financial-charts /media/financial-tables /media/financial-workspaces /media/just /media/lalalab /media/mosaic-ab /media/mosaic-gyd /media/privavida /media/spotify-art /old /planner /secrets /twilio-test
Severity: low
Fingerprint: 5f32cf5d6962f09ca0cc0fcfa0cc0fcf2f4771e74b5e38634ed9b4667e387440
Found 25 files trough .DS_Store spidering: /image-demo /image-demo/index.html /image-demo/script.js /image-demo/styles.css /images /images/icons /media /media/financial-charts /media/financial-tables /media/financial-workspaces /media/just /media/lalalab /media/mosaic-ab /media/mosaic-gyd /media/privavida /media/spotify-art /old /old/fonts /old/images /planner /planner/scripts /planner/scripts/libraries /planner/scripts/zoomview /secrets /twilio-test
Severity: low
Fingerprint: 5f32cf5d6962f09c47dfe71947dfe7191c58c3411be77612d06f4a0f5b64ff14
Found 16 files trough .DS_Store spidering: /image-demo /images /media /media/financial-charts /media/financial-tables /media/financial-workspaces /media/just /media/lalalab /media/mosaic-ab /media/mosaic-gyd /media/privavida /media/spotify-art /old /planner /secrets /twilio-test
Severity: low
Fingerprint: 5f32cf5d6962f09c0215adfc0215adfc220e3bb6c03436866c53b0615135faa5
Found 4 files trough .DS_Store spidering: /image-demo /image-demo/index.html /image-demo/script.js /image-demo/styles.css
.DS_Store” is an abbreviation for “Desktop Services Store”. These files are created automatically by Apples “Finder” software (which is part of their OS).
They store information about the files within a folder, including display options of folders, such as icon positions and view settings.
It may happen that .DS_Store files inadvertently leak filenames such as database backups or private administration panels.
Severity: low
Fingerprint: 5f32cf5d6962f09cdc57c57adc57c57a28059be9741cf022da583aed4706422d
Found 19 files trough .DS_Store spidering: /fonts /fonts/CMUBright-Bold.woff /fonts/CMUBright-Bold.woff2 /fonts/CMUBright-BoldOblique.woff /fonts/CMUBright-BoldOblique.woff2 /fonts/CMUBright-Oblique.woff /fonts/CMUBright-Oblique.woff2 /fonts/CMUBright-Roman.woff /fonts/CMUBright-Roman.woff2 /fonts/CMUSerif-Bold.woff /fonts/CMUSerif-Bold.woff2 /fonts/CMUSerif-BoldItalic.woff /fonts/CMUSerif-BoldItalic.woff2 /fonts/CMUSerif-Italic.woff /fonts/CMUSerif-Italic.woff2 /fonts/CMUSerif-Roman.woff /fonts/CMUSerif-Roman.woff2 /fonts/CMUTypewriter-Light.woff /fonts/CMUTypewriter-Light.woff2
Severity: low
Fingerprint: 5f32cf5d6962f09c63442d9d63442d9d516b4a56516b4a56516b4a56516b4a56
Found 1 files trough .DS_Store spidering: /fonts
The following URL (usually /.git/config) is publicly accessible and is leaking source code and repository configuration.
Severity: medium
Fingerprint: 2580fa947178c88602b1737db148c044b81b03713d63bb82370a6522a3d5d963
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://github.com/bartjoyce/notes.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "gh-pages"] remote = origin merge = refs/heads/gh-pages
Open service 13.224.189.52:443 · faces.bartholomewjoyce.com
2026-01-09 23:36
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
Server: AmazonS3
Date: Fri, 09 Jan 2026 23:36:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
X-Cache: Hit from cloudfront
Via: 1.1 5edf7727245e1ced58df804fd35f6dd0.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: ATH51-P1
X-Amz-Cf-Id: 3r6TIl38hk6UzGlRFmDYUnSKJBc6lQRITnl_JyVQF2jET4OkhbP-ag==
Age: 3
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 52.222.214.92:443 · notes.bartholomewjoyce.com
2026-01-09 07:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Thu, 08 Jan 2026 13:08:06 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 6851af5c4f6d355fa4ec39cc8cc0c358.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA56-P3
X-Amz-Cf-Id: ORBbdMgV9MunlH85Qq_9U2ZfJZJkdBTv4-6o0fI57evIxvGYNskcxQ==
Age: 67366
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 18.66.192.13:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:58 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 32162aed20605276097da109dc97c5b0.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: -NDs_A2-HgOWqcXyoVM6fDtzlSVm6vxEJTeuwfw4x_J3drM3h1OnFw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.66.192.88:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:57 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 dcfe318aa268be733627ea7884246be4.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: E8N-QqzuWzfO2zba4iAHAfq0qQVUEyjFjl79EgPzSUejIEDWfD6Wbw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:e400:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 aedc37d054398c84a361f8542a82efea.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: ACCPJ2HYuq3iC7_9gKobpvuMZPw5MPKWL4F7Lu8vAXCmWIQREmmQ_Q==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 18.66.192.31:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 0f14828b89630f6555c6372e13fc999a.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: 9lQmS9uWpLkkVvU69l1BuIXuWEQ09Eb5LP6LQnE_OzYbSGh7be35Aw==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:e400:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:57 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 dcfe318aa268be733627ea7884246be4.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: nvJ5-NtaPX0ltTnFH_tCMUa9tOsJXUTOKsw3JT-f9_bc9z0snZMrBA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.66.192.86:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:57 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 dcfe318aa268be733627ea7884246be4.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: WTsqjfM2PmWC8FITeEjjuzAZBEBuH5enQfffeODEZSPi92UyBukUPg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.66.192.88:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 3ddbbcaacc1ba68ddfab04ef45c3ca98.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: jw9BrtPx145tj9ZyA6TPDjQdJED7DGshR6SL50iiGDV-u_ALWy54Pg==
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 18.66.192.13:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 3ddbbcaacc1ba68ddfab04ef45c3ca98.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: lh53xZzt2Q8LSApvEV4q1XFejFZGDJZsJsBuhWTrZIlPktTueWDUAw==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:4200:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:57 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 aedc37d054398c84a361f8542a82efea.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: YuJwOPWRNg1leQDfvHTHx7aUaviuZJVBgPFx11l7nDuLKCMR0IXjOg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:4200:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 0f14828b89630f6555c6372e13fc999a.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: gLkvFj_gWrwrQX-W3cwPc79wR09tED1MVk37mHCW0u7t8xz9sVzz8Q==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:800:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:57 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 f8d34d99bd5a267bad6857ae101ea8e2.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: CaGlMzqg7qU8u6ymurOjmfEfvB9qCRL1n0thDthzw437IaKBdY1fqQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:5c00:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 badff53d2116a4b3d32a2dd1eb918a48.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: eJkXd0SgxaASs1Wsx1C1Gx0BmIuoIhBljR83Zaz-YlAbxg9r3IPqtg==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 18.66.192.86:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 5cc4b35b46cb9b55d49e7f47442e6838.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: Xo1OPw2YrJgZrH5oMBAQv8gXn44pel0XcmytZpSisjawlUjTBsdNGg==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:9600:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 fb542039f97bb702c0e68d2142c449aa.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: dWWwpEtiEhLJQf7kWZl0ofQwU19tcmO8B_W39X1w9T2vORf2CUgJpQ==
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:e00:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:56 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 ae6c2eb8d653982f5df6a91a4b14b518.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: AQ4T6DzpmesQz5o_QVTeUBh64AsEl8Rl8e2YKgtHH3w-bV68kfFj7w== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:e00:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 47755cdb8b36419a04f12ee3c24f7fae.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: LiS-gSEffuTMgnuW_Av_ZBFAchFxmvKXft2XEqO5QCOY7YHwfeNmQw==
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:8600:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 2551fa016e0e39646c40c584001d7b4e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: 7YxVMhyj01uvWFuSJLUjlMB7i7U7CQwSEUdkSrSf9bv_zEY-HhQQbg==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:5c00:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:57 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 3ddbbcaacc1ba68ddfab04ef45c3ca98.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: rBgvXBBAquXzm_IIfEIQIf7KKny9cMtuyUDdPASN-ALC9u69zq7ftQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:a800:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 5cc4b35b46cb9b55d49e7f47442e6838.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: ww8gvAlANM8JeB7Q2rkz6LI5eSxGmJkkN_pCGZKKCbrFT_xXq92pig==
Age: 1
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:8600:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:57 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 ae6c2eb8d653982f5df6a91a4b14b518.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: BTI3ZDor0-F94KejqcszPIqagX3w2iUWPg2Lj0RPk6geeIXs1Qoy_w== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:9600:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:56 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 f8d34d99bd5a267bad6857ae101ea8e2.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: eEslgn1ANS_ORyS4cFpT_B2CjxnObYyp3b4jvNOh6L5FmR7y2aKwgQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:800:7:c32f:1a00:93a1:443 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: close
x-amz-meta-mtime: 1468958644
Last-Modified: Thu, 11 Jun 2020 14:52:41 GMT
Server: AmazonS3
Date: Sun, 04 Jan 2026 03:59:57 GMT
ETag: "5962d0209b68d33791be3722cd57f07d"
X-Cache: Hit from cloudfront
Via: 1.1 878a01abbb158ab50d28bd4e882dc33a.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: flBtNMdaMqjWSVUfVMXzT0OhxrHV-nlrqfxKSA-P1F_8cJ4l1SFfig==
Page title: Bartholomew Joyce – Web Designer, Photographer, Filmmaker
<!DOCTYPE html>
<html>
<head>
<title>Bartholomew Joyce – Web Designer, Photographer, Filmmaker</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1>I am <b>Bartholomew Joyce</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-1.jpg)"></figure>
<p>This website tells you what I've done in the past, what I do now, and may inform you what I can do in the future—for you.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>web designer</b></h1>
</header>
<header>
<h2><b>Design Philosophy</b></h2>
</header>
<p>My thinking has always been that good design is invisible: the aesthetics of a website should not distract the reader from its content. The less that stands between your audience and you the better. A website should be direct and clear in its delivery of information—showing the reader exactly what she wants to see and nothing more.</p>
<p>I communicate with my clients extensively, fleshing out the core purpose and content of their websites by meeting face-to-face. Once the purpose of the website is clear I attempt to find the most direct and effective way of conveying it.</p>
<header data-fix>
<h2><b>huisclos</b>.org.uk — 2015 <span class="red-button">offline</span></h2>
</header>
<figure>
<div class="video" data-video-src="media/huis-clos.mp4" data-ratio="32:29">
<img class="thumbnail drop-shadow" src="media/huis-clos.thumbnail.jpg">
</div>
</figure>
<p>Huis Clos was a South London arts project that ran from April to May of 2015. It pushed heavily for collaboration between artists from a wide range of disciplines.</p>
<header data-fix>
<h2><b>tostato</b>.co.uk — 2015</h2>
</header>
<figure>
<div class="video" data-video-src="media/tostato.mp4" data-ratio="32:29" data-white-button>
<img class="thumbnail drop-shadow" src="media/tostato.thumbnail.jpg">
</div>
</figure>
<p>Tostato is a North London based independent café that offers a great service and impeccable quality food.</p>
<header data-fix>
<h2><b>redswitchpodcast</b>.com — 2016</h2>
</header>
<figure>
<img src="images/redswitchpodcast.jpg" class="drop-shadow">
</figure>
<p>Red Switch: The Podcast is a weekly podcast organised by Adamya Tiwari, Oiva Mikaeli Lappy, Suresh Sangarapillai, and myself. Common topics include politics, religion, and philosophy.</p>
<header data-fix>
<h2><b>Technical Skills</b></h2>
</header>
<p>On the front-end I have experience in writing HTML, CSS, and Javascript. I can work either with frameworks and libraries or without. Libraries that I have used in the past include ReactJS, AngularJS and jQuery.</p>
<p>On the back-end I have worked with several technologies including Node.js, Flask (Python), Wordpress, PHP, and MySQL. Where possible I employ static site generators instead of server-side solutions.</p>
</section>
<section>
<header data-fix>
<h1>I am a <b>photographer</b> & <b>filmmaker</b></h1>
</header>
<figure class="cover" style="background-image:url(images/cover-image-2.jpg)"></figure>
<header data-fix>
<h2><b>Huis Clos</b> — event photography — 2015</h2>
</header>
<figure>
<img class="drop-shadow" src="photography/huis-clos-1.jpg">
<figcaption>
Photo 1 – Huis Clos, Harts Lane Studios.
</figcaption>
</figure>
<header data-fix>
Open service 2600:9000:225b:a800:7:c32f:1a00:93a1:80 · 2016.bartholomewjoyce.com
2026-01-04 03:59
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:59:56 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://2016.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 aedc37d054398c84a361f8542a82efea.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: gMoZmpZVnG_FNySOgj0kNc1UcJA51xuxqsMXGPxykcv4l9Bnzwf0ew== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:be00:a:b6db:32c0:93a1:80 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:55:24 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://redswitchpodcast.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 fa0c215d40a6b5701b7117b099ed994a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: SGYZaB8_UwblqYQ0_FGS3t_myZAYC-u3pGIoxYz_6F1TdD2FFSH0Tw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:ea00:a:b6db:32c0:93a1:443 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 10199
Connection: close
Date: Sun, 04 Jan 2026 03:55:24 GMT
x-amz-meta-mtime: 1517232181
Last-Modified: Thu, 11 Jun 2020 14:54:26 GMT
ETag: "1cff1dcc1360fd4db45ab9f0351ea4cb"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 545b825053a09d387ff136b5f64f0862.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: G8RU0LXPuSO7CPwzeuj5-pX0EyX67pNKYMh-Bid9b4idP_pH5-4gAQ==
Page title: Red Switch: The Podcast
<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Red Switch: The Podcast</title><meta name="description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><link rel="stylesheet" href="/css/main.css"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml"/><meta property="og:title" content="Red Switch: The Podcast"/><meta property="og:locale" content="en_UK"/><meta property="og:description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><script type="text/javascript">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-78423202-1', 'auto');ga('send', 'pageview');</script><script type="text/javascript">var l='addEventListener',z='getElementsByTagName',L='length',T='target';window[l]('load',function(){var a=document[z]('audio'),i=0,n=0,b;for(;i<a[L];i++)(function(a,t,c,p){a[l]('playing',function(){S(++n)});a[l]('pause',function(){R(--n)});a[l]('timeupdate',function(){if(a.paused)return;if((p=0|a.currentTime/t)>c)ga('send','event','Podcast Streaming','Play',a.children[0].src.split('/')[3]+'/'+t*(c=p))})})(a[i],10,-1);b=(function(a,b){for(i=0;i<b[L];i++)b[i][T]!=='_blank'&&a.push(b[i]);return a})(document[z]('a'),[]);function S(){for(i=0;i<b[L];i++)b[i][T]='_blank'}function R(){for(i=0;i<b[L];i++)b[i][T]=''}});</script></head><body><header class="site-header"><div class="wrapper"><a class="site-title" href="/"><span class="bold-red">Red Switch</span> The Podcast</a><nav class="site-nav"><a href="#" class="menu-icon"><svg viewBox="0 0 18 15"><path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"></path><path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"></path><path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"></path></svg></a><div class="trigger"><a class="page-link" href="/feed.xml">RSS</a><a class="page-link" href="https://itunes.apple.com/gb/podcast/red-switch-the-podcast/id1118533477?mt=2">iTunes</a><a class="page-link" href="/about/">About</a><a class="page-link" href="/scraps/">Scraps</a></div></nav></div></header><div class="page-content"><div class="wrapper"><div class="home"><ul class="post-list"><li><span class="post-meta">January 29, 2018</span><h2><a class="post-link" href="/rs12/is-nothing-sacred-anymore/"><span class="bold-red">RS12</span> Is nothing sacred anymore?</a></h2><audio controls="" style="width:100%;"><source src="/rs12/is-nothing-sacred-anymore.mp3" type="audio/mpeg"/>Not supported by your browser.</audio><br/>Philosophy student Matt Hook joins us to reason whether some things should not be joked about. Should some things be beyond jest? We examine free speech, liberalism, and bullying in an attempt to find an answer. <a href="/rs12/is-nothing-sacred-anymore/">Read more</a><br/></li><li><span class="post-meta">February 18, 2017</span><h2><a class="post-link" href="/rs11/a-new-world-currency/"><span class="bold-red">RS11</span> A new world currency?</a></h2><audio controls="" style="width:100%;"><source src="/rs11/a-new-world-currency.mp3" type="audio/mpeg"/>Not supported
Open service 52.85.65.62:80 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:55:24 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://redswitchpodcast.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 ddcc211ea1d565c67eac00a91dda8304.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: wWhEAgxT8REfH3Iyv9YYX-0eXECHwB_RMBqQ8XXW2f1cWV_ygLlLDw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:4e00:a:b6db:32c0:93a1:443 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 10199
Connection: close
Date: Sun, 04 Jan 2026 03:55:24 GMT
x-amz-meta-mtime: 1517232181
Last-Modified: Thu, 11 Jun 2020 14:54:26 GMT
ETag: "1cff1dcc1360fd4db45ab9f0351ea4cb"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 8e2b9bc1b41cb69d67514a54937a01e6.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: oW6xz27TIG6rFRZxNsTGvH73_qrn4reFnxeyQ03gaK1Tfm9-5KVSgg==
Page title: Red Switch: The Podcast
<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Red Switch: The Podcast</title><meta name="description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><link rel="stylesheet" href="/css/main.css"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml"/><meta property="og:title" content="Red Switch: The Podcast"/><meta property="og:locale" content="en_UK"/><meta property="og:description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><script type="text/javascript">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-78423202-1', 'auto');ga('send', 'pageview');</script><script type="text/javascript">var l='addEventListener',z='getElementsByTagName',L='length',T='target';window[l]('load',function(){var a=document[z]('audio'),i=0,n=0,b;for(;i<a[L];i++)(function(a,t,c,p){a[l]('playing',function(){S(++n)});a[l]('pause',function(){R(--n)});a[l]('timeupdate',function(){if(a.paused)return;if((p=0|a.currentTime/t)>c)ga('send','event','Podcast Streaming','Play',a.children[0].src.split('/')[3]+'/'+t*(c=p))})})(a[i],10,-1);b=(function(a,b){for(i=0;i<b[L];i++)b[i][T]!=='_blank'&&a.push(b[i]);return a})(document[z]('a'),[]);function S(){for(i=0;i<b[L];i++)b[i][T]='_blank'}function R(){for(i=0;i<b[L];i++)b[i][T]=''}});</script></head><body><header class="site-header"><div class="wrapper"><a class="site-title" href="/"><span class="bold-red">Red Switch</span> The Podcast</a><nav class="site-nav"><a href="#" class="menu-icon"><svg viewBox="0 0 18 15"><path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"></path><path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"></path><path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"></path></svg></a><div class="trigger"><a class="page-link" href="/feed.xml">RSS</a><a class="page-link" href="https://itunes.apple.com/gb/podcast/red-switch-the-podcast/id1118533477?mt=2">iTunes</a><a class="page-link" href="/about/">About</a><a class="page-link" href="/scraps/">Scraps</a></div></nav></div></header><div class="page-content"><div class="wrapper"><div class="home"><ul class="post-list"><li><span class="post-meta">January 29, 2018</span><h2><a class="post-link" href="/rs12/is-nothing-sacred-anymore/"><span class="bold-red">RS12</span> Is nothing sacred anymore?</a></h2><audio controls="" style="width:100%;"><source src="/rs12/is-nothing-sacred-anymore.mp3" type="audio/mpeg"/>Not supported by your browser.</audio><br/>Philosophy student Matt Hook joins us to reason whether some things should not be joked about. Should some things be beyond jest? We examine free speech, liberalism, and bullying in an attempt to find an answer. <a href="/rs12/is-nothing-sacred-anymore/">Read more</a><br/></li><li><span class="post-meta">February 18, 2017</span><h2><a class="post-link" href="/rs11/a-new-world-currency/"><span class="bold-red">RS11</span> A new world currency?</a></h2><audio controls="" style="width:100%;"><source src="/rs11/a-new-world-currency.mp3" type="audio/mpeg"/>Not supported
Open service 52.85.65.62:443 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 10199
Connection: close
Date: Sun, 04 Jan 2026 03:55:24 GMT
x-amz-meta-mtime: 1517232181
Last-Modified: Thu, 11 Jun 2020 14:54:26 GMT
ETag: "1cff1dcc1360fd4db45ab9f0351ea4cb"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 447e47a50612a1097ffecbc9d34c0618.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: gVxFgT5ZmhWEMSy5rdiDBPbKoe5crqFip9dDzjnS3XpkVL83im6BEg==
Page title: Red Switch: The Podcast
<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Red Switch: The Podcast</title><meta name="description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><link rel="stylesheet" href="/css/main.css"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml"/><meta property="og:title" content="Red Switch: The Podcast"/><meta property="og:locale" content="en_UK"/><meta property="og:description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><script type="text/javascript">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-78423202-1', 'auto');ga('send', 'pageview');</script><script type="text/javascript">var l='addEventListener',z='getElementsByTagName',L='length',T='target';window[l]('load',function(){var a=document[z]('audio'),i=0,n=0,b;for(;i<a[L];i++)(function(a,t,c,p){a[l]('playing',function(){S(++n)});a[l]('pause',function(){R(--n)});a[l]('timeupdate',function(){if(a.paused)return;if((p=0|a.currentTime/t)>c)ga('send','event','Podcast Streaming','Play',a.children[0].src.split('/')[3]+'/'+t*(c=p))})})(a[i],10,-1);b=(function(a,b){for(i=0;i<b[L];i++)b[i][T]!=='_blank'&&a.push(b[i]);return a})(document[z]('a'),[]);function S(){for(i=0;i<b[L];i++)b[i][T]='_blank'}function R(){for(i=0;i<b[L];i++)b[i][T]=''}});</script></head><body><header class="site-header"><div class="wrapper"><a class="site-title" href="/"><span class="bold-red">Red Switch</span> The Podcast</a><nav class="site-nav"><a href="#" class="menu-icon"><svg viewBox="0 0 18 15"><path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"></path><path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"></path><path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"></path></svg></a><div class="trigger"><a class="page-link" href="/feed.xml">RSS</a><a class="page-link" href="https://itunes.apple.com/gb/podcast/red-switch-the-podcast/id1118533477?mt=2">iTunes</a><a class="page-link" href="/about/">About</a><a class="page-link" href="/scraps/">Scraps</a></div></nav></div></header><div class="page-content"><div class="wrapper"><div class="home"><ul class="post-list"><li><span class="post-meta">January 29, 2018</span><h2><a class="post-link" href="/rs12/is-nothing-sacred-anymore/"><span class="bold-red">RS12</span> Is nothing sacred anymore?</a></h2><audio controls="" style="width:100%;"><source src="/rs12/is-nothing-sacred-anymore.mp3" type="audio/mpeg"/>Not supported by your browser.</audio><br/>Philosophy student Matt Hook joins us to reason whether some things should not be joked about. Should some things be beyond jest? We examine free speech, liberalism, and bullying in an attempt to find an answer. <a href="/rs12/is-nothing-sacred-anymore/">Read more</a><br/></li><li><span class="post-meta">February 18, 2017</span><h2><a class="post-link" href="/rs11/a-new-world-currency/"><span class="bold-red">RS11</span> A new world currency?</a></h2><audio controls="" style="width:100%;"><source src="/rs11/a-new-world-currency.mp3" type="audio/mpeg"/>Not supported
Open service 2600:9000:2165:a200:a:b6db:32c0:93a1:80 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:55:24 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://redswitchpodcast.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 dde93e57e0f1abed8c2375fe422387a8.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: CJb0nmSB_V52fIRGxGJG1FC8jHIVjZACTDu8ck9zYL8g8SziX3lpOw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 52.85.65.66:80 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:55:24 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://redswitchpodcast.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 9dd3685eb51bb09781f673d8a8f1a6c4.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: rDzGovpxtIBXQBdI00FDgNPMfPlzQU1fynBhc9Bfhqk-45ayswzsLg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 52.85.65.118:80 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:55:24 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://redswitchpodcast.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 fa0c215d40a6b5701b7117b099ed994a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: PCAlP-pYHfqkS2XFKytiTYtqne_PpBv7bPXXDj5KgGGrIaffgD_epA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:be00:a:b6db:32c0:93a1:443 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 10199
Connection: close
Date: Sun, 04 Jan 2026 03:55:24 GMT
x-amz-meta-mtime: 1517232181
Last-Modified: Thu, 11 Jun 2020 14:54:26 GMT
ETag: "1cff1dcc1360fd4db45ab9f0351ea4cb"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 c65bf3e4543da80bc4240e95b51eeb82.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: nPXmNcHUEl_qXRk0FHfHNgusC1lXgL74XABtoxLG3MmvdpPpuyqgCA==
Age: 0
Page title: Red Switch: The Podcast
<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Red Switch: The Podcast</title><meta name="description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><link rel="stylesheet" href="/css/main.css"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml"/><meta property="og:title" content="Red Switch: The Podcast"/><meta property="og:locale" content="en_UK"/><meta property="og:description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><script type="text/javascript">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-78423202-1', 'auto');ga('send', 'pageview');</script><script type="text/javascript">var l='addEventListener',z='getElementsByTagName',L='length',T='target';window[l]('load',function(){var a=document[z]('audio'),i=0,n=0,b;for(;i<a[L];i++)(function(a,t,c,p){a[l]('playing',function(){S(++n)});a[l]('pause',function(){R(--n)});a[l]('timeupdate',function(){if(a.paused)return;if((p=0|a.currentTime/t)>c)ga('send','event','Podcast Streaming','Play',a.children[0].src.split('/')[3]+'/'+t*(c=p))})})(a[i],10,-1);b=(function(a,b){for(i=0;i<b[L];i++)b[i][T]!=='_blank'&&a.push(b[i]);return a})(document[z]('a'),[]);function S(){for(i=0;i<b[L];i++)b[i][T]='_blank'}function R(){for(i=0;i<b[L];i++)b[i][T]=''}});</script></head><body><header class="site-header"><div class="wrapper"><a class="site-title" href="/"><span class="bold-red">Red Switch</span> The Podcast</a><nav class="site-nav"><a href="#" class="menu-icon"><svg viewBox="0 0 18 15"><path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"></path><path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"></path><path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"></path></svg></a><div class="trigger"><a class="page-link" href="/feed.xml">RSS</a><a class="page-link" href="https://itunes.apple.com/gb/podcast/red-switch-the-podcast/id1118533477?mt=2">iTunes</a><a class="page-link" href="/about/">About</a><a class="page-link" href="/scraps/">Scraps</a></div></nav></div></header><div class="page-content"><div class="wrapper"><div class="home"><ul class="post-list"><li><span class="post-meta">January 29, 2018</span><h2><a class="post-link" href="/rs12/is-nothing-sacred-anymore/"><span class="bold-red">RS12</span> Is nothing sacred anymore?</a></h2><audio controls="" style="width:100%;"><source src="/rs12/is-nothing-sacred-anymore.mp3" type="audio/mpeg"/>Not supported by your browser.</audio><br/>Philosophy student Matt Hook joins us to reason whether some things should not be joked about. Should some things be beyond jest? We examine free speech, liberalism, and bullying in an attempt to find an answer. <a href="/rs12/is-nothing-sacred-anymore/">Read more</a><br/></li><li><span class="post-meta">February 18, 2017</span><h2><a class="post-link" href="/rs11/a-new-world-currency/"><span class="bold-red">RS11</span> A new world currency?</a></h2><audio controls="" style="width:100%;"><source src="/rs11/a-new-world-currency.mp3" type="audio/mpeg"/>Not supported
Open service 2600:9000:2165:dc00:a:b6db:32c0:93a1:80 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Sun, 04 Jan 2026 03:55:24 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://redswitchpodcast.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 2f495c2a75817f316afd4d3bb437bf0a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: 572iwh8Ghh5D68lfxHdfmYmOpPXarRIm76IZTlcZXZTsAe4XGncfhA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:e800:a:b6db:32c0:93a1:443 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 10199
Connection: close
Date: Sun, 04 Jan 2026 03:55:24 GMT
x-amz-meta-mtime: 1517232181
Last-Modified: Thu, 11 Jun 2020 14:54:26 GMT
ETag: "1cff1dcc1360fd4db45ab9f0351ea4cb"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 c65bf3e4543da80bc4240e95b51eeb82.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: vMK-d4aK-1niZJUBL8tdswy_IOsQONe67-qMZ07qbq9Qh6hQetR95Q==
Page title: Red Switch: The Podcast
<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Red Switch: The Podcast</title><meta name="description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><link rel="stylesheet" href="/css/main.css"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml"/><meta property="og:title" content="Red Switch: The Podcast"/><meta property="og:locale" content="en_UK"/><meta property="og:description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><script type="text/javascript">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-78423202-1', 'auto');ga('send', 'pageview');</script><script type="text/javascript">var l='addEventListener',z='getElementsByTagName',L='length',T='target';window[l]('load',function(){var a=document[z]('audio'),i=0,n=0,b;for(;i<a[L];i++)(function(a,t,c,p){a[l]('playing',function(){S(++n)});a[l]('pause',function(){R(--n)});a[l]('timeupdate',function(){if(a.paused)return;if((p=0|a.currentTime/t)>c)ga('send','event','Podcast Streaming','Play',a.children[0].src.split('/')[3]+'/'+t*(c=p))})})(a[i],10,-1);b=(function(a,b){for(i=0;i<b[L];i++)b[i][T]!=='_blank'&&a.push(b[i]);return a})(document[z]('a'),[]);function S(){for(i=0;i<b[L];i++)b[i][T]='_blank'}function R(){for(i=0;i<b[L];i++)b[i][T]=''}});</script></head><body><header class="site-header"><div class="wrapper"><a class="site-title" href="/"><span class="bold-red">Red Switch</span> The Podcast</a><nav class="site-nav"><a href="#" class="menu-icon"><svg viewBox="0 0 18 15"><path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"></path><path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"></path><path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"></path></svg></a><div class="trigger"><a class="page-link" href="/feed.xml">RSS</a><a class="page-link" href="https://itunes.apple.com/gb/podcast/red-switch-the-podcast/id1118533477?mt=2">iTunes</a><a class="page-link" href="/about/">About</a><a class="page-link" href="/scraps/">Scraps</a></div></nav></div></header><div class="page-content"><div class="wrapper"><div class="home"><ul class="post-list"><li><span class="post-meta">January 29, 2018</span><h2><a class="post-link" href="/rs12/is-nothing-sacred-anymore/"><span class="bold-red">RS12</span> Is nothing sacred anymore?</a></h2><audio controls="" style="width:100%;"><source src="/rs12/is-nothing-sacred-anymore.mp3" type="audio/mpeg"/>Not supported by your browser.</audio><br/>Philosophy student Matt Hook joins us to reason whether some things should not be joked about. Should some things be beyond jest? We examine free speech, liberalism, and bullying in an attempt to find an answer. <a href="/rs12/is-nothing-sacred-anymore/">Read more</a><br/></li><li><span class="post-meta">February 18, 2017</span><h2><a class="post-link" href="/rs11/a-new-world-currency/"><span class="bold-red">RS11</span> A new world currency?</a></h2><audio controls="" style="width:100%;"><source src="/rs11/a-new-world-currency.mp3" type="audio/mpeg"/>Not supported
Open service 2600:9000:2165:1200:a:b6db:32c0:93a1:443 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 10199
Connection: close
Date: Sun, 04 Jan 2026 03:55:24 GMT
x-amz-meta-mtime: 1517232181
Last-Modified: Thu, 11 Jun 2020 14:54:26 GMT
ETag: "1cff1dcc1360fd4db45ab9f0351ea4cb"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 025655d33ea4a9c8f0ee3e05af37046e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: OAlVnWJ58Rntj_K6qLVgqCIE4fuTSpa7r9MK-61fm_e9qDYb4Tw6SA==
Page title: Red Switch: The Podcast
<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Red Switch: The Podcast</title><meta name="description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><link rel="stylesheet" href="/css/main.css"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml"/><meta property="og:title" content="Red Switch: The Podcast"/><meta property="og:locale" content="en_UK"/><meta property="og:description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><script type="text/javascript">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-78423202-1', 'auto');ga('send', 'pageview');</script><script type="text/javascript">var l='addEventListener',z='getElementsByTagName',L='length',T='target';window[l]('load',function(){var a=document[z]('audio'),i=0,n=0,b;for(;i<a[L];i++)(function(a,t,c,p){a[l]('playing',function(){S(++n)});a[l]('pause',function(){R(--n)});a[l]('timeupdate',function(){if(a.paused)return;if((p=0|a.currentTime/t)>c)ga('send','event','Podcast Streaming','Play',a.children[0].src.split('/')[3]+'/'+t*(c=p))})})(a[i],10,-1);b=(function(a,b){for(i=0;i<b[L];i++)b[i][T]!=='_blank'&&a.push(b[i]);return a})(document[z]('a'),[]);function S(){for(i=0;i<b[L];i++)b[i][T]='_blank'}function R(){for(i=0;i<b[L];i++)b[i][T]=''}});</script></head><body><header class="site-header"><div class="wrapper"><a class="site-title" href="/"><span class="bold-red">Red Switch</span> The Podcast</a><nav class="site-nav"><a href="#" class="menu-icon"><svg viewBox="0 0 18 15"><path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"></path><path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"></path><path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"></path></svg></a><div class="trigger"><a class="page-link" href="/feed.xml">RSS</a><a class="page-link" href="https://itunes.apple.com/gb/podcast/red-switch-the-podcast/id1118533477?mt=2">iTunes</a><a class="page-link" href="/about/">About</a><a class="page-link" href="/scraps/">Scraps</a></div></nav></div></header><div class="page-content"><div class="wrapper"><div class="home"><ul class="post-list"><li><span class="post-meta">January 29, 2018</span><h2><a class="post-link" href="/rs12/is-nothing-sacred-anymore/"><span class="bold-red">RS12</span> Is nothing sacred anymore?</a></h2><audio controls="" style="width:100%;"><source src="/rs12/is-nothing-sacred-anymore.mp3" type="audio/mpeg"/>Not supported by your browser.</audio><br/>Philosophy student Matt Hook joins us to reason whether some things should not be joked about. Should some things be beyond jest? We examine free speech, liberalism, and bullying in an attempt to find an answer. <a href="/rs12/is-nothing-sacred-anymore/">Read more</a><br/></li><li><span class="post-meta">February 18, 2017</span><h2><a class="post-link" href="/rs11/a-new-world-currency/"><span class="bold-red">RS11</span> A new world currency?</a></h2><audio controls="" style="width:100%;"><source src="/rs11/a-new-world-currency.mp3" type="audio/mpeg"/>Not supported
Open service 52.85.65.16:443 · redswitchpodcast.bartholomewjoyce.com
2026-01-04 03:55
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 10199
Connection: close
Date: Sun, 04 Jan 2026 03:55:24 GMT
x-amz-meta-mtime: 1517232181
Last-Modified: Thu, 11 Jun 2020 14:54:26 GMT
ETag: "1cff1dcc1360fd4db45ab9f0351ea4cb"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 2f495c2a75817f316afd4d3bb437bf0a.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: PZOVGN0PvGnX77q0t6cJnC-97_fp9uwSGqpyeV-BMFJkBK-uFM1d2g==
Page title: Red Switch: The Podcast
<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Red Switch: The Podcast</title><meta name="description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><link rel="stylesheet" href="/css/main.css"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml"/><meta property="og:title" content="Red Switch: The Podcast"/><meta property="og:locale" content="en_UK"/><meta property="og:description" content="Four students discuss anything and everything. Whether their opinions are worth listening to is for you to figure out. Featuring Bartholomew Joyce, Adamya Tiwari, Oiva Mikaeli Lappi, Suresh Sangarapillai."/><script type="text/javascript">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-78423202-1', 'auto');ga('send', 'pageview');</script><script type="text/javascript">var l='addEventListener',z='getElementsByTagName',L='length',T='target';window[l]('load',function(){var a=document[z]('audio'),i=0,n=0,b;for(;i<a[L];i++)(function(a,t,c,p){a[l]('playing',function(){S(++n)});a[l]('pause',function(){R(--n)});a[l]('timeupdate',function(){if(a.paused)return;if((p=0|a.currentTime/t)>c)ga('send','event','Podcast Streaming','Play',a.children[0].src.split('/')[3]+'/'+t*(c=p))})})(a[i],10,-1);b=(function(a,b){for(i=0;i<b[L];i++)b[i][T]!=='_blank'&&a.push(b[i]);return a})(document[z]('a'),[]);function S(){for(i=0;i<b[L];i++)b[i][T]='_blank'}function R(){for(i=0;i<b[L];i++)b[i][T]=''}});</script></head><body><header class="site-header"><div class="wrapper"><a class="site-title" href="/"><span class="bold-red">Red Switch</span> The Podcast</a><nav class="site-nav"><a href="#" class="menu-icon"><svg viewBox="0 0 18 15"><path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"></path><path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"></path><path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"></path></svg></a><div class="trigger"><a class="page-link" href="/feed.xml">RSS</a><a class="page-link" href="https://itunes.apple.com/gb/podcast/red-switch-the-podcast/id1118533477?mt=2">iTunes</a><a class="page-link" href="/about/">About</a><a class="page-link" href="/scraps/">Scraps</a></div></nav></div></header><div class="page-content"><div class="wrapper"><div class="home"><ul class="post-list"><li><span class="post-meta">January 29, 2018</span><h2><a class="post-link" href="/rs12/is-nothing-sacred-anymore/"><span class="bold-red">RS12</span> Is nothing sacred anymore?</a></h2><audio controls="" style="width:100%;"><source src="/rs12/is-nothing-sacred-anymore.mp3" type="audio/mpeg"/>Not supported by your browser.</audio><br/>Philosophy student Matt Hook joins us to reason whether some things should not be joked about. Should some things be beyond jest? We examine free speech, liberalism, and bullying in an attempt to find an answer. <a href="/rs12/is-nothing-sacred-anymore/">Read more</a><br/></li><li><span class="post-meta">February 18, 2017</span><h2><a class="post-link" href="/rs11/a-new-world-currency/"><span class="bold-red">RS11</span> A new world currency?</a></h2><audio controls="" style="width:100%;"><source src="/rs11/a-new-world-currency.mp3" type="audio/mpeg"/>Not supported
Open service 2600:9000:2165:1a00:11:6efe:fac0:93a1:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 e5064f6b1acc98fdddfd88a1c074df3e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: tz_501Af05rpVbmOe1DVjavCNdIxtXZiplni45kEIrSR1b8LYw37Lw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:3800:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 595547cdc2fce94aba8498c84797701a.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: f3lldWflV0rXzfo-mTjPZARqFP_4bynkTv221zMMnLuq1WuO0eal4g==
Age: 1
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:2165:1a00:11:6efe:fac0:93a1:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 419820c97f609bc6c7a0fe8ab9ac7158.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: NTxGhNW-2JjVpcVuiWkIkb-zvet2IJlcm2xSajgv0bjCdt1u2x3MYA==
Age: 1
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 2600:9000:2165:c400:11:6efe:fac0:93a1:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 a71884ac07401af155dc18a13375cfb2.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: OGZD2uPCZkUOY13-AnepP9ULXYKUChxO0L9TkgXYUxi3k1243yTptQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:fc00:1b:c91d:ad40:93a1:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 94313a5530517e71f4769858ce013d58.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: imT08w-rMZ3jMR2NDzgtAMI1nnD7MYPjyl0G6mZiWjbjtGxHUwQXXA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 52.85.65.12:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 711bf86dc2898a8122a5a6c5b71ec626.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: Q9T0RqKAx82cpJfdsCOOfkejrxdKJiXfg0yI1ssNu_0s8TAABfTm0A== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 52.85.65.8:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 2c313927575349c92f098e6f1111a7ce.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: X5fKlmcAXM91YYN-hTbHErU3a2jEp0h94C1BHzGnHexeuNy0pZ7fBQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:3800:1b:c91d:ad40:93a1:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 67b5b59d34e71a36a3955bf957ea9ed2.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: JPoS-Oa1rOhvfaknMVGBT2QDWVzn9XrLSFmmsh4_Z7x-xlX-ZE91CA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:6400:11:6efe:fac0:93a1:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 9dd3685eb51bb09781f673d8a8f1a6c4.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: 2lpNHcGvKtRZqruHD35S8XmzaI4G4W71OKvE3wCb5h7r0-wJpjScZg==
Age: 1
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 2600:9000:26db:c400:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 2dd902cd86ee8f22d66046533880d3e8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: cTucXCL3MocROkF6C-wKN0MNl7zqCeXrhWcjlWequLRij7qnLSJTWg==
Age: 1
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:2165:6c00:11:6efe:fac0:93a1:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 2f495c2a75817f316afd4d3bb437bf0a.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: LL0FMTuGtvQKxaCgT2otOhoA5XN8JuzdXoMck6TPWcZ_UiaCk0ZBoA==
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 52.85.65.8:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 1f6c8fca2731ca6abec1a6d565d2093e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: xe7awIInq1-i5j8BwmC7eUb7fn8LZh6zVGHxhXuOIT4jCRSoxBxUaQ==
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 2600:9000:26db:6000:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 a29f8f45a0707c5c9e054636ff51dce8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: a0uOex-pLgLfYBSCmx20sm2N3eOir0FHTCx9uXHGghCxEJailCDVPw==
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 18.173.154.80:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 3721bbb571fa1179150d81f8194461ae.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: ERxwSRGEDhkmG92l1s0ZqZZo8g8dNdsLLdHsn9EhaATveYFldB_ZNA==
Age: 1
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:26db:1e00:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 50cfe0dc07dec77718bfa8346e608936.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: xSQ54rWqpKM9ML4KE-NVMjaOYLOiZrVa5v4gvelZOs7rl2EuUMZ7ww==
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 18.173.154.20:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 bc5539655ffc88be2596a0239ddfae52.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: 9J-1nOW09FSWEOpaAexyIAzJojxuRIEvdpK-IoWr1byXebkRmRuqbQ==
Age: 1
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:2165:9a00:11:6efe:fac0:93a1:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 2f720540a1a9a4394a2f93dffd5c0e5c.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: tLuQ_MTAsQhgysqqpKOf2sLFyNYbGA23tBRvuF25WZ5K7k4caXwXQw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 52.85.65.61:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 545b825053a09d387ff136b5f64f0862.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: sbnLqcsHWczQpPidzl1Y5-0Xni9Hy4riypds0zz86Cxs8bjrt5W74w==
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 52.85.65.12:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 eab0437e9575fc5ab3f67303be5a9efc.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: gMfixWh0IcINOleIduCft5iFUbGd2zZunEzrRZXCIoQUW6USnAiCtw==
Age: 1
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 18.173.154.59:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 2dd902cd86ee8f22d66046533880d3e8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: CZ73sgjlxTQjgQDgGS5HAYj3mYWVRYmF-toa0p9ZuBp_XZ7qp2dfEA==
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:2165:8600:11:6efe:fac0:93a1:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 aa80856e4ab1425bca16fde063f31814.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: yPypuzg3KncKPpIIVk8oPIgxE1cv8jhzkb0DDAMMU3OT_36i2CcbyA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:6000:1b:c91d:ad40:93a1:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 f620f5422d3678dbdbb8544d75a30f78.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: CcMkR4ThRSqDncd-Lb0v-IxRcHTZwxcprExi-vTw_kO_CFSeNNYuiQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.49:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 106a2e3801afa4dfd5bd4bfaeb93d526.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: JDr8sClKxhFz3hIIJkOs2xme9PZHqKEqMCLwOENL9YT4ia3UGXcDSA==
Age: 1
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:2165:9a00:11:6efe:fac0:93a1:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 7432b1699c051c0940019ac02d9c3902.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: k6AqylGM9BHAgUibYZf5hcjuEmUyWIY8loWzbg0PDPqyAQCXd1fT2g==
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 2600:9000:2165:3a00:11:6efe:fac0:93a1:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 ed63aee7a232dfd166d737f0f937fa32.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: vun3fzorb_6DL25neU2K0pjj6r52PWClPBpoHUQmYkyafsqolJ7DLw==
Age: 1
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 2600:9000:2165:6400:11:6efe:fac0:93a1:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 34e040cb5759c15c903209ff7bbe2c2a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: njr5AJg9axVJz9kz-HBOMoKPlgMnnVgLLWPt6ELyAZ1HNugtD94VGg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:9600:1b:c91d:ad40:93a1:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 bc5539655ffc88be2596a0239ddfae52.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: JEneGKw-oXeEZOxyW7Rv1LgGCWWZHb5ch_Ceq8GPn79XNtSYYd6EgA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:200:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 fe6d656eba9969a63bb94889f81e9bf8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: FafYobo_KO1M_6rhWWRwz3h7ku4Ms7H13QQ2jtH2ZvIbHUlrwfp8fg==
Age: 1
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:26db:9600:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 5951b29f5460c0b6d21eb11bce7b8168.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: MyHaSMfUNyc3aKqjV43Gb6flbhzXYv2PF3b2IktlRz63qGOoMtgavw==
Age: 1
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:2165:8600:11:6efe:fac0:93a1:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 658022059ac728db4382b2632c3bf938.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: 1lw0rgS-TbjCIWvmqKHgFZNEf-CP9R2fdZ8HhuCa2pIYAMCW6ZlH5A==
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 18.173.154.80:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 50cfe0dc07dec77718bfa8346e608936.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: Bf8ztr1AzGcrDnF7qxYkKP9MFkhJXiibJWI7d-_zDPLZ_fYpKXA98Q== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:3a00:11:6efe:fac0:93a1:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 37e423fd0afc1d9345b73ddf180cdd6a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: 2WgE5-sH0vPbqj5hQGtkdxD4Qc5RCsZGDANoWFfZ_hdKpgTD4vfjXg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 52.85.65.61:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 72e7358c1b788ea69a1649b717511b9a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: yoJApM1pUH6MQN9oJv9T72TleG_eWu07-XVNfj6UMUEn5f24fRmfRQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:2c00:1b:c91d:ad40:93a1:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:35 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 66e1af4a9e82225c770ca97b3baaf86e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: 3L4YIR1iOWcs6nDKRXo1TpwroDsVHOeIfPy6KoQDhYIi3XT1ioY-JA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 52.85.65.89:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 72e7358c1b788ea69a1649b717511b9a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: tmBHMB12Qs885_6pnDLNF80IYQqyIv_hERzIeYQZLHByCwZNveoXFQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.20:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 3721bbb571fa1179150d81f8194461ae.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: ZWfwHYGzQSKahYBDuWqiJJWVu6EYp9fg1dUwsUCL4cq1M7DG7qJFbQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:fc00:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 94313a5530517e71f4769858ce013d58.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: y5I79Pp2OjMA-c34sQVpFcDgaVr_ByhR0V2WnkQ34iC8HKX41ugyww==
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:26db:2c00:1b:c91d:ad40:93a1:443 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20995
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1692103460.44740301
Last-Modified: Tue, 15 Aug 2023 12:51:13 GMT
ETag: "aaa8b879293363e0e44aba363e1aed04"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 7ad01e16cb039e6f25a50f4e294fd0ae.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: EeZaepa23RuYSz65lkzSbGNde-eCadnNBi-P_d7QvGD8G44OhlJm9g==
Page title: Bartholomew Joyce – Design & Technology Portfolio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bartholomew Joyce – Design & Technology Portfolio</title>
<meta property="og:type" content="website" />
<meta property="og:title" content="Bartholomew Joyce — Design & Technology Portfolio" />
<meta property="og:image" content="https://bartholomewjoyce.com/images/cover-photograph.jpg" />
<meta property="og:url" content="https://bartholomewjoyce.com/" />
<meta property="og:site_name" content="bartholomewjoyce.com" />
<meta property="og:description" content="Consultant Software Developer based in Paris, France working on financial tech, customer-facing full-stack web development, server architecture, low-level graphics, iOS development, real-time audio/video processing, and more." />
<link rel="stylesheet" type="text/css" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="hls.light.min.js"></script>
</head>
<body>
<div id="fixed-a"></div>
<div id="fixed-b"></div>
<main>
<section>
<header data-fix>
<h1><b>Bartholomew Joyce</b><br>Design & Technology Portfolio</h1>
</header>
<figure class="cover" style="background-image:url(images/cover-photograph.jpg)"></figure>
<p>Hello! My name is Bartholomew. I am a Consultant Software Developer based in Paris, France. In my 15 years of coding (7 years professionally) I have worked on <b>financial tech</b>, customer-facing <b>full-stack</b> web development, <b>server architecture</b>, low-level <b>graphics</b>, <b>iOS</b> development, real-time <b>audio/video</b> processing, and plenty more.</p>
</section>
<section>
<header data-fix>
<h1><b>Web</b></h1>
</header>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Photo product builder for <b>Lalalab</b> (2020)</h2>
<div class="tags">
<div class="tag tag-react">React</div>
<div class="tag tag-nextjs">Next.js</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/lalalab/" data-ratio="4:3">
<img class="thumbnail drop-shadow" src="media/lalalab/thumbnail.jpg">
</div>
<figcaption>
Demo – Preparation of a set of polaroid prints.
</figcaption>
</figure>
<p><a href="https://lalalab.com/" target="_blank">Lalalab</a> is a start-up that allows users to order prints, photobooks and other customised items. I was brought on board to improve their web app where users upload, design and order their prints. Despite accounting for only 7% of sales the web app was the cause of roughly <b>half of all bug reports</b>.</p>
<p>Over the course of 6 months I overhauled the entire web architecture, built on <b>React</b>, <b>TypeScript</b>, <b>Next</b> and relying heavily on IndexedDB for full in-browser image editing.</p>
<p>The result is a robust web app with built-in image editing capabilities, with all projects stored locally in the browser.</p>
</section>
<section>
<header data-fix>
<h2><b>Web</b> → Streamlined eCommerce checkout for <b>Just</b> (2021)</h2>
<div class="tags">
<div class="tag tag-shopify">Shopify</div>
<div class="tag tag-react">React</div>
<div class="tag tag-typescript">TypeScript</div>
</div>
</header>
<figure>
<div class="video" data-video-src="media/just/" data-ratio="64:47" data-white-button>
<img class="thumbnail" src="media/just/thumbnail.jpg">
</div>
<figcaption>
Demo – A Just checkout experience for a first-time user.
</figcaption>
</figure>
<p><a href="https://getjust.eu/" target="_blank">Just</a> is a one-click checkout service that
Open service 2600:9000:2165:1800:11:6efe:fac0:93a1:80 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://notes.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 2c313927575349c92f098e6f1111a7ce.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P6 X-Amz-Cf-Id: iW4YqS-TrP3qLYDbu4DfBtzuGEYEGt7QunL4ydja0diyXAzZ3sC3Xw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:1e00:1b:c91d:ad40:93a1:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 b36a9cc0b5286fd650732f1458855500.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: g6kvSSBI_ixZRRXIRuTlizpnGGMl0gQ-RWBQ4qk0rgYTBGXjvTQ89Q== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:c400:1b:c91d:ad40:93a1:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 7ad01e16cb039e6f25a50f4e294fd0ae.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: 5DigGFMZKifD9rTssOHHzuDCAdhCKAKRlxtmILhPcHlrykNpy3ZEFQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.49:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 fd4a06b35c482e680f7f3fd9baaa0090.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: 1i1d8fUAvHaVHFpvfOS_JLmpCdWinKK6NsHpGWbKg70jaLF797zqkA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:2165:c400:11:6efe:fac0:93a1:443 · notes.bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7485
Connection: close
Date: Fri, 02 Jan 2026 02:50:35 GMT
x-amz-meta-mtime: 1525174512.24244397
Last-Modified: Thu, 11 Jun 2020 14:52:15 GMT
ETag: "291a5c181d49a1d4bdf808b82ee6c166"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 34487f8527afa9dd69067b863d5246b8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P6
X-Amz-Cf-Id: 3PQutGwljTMmicix6iGBVhlUfkHaSX8mDg7KYfCw8cts42uQfGRaZg==
Page title: Notes | Notes
<!DOCTYPE html>
<html lang="en"><head><meta charSet="utf-8" /><meta httpEquiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="preload" href="/component---src-layouts-index-js-78e44fc6803578e4630f.js" as="script" /><link rel="preload" href="/component---src-templates-post-js-f11b9c4a042153a3ab99.js" as="script" /><link rel="preload" href="/path----60561b1c1217b4bdaf75.js" as="script" /><link rel="preload" href="/app-80f1ce0204fad23f72fb.js" as="script" /><link rel="preload" href="/commons-53fb0be53ed5caeb5d53.js" as="script" /><script id="webpack-manifest">
//<![CDATA[
window.webpackManifest = {"231608221292675":"app-80f1ce0204fad23f72fb.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-2b47fdff36c5405a8480.js","195351340454287":"component---src-templates-post-js-f11b9c4a042153a3ab99.js","60335399758886":"path----60561b1c1217b4bdaf75.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","104977597546279":"path---cs-313-bfe21839d62b88756613.js","168273874657437":"path---cs-301-621cf1a456f8f3373bbf.js","74901329180841":"path---cs-325-05a2f40985d6934b9221.js","21796258872904":"path---cs-324-70b1ba16ae7f3567c8f1.js","81904240485990":"path---cs-342-cfb4e211e6a75514b01e.js","257411701174131":"path---cs-346-53d588f67bd7729a2f8d.js","114294042200911":"path---cs-356-ffe95af77a68a3068841.js","82289178807862":"path---project-1b25ae2d6686a9fd906c.js","152063887477752":"path---project-spec-4c40c5ac5373c592475a.js","252209533791401":"path---st-301-8030b86a3b10e6c4d9af.js","99794875316057":"path---research-e2970d415ddd874e83d0.js","136324254271653":"path---cs-356-revision-checklist-1b15dfac29fb0d5fd644.js","114276838955818":"component---src-layouts-index-js-78e44fc6803578e4630f.js"}
//]]>
</script><title data-react-helmet>Notes | Notes</title><link data-react-helmet rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css" integrity="sha384-B41nY7vEWuDrE9Mr+J2nBL0Liu+nl/rBXTdpQal730oTHdlrlXHzYMOhDU60cwde" crossorigin="anonymous" /><meta data-react-helmet name="description" content="Term 1 modules Complexity of Algorithms Compiler Design Computer Graphics Advanced Databases Bayesian Statistics and Decision Theory…" /><script data-react-helmet src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js" integrity="sha384-L9gv4ooDLrYwW0QCM6zY3EKSSPrsuUncpx26+erN0pJX4wv1B1FzVW1SvpcJPx/8" crossorigin="anonymous"></script><script>
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[
"/commons-53fb0be53ed5caeb5d53.js","/app-80f1ce0204fad23f72fb.js","/path----60561b1c1217b4bdaf75.js","/component---src-templates-post-js-f11b9c4a042153a3ab99.js","/component---src-layouts-index-js-78e44fc6803578e4630f.js"
])
</script><style id="gatsby-inlined-css">.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].li
Open service 18.173.154.59:80 · bartholomewjoyce.com
2026-01-02 02:50
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:50:34 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 d45f06116647d4cd21c9ad69cb1b14fc.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: SVJED17pqD35Ync1peKzNXnYkRFDj-p-DfzspAp1yiL6uWeXi9Ekng== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:8600:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:06 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 ec12d3de4ccd821a7e749609dcc62010.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: JcClwZ9KpTEYMRif0YM0mraOyFQLTTr7xM4Dh-9T96qlTSTyLJY1eQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:8600:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 ae6c2eb8d653982f5df6a91a4b14b518.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: 0z1Xu9CYfl8myc1E1eyd67kGYJOnpN8xIEqKjZZ9UfvxUBtv_vPAkg==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:0:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 f8d34d99bd5a267bad6857ae101ea8e2.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: N-ateZWiVTnIVpnzpljwjRO3DLSj56Hj87zCzt4ImKkcpHKKqC_5iA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:fe00:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 ae6c2eb8d653982f5df6a91a4b14b518.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: x6JMOPkbSyel6FgXpnqwRgazud3NuFBgWKxeoA6N7nXg2-1ZV6frQA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:aa00:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 47755cdb8b36419a04f12ee3c24f7fae.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: IaVwc5NsSgMapWqSK-yJdERZwGkk6EX7cnOokixrXz3DACpRs5VlEg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.66.192.93:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 77aa8087323921dee0b130bc0589bda8.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: w8zIwxqg-tHJM2m4xKfX2poIflL4Tk6u8TZNhEHonIVoSyH2VbslPA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:fe00:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 badff53d2116a4b3d32a2dd1eb918a48.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: FaM4PBgmEXxR8UuVXXPCuW3ApNhAgm7XYP-BTTUXnlaAEenk4Gs00w==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:9000:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:06 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 32700c539a5f821aadd3624288c4aeb6.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: RuLmCgDW6D-TqKX_TH2Pll_wabiMR1B4lI8fxPedRV-EkQ3uq3L6IQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:aa00:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 8c1abfbb8460bed752668233d296dba8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: ELatoEAxfAT25N2CcuetsAmPPn2KZ_v1xt-TTJVaspX6ZvdNAdTzQA==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:9000:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 66ce4848bcf993e3c57b596461cd0b82.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: VoG4MEimeyRbeLEICyfYd2PEEbNk4ZkkFXjYtMW36AZM4mU-dh0DaA==
Age: 0
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 18.66.192.93:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 77aa8087323921dee0b130bc0589bda8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: yy_nXpTKTXubAgyZjZbKCQJ9j-XqxUfervjmyd-J7gw7sX14E9Dx3A==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 18.66.192.49:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 8ebebe66cc8de626ee8e15b2ee72d826.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: CbnMnM_bIenyBhESvgPMzNY--IYgk_GwSEe452Wk1mqE4fwhdLpP0w== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:4600:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 66ce4848bcf993e3c57b596461cd0b82.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: tBfpJVQsOfy05DXA-J3oqZSkEz_F4pKYsS0FIv3gJP2fUzKgb9QjOQ==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:0:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 c3f546c2f6132a41e608317139aa8faa.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: xRu44XGnIAnR1JESnoKSVDMp_7rRZUyuKiyCJMq7qFnlKuAaIX2P1A==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:f400:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 a4a80ac7ffee78c042728f52e3f729e0.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: OdAVKJiewS7q6hgySx78M-38wyLjRSFJ0uoAUwHaAr_51F7iaoaEZA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.66.192.49:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 1a45d1e1304c39dfa9b034c2308f4976.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: YN9fLRKFz7AysvYUF2POGYtiZhaE7FzJXEYibvTrcUViE6y79K8RBg==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:2200:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 033e374ece012797cbee0d505e2e61b4.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: RWEOvhMBdtBrfkN3Hmf5SAxiuuxGQVf7Cwp6pfmc2A0x5fiJ7D9uyA==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 18.66.192.64:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 28e56b9ddced4ed414e75f87cbd0d976.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: XWcOB1mP_kFbUKk2SO9aIg6sWsRssFuz0_K9EjVJ645nDiEGlR5kiQ==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:f400:1:578e:4240:93a1:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 8eb3c67b1958af32e15515c8eb27fbb4.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: n2zHm8mi78wz3Ql4rQVk6Ymk96g3w1DS4xXDrxSYXVnZGLhtf40k1g==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 2600:9000:225b:4600:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 66ce4848bcf993e3c57b596461cd0b82.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: jYeN2usZVXcDSojm3WKba-Xo2IwTxlELcMiGjKuPG-D20YpqgnsDZQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:225b:2200:1:578e:4240:93a1:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 aedc37d054398c84a361f8542a82efea.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: mvG5P0taZJId0mT1MS6d-Ugou4i06PszvmNG75hCM4gA60h0TrXehA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.66.192.13:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 8ebebe66cc8de626ee8e15b2ee72d826.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: 8GRH4wcf8F9twWEO2I4i2uWGTGG1XIc-qiYN23FKWkI91Q0iNfbt-w== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.66.192.13:443 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 380
Connection: close
Date: Fri, 02 Jan 2026 02:04:05 GMT
x-amz-meta-mtime: 1513531200
Last-Modified: Thu, 11 Jun 2020 14:52:55 GMT
ETag: "b9fd27cae56476269d4f1264cc23fe71"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 77aa8087323921dee0b130bc0589bda8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P1
X-Amz-Cf-Id: ogGbYvdiS0WOjEV12xgTkHrtzheoBMzzAh42xhgddOm4wrDZ5xdU8A==
Page title: Faces
<!DOCTYPE html>
<html>
<head>
<title>Faces</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/index.js"></script>
<link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
Open service 18.66.192.64:80 · faces.bartholomewjoyce.com
2026-01-02 02:04
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 02 Jan 2026 02:04:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://faces.bartholomewjoyce.com/ X-Cache: Redirect from cloudfront Via: 1.1 badff53d2116a4b3d32a2dd1eb918a48.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P1 X-Amz-Cf-Id: sAUQnpxCTDMetDZVaW7TRrgxh71HXG6FE8dx_8uY6AUIl7mWrZMqLg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
13.224.189.52 1 52.222.214.92 1 18.66.192.13 1 18.66.192.88 1 2600:9000:225b:e400:7:c32f:1a00:93a1 1 18.66.192.31 1 18.66.192.86 1 2600:9000:225b:4200:7:c32f:1a00:93a1 1 2600:9000:225b:800:7:c32f:1a00:93a1 1 2600:9000:225b:5c00:7:c32f:1a00:93a1 1 2600:9000:225b:9600:7:c32f:1a00:93a1 1 2600:9000:225b:e00:7:c32f:1a00:93a1 1 2600:9000:225b:8600:7:c32f:1a00:93a1 1 2600:9000:225b:a800:7:c32f:1a00:93a1 1 2600:9000:2165:be00:a:b6db:32c0:93a1 1 2600:9000:2165:ea00:a:b6db:32c0:93a1 1 52.85.65.62 1 2600:9000:2165:4e00:a:b6db:32c0:93a1 1 2600:9000:2165:a200:a:b6db:32c0:93a1 1 52.85.65.66 1 52.85.65.118 1 2600:9000:2165:dc00:a:b6db:32c0:93a1 1 2600:9000:2165:e800:a:b6db:32c0:93a1 1 2600:9000:2165:1200:a:b6db:32c0:93a1 1 52.85.65.16 1 2600:9000:2165:1a00:11:6efe:fac0:93a1 1 2600:9000:26db:3800:1b:c91d:ad40:93a1 1 2600:9000:2165:c400:11:6efe:fac0:93a1 1 2600:9000:26db:fc00:1b:c91d:ad40:93a1 1 52.85.65.12 1 52.85.65.8 1 2600:9000:2165:6400:11:6efe:fac0:93a1 1 2600:9000:26db:c400:1b:c91d:ad40:93a1 1 2600:9000:2165:6c00:11:6efe:fac0:93a1 1 2600:9000:26db:6000:1b:c91d:ad40:93a1 1 18.173.154.80 1 2600:9000:26db:1e00:1b:c91d:ad40:93a1 1 18.173.154.20 1 2600:9000:2165:9a00:11:6efe:fac0:93a1 1 52.85.65.61 1 18.173.154.59 1 2600:9000:2165:8600:11:6efe:fac0:93a1 1 18.173.154.49 1 2600:9000:2165:3a00:11:6efe:fac0:93a1 1 2600:9000:26db:9600:1b:c91d:ad40:93a1 1 2600:9000:26db:200:1b:c91d:ad40:93a1 1 2600:9000:26db:2c00:1b:c91d:ad40:93a1 1 52.85.65.89 1 2600:9000:2165:1800:11:6efe:fac0:93a1 1 2600:9000:225b:8600:1:578e:4240:93a1 1 2600:9000:225b:0:1:578e:4240:93a1 1 2600:9000:225b:fe00:1:578e:4240:93a1 1 2600:9000:225b:aa00:1:578e:4240:93a1 1 18.66.192.93 1 2600:9000:225b:9000:1:578e:4240:93a1 1 18.66.192.49 1 2600:9000:225b:4600:1:578e:4240:93a1 1 2600:9000:225b:f400:1:578e:4240:93a1 1 2600:9000:225b:2200:1:578e:4240:93a1 1 18.66.192.64 1 13.225.78.94 1 13.225.78.113 1