<!DOCTYPE html><html lang="en"> <!-- Global Metadata --><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/x-ico" href="/favicon.ico"><meta name="generator" content="Astro v5.16.9"><!-- Google Fonts - Preconnect for faster loading --><style type="text/css">@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/gothic/400/normal.woff2);unicode-range:U+0304-0305,U+0308,U+0331,U+10330-1034A;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/greek-ext/400/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/latin-ext/400/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/runic/400/normal.woff2);unicode-range:U+16A0-16F8;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/greek/400/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/old-italic/400/normal.woff2);unicode-range:U+10300-1032F;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/latin/400/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/hebrew/400/normal.woff2);unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/latin/700/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/greek/700/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/old-italic/700/normal.woff2);unicode-range:U+10300-1032F;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/latin-ext/700/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/gothic/700/normal.woff2);unicode-range:U+0304-0305,U+0308,U+0331,U+10330-1034A;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/greek-ext/700/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/hebrew/700/normal.woff2);unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;font-display:swap;}@font-face {font-family:Cardo;font-style:normal;font-weight:700;src:url(/cf-fonts/s/cardo/5.2.8/runic/700/normal.woff2);unicode-range:U+16A0-16F8;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/hebrew/400/italic.woff2);unicode-range:U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/greek-ext/400/italic.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/latin-ext/400/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/gothic/400/italic.woff2);unicode-range:U+0304-0305,U+0308,U+0331,U+10330-1034A;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/greek/400/italic.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/latin/400/italic.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/old-italic/400/italic.woff2);unicode-range:U+10300-1032F;font-display:swap;}@font-face {font-family:Cardo;font-style:italic;font-weight:400;src:url(/cf-fonts/s/cardo/5.2.8/runic/400/italic.woff2);unicode-range:U+16A0-16F8;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:normal;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/normal.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/italic.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/italic.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:400;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/italic.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/italic.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/italic.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:500;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/italic.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/italic.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/italic.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/italic.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:600;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/italic.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/italic.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:700;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/italic.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/italic.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/italic.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/italic.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:800;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/vietnamese/wght/italic.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/cyrillic/wght/italic.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/latin/wght/italic.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:Playfair Display;font-style:italic;font-weight:900;src:url(/cf-fonts/v/playfair-display/5.2.8/latin-ext/wght/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}</style><!-- DNS Prefetch for third-party domains --><link rel="dns-prefetch" href="https://webmention.io"><link rel="dns-prefetch" href="//gc.zgo.at"><!-- Canonical URL --><link rel="canonical" href="https://hbish.com/"><!-- RSS Feed --><link rel="alternate" type="application/rss+xml" title="Ben Shi - Software Engineer &#38; Technologist" href="/rss.xml"><!-- Primary Meta Tags --><title>Ben Shi - Software Engineer &amp; Technologist</title><link rel="webmention" href="https://webmention.io/hbish.com/webmention"><link rel="pingback" href="https://webmention.io/hbish.com/xmlrpc"><meta name="title" content="Ben Shi - Software Engineer &#38; Technologist"><meta name="description" content="Ben Shi - an engineering leader and pragmatic thinker, love solving complex issues through purposeful software"><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://hbish.com/"><meta property="og:title" content="Ben Shi - Software Engineer &#38; Technologist"><meta property="og:description" content="Ben Shi - an engineering leader and pragmatic thinker, love solving complex issues through purposeful software"><meta property="og:image" content="https://hbish.com/og-default.jpg"><meta property="og:site_name" content="Ben Shi"><meta property="og:locale" content="en_US"><!-- Twitter --><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://hbish.com/"><meta property="twitter:title" content="Ben Shi - Software Engineer &#38; Technologist"><meta property="twitter:description" content="Ben Shi - an engineering leader and pragmatic thinker, love solving complex issues through purposeful software"><meta property="twitter:image" content="https://hbish.com/og-default.jpg"><meta property="twitter:creator" content="@hbish"><meta property="twitter:site" content="@hbish"><!-- Additional SEO Meta Tags --><meta name="robots" content="index, follow"><meta name="author" content="Ben Shi"><meta name="theme-color" content="#103fea"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><!-- Goatcounter --><script data-goatcounter="https://hbish.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script><link rel="stylesheet" href="/_astro/about.CWdBGDiQ.css"><body class="bg-theme text-theme transition-colors duration-300"> <div class="waterfall"></div> <div class="container font-sans max-w-7xl mx-auto px-2 sm:px-6 lg:px-8 py-20"> <div class="flex flex-col lg:flex-row"> <div class="w-full lg:w-1/5 lg:order-first mx-8"> <div class="sidebar text-center content-center"> <!-- Mobile Navigation Backdrop --> <div id="mobile-nav-backdrop" class="lg:hidden hidden fixed inset-0 bg-black/20 z-[9997] transition-opacity duration-200"></div> <!-- Mobile Navigation Toggle - Fixed Top Right --> <button id="mobile-nav-toggle" class="lg:hidden fixed top-4 right-4 z-[9999] w-10 h-10 bg-theme-secondary border border-theme rounded-lg text-theme hover:bg-theme transition-colors duration-200 flex items-center justify-center shadow-lg" aria-expanded="false" aria-controls="mobile-nav-menu" aria-label="Toggle navigation menu"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" id="menu-icon" class="lucide lucide-menu w-5 h-5 transition-all duration-300 ease-in-out"> <path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path>  </svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" id="close-icon" class="lucide lucide-x w-5 h-5 transition-all duration-300 ease-in-out absolute hidden"> <path d="M18 6 6 18"></path><path d="m6 6 12 12"></path>  </svg> </button> <div class="h-card"> <div class="relative inline-block mx-auto"> <a href="/" class="block"> <img src="/_astro/profile-pic.CiiO3ac9_groPX.png" srcset="/_astro/profile-pic.CiiO3ac9_groPX.png 80w, /_astro/profile-pic.CiiO3ac9_groPX.png 160w, /_astro/profile-pic.CiiO3ac9_groPX.png 200w" alt="Ben Shi - Software Engineer and Technologist from Sydney, Australia" sizes="(max-width: 1024px) 80px, 160px" loading="eager" decoding="sync" fetchpriority="auto" width="200" height="200" class="w-20 h-20 lg:w-40 lg:h-40 rounded-full mx-auto profile-pic-border"> </a> <a href="/now/" class="absolute bottom-0 right-0 rounded-full text-xl lg:text-3xl hover:scale-110 transition-transform" aria-label="See what I'm doing now" title="What I'm doing now">
✨
</a> </div> <a href="/" class="p-name u-url text-center text-2xl lg:text-5xl"> <h1 class="mx-auto my-1 lg:my-3">Ben Shi</h1> </a> <p class="p-note text-center hidden lg:block my-2">
👋 I'm a technologist from Sydney, Australia. I love solving complex problems.
</p> <p class="p-note text-center hidden lg:block my-2">
I write about software engineering, agile practices and self development & learning.
</p> <!-- Navigation Menu --> <nav class="my-2"> <!-- Mobile Navigation Menu (hidden by default) --> <div id="mobile-nav-menu" class="lg:hidden hidden flex-col space-y-3 py-4 px-4 border-t border-theme mt-4 fixed inset-x-4 top-16 bg-theme rounded-lg shadow-xl z-[9998]" role="navigation" aria-label="Main navigation"> <!-- Navigation Links --> <div class="space-y-2 mb-6"> <a href="/about/" class="block px-4 py-3 text-center hover:bg-theme-secondary rounded-lg transition-colors duration-200 min-h-[44px] flex items-center justify-center">
/about
</a> <a href="/work/" class="block px-4 py-3 text-center hover:bg-theme-secondary rounded-lg transition-colors duration-200 min-h-[44px] flex items-center justify-center">
/work
</a> <a href="/photos/" class="block px-4 py-3 text-center hover:bg-theme-secondary rounded-lg transition-colors duration-200 min-h-[44px] flex items-center justify-center">
/photos
</a> <a href="/uses/" class="block px-4 py-3 text-center hover:bg-theme-secondary rounded-lg transition-colors duration-200 min-h-[44px] flex items-center justify-center">
/uses
</a> </div> <!-- Social Icons Section --> <div class="border-t border-theme pt-4 mb-4"> <div class="text-xs uppercase tracking-wide text-theme-muted mb-3 text-center">
Connect
</div> <div class="flex gap-4 justify-center"> <a href="https://x.com/hbish" title="follow ben on x" rel="me" class="min-h-[44px] min-w-[44px] flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x"> <path d="M18 6 6 18"></path><path d="m6 6 12 12"></path>  </svg> </a> <a href="https://au.linkedin.com/in/benshi" title="connect with ben on linkedin" rel="me" class="min-h-[44px] min-w-[44px] flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin"> <path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect width="4" height="12" x="2" y="9"></rect><circle cx="4" cy="4" r="2"></circle>  </svg> </a> <a href="https://github.com/hbish" title="follow ben on github" rel="me" class="min-h-[44px] min-w-[44px] flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github"> <path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path>  </svg> </a> <a href="/cdn-cgi/l/email-protection#56343338163e343f253e7835393b" title="email ben" rel="me" class="u-email min-h-[44px] min-w-[44px] flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail"> <path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"></path><rect x="2" y="4" width="20" height="16" rx="2"></rect>  </svg> </a> <a href="https://keybase.io/hbish" title="auth me on keybase" rel="me" class="min-h-[44px] min-w-[44px] flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-key"> <path d="m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4"></path><path d="m21 2-9.6 9.6"></path><circle cx="7.5" cy="15.5" r="5.5"></circle>  </svg> </a> </div> </div> <!-- Theme Toggle Section --> <div class="border-t border-theme pt-4"> <div class="text-xs uppercase tracking-wide text-theme-muted mb-3 text-center">Theme</div> <div class="flex justify-center"> <div class="theme-toggle" data-theme-toggle data-astro-cid-x3pjskd3> <select data-theme-selector aria-label="Select theme" class="theme-selector bg-theme border border-theme rounded px-2 py-1 text-sm text-theme-secondary focus:outline-none focus:ring-2 focus:ring-accent-theme" data-astro-cid-x3pjskd3> <option value="light" data-astro-cid-x3pjskd3>light</option> <option value="dark" data-astro-cid-x3pjskd3>dark</option> <option value="gruv-light" data-astro-cid-x3pjskd3>gruv-light</option> <option value="gruv-dark" data-astro-cid-x3pjskd3>gruv-dark</option> </select> </div>  <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="module">const d="hbish-theme",o=["light","dark","gruv-light","gruv-dark"],i="light";function s(){if(typeof localStorage<"u"){const e=localStorage.getItem(d);if(e&&o.includes(e))return e}return typeof window<"u"&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":i}function r(e){if(!o.includes(e))return;const n=document.documentElement;o.forEach(t=>{n.classList.remove(t)}),n.classList.add(e),typeof localStorage<"u"&&localStorage.setItem(d,e),document.querySelectorAll("[data-theme-selector]").forEach(t=>{t.value!==e&&(t.value=e)})}function u(e,n){const t=e.querySelector("[data-theme-selector]");t&&(t.value=n,t.addEventListener("change",c=>{const l=c.target;r(l.value)}))}function a(){const e=s();document.querySelectorAll("[data-theme-toggle]").forEach(n=>{u(n,e)}),r(e)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a();document.addEventListener("astro:page-load",a);</script> </div> </div> </div> <!-- Desktop Navigation (visible on lg and up) --> <div class="hidden lg:flex lg:flex-col items-center justify-start"> <a href="/about/" class="block lg:inline-block lg:mt-0 mr-4 my-2"> /about </a> <a href="/work/" class="block lg:inline-block lg:mt-0 mr-4 my-2"> /work </a> <a href="/photos/" class="block lg:inline-block lg:mt-0 mr-4 my-2"> /photos </a> <a href="/uses/" class="block lg:inline-block lg:mt-0 mr-4 my-2"> /uses </a> </div> </nav> <!-- Social Icons - Desktop Only --> <div class="social hidden lg:flex gap-4 justify-center my-4"> <a href="https://x.com/hbish" title="follow ben on x" rel="me"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x"> <path d="M18 6 6 18"></path><path d="m6 6 12 12"></path>  </svg> </a> <a href="https://au.linkedin.com/in/benshi" title="connect with ben on linkedin" rel="me"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin"> <path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect width="4" height="12" x="2" y="9"></rect><circle cx="4" cy="4" r="2"></circle>  </svg> </a> <a href="https://github.com/hbish" title="follow ben on github" rel="me"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github"> <path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path>  </svg> </a> <a href="/cdn-cgi/l/email-protection#0361666d436b616a706b2d606c6e" title="email ben" rel="me" class="u-email"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail"> <path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"></path><rect x="2" y="4" width="20" height="16" rx="2"></rect>  </svg> </a> <a href="https://keybase.io/hbish" title="auth me on keybase" rel="me"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-key"> <path d="m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4"></path><path d="m21 2-9.6 9.6"></path><circle cx="7.5" cy="15.5" r="5.5"></circle>  </svg> </a> </div> <!-- Theme Toggle - Desktop Only --> <div class="theme-section hidden lg:block my-4"> <div class="text-xs uppercase tracking-wide text-theme-muted mb-2">theme</div> <div class="theme-toggle" data-theme-toggle data-astro-cid-x3pjskd3> <select data-theme-selector aria-label="Select theme" class="theme-selector bg-theme border border-theme rounded px-2 py-1 text-sm text-theme-secondary focus:outline-none focus:ring-2 focus:ring-accent-theme" data-astro-cid-x3pjskd3> <option value="light" data-astro-cid-x3pjskd3>light</option> <option value="dark" data-astro-cid-x3pjskd3>dark</option> <option value="gruv-light" data-astro-cid-x3pjskd3>gruv-light</option> <option value="gruv-dark" data-astro-cid-x3pjskd3>gruv-dark</option> </select> </div>   </div> </div> </div> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="module">function i(){const s=document.getElementById("mobile-nav-toggle"),d=document.getElementById("mobile-nav-menu"),e=document.getElementById("menu-icon"),t=document.getElementById("close-icon"),a=document.getElementById("mobile-nav-backdrop");if(!s||!d||!e||!t||!a)return;const o=n=>{n?(d.classList.remove("hidden"),a.classList.remove("hidden"),s.setAttribute("aria-expanded","true"),e.style.transform="rotate(90deg) scale(0)",e.style.opacity="0",setTimeout(()=>{e.classList.add("hidden"),t.classList.remove("hidden"),t.style.transform="rotate(0deg) scale(1)",t.style.opacity="1"},150)):(d.classList.add("hidden"),a.classList.add("hidden"),s.setAttribute("aria-expanded","false"),t.style.transform="rotate(-90deg) scale(0)",t.style.opacity="0",setTimeout(()=>{t.classList.add("hidden"),e.classList.remove("hidden"),e.style.transform="rotate(0deg) scale(1)",e.style.opacity="1"},150))};s.addEventListener("click",()=>{const n=s.getAttribute("aria-expanded")==="true";o(!n)}),a.addEventListener("click",()=>{o(!1)}),d.querySelectorAll("a").forEach(n=>{n.addEventListener("click",()=>{o(!1)})}),window.addEventListener("resize",()=>{window.innerWidth>=1024&&o(!1)})}i();document.addEventListener("astro:page-load",i);</script> </div> <div class="w-full lg:w-4/5 mx-8"> <div class="mb-8"> <!-- Content --><div class="content">   <div class="section-title text-center text-2xl my-2 px-4 sm:px-0">Posts</div> <section class="text-center px-4 sm:px-0"> <div> <h3 class="text-xl my-6">2026</h3> <div class="row my-2"> <div class="column"> <a href="/on-being-almost-there/">On being almost there</a>
::  <strong> February 28 </strong> </div> <div>  </div> </div> </div><div>  <div class="row my-2"> <div class="column"> <a href="/workman/">Workman</a>
::  <strong> January 9 </strong> </div> <div>  </div> </div> </div><div> <h3 class="text-xl my-6">2025</h3> <div class="row my-2"> <div class="column"> <a href="/reflecting-on-2025/">Reflecting on 2025</a>
::  <strong> December 31 </strong> </div> <div>  </div> </div> </div> <div class="text-sm mt-8 flex flex-col gap-2"> <a href="/archive/" class="text-blue-600 hover:text-blue-800 underline">
View older posts →
</a> <a href="/notes/" class="text-blue-600 hover:text-blue-800 underline">
View my scribbles →
</a> </div> </section>   </div> </div> <div> <!-- Footer --><footer class="text-center text-xs">
&copy; 2009 - 2026 - Ben Shi
<br>
:: <a href="/versions/">v8</a> updated at 2026-03-02 ::
<br> <a href="https://xn--sr8hvo.ws/%F0%9F%8D%B7%F0%9F%8E%87%E2%8F%AF/previous"> ← </a>
🕸💍
<a href="https://xn--sr8hvo.ws/%F0%9F%8D%B7%F0%9F%8E%87%E2%8F%AF/next"> → </a> </footer> </div> </div> </div> </div> <!-- Site-wide JSON-LD Schema --> <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Ben Shi","description":"Ben Shi - an engineering leader and pragmatic thinker, love solving complex issues through purposeful software","url":"https://hbish.com/","author":{"@type":"Person","name":"Ben Shi","url":"https://hbish.com/","sameAs":["https://github.com/hbish","https://x.com/hbish","https://linkedin.com/in/hbish"]},"publisher":{"@type":"Organization","name":"Ben Shi","url":"https://hbish.com/"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://hbish.com/?q={search_term_string}"},"query-input":"required name=search_term_string"}}</script> <!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "f87cfeedece343edbc6dafa3ab2c79f8"}'></script><!-- Cloudflare Pages Analytics --></body> </html>