Varnish
tcp/80
openresty
tcp/443
Open service 2a04:4e42:200::775:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-bom-vanm7210054-BOM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 3, 1
X-Timer: S1768229996.390511,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 462ff2b0-751b-4a5a-94b2-896cb2364f4f
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 2a04:4e42:200::775:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210083-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.376489,VS0,VE0 x-request-id: e61aeeaf-0d58-4497-86cb-3f34b9cbfe79 Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42::775:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-bom-vanm7210084-BOM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 3, 1
X-Timer: S1768229996.375085,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 0fb02962-92f4-4fc1-aadb-71089249b792
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 151.101.67.7:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-bom-vanm7210097-BOM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 3, 1
X-Timer: S1768229996.376489,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 18782e82-de90-4e01-a163-a42f1a2ffec5
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 2a04:4e42::775:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210050-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.398399,VS0,VE1 x-request-id: da718d60-ae57-48f5-b115-60f7a146739e Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.67.7:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210068-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.414160,VS0,VE0 x-request-id: cdb50356-5178-4cc7-b7ca-a83610720a60 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.3.7:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210026-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.398736,VS0,VE1 x-request-id: 624ca691-b4b5-4fe1-94b9-02a46a137df3 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.3.7:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-bom-vanm7210061-BOM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 3, 2
X-Timer: S1768229996.388597,VS0,VE0
Vary: Cookie, Accept-Encoding
x-request-id: a122c639-e377-425a-a7be-7938f477d6ca
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 2a04:4e42:400::775:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-sin-wsat1880082-SIN
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 5, 1
X-Timer: S1768229996.320940,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: ce2f31dc-87f3-49b6-9944-fb7ab6e186c0
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 2a04:4e42:600::775:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-sjc1000124-SJC
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 4, 1
X-Timer: S1768229996.286095,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: 75b3f9d3-90fe-4d53-aa28-268de7cb8d98
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 2a04:4e42:600::775:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-sjc10072-SJC X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.124059,VS0,VE1 x-request-id: 478fe1a3-406d-412c-bc07-ed8cc7d8ddfe Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42:400::775:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-sin-wsat1880035-SIN X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.119398,VS0,VE1 x-request-id: 8e52498f-97a6-4840-b838-2a26e12b1e5a Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.195.7:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210033-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.297455,VS0,VE1 x-request-id: 5a6436a5-ba1f-4666-bcd5-1616fb3908cf Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.131.7:80 · vanja.io
2026-01-12 14:59
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Mon, 12 Jan 2026 14:59:56 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210068-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1768229996.297506,VS0,VE1 x-request-id: 358784c4-e06c-42dc-917d-b2ec9ceb4519 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.195.7:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-bom-vanm7210039-BOM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 3, 1
X-Timer: S1768229996.341637,VS0,VE3
Vary: Cookie, Accept-Encoding
x-request-id: e7a796b3-abe4-41cd-b36a-a6a05cdb6b91
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 151.101.131.7:443 · vanja.io
2026-01-12 14:59
HTTP/1.1 200 OK
Connection: close
Content-Length: 28575
content-type: text/html; charset=utf-8
server: openresty
cache-control: public, max-age=0
status: 200 OK
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6f9f-Z2O3KboF1cD03TBZ+ZuBr8UIEZ4"
Accept-Ranges: bytes
Date: Mon, 12 Jan 2026 14:59:56 GMT
Age: 4722
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-bom-vanm7210092-BOM
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 3, 1
X-Timer: S1768229996.340573,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: ac7b60c1-0fe5-43f3-af78-b54d21ad03c3
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=ccb7d4ddd0">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=ccb7d4ddd0) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=ccb7d4ddd0">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2026/01/8A09155D-6CA9-408B-8217-60C9F000D152-1-1-1-1.PNG">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="664">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
Open service 2a04:4e42:600::775:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
etag: W/"6efe-6lK1ickODTOCeyNyI4ClrbzxVH8"
server: openresty
content-type: text/html; charset=utf-8
status: 200 OK
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 19 Dec 2025 00:09:26 GMT
Age: 62598
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-sjc10038-SJC
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 12, 1
X-Timer: S1766102966.456319,VS0,VE125
Vary: Cookie, Accept-Encoding
x-request-id: 6ec73fdb-6c6f-4ae0-972d-a37efdfc74d6
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=c6ade4540e">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im
Open service 2a04:4e42:600::775:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-sjc1000118-SJC X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.434507,VS0,VE1 x-request-id: 04ad914f-1632-4987-a17c-a88be4f2e76b Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42:400::775:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
etag: W/"6efe-6lK1ickODTOCeyNyI4ClrbzxVH8"
server: openresty
content-type: text/html; charset=utf-8
status: 200 OK
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 19 Dec 2025 00:09:26 GMT
Age: 62598
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-pao-kpao1770070-PAO
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 3, 1
X-Timer: S1766102967.594086,VS0,VE3
Vary: Cookie, Accept-Encoding
x-request-id: 8cd63bc7-f875-4e22-b5ee-1b760f9fbfa9
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=c6ade4540e">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im
Open service 2a04:4e42:200::775:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210063-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.498868,VS0,VE0 x-request-id: ce51f775-c3c1-4d15-9cc6-cb295aa81ca7 Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42::775:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
etag: W/"6efe-6lK1ickODTOCeyNyI4ClrbzxVH8"
server: openresty
content-type: text/html; charset=utf-8
status: 200 OK
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 19 Dec 2025 00:09:26 GMT
Age: 62598
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-yyz4573-YYZ
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 11, 2
X-Timer: S1766102967.687091,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 875dfaeb-9f52-4009-9393-747d167e1221
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=c6ade4540e">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im
Open service 2a04:4e42:400::775:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-pao-kpao1770025-PAO X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.425529,VS0,VE1 x-request-id: 6403bf70-7282-4154-b47d-4c9738636f2f Ghost-Fastly: true;production Alt-Svc: clear
Open service 2a04:4e42::775:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-bom-vanm7210063-BOM X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.480632,VS0,VE0 x-request-id: bc935183-8af7-4cb9-8464-a8b884dce20c Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.195.7:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-yyz4569-YYZ X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.438683,VS0,VE1 x-request-id: 7ec91c49-c965-4683-8bb7-3d3e67c9a023 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.3.7:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
etag: W/"6efe-6lK1ickODTOCeyNyI4ClrbzxVH8"
server: openresty
content-type: text/html; charset=utf-8
status: 200 OK
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 19 Dec 2025 00:09:26 GMT
Age: 62598
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-yyz4522-YYZ
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 11, 1
X-Timer: S1766102967.505168,VS0,VE3
Vary: Cookie, Accept-Encoding
x-request-id: 5852a768-6049-4194-9d80-1778174038d7
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=c6ade4540e">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im
Open service 151.101.195.7:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
etag: W/"6efe-6lK1ickODTOCeyNyI4ClrbzxVH8"
server: openresty
content-type: text/html; charset=utf-8
status: 200 OK
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 19 Dec 2025 00:09:26 GMT
Age: 62598
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-yyz4571-YYZ
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 11, 1
X-Timer: S1766102967.505682,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: 88cc346b-1345-42f0-a01a-4096273d4963
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=c6ade4540e">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im
Open service 151.101.131.7:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
etag: W/"6efe-6lK1ickODTOCeyNyI4ClrbzxVH8"
server: openresty
content-type: text/html; charset=utf-8
status: 200 OK
cache-control: public, max-age=0
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Date: Fri, 19 Dec 2025 00:09:26 GMT
Age: 62598
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-yyz4582-YYZ
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 11, 1
X-Timer: S1766102967.507538,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: 43942a76-3d6c-44f1-a2a9-486b9eb853fd
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=c6ade4540e">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=c6ade4540e) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=c6ade4540e">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im
Open service 151.101.131.7:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-yyz4581-YYZ X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.458150,VS0,VE1 x-request-id: 66f05057-d91d-4e04-871d-769cc4998450 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.67.7:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-lga21934-LGA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.394355,VS0,VE1 x-request-id: 294224e0-3897-472a-adab-53a2dc562109 Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.3.7:80 · vanja.io
2025-12-19 00:09
HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Location: https://vanja.io/ Accept-Ranges: bytes Date: Fri, 19 Dec 2025 00:09:26 GMT Via: 1.1 varnish X-Served-By: cache-lga21930-LGA X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1766102966.411782,VS0,VE1 x-request-id: 8bf53ea9-732f-44ce-9563-0e408e3eae3a Ghost-Fastly: true;production Alt-Svc: clear
Open service 151.101.67.7:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
status: 200 OK
cache-control: public, max-age=0
content-type: text/html; charset=utf-8
server: openresty
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6efe-aO/hoenCffaQFMvaN1ZHUJVDwuo"
Accept-Ranges: bytes
Date: Fri, 19 Dec 2025 00:09:26 GMT
Age: 217559
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-lga21976-LGA
X-Cache: MISS, HIT, HIT
X-Cache-Hits: 0, 2, 1
X-Timer: S1766102966.422793,VS0,VE2
Vary: Cookie, Accept-Encoding
x-request-id: b94de982-6177-49b7-9879-a9dee16552eb
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=e4cb8be284">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=e4cb8be284">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=e4cb8be284" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=e4cb8be284) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=e4cb8be284">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im
Open service 2a04:4e42:200::775:443 · vanja.io
2025-12-19 00:09
HTTP/1.1 200 OK
Connection: close
Content-Length: 28414
status: 200 OK
cache-control: public, max-age=0
content-type: text/html; charset=utf-8
server: openresty
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
etag: W/"6efe-aO/hoenCffaQFMvaN1ZHUJVDwuo"
Accept-Ranges: bytes
Age: 217559
Date: Fri, 19 Dec 2025 00:09:26 GMT
X-Served-By: cache-ams2100128-AMS, cache-ams2100128-AMS, cache-fra-eddf8230154-FRA
X-Cache: MISS, MISS, HIT
X-Cache-Hits: 0, 0, 0
X-Timer: S1766102966.434189,VS0,VE1
Vary: Cookie, Accept-Encoding
x-request-id: 17a00429-3db8-4c94-b9ab-5efb31962b5a
Ghost-Fastly: true;production
Alt-Svc: clear
Page title: Vanja Petreski
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vanja Petreski</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="style" href="https://vanja.io/assets/built/screen.css?v=e4cb8be284">
<link rel="preload" as="script" href="https://vanja.io/assets/built/source.js?v=e4cb8be284">
<link rel="preload" as="font" type="font/woff2" href="https://vanja.io/assets/fonts/inter-roman.woff2?v=e4cb8be284" crossorigin="anonymous">
<style>
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 100 900;
font-display: optional;
src: url(https://vanja.io/assets/fonts/inter-roman.woff2?v=e4cb8be284) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<link rel="stylesheet" type="text/css" href="https://vanja.io/assets/built/screen.css?v=e4cb8be284">
<style>
:root {
--background-color: #282A36
}
</style>
<script>
/* The script for calculating the color contrast has been taken from
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
var textColor = (yiq >= 128) ? 'dark' : 'light';
document.documentElement.className = `has-${textColor}-text`;
</script>
<meta name="description" content="Vanja's Notes">
<link rel="icon" href="https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.ico" type="image/x-icon">
<link rel="canonical" href="https://vanja.io/">
<meta name="referrer" content="no-referrer-when-downgrade">
<link rel="next" href="https://vanja.io/page/2/">
<meta property="og:site_name" content="Vanja Petreski">
<meta property="og:type" content="website">
<meta property="og:title" content="Vanja Petreski">
<meta property="og:description" content="Vanja's Notes">
<meta property="og:url" content="https://vanja.io/">
<meta property="og:image" content="https://vanja.io/content/images/size/w1200/2024/04/04-3.jpg">
<meta property="article:publisher" content="https://www.facebook.com/vanja.petreski">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Vanja Petreski">
<meta name="twitter:description" content="Vanja's Notes">
<meta name="twitter:url" content="https://vanja.io/">
<meta name="twitter:image" content="https://vanja.io/content/images/size/w1200/2024/04/04.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="800">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"publisher": {
"@type": "Organization",
"name": "Vanja Petreski",
"url": "https://vanja.io/",
"logo": {
"@type": "ImageObject",
"url": "https://vanja.io/content/images/2024/04/2988073_alphabet-letter-v_capital-letter_capital-letter-v_colored-alphabet_v_icon.png",
"width": 60,
"height": 60
}
},
"url": "https://vanja.io/",
"name": "Vanja Petreski",
"image": {
"@type": "ImageObject",
"url": "https://vanja.io/content/im