Varnish
tcp/80
openresty
tcp/443
Open service 151.101.131.7:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-fra-eddf8230082-FRA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.197660,VS0,VE0 x-request-id: 0fdba04e-8c2b-4498-8f2d-f6a8adc713a5 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.195.7:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-lcy-egml8630093-LCY X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.148974,VS0,VE1 x-request-id: 6be8a5d5-5c93-4554-827c-306588145046 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.195.7:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
content-type: text/html; charset=utf-8
etag: W/"877b-nbr/Qahli1Poil0jJ6gPjXLsxIg"
server: openresty
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Age: 69073
Date: Tue, 13 Jan 2026 00:06:33 GMT
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-lon4256-LON
X-Cache: MISS, HIT, MISS
X-Cache-Hits: 0, 14, 0
X-Timer: S1768262793.161471,VS0,VE7
Vary: Cookie, Accept-Encoding
x-request-id: d063cb6c-070b-4a9c-bf36-fc1370337fa2
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=bcd025faef">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=bcd025faef"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=bcd025faef">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42:600::775:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-rtm-ehrd2290053-RTM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.094721,VS0,VE1 x-request-id: d3789d36-eeda-4740-aaa6-1209622623a5 Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42::775:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
server: openresty
etag: W/"877b-T1mBUIwdxgDVj8mgYLC8pieETAc"
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
content-type: text/html; charset=utf-8
cache-control: public, max-age=0
Accept-Ranges: bytes
Date: Tue, 13 Jan 2026 00:06:33 GMT
Age: 446494
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-rtm-ehrd2290037-RTM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 8, 1
X-Timer: S1768262793.106252,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: fd8f9826-afe6-4152-9ed4-81b05fb91abb
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=cf76277419">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=cf76277419"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=cf76277419">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42:200::775:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
server: openresty
etag: W/"877b-T1mBUIwdxgDVj8mgYLC8pieETAc"
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
content-type: text/html; charset=utf-8
cache-control: public, max-age=0
Accept-Ranges: bytes
Date: Tue, 13 Jan 2026 00:06:33 GMT
Age: 446494
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-rtm-ehrd2290032-RTM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 8, 2
X-Timer: S1768262793.101867,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: faf72d85-c2bb-4f58-9e55-e3031b2cebbe
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=cf76277419">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=cf76277419"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=cf76277419">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42:400::775:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-rtm-ehrd2290040-RTM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.090868,VS0,VE1 x-request-id: 15cb1924-f893-4b9c-b458-a7c4366848d0 Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42:400::775:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
server: openresty
etag: W/"877b-T1mBUIwdxgDVj8mgYLC8pieETAc"
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
content-type: text/html; charset=utf-8
cache-control: public, max-age=0
Accept-Ranges: bytes
Date: Tue, 13 Jan 2026 00:06:33 GMT
Age: 446494
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-rtm-ehrd2290049-RTM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 8, 1
X-Timer: S1768262793.103857,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 2f88da53-dd4a-4794-8b73-be18bd5a4e46
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=cf76277419">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=cf76277419"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=cf76277419">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42::775:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-rtm-ehrd2290025-RTM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.091064,VS0,VE1 x-request-id: 3f08465f-133b-4843-b1ab-101c8a46da2f Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.3.7:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
server: openresty
etag: W/"877b-T1mBUIwdxgDVj8mgYLC8pieETAc"
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
content-type: text/html; charset=utf-8
cache-control: public, max-age=0
Accept-Ranges: bytes
Date: Tue, 13 Jan 2026 00:06:33 GMT
Age: 446494
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-rtm-ehrd2290023-RTM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 8, 1
X-Timer: S1768262793.107258,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 61972e49-2062-4bcf-b906-7a7122a0e5ef
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=cf76277419">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=cf76277419"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=cf76277419">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 151.101.3.7:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-rtm-ehrd2290038-RTM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.094758,VS0,VE1 x-request-id: 0e45d0ba-f905-4303-b8ac-ce9badf77b2c Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.131.7:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
server: openresty
etag: W/"877b-T1mBUIwdxgDVj8mgYLC8pieETAc"
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
content-type: text/html; charset=utf-8
cache-control: public, max-age=0
Accept-Ranges: bytes
Date: Tue, 13 Jan 2026 00:06:33 GMT
Age: 446494
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-fra-eddf8230088-FRA
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 6, 1
X-Timer: S1768262793.011541,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: e4056cb7-544a-493d-a9ba-001261c2e5a8
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=cf76277419">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=cf76277419"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=cf76277419">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42:600::775:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
server: openresty
etag: W/"877b-T1mBUIwdxgDVj8mgYLC8pieETAc"
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
content-type: text/html; charset=utf-8
cache-control: public, max-age=0
Accept-Ranges: bytes
Date: Tue, 13 Jan 2026 00:06:33 GMT
Age: 446494
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-fra-eddf8230110-FRA
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 6, 1
X-Timer: S1768262793.060743,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: ede0e912-b75f-42b4-8fef-ff593c3b9eff
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=cf76277419">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=cf76277419"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=cf76277419">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42:200::775:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-vie6329-VIE X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.036689,VS0,VE1 x-request-id: f3e7364d-f2ed-4123-80ae-2d7f6b53e9d4 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.67.7:80 · charles.io
2026-01-13 00:06
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Tue, 13 Jan 2026 00:06:33 GMT Via: 1.1 varnish X-Served-By: cache-fra-eddf8230027-FRA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768262793.010155,VS0,VE0 x-request-id: cc1f2f00-031c-4a14-b4e9-83f0cc4cf0cb Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.67.7:443 · charles.io
2026-01-13 00:06
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
status: 200 OK
content-type: text/html; charset=utf-8
etag: W/"877b-nbr/Qahli1Poil0jJ6gPjXLsxIg"
server: openresty
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Tue, 13 Jan 2026 00:06:32 GMT
Age: 69073
X-Served-By: cache-ams2100103-AMS, cache-ams2100103-AMS, cache-vie6340-VIE
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 13, 1
X-Timer: S1768262793.972341,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: f4b877de-42ac-4709-9e27-596bf23e01cf
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=bcd025faef">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=bcd025faef"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=bcd025faef">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 151.101.3.7:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 02 Jan 2026 16:24:53 GMT
Age: 579547
X-Served-By: cache-ams2100103-AMS, cache-fra-eddf8230143-FRA
X-Cache: MISS, HIT
X-Cache-Hits: 0, 1
X-Timer: S1767371094.856253,VS0,VE4
Vary: Cookie, Accept-Encoding
x-request-id: af8c21e7-bdb6-4c5f-b3dc-b6e61f6591f8
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 151.101.131.7:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-fra-eddf8230160-FRA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.865587,VS0,VE1 x-request-id: 1e80b9cf-b983-43c0-a9d2-0ab09995d607 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.3.7:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-rtm-ehrd2290021-RTM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.822533,VS0,VE1 x-request-id: 77b5bd20-e65b-48f0-814c-4c6012e43d4f Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.67.7:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-lga21960-LGA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.794525,VS0,VE0 x-request-id: 44ca9855-ffcd-48dd-995b-543807142ac5 Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42::775:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 02 Jan 2026 16:24:53 GMT
Age: 579546
X-Served-By: cache-ams2100103-AMS, cache-sin-wsat1880095-SIN
X-Cache: HIT, HIT
X-Cache-Hits: 3, 1
X-Timer: S1767371094.943335,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: 40f76ef8-0297-420e-aaf9-60b05d7694a2
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42:400::775:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 02 Jan 2026 16:24:53 GMT
Age: 579546
X-Served-By: cache-ams2100103-AMS, cache-rtm-ehrd2290025-RTM
X-Cache: HIT, HIT
X-Cache-Hits: 41, 1
X-Timer: S1767371094.751245,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: e7984b55-747a-4d1b-80f1-3bb63380b654
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42::775:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-lon420130-LON X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.700866,VS0,VE0 x-request-id: 121765d4-a18e-4698-839f-73cd38ca59ad Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.195.7:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-lga21928-LGA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.693438,VS0,VE1 x-request-id: 9e728ef7-0142-44ff-8264-cd029ac9eb9c Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42:400::775:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-lga21959-LGA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.661579,VS0,VE1 x-request-id: 81c5ba72-2e8d-4544-8ea0-0d16a758105d Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42:200::775:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 02 Jan 2026 16:24:53 GMT
Age: 579546
X-Served-By: cache-ams2100103-AMS, cache-vie6369-VIE
X-Cache: HIT, HIT
X-Cache-Hits: 40, 1
X-Timer: S1767371094.953362,VS0,VE4
Vary: Cookie, Accept-Encoding
x-request-id: 56dbde4a-57b1-48ce-a3b1-d9863846e5b0
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 151.101.67.7:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 02 Jan 2026 16:24:53 GMT
Age: 579546
X-Served-By: cache-ams2100103-AMS, cache-bom-vanm7210031-BOM
X-Cache: HIT, HIT
X-Cache-Hits: 42, 1
X-Timer: S1767371094.904578,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 400ddd59-fdd9-4b26-a862-9acf0c8f29a6
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 151.101.195.7:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 02 Jan 2026 16:24:53 GMT
Age: 579546
X-Served-By: cache-ams2100103-AMS, cache-lga21969-LGA
X-Cache: HIT, HIT
X-Cache-Hits: 16, 1
X-Timer: S1767371094.699030,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 3fef2a05-d7d4-4368-957e-aa1fbd744d53
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 151.101.131.7:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 02 Jan 2026 16:24:53 GMT
Age: 579546
X-Served-By: cache-ams2100103-AMS, cache-fra-eddf8230106-FRA
X-Cache: MISS, HIT
X-Cache-Hits: 0, 1
X-Timer: S1767371094.659825,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: 8b5add1b-efb8-4b4b-afa1-d48f0a244f69
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"
Open service 2a04:4e42:600::775:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-rtm-ehrd2290030-RTM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.626951,VS0,VE1 x-request-id: 313316fd-419b-4c4e-9bdb-482ffbfdf040 Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42:200::775:80 · charles.io
2026-01-02 16:24
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://charles.io/ Accept-Ranges: bytes Date: Fri, 02 Jan 2026 16:24:53 GMT Via: 1.1 varnish X-Served-By: cache-rtm-ehrd2290049-RTM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1767371094.621179,VS0,VE1 x-request-id: 831438dd-b05f-4a46-810f-1cffb6ad7be1 Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42:600::775:443 · charles.io
2026-01-02 16:24
HTTP/1.1 200 OK
Connection: close
Content-Length: 34683
Server: openresty
Content-Type: text/html; charset=utf-8
Status: 200 OK
cache-control: public, max-age=0
etag: W/"877b-OuGCAmzUSsyLMDOuWZmdFmiqfc0"
Fastly-Restarts: 1
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Age: 579546
Date: Fri, 02 Jan 2026 16:24:53 GMT
X-Served-By: cache-ams2100103-AMS, cache-vie6321-VIE
X-Cache: HIT, MISS
X-Cache-Hits: 40, 0
X-Timer: S1767371094.670282,VS0,VE23
Vary: Cookie, Accept-Encoding
x-request-id: ea90fe80-80d4-4414-8ada-3c8510dcbd83
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: charles.io
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>charles.io</title>
<link rel="stylesheet" href="https://charles.io/assets/built/screen.css?v=4576c20625">
<link rel="canonical" href="https://charles.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://charles.io/page/2/">
<meta property="og:site_name" content="charles.io">
<meta property="og:type" content="website">
<meta property="og:title" content="charles.io">
<meta property="og:url" content="https://charles.io/">
<meta property="og:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta property="article:publisher" content="https://www.facebook.com/ghost">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="charles.io">
<meta name="twitter:url" content="https://charles.io/">
<meta name="twitter:image" content="https://static.ghost.org/v5.0.0/images/publication-cover.jpg">
<meta name="twitter:site" content="@ghost">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="840">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "charles.io",
"url": "https://charles.io/",
"logo": {
"@type": "ImageObject",
"url": "https://charles.io/favicon.ico",
"width": 48,
"height": 48
}
},
"url": "https://charles.io/",
"name": "charles.io",
"image": {
"@type": "ImageObject",
"url": "https://static.ghost.org/v5.0.0/images/publication-cover.jpg",
"width": 1200,
"height": 840
},
"mainEntityOfPage": "https://charles.io/"
}
</script>
<meta name="generator" content="Ghost 6.10">
<link rel="alternate" type="application/rss+xml" title="charles.io" href="https://charles.io/rss/">
<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="220eaa873cbe56b8a3e7a462e9" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://charles-io.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
<link href="https://charles.io/webmentions/receive/" rel="webmention">
<script defer src="/public/cards.min.js?v=4576c20625"></script><style>:root {--ghost-accent-color: #208dee;}</style>
<link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=4576c20625">
<style type="text/css">
.gh-article.post .gh-article-image {
max-height: 400px;
overflow: hidden;
}
.gh-article.post.tag-hash-nocrop .gh-article-image {
max-height: none;
overflow: auto;
}
.gh-article.post.tag-hash-nocrop .gh-article-image img {
max-height: 500px;
width: auto;
margin-left: auto;
margin-right: auto;
}
.gh-foot-inner {
grid-template-columns: 1fr auto;
}
.gh-powered-by {
display:none;
}
</style>
</head>
<body class="home-template is-head-left-logo">
<div class="gh-site">
<header id="gh-head" class="gh-head gh-outer">
<div class="gh-head-inner gh-inner">
<div class="gh-head-brand">
<div class="gh-head-brand-wrapper">
<a class="gh-head-logo" href="https://charles.io">
charles.io
</a>
</div>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>
<button class="gh-burger"></button>
</div>
<nav class="gh-head-menu"