1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 7 <link rel="canonical" href="https://vlad.website/posts/"> 8 9 10 <title>All Posts</title> 11<meta property="og:title" content="All Posts"> 12 13<meta 14 name="description" 15 content="Hi, I'm Vlad. I work on protecting the Open Source infrastructure the world depends on." 16> 17<meta 18 property="og:description" 19 content="Hi, I'm Vlad. I work on protecting the Open Source infrastructure the world depends on." 20> 21 22<meta 23 property="og:type" 24 content="article" 25> 26 27<meta property="og:url" content="https://vlad.website/posts/"><meta property="og:site_name" content="Vlad Miricioiu"> 28 29<meta property="article:published_time" content="2018-07-15T00:00:00+00:00"> 30 <meta property="article:modified_time" content="2018-07-15T00:00:00+00:00"> 31 32 33 <meta property="og:image" content="https://vlad.website/images/og.jpg"> 34 35 36 37 38 <style>:root{--color-main:#0044ff;--color-main-light:#eef2ff;--color-main-dark:#0033ee;--color-text:#002;--color-white:#fbfbff;--color-light-text:#556;--color-bg:var(--color-white);--color-section-bg-alt:#f6f7fa;--row-gap-l:70px;--row-gap-m:50px;--row-gap-s:20px;--col-gap:30px;--header-y-gap:15px;--link-x-padding:3px;--font-size-xs:15px;--font-size-s:17px;--font-size-m:19px;--font-size-l:21px;--font-size-xl:36px;--font-size-xxl:60px;--line-height-xs:20px;--line-height-s:25px;--line-height-m:25px;--line-height-l:30px;--line-height-xl:40px;--line-height-xxl:65px;--border-radius:2px;--font-family-sans:'Nomada Incise', 'PP Radio Grotesk', 'Helvetica Neue', Helvetica, sans-serif;--font-family-body-serif:'Valkyrie', 'Georgia Pro', Georgia, serif;--font-family-monospace:'Iosevka Fixed SS08 Web', 'SF Mono', 'Roboto Mono', Courier, monospace;--font-family-display-serif:'PP Eiko', monospace}@media(color-gamut:p3){:root{--color-main:oklch(0.5415 0.272 262)}}@media(max-width:1000px){:root{--row-gap-l:45px;--row-gap-m:30px;--row-gap-s:25px}}@media(max-width:800px){:root{--font-size-xs:15px;--font-size-s:17px;--font-size-m:18px;--font-size-l:20px;--font-size-xl:32px;--font-size-xxl:46px;--line-height-xs:20px;--line-height-s:25px;--line-height-m:25px;--line-height-l:30px;--line-height-xl:40px;--line-height-xxl:55px}}html.lores{--font-family-sans:'Lo-Res 21 Serif', 'PP Radio Grotesk', 'Helvetica Neue', Helvetica, sans-serif;--font-family-body-serif:'Lo-Res 21 Serif', 'Valkyrie', 'Georgia Pro', Georgia, serif}@font-face{font-family:pp radio grotesk;font-weight:400;src:url(/fonts/pp-radio-grotesk/PPRadioGrotesk-Regular.woff2)format('woff2');font-display:swap}@font-face{font-family:pp radio grotesk;font-weight:400;src:url(/fonts/pp-radio-grotesk/PPRadioGrotesk-RegularItalic.woff2)format('woff2');font-style:italic;font-display:swap}@font-face{font-family:valkyrie;font-weight:400;src:url(/fonts/valkyrie/valkyrie_b_regular.woff2)format('woff2');font-display:swap}@font-face{font-family:valkyrie;font-weight:700;src:url(/fonts/valkyrie/valkyrie_b_bold.woff2)format('woff2');font-display:swap}@font-face{font-family:valkyrie;font-style:italic;src:url(/fonts/valkyrie/valkyrie_b_italic.woff2)format('woff2');font-display:swap}@font-face{font-family:pp eiko;font-weight:400;src:url(/fonts/pp-eiko/PPEiko-Medium.woff2)format('woff2');font-display:swap}@font-face{font-family:pp eiko;font-weight:400;src:url(/fonts/pp-eiko/PPEiko-LightItalic.woff2)format('woff2');font-style:italic;font-display:swap}@font-face{font-family:nomada incise;font-weight:400;src:url(/fonts/nomada-incise/NomadaIncise-Light.woff2)format('woff2');font-display:swap}@font-face{font-family:nomada incise;font-weight:400;font-style:italic;src:url(/fonts/nomada-incise/NomadaIncise-LightItalic.woff2)format('woff2');font-display:swap}@font-face{font-family:nomada incise;font-weight:500;src:url(/fonts/nomada-incise/NomadaIncise-Regular.woff2)format('woff2');font-display:swap}@font-face{font-family:nomada incise;font-weight:500;font-style:italic;src:url(/fonts/nomada-incise/NomadaIncise-Italic.woff2)format('woff2');font-display:swap}@font-face{font-family:nomada incise;font-weight:700;src:url(/fonts/nomada-incise/NomadaIncise-Medium.woff2)format('woff2');font-display:swap}@font-face{font-family:iosevka fixed ss08 web;font-weight:400;src:url(/fonts/iosevka/IosevkaFixedSS08-Regular.woff2)format('woff2');font-display:swap}@font-face{font-family:'lo-res 21 serif';src:url(/fonts/lo-res/lo-res-21-serif.woff2)format('woff2');font-display:swap}*{box-sizing:border-box}html{font-size:15px;background-color:var(--color-bg);color:var(--color-text)}body{min-height:100vh;margin:0;font-family:var(--font-family-body-serif);font-size:var(--font-size-m);line-height:var(--line-height-m);overflow-wrap:anywhere;text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%}
38body{display:flex;flex-direction:column}main{flex:1}h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol{font-family:var(--font-family-body-serif)}hr{margin:60px auto;max-width:100px;border-style:solid;border-color:var(--color-main);border-top-width:1px;border-bottom-width:0}img{max-width:100%}.imglink{display:block;max-width:100%;padding:0;img{display:block}}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-sans)}p,blockquote,ul,ol,figure,details{font-size:var(--font-size-m);line-height:var(--line-height-m)}details{margin:25px 0;padding:10px;border-left:3px solid var(--color-main);summary{margin:-10px;padding-inline:10px;padding-bottom:2px;cursor:pointer;background:var(--color-main-light);font-size:var(--font-size-m);line-height:var(--line-height-m);font-style:italic;em{font-style:normal}}}p{margin:0;margin-block:20px;&:first-child{margin-block-start:0}&:last-child{margin-block-end:0}}article blockquote{margin:0;margin-block:25px;padding:15px;border-left:3px solid var(--color-main);background-color:var(--color-main-light);border-radius:var(--border-radius);&:first-child{margin-block-start:0}&:last-child{margin-block-end:0}a{text-decoration:underline;text-decoration-style:dotted;padding-left:0;padding-right:0}blockquote{background:#fff}cite{display:block;font-size:var(--font-size-xs);line-height:var(--line-height-xs);&:last-child{text-align:right}&.cite--byline{display:flex;align-items:center;gap:7px;text-align:left;img{border-radius:100%}}a{color:var(--color-text)}+ p{margin-top:5px}}}article sup{line-height:0;a{padding-left:0;padding-right:0;background-color:transparent}}.indent{margin-left:15px}pre,code,.mono{font-family:var(--font-family-monospace)}pre{width:100%;padding:1em;margin:0;margin-block:25px;overflow-x:scroll;white-space:preserve nowrap;font-size:var(--font-size-m);line-height:var(--line-height-m);tab-size:4;&:first-child{margin-block-start:0}&:last-child{margin-block-end:0}code{padding:0;font-size:var(--font-size-s);line-height:var(--line-height-s);@media(max-width:1000px){font-size: var(--font-size-xs); line-height: var(--line-height-xs);}}}pre code,pre code>span{display:block!important}code{display:inline-block;padding:5px;font-size:var(--font-size-xs);line-height:var(--line-height-xs);overflow-wrap:anywhere}p,ul,ol{code{line-height:.8}}code,pre{background:var(--color-main-light);color:var(--color-text);border-radius:var(--border-radius)}.nowrap{white-space:nowrap}strong{font-weight:700}b{font-weight:400;color:var(--color-main)}small{font-size:var(--font-size-xs);line-height:var(--line-height-xs)}.redacted{display:inline-block;height:.7lh;width:70px;background:#000;vertical-align:middle}noscript.noscript-warning{display:block;margin:0;margin-block:25px;padding:25px;background-color:#ff0;font-family:var(--font-family-body-serif);font-size:var(--font-size-m);line-height:var(--line-height-m)}ul,ol{margin:0;margin-block:25px;padding:0;font-size:var(--font-size-m);line-height:var(--line-height-m);font-weight:400;li{margin-block:10px;&:first-child{margin-block-start:0}&:last-child{margin-block-end:0}}}ul{padding-inline-start:25px;list-style-position:outside}ol{padding-inline-start:25px;list-style-position:outside}a{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--color-main);text-underline-offset:3px;color:var(--color-main);&:hover, &:active{background-color:var(--color-main);&, strong, b, h1, h2, h3, h4, h5, h6{color:#fff}hr{border-color:#fff}}&:focus{outline-offset:2px;outline:2px solid var(--color-main)}&:hover{svg.stroked-svg path{stroke:var(--color-white)}svg.filled-svg path{fill:var(--color-white)}}&.link--icon{svg.stroked-svg path{stroke:var(--color-text)}svg.filled-svg path{fill:var(--color-text)}&:hover{svg.stroked-svg path{stroke:var(--color-main)}svg.filled-svg path{fill:var(--color-main)}}}&.suplink{margin-inline:calc(-1 * var(--link-x-padding));background:0 0;color:inherit;&:hover, &:active{background-color:var(--color-main);&, strong, b, &:after{color:#fff}}&:after{content:"°";padding-left:2px;color:var(--color-main)}}&.textlink{padding:0;text-decoration:none;background:0 0;&:hover{background:var(--color-main)}}}.button-icon{vertical-align:middle;padding-bottom:3px;color:#05e;overflow:visible;&.stroked-svg path{stroke:var(--color-main)}
38&.filled-svg path{fill:var(--color-main)}}.icon{width:18px;height:18px;padding-top:1px}h1,h2,h3,h4,h5,h6{font-weight:400}h1{font-size:var(--font-size-l);line-height:var(--line-height-l)}h2{font-size:var(--font-size-m);line-height:var(--line-height-m)}h3{font-size:var(--font-size-s);line-height:var(--line-height-s)}h4{font-size:var(--font-size-s);line-height:var(--line-height-s)}.banner-88x31{width:88px;height:31px}a.skiplink{position:absolute;transform:translateY(-500%);&:focus{transform:translateY(0)}}.large-text{&, p{font-size:var(--font-size-l);line-height:var(--line-height-l);text-align:left}}.crazy-heading{margin-block-end:50px;font-size:var(--font-size-xxl);line-height:var(--line-height-xxl);text-align:center}.text-center{text-align:center}.text-left{&, p{text-align:left}}a.notice{display:block;padding:10px var(--col-gap);background:var(--color-main);color:var(--color-white);font-size:var(--font-size-xs);line-height:var(--line-height-xs);text-align:center;text-decoration:none;&:hover{background:var(--color-main-dark)}@media(max-width:800px){strong{display:block}}}button.button,a.button,summary.button{display:inline-block;padding:15px;border:3px solid var(--color-main);background-color:var(--color-white);color:var(--color-main);text-decoration:none;font-family:var(--font-family-sans);font-feature-settings:"ss02","dlig";font-size:var(--font-size-s);line-height:var(--line-height-s);white-space:nowrap;cursor:pointer;border-radius:var(--border-radius);strong{font-weight:400}&:hover, &[data-active=true]{background-color:var(--color-main);&, strong, b{color:#fff}}&.button--solid{background-color:var(--color-main);color:#fff;&:hover{background-color:#fff;&, strong, b{color:var(--color-main)}}}&.button--tight{padding:5px 10px;font-size:var(--font-size-xs);line-height:var(--line-height-xs)}&.button--arrow{&:after{content:'â';margin-left:10px;font-family:var(--font-family-body-serif)}}}p .button:only-child{margin-block-start:0}[hidden]{display:none!important}.container{margin:0 auto;padding:40px 0;max-width:1100px;&.container--fluid{width:70%;max-width:1500px;@media(max-width:1300px){width: 90%;}@media(max-width:450px){width: 100%;}}}.g{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--col-gap);row-gap:var(--row-gap-s);max-width:1800px;margin-inline:auto;box-sizing:content-box;.g{grid-template-columns:subgrid}&.g--no-row-gap{row-gap:0}&.g--row-gap-m{row-gap:var(--row-gap-m)}&.g--row-gap-l{row-gap:var(--row-gap-l)}& > *{grid-column:1/-1}.g__only{grid-column:3/span 8}.g__side{grid-column:1/span 2}.g__main{grid-column:3/-1}.g__span-1{grid-column:span 1}.g__span-2{grid-column:span 2}.g__span-3{grid-column:span 3}.g__span-4{grid-column:span 4}.g__span-5{grid-column:span 5}.g__span-6{grid-column:span 6}.g__span-7{grid-column:span 7}.g__span-8{grid-column:span 8}.g__span-9{grid-column:span 9}.g__span-10{grid-column:span 10}.g__span-11{grid-column:span 11}.g__span-12{grid-column:span 12}h2.g__side{margin-block:0;text-transform:uppercase;font-size:var(--font-size-m);line-height:var(--line-height-m)}@media(max-width:1000px){.g__only,.g__side,.g__main{grid-column:1/-1;.g__span-1, .g__span-2, .g__span-3, .g__span-4, .g__span-5, .g__span-6, .g__span-7, .g__span-8, .g__span-9, .g__span-10, .g__span-11, .g__span-12{grid-column:1/-1}}h2.g__side{margin-block-start:var(--row-gap-m);&:first-child{margin-block-start:0}}.masthead,.g__only:has(.masthead){& + h2.g__side{margin-block-start:0}}}}section{margin-block:var(--row-gap-l);padding-inline:var(--col-gap);&.section--alt{margin-block:0;padding-block:var(--row-gap-l);background-color:var(--color-section-bg-alt)}@media(max-width:800px){margin-block: var(--row-gap-l); padding-inline: var(--row-gap-s);; &.section--alt{margin-block:0;padding-block:var(--row-gap-l)}}}.sechead{margin-block-start:35px;margin-block-end:10px;font-variant-caps:small-caps;font-feature-settings:"smcp";text-transform:lowercase;font-family:var(--font-family-sans);font-size:var(--font-size-l);line-height:var(--line-height-l);font-weight:400;color:var(--color-main)}footer{display:flex;align-items:center;justify-content:space-between;padding:var(--header-y-gap)var(--col-gap);font-size:var(--font-size-xs);line-height:var(--line-height-xs);color:var(--color-light-text);a{color:var(--color-light-text);text-decoration-color:var(--color-light-text);text-decoration-thickness:1px;&:hover{background:0 0;color:var(--color-text)}}.link--icon svg.stroked-svg{path{stroke:var(--color-light-text)}&:hover{path{stroke:var(--color-text)}}}& > div{display:flex;align-items:center;flex-wrap:wrap;column-gap:5px}@media(max-width:1000px){padding-inline: 20px; flex-direction: column; align-items: flex-start; text-align: center;}}.footer-nav{margin-top:25px;@media(min-width:1000px){display: none;}}.page-items{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:25px;margin-block:25px;&:first-child{margin-top:0}&:last-child{margin-bottom:0}& > .button{margin-block-start:0}}.item-grid{display:grid;grid-gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));&.item-grid--11{grid-template-columns:1fr 1fr}&.item-grid--no-row-gap{grid-row-gap:0}&.item-grid--collapse-1000{@media(max-width:1000px){display: block;}}}@keyframes anim-hologram-specular{0%{background-position:0 0}100%{background-position:0 100%}}header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:15px;padding:var(--header-y-gap)var(--col-gap);font-family:var(--font-family-sans);font-feature-settings:"ss02","dlig";@media(max-width:700px){padding-inline: 20px; flex-direction: column; nav{margin-top:5px}}strong{font-weight:400}a.title{flex:1;display:flex;align-items:center;gap:20px;color:var(--color-text);text-decoration:none;white-space:nowrap;&:hover{background-color:transparent}.title__circle{--circle-size:30px;position:relative;flex-basis:var(--circle-size);height:var(--circle-size);width:var(--circle-size);img{height:var(--circle-size);width:var(--circle-size)}.hologram{display:none}@supports(mix-blend-mode:screen){.hologram{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#000;background-size:100%;background-position:50%;border-radius:100%;&.hologram--specular{mix-blend-mode:screen;background-attachment:fixed;background-image:linear-gradient(180deg,black 5%,#3c5e6d 25%,#f4310e,#f58308 80%,black);background-size:100% 1e3%;animation:anim-hologram-specular 15s linear infinite alternate}&.hologram--mask{mix-blend-mode:multiply;
38background-image:url(/images/tower-spec.jpg)}}}}.title__name{color:var(--color-main);font-size:24px;line-height:1;font-weight:400;letter-spacing:-1px}}}nav{font-family:var(--font-family-sans);font-feature-settings:"ss02","dlig";font-size:var(--font-size-s);line-height:var(--line-height-s);a:not(.button){padding:2px 5px;background-color:var(--color-main-light);text-decoration:none;border-radius:var(--border-radius);&:hover{color:#fff;background-color:var(--color-main)}}strong{font-weight:400}ul{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:0;padding:0;padding-top:2px;list-style:none;font-family:var(--font-family-sans);font-feature-settings:"ss02","dlig";font-weight:500;font-size:var(--font-size-s);line-height:var(--line-height-s);@media(max-width:800px){font-size: var(--font-size-xs); line-height: var(--line-height-xs);}li{margin:0}}}.boops{.boop{display:flex;flex-direction:column;gap:10px;a.boop__image{display:block;width:100%;background-position:50%;background-repeat:no-repeat;background-size:cover;box-shadow:3px 3px 6px rgba(0,0,0,.1);aspect-ratio:1/1;&.boop__image--16-9{aspect-ratio:16/9}&.boop__image--photo{aspect-ratio:1/1.3;@media(max-width:1000px){aspect-ratio: 1 / 1;}}}.boop__main{display:flex;flex-direction:column;gap:5px;padding:0 10px;padding-bottom:10px;&, p{font-size:var(--font-size-xs);line-height:var(--line-height-xs)}h3{margin:0}&.boop__main--icons{.boop__item{display:flex;gap:10px}}&.boop__main--desc{p{margin-block-start:5px}}}}}img.page-image{max-width:100%;height:auto;margin:0;margin-block-end:25px;border-radius:var(--border-radius)}.page-image-container{display:flex;justify-content:center;align-items:center;margin-bottom:25px;padding:50px;background-color:var(--color-bg);border-radius:var(--border-radius);img.page-image{display:block;margin:0;margin-inline:auto;max-height:250px}&.page-image-container--cover{display:block;height:auto;padding:0;img.page-image{width:100%;max-height:none;object-fit:cover}}&.page-image-container--white{background-color:#fff}&.page-image-container--submodule{background-color:#2100ff}&.page-image-container--cc{background-color:#705ab7}}.image-teaser{display:block;&, &:hover{background:0 0;border:none}img{display:block;max-width:100%}}.imgset{& > :nth-child(2){display:none}&:hover{& > :nth-child(1){display:none}& > :nth-child(2){display:block}}}.projs{.proj{--image-container-size:56px;--image-size:30px;margin:0;padding:0;background:0 0;&:hover{.proj__text .proj__head b{background:var(--color-main);color:var(--color-white)}}&.proj--small{--image-container-size:40px;--image-size:20px}.proj__main{display:flex;align-items:center;gap:15px;margin-bottom:7px;@media(max-width:800px){gap: 15px;}}.proj__image-wrapper{.proj__image{display:flex;align-items:center;justify-content:center;min-height:var(--image-container-size);min-width:var(--image-container-size);height:var(--image-container-size);width:var(--image-container-size);border-radius:var(--border-radius);background-size:cover;background-position:50%;img, svg{width:var(--image-size);height:var(--image-size)}}}.proj__text{flex:1;.proj__head{b{display:inline-block;margin-inline:calc(-1 * var(--link-x-padding));padding-inline:var(--link-x-padding);font-size:var(--font-size-m);line-height:var(--line-height-m);font-family:var(--font-family-sans);font-weight:500;border-radius:var(--border-radius);color:var(--color-main);@media(max-width:800px){font-size: var(--font-size-m); line-height: var(--line-height-m);}}i{display:block;font-style:normal;color:var(--color-text);font-family:var(--font-family-sans);font-size:var(--font-size-xs);line-height:var(--line-height-xs)}}}p{margin:0;margin-left:calc(var(--image-container-size) + 15px);font-size:var(--font-size-xs);line-height:var(--line-height-xs);font-style:italic;color:var(--color-text)}}}.lines{display:flex;flex-direction:column;&.lines--bordered{border:1px solid var(--color-main);border-radius:var(--border-radius);overflow:hidden;.line{&:last-child{border-bottom:0}}}}.line{min-height:42px;padding-top:18.2px;padding-bottom:2.8px;line-height:19px;border-bottom:1px solid var(--color-main);font-family:var(--font-family-sans);font-feature-settings:"ss02","dlig";font-size:var(--font-size-s);color:var(--color-main);border-radius:0;@media(max-width:800px){font-size: var(--font-size-xs);}&.line--double{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-height:84px;padding-bottom:9.8px;line-height:21px}&[href], &.line--padded{padding-left:13px;padding-top:10px;padding-bottom:10px;padding-right:50px}&[href]{position:relative;display:flex;text-decoration:none;background-color:transparent;&, & > *{color:var(--color-main)}&:hover{background-color:var(--color-main);&, & > *{color:#fff}}&:after{content:'â';font-family:var(--font-family-body-serif);position:absolute;right:15px;top:50%;transform:translateY(-60%)}.category{color:#fff}}
38&.line--11{display:flex;flex-direction:row;align-items:center;@media(max-width:1000px){flex-direction: column; align-items: flex-start; gap: 2px;}& > :nth-child(1), & > :nth-child(2){flex:1}}&.line--with-icon{display:flex;flex-direction:row;gap:10px}&.line--with-author{span{text-transform:lowercase;font-variant-caps:small-caps;font-feature-settings:"smcp"}}&.line--31{display:flex;align-items:center;@media(max-width:1000px){flex-direction: column; align-items: flex-start; gap: 2px;}& > :nth-child(1){flex:3}& > :nth-child(2){flex:1;text-align:right;padding-top:4px;@media(max-width:1000px){text-align: left; margin-top: 3px;}}&.line--drop-second-on-mobile{& > :nth-child(2){@media(max-width:1000px){display: none;}}}}&.line--s1{display:flex;align-items:center;gap:15px;& > :nth-child(1){flex:0 1;&.banner-88x31{flex:0 1 88px}}& > :nth-child(2){flex:1}}.linebit{&.linebit--1s{display:flex;align-items:center;@media(max-width:1000px){display: block; &>:nth-child(1){display:block}}& > :nth-child(1){flex:1}& > :nth-child(2){flex:1 1;text-align:right}}}strong{font-weight:500}.line__intro{display:block;font-style:italic;font-size:var(--font-size-xs);line-height:var(--line-height-xs)}.label{display:inline-block;padding-top:2px;text-transform:uppercase;font-variant-caps:small-caps;font-feature-settings:"smcp";font-size:13px;line-height:15px;font-weight:700}.badge{font-size:var(--font-size-xs);line-height:var(--line-height-xs)}}.desktop-only{display:block!important;@media(max-width:1000px){display: none !important;}}.mobile-only{display:none!important;@media(max-width:1000px){display: block !important;}}.lineset{@media(max-width:1000px){display: block !important;}}.intro{margin-bottom:var(--row-gap-m)}.vlad-portrait{align-self:center;justify-self:end;margin-top:20px;img{aspect-ratio:1/1;width:300px;height:auto;border-radius:100%}@media(max-width:1000px){justify-self: center;}}figure{margin:0;margin-block:25px;text-align:center;& > *{text-align:left}pre{margin-bottom:0}figcaption{display:block;padding-inline:15px;padding-block:5px;text-align:center;font-size:var(--font-size-s);line-height:var(--line-height-s);font-style:italic}img, video, div{margin-left:auto;margin-right:auto;max-width:100%}img, video{display:block;border-radius:var(--border-radius)}.table-wrapper{overflow-x:scroll;white-space:preserve nowrap}}figure.card-figure{display:flex;position:relative;padding-right:25px;padding-bottom:25px;&.card-figure--nomobile{@media(max-width:800px){padding-right: 0; padding-bottom: 0;}}& > .card-figure-inner{flex:1;position:relative;z-index:5;background:#fff;border-radius:var(--border-radius);&.card-figure-inner--padded{padding:30px;@media(max-width:1000px){padding: 20px;}border:3px solid var(--color-main)}&.card-figure-inner--image{min-height:225px;background-size:cover;background-position:50%}p{margin:0;font-size:var(--font-size-l);line-height:var(--line-height-l);text-align:left;text-wrap:balance;@media(max-width:1000px){font-size: var(--font-size-m); line-height: var(--line-height-m);}}figcaption{margin:0;margin-top:10px;padding:0;text-align:right;font-style:italic}}&:after{content:'';position:absolute;top:20px;left:20px;right:0;bottom:0;background:var(--color-main);z-index:1;border-radius:var(--border-radius)}}.projcard-set{display:grid;margin:-10px;column-gap:10px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-auto-rows:1fr;&.projcard-set--small{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-auto-rows:1fr}}.projcard{display:flex;flex-direction:column;gap:5px;margin:-10px;padding:10px;background-color:transparent;border-radius:var(--border-radius);&.projcard--small{flex-direction:row;gap:15px;.projcard__image{flex-shrink:0;flex-basis:80px;height:80px;width:80px}}.projcard__image{display:flex;align-items:center;justify-content:center;aspect-ratio:2/1;background-size:cover;background-position:50%;border-radius:var(--border-radius)}.projcard__body{padding-inline:2px}h3, p{margin:0}h3{margin-bottom:3px;font-size:var(--font-size-s);line-height:var(--line-height-xs);font-family:var(--font-family-sans);font-variant-caps:small-caps;font-feature-settings:"smcp";text-transform:lowercase;@media(max-width:800px){font-size: var(--font-size-l);}}hr{display:none;margin:0;margin-block:5px;width:20px}p{font-size:var(--font-size-xs);line-height:var(--line-height-xs);text-align:left}}aside:not(.footnotes){float:right;max-width:525px;margin:40px;margin-right:0;clear:both;@media(max-width:1000px){float: none; margin-left: auto; margin-right: auto;}&.aside--sm{max-width:450px}figure{margin:0;padding-top:0;padding-bottom:0}}.alert{padding:15px;background-color:var(--color-main-light);border-left:3px solid var(--color-main);border-radius:var(--border-radius);& > h2, & > h3, & > h4{&:first-child{margin-top:0}}}.all-posts-link{display:inline-block;font-size:var(--font-size-xs);line-height:var(--line-height-xs);&:first-child{margin-bottom:20px}&:last-child{margin-top:20px}}article{margin-bottom:80px;.masthead{display:flex;flex-direction:row;gap:15px;justify-content:space-between;align-items:flex-end;margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid var(--color-main);@media(max-width:1000px){flex-direction: column; align-items: flex-start;}.masthead-meta{display:flex;flex-direction:column;gap:15px;margin-top:10px;text-align:right;color:var(--color-main);@media(max-width:1000px){text-align: left;}.masthead-key{font-family:var(--font-family-sans);font-variant-caps:small-caps;font-feature-settings:"smcp";text-transform:lowercase}font-size:var(--font-size-s);line-height:var(--line-height-s)}& >
38 h1{display:inline-block;margin:0;max-width:600px;font-family:var(--font-family-sans);font-size:var(--font-size-xxl);line-height:var(--line-height-xxl);font-style:italic;letter-spacing:-1px;color:var(--color-main);text-wrap:balance}}&.article--single-post{.masthead > h1{margin-top:60px}}.prelude{margin-bottom:40px}h2{margin-block-start:40px;margin-block-end:15px;font-size:var(--font-size-l);line-height:var(--line-height-l);font-weight:700;color:var(--color-main)}h3{margin-block-start:40px;margin-block-end:15px;font-size:var(--font-size-s);line-height:var(--line-height-s);font-weight:700;color:var(--color-main)}h4{margin-block-start:40px;margin-block-end:15px;padding-bottom:5px;font-size:var(--font-size-s);line-height:var(--line-height-s);border-bottom:1px solid rgba(0,0,0,.2)}h1, h2, h3, h4{&:first-child{margin-block-start:0}}a{text-decoration:none;padding-inline:var(--link-x-padding);background-color:var(--color-main-light);border-radius:var(--border-radius)}.ender{display:inline-block;height:.6lh;width:.6lh;border-radius:100%;margin-left:5px;background-color:var(--color-main)}.credit{font-size:var(--font-size-s);line-height:var(--line-height-s);color:var(--color-light-text)}.footnotes{margin-top:50px;padding:25px;background-color:var(--color-main-light);border-radius:var(--border-radius);hr{display:none}ol{margin:0}a:not(:hover):not(:active){background-color:transparent}}video{max-width:100%}iframe{display:block;width:100%;max-width:100%;height:auto;margin-block:25px;margin-inline:auto;&.youtube-embed{aspect-ratio:1.777777}}table.data-table{margin:0;margin-inline:auto;padding:5px;background-color:#f6f6f6;border-radius:var(--border-radius);font-size:var(--font-size-s);line-height:var(--line-height-s);td, th{padding:5px;text-align:left}}}@keyframes ridiculous{from{transform:translateY(-5px);color:#60a;background-color:none}to{transform:translateY(5px);color:#c0c;background-color:rgba(255,255,255,.5)}}.ridiculous{padding:0 10px}.ridiculous,.hover-ridiculous:hover{span{display:inline-block;animation:ridiculous 1s ease-in-out 0s infinite alternate;color:#f0f}span:nth-child(1){animation-delay:-.07s}span:nth-child(2){animation-delay:-.14s}span:nth-child(3){animation-delay:-.21s}span:nth-child(4){animation-delay:-.28s}span:nth-child(5){animation-delay:-.35s}span:nth-child(6){animation-delay:-.42s}span:nth-child(7){animation-delay:-.49s}span:nth-child(8){animation-delay:-.56s}span:nth-child(9){animation-delay:-.63s}span:nth-child(10){animation-delay:-.7s}span:nth-child(11){animation-delay:-.77s}span:nth-child(12){animation-delay:-.84s}span:nth-child(13){animation-delay:-.91s}span:nth-child(14){animation-delay:-.98s}span:nth-child(15){animation-delay:-1.05s}span:nth-child(16){animation-delay:-1.12s}span:nth-child(17){animation-delay:-1.19s}span:nth-child(18){animation-delay:-1.26s}span:nth-child(19){animation-delay:-1.33s}span:nth-child(20){animation-delay:-1.4s}span:nth-child(21){animation-delay:-1.47s}span:nth-child(22){animation-delay:-1.54s}span:nth-child(23){animation-delay:-1.61s}span:nth-child(24){animation-delay:-1.68s}span:nth-child(25){animation-delay:-1.75s}span:nth-child(26){animation-delay:-1.82s}span:nth-child(27){animation-delay:-1.89s}span:nth-child(28){animation-delay:-1.96s}span:nth-child(29){animation-delay:-2.03s}span:nth-child(30){animation-delay:-2.1s}span:nth-child(31){animation-delay:-2.17s}span:nth-child(32){animation-delay:-2.24s}span:nth-child(33){animation-delay:-2.31s}span:nth-child(34){animation-delay:-2.38s}span:nth-child(35){animation-delay:-2.45s}span:nth-child(36){animation-delay:-2.52s}span:nth-child(37){animation-delay:-2.59s}span:nth-child(38){animation-delay:-2.66s}span:nth-child(39){animation-delay:-2.73s}span:nth-child(40){animation-delay:-2.8s}span:nth-child(41){animation-delay:-2.87s}span:nth-child(42){animation-delay:-2.94s}span:nth-child(43){animation-delay:-3.01s}span:nth-child(44){animation-delay:-3.08s}span:nth-child(45){animation-delay:-3.15s}span:nth-child(46){animation-delay:-3.22s}span:nth-child(47){animation-delay:-3.29s}span:nth-child(48){animation-delay:-3.36s}span:nth-child(49){animation-delay:-3.43s}span:nth-child(50){animation-delay:-3.5s}}</style> 39 40 41 <link rel="preload" href="/fonts/din/DINNextLTPro-Light.woff2" as="font" type="font/woff2" crossorigin> 42 <link rel="preload" href="/fonts/din/DINNextLTPro-Regular.woff2" as="font" type="font/woff2" crossorigin> 43 <link rel="preload" href="/fonts/valkyrie/valkyrie_b_regular.woff2" as="font" type="font/woff2" crossorigin> 44 <link rel="preload" href="/fonts/valkyrie/valkyrie_b_bold.woff2" as="font" type="font/woff2" crossorigin> 45 <link rel="preload" href="/fonts/valkyrie/valkyrie_b_italic.woff2" as="font" type="font/woff2" crossorigin> 46 47 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> 48 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 49 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 50 <link rel="me" href="https://merveilles.town/@vladh"/> 51 <link rel="me" href="https://mastodon.vlad.website/@vlad"/> 52 <link rel="human-json" href="/human.json"> 53 54
54<script data-goatcounter="https://vlad.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
54 55 </head> 56 <body> 57 <a class="skiplink" href="#main-content">Skip to main content</a> 58 <header> 59 <a class="title" href="/"> 60 <div class="title__circle"> 61 <img src="/images/logo.svg" alt="A logo showing a blue circle" width="60" height="60"> 62 <div class="hologram hologram--specular"> 63 <div class="hologram hologram--mask"></div> 64 </div> 65 </div> 66 <div class="title__name">Vlad Miricioiu</div> 67 </a> 68 <nav> 69 <ul> 70 <li><a href="/">Home</a></li> 71 <li><a href="/about/">About</a></li> 72 <li><a href="/posts/">Posts</a></li> 73 <li><a href="/photos/">Photos</a></li> 74 <li><a href="/music/">Music</a></li> 75 <li><a href="/recommendations/">Favs</a></li> 76</ul> 77 78 </nav> 79 </header> 80 <a 81 href="https://stewardshiplab.org/ideas/a-research-lab-for-open-source/" 82 target="_blank" 83 class="notice" 84 > 85 <strong>The Software Stewardship Lab has launched<em>!</em></strong> 86 Read our announcement → 87 </a> 88 <main id="main-content"> 89 90 <article> 91 <section class="g"> 92 <div class="masthead"> 93 <h1>All Posts</h1> 94 </div> 95 <div class="g"> 96 <h2 class="g__side" id="posts">Philosophy</h2> 97 <div class="g__main lines lines--bordered"> 98 99 100 <a class="line line--31 line--drop-second-on-mobile" href="/the-legal-and-the-good/"> 101 <strong> 102 103 The Legal and the Good 104 105 </strong> 106 <small class="mono">29 Oct 2024</small> 107 </a> 108 109 110 111 <a class="line line--31 line--drop-second-on-mobile" href="/on-structures/"> 112 <strong> 113 114 On Structures 115 116 </strong> 117 <small class="mono">10 Oct 2024</small> 118 </a> 119 120 121 122 <a class="line line--31 line--drop-second-on-mobile" href="/wage-labour-resources/"> 123 <strong> 124 â 125 Resources on the Philosophy of Work 126 127 </strong> 128 <small class="mono">04 Aug 2022</small> 129 </a> 130 131 132 133 <a class="line line--31 line--drop-second-on-mobile" href="/alternatives-to-wage-labour/"> 134 <strong> 135 136 Alternatives to Wage Labour 137 138 </strong> 139 <small class="mono">09 Jan 2022</small> 140 </a> 141 142 143 </div> 144 <h2 class="g__side">Open Source stewardship</h2> 145 <div class="g__main lines lines--bordered"> 146 147 148 <a class="line line--31 line--drop-second-on-mobile" href="/nvim-treesitter-burnout/"> 149 <strong> 150 151 Open Source Burnout Claims Another Project 152 153 </strong> 154 <small class="mono">20 May 2026</small> 155 </a> 156 157 158 159 <a class="line line--31 line--drop-second-on-mobile" href="/npmx-a-lesson-in-open-source-collaboration-feedback-loops/"> 160 <strong> 161 â 162 npmx: A Lesson in Open Source's Collaboration Feedback Loops 163 164 </strong> 165 <small class="mono">03 Mar 2026</small> 166 </a> 167 168 169 170 171 172 173 <a class="line line--31 line--drop-second-on-mobile" href="/binary-dependencies-identifying-the-hidden-packages-we-all-depend-on/"> 174 <strong> 175 â 176 Binary Dependencies: Identifying the Hidden Packages We All Depend On 177 178 </strong> 179 <small class="mono">31 Jan 2026</small> 180 </a> 181 182 183 184 <a class="line line--31 line--drop-second-on-mobile" href="/llms-are-accelerating-the-open-source-sustainability-crisis/"> 185 <strong> 186 187 LLMs Are Accelerating the Open Source Sustainability Crisis 188 189 </strong> 190 <small class="mono">08 Jan 2026</small> 191 </a> 192 193 194 195 <a class="line line--31 line--drop-second-on-mobile" href="/keystone-maintainers-keep-the-internet-going/"> 196 <strong> 197 198 Keystone Maintainers Keep the Internet Going 199 200 </strong> 201 <small class="mono">13 Nov 2025</small> 202 </a> 203 204 205 206 <a class="line line--31 line--drop-second-on-mobile" href="/open-source-deceptive-power-or-collective-governance/"> 207 <strong> 208 â 209 Open Source: Deceptive Power or Collective Governance? 210 211 </strong> 212 <small class="mono">06 Jun 2025</small> 213 </a> 214 215 216 217 <a class="line line--31 line--drop-second-on-mobile" href="/why-and-how-companies-should-pay-open-source-maintainers/"> 218 <strong> 219 â 220 Why and How Companies Should Pay Open Source Maintainers 221 222 </strong> 223 <small class="mono">02 Feb 2025</small> 224 </a> 225 226 227 228 <a class="line line--31 line--drop-second-on-mobile" href="/the-philosophy-of-the-open-source-pledge/"> 229 <strong> 230 â 231 The Philosophy of the Open Source Pledge 232 233 </strong> 234 <small class="mono">08 Oct 2024</small> 235 </a> 236 237 238 </div> 239 <h2 class="g__side">Living together</h2> 240 <div class="g__main lines lines--bordered"> 241 242 243 <a class="line line--31 line--drop-second-on-mobile" href="/voting-regardless-of-citizenship/"> 244 <strong> 245 246 Long-Term Members of our Communities Should Be Able to Vote Regardless of Their Citizenship 247 248 </strong> 249 <small class="mono">11 Sep 2023</small> 250 </a> 251 252 253 254 <a class="line line--31 line--drop-second-on-mobile" href="/apologies/"> 255 <strong> 256 â 257 Effective Apologies 258 259 </strong> 260 <small class="mono">07 Jul 2023</small> 261 </a> 262 263 264 265 <a class="line line--31 line--drop-second-on-mobile" href="/our-schools-should-teach-communication/"> 266 <strong> 267 268 Our Schools Should Teach Communication 269 270 </strong> 271 <small class="mono">18 Aug 2022</small> 272 </a> 273 274 275 </div> 276 <h2 class="g__side">Software</h2> 277 <div class="g__main lines lines--bordered"> 278 279 280 <a class="line line--31 line--drop-second-on-mobile" href="/how-binary-dependencies-work/"> 281 <strong> 282 â 283 How Binary Dependencies Work Across Different Languages 284 285 </strong> 286 <small class="mono">16 Jan 2026</small> 287 </a> 288 289 290 291 <a class="line line--31 line--drop-second-on-mobile" href="/dithering/"> 292 <strong> 293 294 Dithering 295 296 </strong> 297 <small class="mono">14 Jan 2022</small> 298 </a> 299 300 301 302 <a class="line line--31 line--drop-second-on-mobile" href="/implementing-regular-expressions-in-hare/"> 303 <strong> 304 305 I Implemented A Regular Expression Engine in Hare 306 307 </strong> 308 <small class="mono">11 Jun 2021</small> 309 </a> 310 311 312 313 <a class="line line--31 line--drop-second-on-mobile" href="/pstr/"> 314 <strong> 315
316 pstr â A Set of Cautious and Easy-To-Use C String Functions 317 318 </strong> 319 <small class="mono">11 Jun 2021</small> 320 </a> 321 322 323 324 <a class="line line--31 line--drop-second-on-mobile" href="/game-engine-skeletal-animation/"> 325 <strong> 326 â 327 Game Engine: How I Implemented Skeletal Animation 328 329 </strong> 330 <small class="mono">30 Mar 2021</small> 331 </a> 332 333 334 </div> 335 <h2 class="g__side">Fun</h2> 336 <div class="g__main lines lines--bordered"> 337 338 339 <a class="line line--31 line--drop-second-on-mobile" href="/most-minimal-uk-address/"> 340 <strong> 341 â 342 What is the Most Minimal UK Address Possible? 343 344 </strong> 345 <small class="mono">02 Mar 2023</small> 346 </a> 347 348 349 350 <a class="line line--31 line--drop-second-on-mobile" href="/temperature-sensor/"> 351 <strong> 352 353 Adding a Temperature Sensor to my Flat 354 355 </strong> 356 <small class="mono">25 Jul 2022</small> 357 </a> 358 359 360 361 <a class="line line--31 line--drop-second-on-mobile" href="/japanese-recommendations/"> 362 <strong> 363 364 Vlad's Recommended Japanese Learning Resources 365 366 </strong> 367 <small class="mono">22 Jun 2021</small> 368 </a> 369 370 371 372 <a class="line line--31 line--drop-second-on-mobile" href="/vegvisir/"> 373 <strong> 374 375 vegvisir â A Music Theory Reference Site 376 377 </strong> 378 <small class="mono">11 Jun 2021</small> 379 </a> 380 381 382 383 <a class="line line--31 line--drop-second-on-mobile" href="/german-nouns/"> 384 <strong> 385 386 Figuring out Rules for German Noun Genders with Simple Machine Learning and Statistics 387 388 </strong> 389 <small class="mono">21 Apr 2019</small> 390 </a> 391 392 393 </div> 394</div> 395 396 </section> 397 </article> 398 399 </main> 400 <footer id="footer"> 401 <div> 402 © 2010 Vlad Miricioiu 403 </div> 404 <div> 405 <a href="/human">Made by humans, not LLMs</a> · 406 <a href="/index.xml">RSS feed</a> · 407 <a href="/metadata/">Licenses and metadata</a> · 408 <a href="https://vlad.website/static/vladh-gpg-pubkey.txt" target="_blank">GPG 84135DACA17B517D</a> · 409 <a class="link--icon" href="https://webring.xxiivv.com/#vlad.website" target="_blank"> 410 <svg 411 class="stroked-svg" 412 role="img" 413 aria-label="The logo of the XXIIVV webring" 414 xmlns="http://www.w3.org/2000/svg" 415 width="16" 416 height="16" 417 style="position: relative; top: 1px;" 418 fill="none" stroke="#000" stroke-linecap="square" stroke-width="25" viewBox="20 25 250 250"><path d="M201.962 210a60 60 0 1 0-103.924-60l-50 86.603"/><path d="M98.038 210a60 60 0 1 0 103.924-60l-50-86.603"/><path d="M150 120a60 60 0 1 0 0 120h100"/></svg> 419 </a> 420 </div> 421 </footer> 422 </body> 423</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.