PageSourceSearch

https://vlad.website/posts/

html vlad.website collected 2026-10-09 23:06:09 UTC 40,421 bytes, 423 lines download raw bytes

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&#39;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&#39;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 &rarr;
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&#39;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&#39;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				&copy; 2010 Vlad Miricioiu
403			</div>
404			<div>
405				<a href="/human">Made by humans, not LLMs</a> &middot;
406				<a href="/index.xml">RSS feed</a> &middot;
407				<a href="/metadata/">Licenses and metadata</a> &middot;
408				<a href="https://vlad.website/static/vladh-gpg-pubkey.txt" target="_blank">GPG 84135DACA17B517D</a> &middot;
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.