1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/projects/vector-logos.png"/><link rel="preload" as="image" href="/images/projects/graphtv.png"/><link rel="preload" as="image" href="/images/projects/gitphy.png"/><link rel="preload" as="image" href="/images/projects/bready.png"/><link rel="preload" as="image" href="/images/projects/randomcolor-py.png"/><link rel="preload" as="image" href="/images/projects/the-days-sidebar.png"/><link rel="preload" as="image" href="/images/projects/firefly.png"/><link rel="preload" as="image" href="/images/projects/wwpgd.png"/><link rel="preload" as="image" href="/images/projects/releaselog.png"/><link rel="preload" as="image" href="/images/projects/plasmyd.png"/><link rel="stylesheet" href="/_next/static/css/2178bbc286ad2b33.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/bd41ebb1e545cea0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-eaf059fdabd6f0bc.js"/>
1<script src="/_next/static/chunks/4bd1b696-5227e82d104c577b.js" async=""></script>
1<script src="/_next/static/chunks/587-c2a1c41776a405c1.js" async=""></script>
1<script src="/_next/static/chunks/main-app-d2feb8bdf3c6de64.js" async=""></script>
1<script src="/_next/static/chunks/517-a90d8d3f64780fc6.js" async=""></script>
1<script src="/_next/static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js" async=""></script>
1<link rel="apple-touch-icon" sizes="180x180" href="/favicon/favicon-180x180.png"/><link rel="icon" type="image/svg+xml" href="/favicon/favicon.svg"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"/><link rel="shortcut icon" href="/favicon/favicon.ico"/><meta name="theme-color" media="(prefers-color-scheme: light)" content="rgb(250,250,250)"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="rgb(17,17,17)"/><title>About Kevin Wu | Kevin Wu</title><meta name="description" content="Engineering leader who loves science"/><link rel="alternate" type="application/rss+xml" href="/feed.xml"/><style>:root { 2 --nextra-primary-hue: 212deg; 3 --nextra-primary-saturation: 100%; 4 --nextra-primary-lightness: 45%; 5 --nextra-bg: 250,250,250; 6 --nextra-content-width: 90rem; 7} 8.dark { 9 --nextra-primary-hue: 204deg; 10 --nextra-primary-saturation: 100%; 11 --nextra-primary-lightness: 55%; 12 --nextra-bg: 17,17,17; 13} 14::selection { 15 background: hsla(var(--nextra-primary-hue),var(--nextra-primary-saturation),var(--nextra-primary-lightness),.3); 16} 17html { 18 background: rgb(var(--nextra-bg)); 19}</style>
19<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
19</head><body>
19<script>((e,t,r,n,o,i,a,s)=>{let l=document.documentElement,u=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&i?o.map(e=>i[e]||e):o;r?(l.classList.remove(...n),l.classList.add(i&&i[t]?i[t]:t)):l.setAttribute(e,t)}),r=t,s&&u.includes(r)&&(l.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","theme","system",null,["light","dark"],null,true,true)</script>
19<article class="x:container x:px-4 x:prose x:max-md:prose-sm x:dark:prose-invert" dir="ltr" data-pagefind-body="true"><header class="x:mb-8 x:flex x:items-center x:gap-3 x:justify-end" data-pagefind-ignore="all"><a class="x:aria-[current]:no-underline x:aria-[current]:opacity-60" aria-current="true" href="/">About</a><a class="x:aria-[current]:no-underline x:aria-[current]:opacity-60" href="/blog">Blog</a><button class="x:transition x:cursor-pointer x:p-2" aria-label="Toggle Dark Mode" type="button" data-headlessui-state=""><svg fill="currentColor" viewBox="2 2 20 20" stroke="currentColor" height="14"><path stroke-linecap="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path></svg></button></header><h1>About Kevin Wu</h1><div class="x:mb-8 x:flex x:gap-3 x:items-center"><div class="x:grow x:dark:text-gray-400 x:text-gray-600"><div class="x:flex x:flex-wrap x:items-center x:gap-1"></div></div></div><p>Hi, Iâm Kevin. Iâm an engineering leader who loves science. I love creating 20software to make scientific discoveries. I enjoy taking products from zero to 21one.</p> 22<h2 id="projects" class="">Projects<a href="#projects" class="not-prose subheading-anchor" aria-label="Permalink for this section"></a></h2> 23<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/vector-logos.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>Vector Logos</strong> â 24<a href="https://www.figma.com/community/plugin/854152902511629627/Vector-Logos" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Figma<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 25<a href="https://github.com/kevinwuhoo/vector-logos-figma-plugin" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Github<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a></p></div><div style="margin-top:-1rem"><p>A Figma plugin that enables searching for and inserting vector versions of 26logos. 108th most popular plugin with 100k installs (as of July 2023).</p></div></div></div> 27<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/graphtv.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>GraphTV</strong> (Complete)</p></div><div style="margin-top:-1rem"><p>
27Visualize per-episode ratings of any TV series. <a href="https://www.avclub.com/website-turns-any-tv-show-into-a-chart-revolutionizes-1798267065" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">AV 28Club<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a> 29touted that it ârevolutionizes arguing about TVâ. Also covered in 30<a href="http://www.wired.com/2014/03/graph-quality-every-tv-show-ever-amazing-site/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Wired<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 31<a href="https://gizmodo.com/check-the-tv-ratings-of-any-show-on-imdb-using-this-coo-1550258159" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Gizmodo<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 32<a href="https://flowingdata.com/2014/03/24/graph-tv-shows-ratings-by-episode/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Flowing 33Data<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 34<a href="https://www.fastcompany.com/3028097/test-it-did-your-favorite-tv-show-get-better-or-worse" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Fast 35Company<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 36<a href="https://time.com/28906/this-website-graphs-the-popularity-of-tv-shows/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Time<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 37and others.</p></div></div></div> 38<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/gitphy.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>Gitphy</strong> â 39<a href="https://chrome.google.com/webstore/detail/gitphy/kbnbfpmphfpcndlokabhemafnjhkcffc" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Chrome<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 40<a href="https://addons.mozilla.org/en-US/firefox/addon/gitphy/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Firefox<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 41<a href="https://github.com/kevinwuhoo/gitphy" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Github<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewB
41ox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a></p></div><div style="margin-top:-1rem"><p>Search for and insert GIFs into Github without leaving the textarea. As 42colleagues have testified, useful for inserting a bit of fun into pull 43request reviews and issues.</p></div></div></div> 44<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/bready.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>Bready</strong> â <a href="https://bready.io/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Site<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a></p></div><div style="margin-top:-1rem"><p>Convert volumetric recipes into mass for maximal baking reproducibility.</p></div></div></div> 45<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/randomcolor-py.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>randomcolor-py</strong> â <a href="https://pypi.org/project/randomcolor/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">PyPI<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 46<a href="https://github.com/kevinwuhoo/randomcolor-py" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Github<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a></p></div><div style="margin-top:-1rem"><p>A python package that generates attractive random colors. It sees about 47~5.9k monthly downloads and has 256k total downloads (as of Aug 2022).</p></div></div></div> 48<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/the-days-sidebar.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>The Days Sidebar</strong> (Complete) â 49<a href="https://chrome.google.com/webstore/detail/the-days-sidebar/njkkgfngelkphhfadnpealmkjmdjcioc?hl=en" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Chrome<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 50<a href="https://github.com/kevinwuhoo/thedayssidebar" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Github<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewB
50ox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a></p></div><div style="margin-top:-1rem"><p>A minimal browser new tab page that embeds the dayâs 51<a href="https://sidebar.io/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Sidebar.io<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a> links into color inspiration from <a href="http://www.thedayscolor.com/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">The 52Dayâs Color<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>. Helps me keep up with designs 53trends and news.</p></div></div></div> 54<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/firefly.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>Firefly</strong> â <a href="https://firefly.kevinformatics.com/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Site<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a></p></div><div style="margin-top:-1rem">Find Haikus in the Bluesky firehose.</div></div></div> 55<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/wwpgd.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>What Would PG Do?</strong> (Complete)</p></div><div style="margin-top:-1rem"><p>A site where you could search Paul Grahamâs essays. <a href="https://news.ycombinator.com/item?id=4656378" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Got made fun of by 56the internet<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, but whatâs 57life without a bit of levity? The first product I built that had traction. 58Covered by 59<a href="https://techcrunch.com/2012/10/15/what-would-paul-graham-do/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">TechCrunch<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 60<a href="https://www.inc.com/kathleen-kim/got-questions-about-start-ups-just-ask-paul-graham.html" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Inc<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>, 61and others.</p></div></div></div> 62<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/releaselog.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>Releaselog</strong> â 63<a href="https://www.releaselog.xyz/facebook/react/releases" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Site<!-- -->Â <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewB
63ox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a></p></div><div style="margin-top:-1rem"><p>Releaselog pulls in all of a projectâs releases onto a single page so you 64can use ctrl+f to your heartâs content without dealing with pagnation.</p></div></div></div> 65<div style="display:flex;flex-direction:row;gap:1rem;margin-bottom:1rem"><div style="width:112px;padding:4px;flex-shrink:0;align-self:flex-start;border-radius:8px;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1);border:1px solid rgb(0 0 0 / 0.05)"><img alt="Project Image" width="144" height="96" decoding="async" data-nimg="1" style="color:transparent;border-radius:8px;margin:0" src="/images/projects/plasmyd.png"/></div><div><div style="font-weight:600;margin-top:-1.25rem"><p><strong>Plasmyd</strong> (Acquired)</p></div><div style="margin-top:-1rem"><p>Collaborate over scientific papers. Think RapGenius for published papers. 66Read about our <a href="https://techcrunch.com/2012/09/27/meet-plasmyd-a-search-enginediscussion-platform-just-for-scientists/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">our launch on 67Techcrunch<!-- --> <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>. 68We were <a href="https://techcrunch.com/2013/10/23/academia-plasmyd/" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">acquired by 69Academia.edu<!-- --> <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>.</p></div></div></div> 70<h2 id="contact" class="">Contact<a href="#contact" class="not-prose subheading-anchor" aria-label="Permalink for this section"></a></h2> 71<p>Have an awesome idea you want to hack on with me? Is there an amazing new ramen 72shop that I need to know about? You can reach me at <a class="x:focus-visible:nextra-focus" href="/cdn-cgi/l/email-protection#026f67426967746b6c646d706f63766b61712c616d6f"><span class="__cf_email__" data-cfemail="a6cbc3e6cdc3d0cfc8c0c9d4cbc7d2cfc5d588c5c9cb">[email protected]</span></a> or on 73<a href="https://twitter.com/kevinwuhoo" target="_blank" rel="noreferrer" class="x:focus-visible:nextra-focus">Twitter<!-- --> <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7" viewBox="0 0 24 24" height="1em" class="x:inline x:align-baseline x:shrink-0"><path d="M7 17L17 7"></path><path d="M7 7h10v10"></path></svg></a>.</p><small class="x:mt-32 x:block" data-pagefind-ignore="all"><hr/>with â¤ï¸ from kevin</small></article>
vendor: 108 bytes, line 73
73<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
73<script src="/_next/static/chunks/webpack-eaf059fdabd6f0bc.js" async=""></script>
73<script>(self.__next_f=self.__next_f||[]).push([0])</script>
73<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[5244,[],\"\"]\n4:I[3866,[],\"\"]\n6:I[6213,[],\"OutletBoundary\"]\n9:I[6213,[],\"ViewportBoundary\"]\nb:I[6213,[],\"MetadataBoundary\"]\nd:I[4835,[],\"\"]\n:HL[\"/_next/static/css/2178bbc286ad2b33.css\",\"style\"]\n:HL[\"/_next/static/css/bd41ebb1e545cea0.css\",\"style\"]\n0:{\"P\":null,\"b\":\"3OmcZsjoMqINJzjUzJg4J\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[[\"mdxPath\",\"\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2178bbc286ad2b33.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/bd41ebb1e545cea0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"mdxPath\",\"\",\"oc\"],[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",\"$undefined\",null,[\"$\",\"$L6\",null,{\"children\":[\"$L7\",\"$L8\",null]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"Sq5YOPAla4R60HTCTy46e\",{\"children\":[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script>
73<script>self.__next_f.push([1,"e:I[7113,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"ThemeProvider\"]\nf:I[3126,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"ViewTransitions\"]\n10:I[2859,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"NavbarLink\"]\n11:I[7758,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"ThemeSwitch\"]\n"])</script>
73<script>self.__next_f.push([1,"2:[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"/favicon/favicon-180x180.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/svg+xml\",\"href\":\"/favicon/favicon.svg\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"href\":\"/favicon/favicon-32x32.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"href\":\"/favicon/favicon-16x16.png\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"href\":\"/favicon/favicon.ico\"}]],[\"$\",\"style\",null,{\"children\":\":root {\\n --nextra-primary-hue: 212deg;\\n --nextra-primary-saturation: 100%;\\n --nextra-primary-lightness: 45%;\\n --nextra-bg: 250,250,250;\\n --nextra-content-width: 90rem;\\n}\\n.dark {\\n --nextra-primary-hue: 204deg;\\n --nextra-primary-saturation: 100%;\\n --nextra-primary-lightness: 55%;\\n --nextra-bg: 17,17,17;\\n}\\n::selection {\\n background: hsla(var(--nextra-primary-hue),var(--nextra-primary-saturation),var(--nextra-primary-lightness),.3);\\n}\\nhtml {\\n background: rgb(var(--nextra-bg));\\n}\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: light)\",\"content\":\"rgb(250,250,250)\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: dark)\",\"content\":\"rgb(17,17,17)\"}],\"$undefined\"]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Le\",null,{\"attribute\":\"class\",\"children\":[\"$undefined\",[\"$\",\"article\",null,{\"className\":\"x:container x:px-4 x:prose x:max-md:prose-sm x:dark:prose-invert\",\"dir\":\"ltr\",\"data-pagefind-body\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[[\"$\",\"header\",null,{\"className\":\"x:mb-8 x:flex x:items-center x:gap-3 x:justify-end\",\"data-pagefind-ignore\":\"all\",\"children\":[[[\"$\",\"$L10\",\"/\",{\"href\":\"/\",\"children\":\"About\"}],[\"$\",\"$L10\",\"/blog\",{\"href\":\"/blog\",\"children\":\"Blog\"}]],[\"$\",\"$L11\",null,{}]]}],[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"$undefined\",[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"small\",null,{\"className\":\"x:mt-32 x:block\",\"data-pagefind-ignore\":\"all\",\"children\":[[\"$\",\"hr\",null,{}],\"with â¤ï¸ from kevin\"]}]]}]}]]}]}]]}]\n"])</script>
73<script>self.__next_f.push([1,"12:I[5414,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"GoBack\"]\n13:I[7023,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"Project\"]\n14:I[7023,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"ProjectImage\"]\n15:I[7023,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"ProjectHeading\"]\n16:I[7023,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"ProjectBody\"]\n17:I[8173,[\"517\",\"static/chunks/517-a90d8d3f64780fc6.js\",\"217\",\"static/chunks/app/%5B%5B...mdxPath%5D%5D/page-0239498d75f80c98.js\"],\"\"]\n"])</script>
73<script>self.__next_f.push([1,"5:[[\"$\",\"h1\",null,{\"children\":\"About Kevin Wu\"}],[\"$\",\"div\",null,{\"className\":\"x:mb-8 x:flex x:gap-3 x:items-center\",\"children\":[[\"$\",\"div\",null,{\"className\":\"x:grow x:dark:text-gray-400 x:text-gray-600\",\"children\":[[\"$\",\"div\",null,{\"className\":\"x:flex x:flex-wrap x:items-center x:gap-1\",\"children\":[\"$undefined\",\"$undefined\",\"$undefined\",\"$undefined\",\"$undefined\"]}],\"$undefined\"]}],[\"$\",\"$L12\",null,{}]]}],[[\"$\",\"p\",null,{\"children\":\"Hi, Iâm Kevin. Iâm an engineering leader who loves science. I love creating\\nsoftware to make scientific discoveries. I enjoy taking products from zero to\\none.\"}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"projects\",\"className\":\"\",\"children\":[\"Projects\",[\"$\",\"a\",null,{\"href\":\"#projects\",\"className\":\"not-prose subheading-anchor\",\"aria-label\":\"Permalink for this section\"}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"vector-logos\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Vector Logos\"}],\" â\\n\",[\"$\",\"a\",null,{\"href\":\"https://www.figma.com/community/plugin/854152902511629627/Vector-Logos\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Figma\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://github.com/kevinwuhoo/vector-logos-figma-plugin\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Github\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}]]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":\"A Figma plugin that enables searching for and inserting vector versions of\\nlogos. 108th most popular plugin with 100k installs (as of July 2023).\"}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"graphtv\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"GraphTV\"}],\" (Complete)\"]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[\"Visualize per-episode ratings of any TV series. \",[\"$\",\"a\",null,{\"href\":\"https://www.avclub.com/website-turns-any-tv-show-into-a-chart-revolutionizes-1798267065\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"AV\\nClub\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\"\\ntouted that it ârevolutionizes arguing about TVâ. Also covered in\\n\",[\"$\",\"a\",null,{\"href\":\"http://www.wired.com/2014/03/graph-quality-every-tv-show-ever-amazing-site/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Wired\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://gizmodo.com/check-the-tv-ratings-of-any-show-on-imdb-using-this-coo-1550258159\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Gizmodo\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\"
73:\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://flowingdata.com/2014/03/24/graph-tv-shows-ratings-by-episode/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Flowing\\nData\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://www.fastcompany.com/3028097/test-it-did-your-favorite-tv-show-get-better-or-worse\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Fast\\nCompany\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://time.com/28906/this-website-graphs-the-popularity-of-tv-shows/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Time\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\nand others.\"]}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"gitphy\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Gitphy\"}],\" â\\n\",[\"$\",\"a\",null,{\"href\":\"https://chrome.google.com/webstore/detail/gitphy/kbnbfpmphfpcndlokabhemafnjhkcffc\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Chrome\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://addons.mozilla.org/en-US/firefox/addon/gitphy/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Firefox\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://github.com/kevinwuhoo/gitphy\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Github\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}]]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":\"Search for and insert GIFs into Github without leaving the textarea. As\\ncolleagues have testified, useful for inserting a bit of fun into pull\\nrequest reviews and issues.\"}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"bready\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Bready\"}],\" â \",[\"$\",\"a\",null,{\"href\":\"https://bready.io/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Site\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\"
73:\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}]]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":\"Convert volumetric recipes into mass for maximal baking reproducibility.\"}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"randomcolor-py\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"randomcolor-py\"}],\" â \",[\"$\",\"a\",null,{\"href\":\"https://pypi.org/project/randomcolor/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"PyPI\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://github.com/kevinwuhoo/randomcolor-py\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Github\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}]]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":\"A python package that generates attractive random colors. It sees about\\n~5.9k monthly downloads and has 256k total downloads (as of Aug 2022).\"}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"the-days-sidebar\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"The Days Sidebar\"}],\" (Complete) â\\n\",[\"$\",\"a\",null,{\"href\":\"https://chrome.google.com/webstore/detail/the-days-sidebar/njkkgfngelkphhfadnpealmkjmdjcioc?hl=en\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Chrome\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://github.com/kevinwuhoo/thedayssidebar\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Github\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}]]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[\"A minimal browser new tab page that embeds the dayâs\\n\",[\"$\",\"a\",null,{\"href\":\"https://sidebar.io/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Sidebar.io\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\" links into color inspiration from \",[\"$\",\"a\",null,{\"href\":\"http://www.thedayscolor.com/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"The\\nDayâs Color\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\"
73:\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\". Helps me keep up with designs\\ntrends and news.\"]}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"firefly\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Firefly\"}],\" â \",[\"$\",\"a\",null,{\"href\":\"https://firefly.kevinformatics.com/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Site\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}]]}]}],[\"$\",\"$L16\",null,{\"children\":\"Find Haikus in the Bluesky firehose.\"}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"wwpgd\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"What Would PG Do?\"}],\" (Complete)\"]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[\"A site where you could search Paul Grahamâs essays. \",[\"$\",\"a\",null,{\"href\":\"https://news.ycombinator.com/item?id=4656378\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Got made fun of by\\nthe internet\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\", but whatâs\\nlife without a bit of levity? The first product I built that had traction.\\nCovered by\\n\",[\"$\",\"a\",null,{\"href\":\"https://techcrunch.com/2012/10/15/what-would-paul-graham-do/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"TechCrunch\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\n\",[\"$\",\"a\",null,{\"href\":\"https://www.inc.com/kathleen-kim/got-questions-about-start-ups-just-ask-paul-graham.html\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Inc\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\",\\nand others.\"]}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"releaselog\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Releaselog\"}],\" â\\n\",[\"$\",\"a\",null,{\"href\":\"https://www.releaselog.xyz/facebook/react/releases\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Site\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}]]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":\"Releaselog pulls in all of a projectâs releases onto a single page so you\\ncan use ctrl+f to your heartâs content without dealing with pagnation.\"}]}]]}]]}],\"\\n\",[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"$L14\",null,{\"project\":\"plasmyd\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L15\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Plasmyd\"}],\" (Acquired)\"]}]}],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"p\",null,{\"children\":[\"Collaborate over scientific papers. Think RapGenius for published papers.\\nRead about our \",[\"$\",\"a\",null,{\"href\":\"https://techcrunch.com/2012/09/27/meet-plasmyd-a-search-enginediscussion-platform-just-for-scientists/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"our launch on\\nTechcrunch\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\"
73:\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\".\\nWe were \",[\"$\",\"a\",null,{\"href\":\"https://techcrunch.com/2013/10/23/academia-plasmyd/\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"acquired by\\nAcademia.edu\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\".\"]}]}]]}]]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"contact\",\"className\":\"\",\"children\":[\"Contact\",[\"$\",\"a\",null,{\"href\":\"#contact\",\"className\":\"not-prose subheading-anchor\",\"aria-label\":\"Permalink for this section\"}]]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Have an awesome idea you want to hack on with me? Is there an amazing new ramen\\nshop that I need to know about? You can reach me at \",[\"$\",\"$L17\",null,{\"href\":\"mailto:[email protected]\",\"prefetch\":\"$undefined\",\"children\":\"[email protected]\",\"className\":\"x:focus-visible:nextra-focus\"}],\" or on\\n\",[\"$\",\"a\",null,{\"href\":\"https://twitter.com/kevinwuhoo\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"Twitter\",[\"Â \",[\"$\",\"svg\",null,{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":1.7,\"viewBox\":\"0 0 24 24\",\"height\":\"1em\",\"className\":\"x:inline x:align-baseline x:shrink-0\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M7 17L17 7\"}],[\"$\",\"path\",null,{\"d\":\"M7 7h10v10\"}]]}]]],\"className\":\"x:focus-visible:nextra-focus\"}],\".\"]}]]]\n"])</script>
73<script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n7:null\n"])</script>
73<script>self.__next_f.push([1,"8:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"About Kevin Wu | Kevin Wu\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Engineering leader who loves science\"}],[\"$\",\"link\",\"2\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"/feed.xml\"}]]\n"])</script>
73<!-- Cloudflare Pages Analytics -->
vendor: 99 bytes, line 73
73<script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "
73536af112a0094e028f9c5c5ed09f4384
vendor: 13 bytes, line 73
73"}'></script>
73<!-- Cloudflare Pages Analytics --></body></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.