CINXE.COM
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1" data-next-head=""/><title data-next-head="">Projects • Oleksii Holub</title><link rel="icon" href="/favicon.png" data-next-head=""/><link rel="manifest" href="/manifest.json" data-next-head=""/><meta name="application-name" content="Oleksii Holub" data-next-head=""/><meta name="build-id" content="48cac8b" data-next-head=""/><meta name="description" content="Oleksii Holub (@tyrrrz) is a software developer, open-source maintainer, tech blogger and conference speaker" data-next-head=""/><meta name="keywords" content="" data-next-head=""/><meta name="theme-color" content="#a855f7" data-next-head=""/><meta property="og:type" content="website" data-next-head=""/><meta property="og:site_name" content="Oleksii Holub" data-next-head=""/><meta property="og:title" content="Projects • Oleksii Holub" data-next-head=""/><meta property="og:description" content="Oleksii Holub (@tyrrrz) is a software developer, open-source maintainer, tech blogger and conference speaker" data-next-head=""/><meta property="og:image" content="https://tyrrrz.me/logo.png" data-next-head=""/><meta name="twitter:title" content="Projects • Oleksii Holub" data-next-head=""/><meta name="twitter:site" content="@Tyrrrz" data-next-head=""/><meta name="twitter:creator" content="@Tyrrrz" data-next-head=""/><meta name="twitter:card" content="summary" data-next-head=""/><link rel="preload" href="/_next/static/css/221a4df1426537db.css" as="style"/><link rel="alternate" type="application/rss+xml" title="RSS Feed" data-next-head=""/><link rel="stylesheet" href="/_next/static/css/221a4df1426537db.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-dbb64579bb13138d.js" defer=""></script><script src="/_next/static/chunks/framework-152a512d1829eead.js" defer=""></script><script src="/_next/static/chunks/main-1c5dddab6fcbff6f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-009038dd38068a53.js" defer=""></script><script src="/_next/static/chunks/pages/projects-87799ad72a74bb0c.js" defer=""></script><script src="/_next/static/kYhYkMVxHWwnnReuuTICu/_buildManifest.js" defer=""></script><script src="/_next/static/kYhYkMVxHWwnnReuuTICu/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="light"><div class="flex flex-col min-h-screen dark:bg-neutral-900 dark:text-neutral-200"><div class="h-1" style="width:0%;transition-property:width;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms"></div><div class="container max-w-4xl mx-auto"><header><div class="flex p-4 border-b-2 border-neutral-100 dark:border-neutral-800 items-center justify-between"><div class="text-xl font-mono font-semibold tracking-wide"><a class="" rel="noreferrer" href="/"><span class="text-neutral-400">://</span><span>tyrrrz.me</span></a></div><nav class="hidden sm:flex px-2 gap-x-2 text-lg"><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/">home</a></div><div class="px-2 py-1 border-2 border-purple-500 rounded bg-purple-100 dark:bg-purple-900 transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/projects">projects</a></div><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/blog">blog</a></div><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/speaking">speaking</a></div><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/donate">donate</a></div><div class="flex ml-2 mt-0.5 text-2xl"><button class="text-blue-500 dark:text-yellow-500 cursor-pointer"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></button></div></nav><div class="sm:hidden flex gap-x-5 text-2xl"><button class="text-blue-500 dark:text-yellow-500 cursor-pointer"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></button><button class="sm:hidden"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg></button></div></div><div class="sm:hidden overflow-hidden"><nav class="-mt-[100%] p-2 border-b-2 border-neutral-100 dark:border-neutral-800 space-y-1 text-lg transition-all duration-300"><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/"><div>home</div></a></div><div class="px-2 py-1 border-2 border-purple-500 rounded bg-purple-100 dark:bg-purple-900 transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/projects"><div>projects</div></a></div><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/blog"><div>blog</div></a></div><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/speaking"><div>speaking</div></a></div><div class="px-2 py-1 border-2 border-transparent rounded transition-colors duration-300"><a class="hover:text-blue-500 dark:hover:text-blue-300" rel="noreferrer" href="/donate"><div>donate</div></a></div></nav></div></header><main class="mx-4 mt-6 mb-20"><div><div style="transition:opacity 400ms, transform 400ms;transform:translateY(20px);opacity:0"><section><h1 class="group my-4 text-3xl font-semibold"><span class="">Projects</span></h1><p class="my-4">These are the open-source projects that I've built. Most of these started out of personal necessity, but over time evolved into popular tools used by thousands of people around the world. If you want to support the development of my projects, please consider<!-- --> <a class="text-blue-500 dark:text-blue-300 hover:underline" rel="noreferrer" href="/donate">donating</a>.</p></section><section class="grid sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3 mt-8 gap-3"><section class="flex flex-col p-4 border border-purple-500 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="YoutubeDownloader"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/YoutubeDownloader" target="_blank" rel="noreferrer">YoutubeDownloader</a></div><div class="grow my-1 space-y-1"><div>Downloads videos and playlists from YouTube</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>10,829</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>1,504,716</div></div></div></section><section class="flex flex-col p-4 border border-purple-500 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="DiscordChatExporter"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/DiscordChatExporter" target="_blank" rel="noreferrer">DiscordChatExporter</a></div><div class="grow my-1 space-y-1"><div>Exports Discord chat logs to a file</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>8,357</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>1,218,709</div></div></div></section><section class="flex flex-col p-4 border border-purple-500 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="CliWrap"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/CliWrap" target="_blank" rel="noreferrer">CliWrap</a></div><div class="grow my-1 space-y-1"><div>Library for running command-line processes</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>4,539</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>10,766,920</div></div></div></section><section class="flex flex-col p-4 border border-purple-500 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="YoutubeExplode"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/YoutubeExplode" target="_blank" rel="noreferrer">YoutubeExplode</a></div><div class="grow my-1 space-y-1"><div>Abstraction layer over YouTube's internal API</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>3,145</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>1,989,669</div></div></div></section><section class="flex flex-col p-4 border border-purple-500 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="LightBulb"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/LightBulb" target="_blank" rel="noreferrer">LightBulb</a></div><div class="grow my-1 space-y-1"><div>Reduces eye strain by adjusting screen gamma based on the current time</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>2,374</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>549,945</div></div></div></section><section class="flex flex-col p-4 border border-purple-500 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="CliFx"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/CliFx" target="_blank" rel="noreferrer">CliFx</a></div><div class="grow my-1 space-y-1"><div>Class-first framework for building command-line interfaces</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>1,539</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>1,016,830</div></div></div></section><section class="flex flex-col p-4 border border-purple-300 dark:border-purple-700 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="Onova"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/Onova" target="_blank" rel="noreferrer">Onova</a></div><div class="grow my-1 space-y-1"><div>Unintrusive auto-update framework</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>538</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>99,514</div></div></div></section><section class="flex flex-col p-4 border border-purple-300 dark:border-purple-700 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="DotnetRuntimeBootstrapper"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/DotnetRuntimeBootstrapper" target="_blank" rel="noreferrer">DotnetRuntimeBootstrapper</a></div><div class="grow my-1 space-y-1"><div>Bootstrapped framework-dependent deployment for .NET applications</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>310</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>56,354</div></div></div></section><section class="flex flex-col p-4 border border-purple-300 dark:border-purple-700 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="GitHubActionsTestLogger"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/GitHubActionsTestLogger" target="_blank" rel="noreferrer">GitHubActionsTestLogger</a></div><div class="grow my-1 space-y-1"><div>.NET test logger that reports to GitHub Actions</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>304</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>5,873,548</div></div></div></section><section class="flex flex-col p-4 border border-purple-300 dark:border-purple-700 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="MiniRazor"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/MiniRazor" target="_blank" rel="noreferrer">MiniRazor</a></div><div class="grow my-1 space-y-1"><div class="font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg><div>Not maintained</div></div></div><div>Portable Razor compiler & code generator</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>228</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>26,269</div></div></div></section><section class="flex flex-col p-4 border border-purple-300 dark:border-purple-700 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="Gress"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/Gress" target="_blank" rel="noreferrer">Gress</a></div><div class="grow my-1 space-y-1"><div>Progress reporting toolbox</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>154</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>85,980</div></div></div></section><section class="flex flex-col p-4 border border-purple-300 dark:border-purple-700 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="LtGt"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/LtGt" target="_blank" rel="noreferrer">LtGt</a></div><div class="grow my-1 space-y-1"><div class="font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg><div>Not maintained</div></div></div><div>Lightweight HTML processor</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>121</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>70,122</div></div></div></section><section class="flex flex-col p-4 border border-purple-300 dark:border-purple-700 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="OsuHelper"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/OsuHelper" target="_blank" rel="noreferrer">OsuHelper</a></div><div class="grow my-1 space-y-1"><div class="font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg><div>Not maintained</div></div></div><div>Beatmap suggester for osu!</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>105</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>14,849</div></div></div></section><section class="flex flex-col p-4 border border-purple-100 dark:border-purple-900 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="SpellingUkraine"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/SpellingUkraine" target="_blank" rel="noreferrer">SpellingUkraine</a></div><div class="grow my-1 space-y-1"><div>Learn the correct way to spell Ukrainian names in English</div><div class="overflow-hidden"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg><div><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://spellingukraine.com" target="_blank" rel="noreferrer">https://spellingukraine.com</a></div></div></div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>91</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>TypeScript</div></div></div></section><section class="flex flex-col p-4 border border-purple-100 dark:border-purple-900 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="YoutubeExplode.Converter"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/YoutubeExplode.Converter" target="_blank" rel="noreferrer">YoutubeExplode.Converter</a></div><div class="grow my-1 space-y-1"><div class="font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg><div>Not maintained</div></div></div><div>Muxes and converts videos from YoutubeExplode</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>86</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>967,494</div></div></div></section><section class="flex flex-col p-4 border border-purple-100 dark:border-purple-900 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="interview-questions"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/interview-questions" target="_blank" rel="noreferrer">interview-questions</a></div><div class="grow my-1 space-y-1"><div class="font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg><div>Not maintained</div></div></div><div>Collection of popular interview questions and their answers</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>86</div></div></div></section><section class="flex flex-col p-4 border border-purple-100 dark:border-purple-900 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="Ressy"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/Ressy" target="_blank" rel="noreferrer">Ressy</a></div><div class="grow my-1 space-y-1"><div>Resource editor for PE files</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>59</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>23,681</div></div></div></section><section class="flex flex-col p-4 border border-purple-100 dark:border-purple-900 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="Deorcify"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/Deorcify" target="_blank" rel="noreferrer">Deorcify</a></div><div class="grow my-1 space-y-1"><div>Prevent your software from being used by terrorists</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>43</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>42,137</div></div></div></section><section class="flex flex-col p-4 border border-purple-100 dark:border-purple-900 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="Contextual"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/Contextual" target="_blank" rel="noreferrer">Contextual</a></div><div class="grow my-1 space-y-1"><div class="font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg><div>Not maintained</div></div></div><div>Implicit parameters via contexts</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>41</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>C#</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg><div>6,213</div></div></div></section><section class="flex flex-col p-4 border border-purple-100 dark:border-purple-900 rounded"><div class="text-lg text-ellipsis overflow-hidden" title="JetBrainsDotnetDay2020"><a class="text-blue-500 dark:text-blue-300 hover:underline" href="https://github.com/Tyrrrz/JetBrainsDotnetDay2020" target="_blank" rel="noreferrer">JetBrainsDotnetDay2020</a></div><div class="grow my-1 space-y-1"><div class="font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg><div>Not maintained</div></div></div><div>Presentation and code for my talk at JetBrains .NET Day Online 2020</div></div><div class="flex flex-wrap mt-1 gap-x-3 font-light"><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="dark:text-yellow-400 fill-yellow-400" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><div>38</div></div><div class="inline-flex items-center gap-1"><svg stroke="currentColor" fill="none" stroke-width="1" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg><div>F#</div></div></div></section></section></div></div></main></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"projects":[{"name":"YoutubeDownloader","url":"https://github.com/Tyrrrz/YoutubeDownloader","archived":false,"description":"Downloads videos and playlists from YouTube","stars":10829,"downloads":1504716,"language":"C#"},{"name":"DiscordChatExporter","url":"https://github.com/Tyrrrz/DiscordChatExporter","archived":false,"description":"Exports Discord chat logs to a file","stars":8357,"downloads":1218709,"language":"C#"},{"name":"CliWrap","url":"https://github.com/Tyrrrz/CliWrap","archived":false,"description":"Library for running command-line processes","stars":4539,"downloads":10766920,"language":"C#"},{"name":"YoutubeExplode","url":"https://github.com/Tyrrrz/YoutubeExplode","archived":false,"description":"Abstraction layer over YouTube's internal API","stars":3145,"downloads":1989669,"language":"C#"},{"name":"LightBulb","url":"https://github.com/Tyrrrz/LightBulb","archived":false,"description":"Reduces eye strain by adjusting screen gamma based on the current time","stars":2374,"downloads":549945,"language":"C#"},{"name":"CliFx","url":"https://github.com/Tyrrrz/CliFx","archived":false,"description":"Class-first framework for building command-line interfaces","stars":1539,"downloads":1016830,"language":"C#"},{"name":"Onova","url":"https://github.com/Tyrrrz/Onova","archived":false,"description":"Unintrusive auto-update framework","stars":538,"downloads":99514,"language":"C#"},{"name":"DotnetRuntimeBootstrapper","url":"https://github.com/Tyrrrz/DotnetRuntimeBootstrapper","archived":false,"description":"Bootstrapped framework-dependent deployment for .NET applications","stars":310,"downloads":56354,"language":"C#"},{"name":"GitHubActionsTestLogger","url":"https://github.com/Tyrrrz/GitHubActionsTestLogger","archived":false,"description":".NET test logger that reports to GitHub Actions","stars":304,"downloads":5873548,"language":"C#"},{"name":"MiniRazor","url":"https://github.com/Tyrrrz/MiniRazor","archived":true,"description":"Portable Razor compiler \u0026 code generator","stars":228,"downloads":26269,"language":"C#"},{"name":"Gress","url":"https://github.com/Tyrrrz/Gress","archived":false,"description":"Progress reporting toolbox","stars":154,"downloads":85980,"language":"C#"},{"name":"LtGt","url":"https://github.com/Tyrrrz/LtGt","archived":true,"description":"Lightweight HTML processor","stars":121,"downloads":70122,"language":"C#"},{"name":"OsuHelper","url":"https://github.com/Tyrrrz/OsuHelper","archived":true,"description":"Beatmap suggester for osu!","stars":105,"downloads":14849,"language":"C#"},{"name":"SpellingUkraine","url":"https://github.com/Tyrrrz/SpellingUkraine","archived":false,"description":"Learn the correct way to spell Ukrainian names in English","homepageUrl":"https://spellingukraine.com","stars":91,"downloads":0,"language":"TypeScript"},{"name":"YoutubeExplode.Converter","url":"https://github.com/Tyrrrz/YoutubeExplode.Converter","archived":true,"description":"Muxes and converts videos from YoutubeExplode","stars":86,"downloads":967494,"language":"C#"},{"name":"interview-questions","url":"https://github.com/Tyrrrz/interview-questions","archived":true,"description":"Collection of popular interview questions and their answers","stars":86,"downloads":0},{"name":"Ressy","url":"https://github.com/Tyrrrz/Ressy","archived":false,"description":"Resource editor for PE files","stars":59,"downloads":23681,"language":"C#"},{"name":"Deorcify","url":"https://github.com/Tyrrrz/Deorcify","archived":false,"description":"Prevent your software from being used by terrorists","stars":43,"downloads":42137,"language":"C#"},{"name":"Contextual","url":"https://github.com/Tyrrrz/Contextual","archived":true,"description":"Implicit parameters via contexts","stars":41,"downloads":6213,"language":"C#"},{"name":"JetBrainsDotnetDay2020","url":"https://github.com/Tyrrrz/JetBrainsDotnetDay2020","archived":true,"description":"Presentation and code for my talk at JetBrains .NET Day Online 2020","stars":38,"downloads":0,"language":"F#"}]},"__N_SSG":true},"page":"/projects","query":{},"buildId":"kYhYkMVxHWwnnReuuTICu","isFallback":false,"gsp":true,"scriptLoader":[]}</script></body></html>