Help
RSS
API
Feed
Maltego
Contact
Domain > gregko.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2018-07-27
104.27.128.1
(
ClassC
)
2018-07-27
104.27.129.1
(
ClassC
)
2018-09-13
159.65.5.64
(
ClassC
)
2025-10-17
76.76.21.21
(
ClassC
)
Port 443
HTTP/1.1 200 OKAccept-Ranges: bytesAccess-Control-Allow-Origin: *Age: 1125695Cache-Control: public, max-age0, must-revalidateContent-Disposition: inlineContent-Length: 75360Content-Type: text/html; charsetutf-8Date: Fri, 17 Oct 2025 18:19:13 GMTEtag: eb548b3ff03bb0c64ed111270ee8e4b8Server: VercelStrict-Transport-Security: max-age63072000Vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetchX-Matched-Path: /X-Nextjs-Prerender: 1X-Nextjs-Stale-Time: 300X-Vercel-Cache: HITX-Vercel-Id: pdx1::lmsks-1760725153531-65ffe656186c !DOCTYPE html>!--GTCdXKj4oXxIMdJ3eibvM-->html langen class__variable_f367f3 __variable_3c557b>head>meta charSetutf-8/>meta nameviewport contentwidthdevice-width, initial-scale1/>link relpreload href/_next/static/media/bb3ef058b751a6ad-s.p.woff2 asfont crossorigin typefont/woff2/>link relpreload href/_next/static/media/e4af272ccee01ff0-s.p.woff2 asfont crossorigin typefont/woff2/>link relpreload asimage imageSrcSet/_next/image?url%2Favatar.webp&w128&q75 1x, /_next/image?url%2Favatar.webp&w256&q75 2x/>link relstylesheet href/_next/static/css/7ab1372f9d4759f4.css data-precedencenext/>link relpreload asscript fetchPrioritylow href/_next/static/chunks/webpack-53d4757151554831.js/>script src/_next/static/chunks/8940b91d-7ab26a260d1c0c30.js async>/script>script src/_next/static/chunks/103-dedab5181b49744a.js async>/script>script src/_next/static/chunks/main-app-910e7f7ff927e8f1.js async>/script>script src/_next/static/chunks/fe4b3cca-11165ae6fa8691c2.js async>/script>script src/_next/static/chunks/846-b0a9708feed6a08e.js async>/script>script src/_next/static/chunks/613-31b0b992cd8d60f8.js async>/script>script src/_next/static/chunks/app/layout-36f95ed26c60fc87.js async>/script>script src/_next/static/chunks/app/page-8c88eec0e8e72a8d.js async>/script>meta namenext-size-adjust content/>title>Greg Konush || Software Architect/title>meta namedescription contentGreg Konush's website about tech things/>meta nameauthor contentGreg Konush/>meta namekeywords contentGreg Konush,software engineer,software architect,CTO,startup builder,investor/>script src/_next/static/chunks/polyfills-42372ed130431b0a.js noModule>/script>/head>body classmin-h-screen bg-zinc-950 font-sans text-zinc-100 antialiased>div hidden>!--$-->!--/$-->/div>div classrelative flex min-h-screen w-full flex-col>header classrelative z-50>div classsm:px-8>div classmx-auto w-full max-w-7xl lg:px-8>div classrelative px-4 sm:px-8 lg:px-12>div classmx-auto max-w-2xl lg:max-w-5xl>div classflex justify-center py-12>nav classflex items-center gap-1 rounded-full border border-zinc-700/70 bg-zinc-900/80 px-1 py-1 text-sm text-zinc-300 shadow-lg shadow-black/30 aria-labelPrimary>a href#about classrounded-full px-3 py-1 transition-colors duration-200 hover:bg-zinc-800 hover:text-white focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-pink-500>About/a>a href#articles classrounded-full px-3 py-1 transition-colors duration-200 hover:bg-zinc-800 hover:text-white focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-pink-500>Articles/a>a href#projects classrounded-full px-3 py-1 transition-colors duration-200 hover:bg-zinc-800 hover:text-white focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-pink-500>Projects/a>a href#tools classrounded-full px-3 py-1 transition-colors duration-200 hover:bg-zinc-800 hover:text-white focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-pink-500>Tools/a>/nav>/div>/div>/div>/div>/div>/header>main classflex-auto pb-24>div classsm:px-8>div classmx-auto w-full max-w-7xl lg:px-8>div classrelative px-4 sm:px-8 lg:px-12>div classmx-auto max-w-2xl lg:max-w-5xl>div classspace-y-24>section idabout classscroll-mt-28 space-y-8 sm:space-y-10 sm:scroll-mt-36>div>img altPortrait of Greg Konush width120 height120 decodingasync data-nimg1 classh-20 w-20 rounded-full border border-zinc-700/60 object-cover shadow-lg shadow-black/40 stylecolor:transparent srcSet/_next/image?url%2Favatar.webp&w128&q75 1x, /_next/image?url%2Favatar.webp&w256&q75 2x src/_next/image?url%2Favatar.webp&w256&q75/>/div>div classspace-y-6>div classspace-y-4>h1 classtext-2.25rem font-semibold leading-tight text-white sm:text-2.75rem sm:leading-1.1>Software architect, founder, and partner for ambitious teams./h1>p classmax-w-2xl text-base leading-relaxed text-zinc-400 sm:text-lg>I help founders turn prototypes into durable products - combining systems thinking, pragmatic AI, and hands-on engineering./p>/div>/div>div classflex flex-wrap items-center gap-4 text-sm>a classinline-flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm outline-offset-2 transition active:transition-none bg-zinc-50 font-medium text-zinc-900 hover:bg-zinc-100 active:bg-zinc-100 active:text-zinc-900/60 dark:bg-zinc-800/50 dark:text-zinc-300 dark:hover:bg-zinc-800 dark:hover:text-zinc-50 dark:active:bg-zinc-800/50 dark:active:text-zinc-50/70 href/GregKonushResume.pdf>View resume/a>a classinline-flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm outline-offset-2 transition active:transition-none bg-zinc-800 font-semibold text-zinc-100 hover:bg-zinc-700 active:bg-zinc-800 active:text-zinc-100/70 dark:bg-zinc-700 dark:hover:bg-zinc-600 dark:active:bg-zinc-700 dark:active:text-zinc-100/70 href/schedule>Schedule a call/a>/div>div classflex items-center gap-5 text-zinc-400>a hrefhttps://github.com/gregkonush target_blank relnoreferrer noopener aria-labelGitHub classgroup -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100>svg viewBox0 0 24 24 aria-hiddentrue classh-6 w-6 fill-current>path fill-ruleevenodd clip-ruleevenodd dM12 2C6.475 2 2 6.588 2 12.253c0 4.537 2.862 8.369 6.838 9.727.5.09.687-.218.687-.487 0-.243-.013-1.05-.013-1.91C7 20.059 6.35 18.957 6.15 18.38c-.113-.295-.6-1.205-1.025-1.448-.35-.192-.85-.667-.013-.68.788-.012 1.35.744 1.538 1.051.9 1.551 2.338 1.116 2.912.846.088-.666.35-1.115.638-1.371-2.225-.256-4.55-1.14-4.55-5.062 0-1.115.387-2.038 1.025-2.756-.1-.256-.45-1.307.1-2.717 0 0 .837-.269 2.75 1.051.8-.23 1.65-.346 2.5-.346.85 0 1.7.115 2.5.346 1.912-1.333 2.75-1.05 2.75-1.05.55 1.409.2 2.46.1 2.716.637.718 1.025 1.628 1.025 2.756 0 3.934-2.337 4.806-4.562 5.062.362.32.675.936.675 1.897 0 1.371-.013 2.473-.013 2.82 0 .268.188.589.688.486a10.039 10.039 0 0 0 4.932-3.74A10.447 10.447 0 0 0 22 12.253C22 6.588 17.525 2 12 2Z>/path>/svg>/a>a hrefhttps://x.com/gregkonush target_blank relnoreferrer noopener aria-labelX (Twitter) classgroup -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100>svg viewBox0 0 24 24 aria-hiddentrue classh-6 w-6 fill-current>path dM13.3174 10.7749L19.1457 4H17.7646L12.7039 9.88256L8.66193 4H4L10.1122 12.8955L4 20H5.38119L10.7254 13.7878L14.994 20H19.656L13.3171 10.7749H13.3174ZM11.4257 12.9738L10.8064 12.0881L5.87886 5.03974H8.00029L11.9769 10.728L12.5962 11.6137L17.7652 19.0075H15.6438L11.4257 12.9742V12.9738Z>/path>/svg>/a>a hrefhttps://www.linkedin.com/in/gregkonush/ target_blank relnoreferrer noopener aria-labelLinkedIn classgroup -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100>svg viewBox0 0 24 24 aria-hiddentrue classh-6 w-6 fill-current>path dM18.335 18.339H15.67v-4.177c0-.996-.02-2.278-1.39-2.278-1.389 0-1.601 1.084-1.601 2.205v4.25h-2.666V9.75h2.56v1.17h.035c.358-.674 1.228-1.387 2.528-1.387 2.7 0 3.2 1.778 3.2 4.091v4.715zM7.003 8.575a1.546 1.546 0 01-1.548-1.549 1.548 1.548 0 111.547 1.549zm1.336 9.764H5.666V9.75H8.34v8.589zM19.67 3H4.329C3.593 3 3 3.58 3 4.297v15.406C3 20.42 3.594 21 4.328 21h15.338C20.4 21 21 20.42 21 19.703V4.297C21 3.58 20.4 3 19.666 3h.003z>/path>/svg>/a>a hrefhttps://www.instagram.com/gregkonush/ target_blank relnoreferrer noopener aria-labelInstagram classgroup -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100>svg viewBox0 0 24 24 aria-hiddentrue classh-6 w-6 fill-current>path dM12 3c-2.444 0-2.75.01-3.71.054-.959.044-1.613.196-2.185.418A4.412 4.412 0 0 0 4.51 4.511c-.5.5-.809 1.002-1.039 1.594-.222.572-.374 1.226-.418 2.184C3.01 9.25 3 9.556 3 12s.01 2.75.054 3.71c.044.959.196 1.613.418 2.185.23.592.538 1.094 1.039 1.595.5.5 1.002.808 1.594 1.038.572.222 1.226.374 2.184.418C9.25 20.99 9.556 21 12 21s2.75-.01 3.71-.054c.959-.044 1.613-.196 2.185-.419a4.412 4.412 0 0 0 1.595-1.038c.5-.5.808-1.002 1.038-1.594.222-.572.374-1.226.418-2.184.044-.96.054-1.267.054-3.711s-.01-2.75-.054-3.71c-.044-.959-.196-1.613-.419-2.185A4.412 4.412 0 0 0 19.49 4.51c-.5-.5-1.002-.809-1.594-1.039-.572-.222-1.226-.374-2.184-.418C14.75 3.01 14.444 3 12 3Zm0 1.622c2.403 0 2.688.009 3.637.052.877.04 1.354.187 1.67.31.421.163.72.358 1.036.673.315.315.51.615.673 1.035.123.317.27.794.31 1.671.043.95.052 1.234.052 3.637s-.009 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.67-.163.421-.358.72-.673 1.036a2.79 2.79 0 0 1-1.035.673c-.317.123-.794.27-1.671.31-.95.043-1.234.052-3.637.052s-2.688-.009-3.637-.052c-.877-.04-1.354-.187-1.67-.31a2.789 2.789 0 0 1-1.036-.673 2.79 2.79 0 0 1-.673-1.035c-.123-.317-.27-.794-.31-1.671-.043-.95-.052-1.234-.052-3.637s.009-2.688.052-3.637c.04-.877.187-1.354.31-1.67.163-.421.358-.72.673-1.036.315-.315.615-.51 1.035-.673.317-.123.794-.27 1.671-.31.95-.043 1.234-.052 3.637-.052Z>/path>path dM12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6Zm0-7.622a4.622 4.622 0 1 0 0 9.244 4.622 4.622 0 0 0 0-9.244Zm5.884-.182a1.08 1.08 0 1 1-2.16 0 1.08 1.08 0 0 1 2.16 0Z>/path>/svg>/a>/div>dl classgrid gap-4 text-sm text-zinc-300 sm:grid-cols-3>div classspace-y-1>dt classtext-xs uppercase tracking-widest text-zinc-500>Currently/dt>dd classtext-base font-medium text-zinc-100>Partnering with founders as a fractional CTO/dd>/div>div classspace-y-1>dt classtext-xs uppercase tracking-widest text-zinc-500>Based in/dt>dd classtext-base font-medium text-zinc-100>San Francisco Bay Area/dd>/div>div classspace-y-1>dt classtext-xs uppercase tracking-widest text-zinc-500>Focus/dt>dd classtext-base font-medium text-zinc-100>Resilient platforms, AI-assisted workflows, product velocity/dd>/div>/dl>/section>section idarticles classscroll-mt-28 space-y-12 sm:scroll-mt-36>div classmx-auto grid w-full max-w-6xl grid-cols-1 items-start gap-y-16 lg:grid-cols-2 lg:gap-20>div classflex flex-col gap-20 lg:pr-8>article classgroup relative flex flex-col items-start>time classrelative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500 dateTime2025-06-12>span classabsolute inset-y-0 left-0 flex items-center aria-hiddentrue>span classh-4 w-0.5 rounded-full bg-zinc-700>/span>/span>June 12, 2025/time>h3 classtracking-tight text-lg font-semibold text-white>div classabsolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50>/div>a href/blog/vercel-ai-sdk-nextjs>span classabsolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl>/span>span classrelative z-10>Vercel AI SDK with Next.js/span>/a>/h3>p classrelative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base>Shipping real-time AI flows in Next.js while keeping latency low, UI snappy, and observability first-class./p>div aria-hiddentrue classrelative z-10 mt-4 flex items-center text-sm font-medium text-teal-400>Read articlesvg viewBox0 0 16 16 fillnone aria-hiddentrue classml-1 h-4 w-4 stroke-current>path dM6.75 5.75 9.25 8l-2.5 2.25 stroke-width1.5 stroke-linecapround stroke-linejoinround>/path>/svg>/div>/article>article classgroup relative flex flex-col items-start>time classrelative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500 dateTime2025-05-02>span classabsolute inset-y-0 left-0 flex items-center aria-hiddentrue>span classh-4 w-0.5 rounded-full bg-zinc-700>/span>/span>May 2, 2025/time>h3 classtracking-tight text-lg font-semibold text-white>div classabsolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50>/div>a href/blog/kubernetes-installation-in-harvester>span classabsolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl>/span>span classrelative z-10>Kubernetes Installation in Harvester/span>/a>/h3>p classrelative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base>Standing up controlled Kubernetes clusters on Harvester with GitOps guardrails and day-two automation baked in./p>div aria-hiddentrue classrelative z-10 mt-4 flex items-center text-sm font-medium text-teal-400>Read articlesvg viewBox0 0 16 16 fillnone aria-hiddentrue classml-1 h-4 w-4 stroke-current>path dM6.75 5.75 9.25 8l-2.5 2.25 stroke-width1.5 stroke-linecapround stroke-linejoinround>/path>/svg>/div>/article>article classgroup relative flex flex-col items-start>time classrelative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500 dateTime2025-03-18>span classabsolute inset-y-0 left-0 flex items-center aria-hiddentrue>span classh-4 w-0.5 rounded-full bg-zinc-700>/span>/span>March 18, 2025/time>h3 classtracking-tight text-lg font-semibold text-white>div classabsolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50>/div>a href/blog/astro-for-personal-website>span classabsolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl>/span>span classrelative z-10>Astro for personal website/span>/a>/h3>p classrelative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base>I tried to use astro my own website, great framework all around/p>div aria-hiddentrue classrelative z-10 mt-4 flex items-center text-sm font-medium text-teal-400>Read articlesvg viewBox0 0 16 16 fillnone aria-hiddentrue classml-1 h-4 w-4 stroke-current>path dM6.75 5.75 9.25 8l-2.5 2.25 stroke-width1.5 stroke-linecapround stroke-linejoinround>/path>/svg>/div>/article>article classgroup relative flex flex-col items-start>time classrelative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500 dateTime2025-01-27>span classabsolute inset-y-0 left-0 flex items-center aria-hiddentrue>span classh-4 w-0.5 rounded-full bg-zinc-700>/span>/span>January 27, 2025/time>h3 classtracking-tight text-lg font-semibold text-white>div classabsolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50>/div>a href/blog/rails-with-graphql>span classabsolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl>/span>span classrelative z-10>Rails with GraphQL/span>/a>/h3>p classrelative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base>Combining the Rails toolkit with GraphQL schemas to speed up internal tooling, and how to keep it maintainable./p>div aria-hiddentrue classrelative z-10 mt-4 flex items-center text-sm font-medium text-teal-400>Read articlesvg viewBox0 0 16 16 fillnone aria-hiddentrue classml-1 h-4 w-4 stroke-current>path dM6.75 5.75 9.25 8l-2.5 2.25 stroke-width1.5 stroke-linecapround stroke-linejoinround>/path>/svg>/div>/article>article classgroup relative flex flex-col items-start>time classrelative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500 dateTime2024-11-09>span classabsolute inset-y-0 left-0 flex items-center aria-hiddentrue>span classh-4 w-0.5 rounded-full bg-zinc-700>/span>/span>November 9, 2024/time>h3 classtracking-tight text-lg font-semibold text-white>div classabsolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50>/div>a href/blog/monorepo-setup-with-nx-cli>span classabsolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl>/span>span classrelative z-10>Monorepo setup with NX CLI tooling/span>/a>/h3>p classrelative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base>Attempted to use NX CLI for my own needs but my monorepo is multi-language/p>div aria-hiddentrue classrelative z-10 mt-4 flex items-center text-sm font-medium text-teal-400>Read articlesvg viewBox0 0 16 16 fillnone aria-hiddentrue classml-1 h-4 w-4 stroke-current>path dM6.75 5.75 9.25 8l-2.5 2.25 stroke-width1.5 stroke-linecapround stroke-linejoinround>/path>/svg>/div>/article>article classgroup relative flex flex-col items-start>time classrelative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500 dateTime2024-08-21>span classabsolute inset-y-0 left-0 flex items-center aria-hiddentrue>span classh-4 w-0.5 rounded-full bg-zinc-700>/span>/span>August 21, 2024/time>h3 classtracking-tight text-lg font-semibold text-white>div classabsolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50>/div>a href/blog/modern-tailwindcss-nextjs>span classabsolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl>/span>span classrelative z-10>Modern Tailwind CSS and Next.js setup/span>/a>/h3>p classrelative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base>Updated version of tailwindcss v4 setup in nextjs, outdated, you can just create next with tailwindcss/p>div aria-hiddentrue classrelative z-10 mt-4 flex items-center text-sm font-medium text-teal-400>Read articlesvg viewBox0 0 16 16 fillnone aria-hiddentrue classml-1 h-4 w-4 stroke-current>path dM6.75 5.75 9.25 8l-2.5 2.25 stroke-width1.5 stroke-linecapround stroke-linejoinround>/path>/svg>/div>/article>/div>div classspace-y-8 lg:pl-8>div classrounded-2xl border border-zinc-800/70 bg-zinc-900/50 p-6 shadow-xl shadow-black/20>h3 classflex items-center text-sm font-semibold text-zinc-400>svg viewBox0 0 24 24 fillnone stroke-width1.5 stroke-linecapround stroke-linejoinround aria-hiddentrue classmr-3 h-5 w-5 flex-none text-zinc-500>path dM2.75 9.75a3 3 0 0 1 3-3h12.5a3 3 0 0 1 3 3v8.5a3 3 0 0 1-3 3H5.75a3 3 0 0 1-3-3v-8.5Z classfill-zinc-950/40 stroke-zinc-500>/path>path dM3 14.25h6.249c.484 0 .952-.002 1.316.319l.777.682a.996.996 0 0 0 1.316 0l.777-.682c.364-.32.832-.319 1.316-.319H21M8.75 6.5V4.75a2 2 0 0 1 2-2h2.5a2 2 0 0 1 2 2V6.5 classstroke-zinc-500>/path>/svg>Work/h3>ul classmt-6 space-y-4>li classflex items-center justify-between gap-4>div classflex items-center gap-3>div classrelative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70>div classrelative h-full w-full>img altTruewind logo loadinglazy decodingasync data-nimgfill classobject-contain styleposition:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent sizes100vw srcSet/_next/image?url%2Flogos%2Ftruewind.png&w640&q75 640w, /_next/image?url%2Flogos%2Ftruewind.png&w750&q75 750w, /_next/image?url%2Flogos%2Ftruewind.png&w828&q75 828w, /_next/image?url%2Flogos%2Ftruewind.png&w1080&q75 1080w, /_next/image?url%2Flogos%2Ftruewind.png&w1200&q75 1200w, /_next/image?url%2Flogos%2Ftruewind.png&w1920&q75 1920w, /_next/image?url%2Flogos%2Ftruewind.png&w2048&q75 2048w, /_next/image?url%2Flogos%2Ftruewind.png&w3840&q75 3840w src/_next/image?url%2Flogos%2Ftruewind.png&w3840&q75/>/div>/div>div classmin-w-0>p classtext-sm font-medium text-zinc-200>Truewind/p>p classtext-xs text-zinc-400>Founding Software Engineer/p>/div>/div>span classshrink-0 text-xs text-zinc-500>Aug 2024 - Present/span>/li>li classflex items-center justify-between gap-4>div classflex items-center gap-3>div classrelative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70>div classrelative h-full w-full>img altFlexport logo loadinglazy decodingasync data-nimgfill classobject-contain styleposition:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent sizes100vw srcSet/_next/image?url%2Flogos%2Fflexport.png&w640&q75 640w, /_next/image?url%2Flogos%2Fflexport.png&w750&q75 750w, /_next/image?url%2Flogos%2Fflexport.png&w828&q75 828w, /_next/image?url%2Flogos%2Fflexport.png&w1080&q75 1080w, /_next/image?url%2Flogos%2Fflexport.png&w1200&q75 1200w, /_next/image?url%2Flogos%2Fflexport.png&w1920&q75 1920w, /_next/image?url%2Flogos%2Fflexport.png&w2048&q75 2048w, /_next/image?url%2Flogos%2Fflexport.png&w3840&q75 3840w src/_next/image?url%2Flogos%2Fflexport.png&w3840&q75/>/div>/div>div classmin-w-0>p classtext-sm font-medium text-zinc-200>Flexport/p>p classtext-xs text-zinc-400>Staff Software Engineer/p>/div>/div>span classshrink-0 text-xs text-zinc-500>Jul 2021 - Jul 2024/span>/li>li classflex items-center justify-between gap-4>div classflex items-center gap-3>div classrelative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70>div classrelative h-full w-full>img altIllumio logo loadinglazy decodingasync data-nimgfill classobject-contain styleposition:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent sizes100vw srcSet/_next/image?url%2Flogos%2Fillumio.png&w640&q75 640w, /_next/image?url%2Flogos%2Fillumio.png&w750&q75 750w, /_next/image?url%2Flogos%2Fillumio.png&w828&q75 828w, /_next/image?url%2Flogos%2Fillumio.png&w1080&q75 1080w, /_next/image?url%2Flogos%2Fillumio.png&w1200&q75 1200w, /_next/image?url%2Flogos%2Fillumio.png&w1920&q75 1920w, /_next/image?url%2Flogos%2Fillumio.png&w2048&q75 2048w, /_next/image?url%2Flogos%2Fillumio.png&w3840&q75 3840w src/_next/image?url%2Flogos%2Fillumio.png&w3840&q75/>/div>/div>div classmin-w-0>p classtext-sm font-medium text-zinc-200>Illumio/p>p classtext-xs text-zinc-400>Senior Software Engineer/p>/div>/div>span classshrink-0 text-xs text-zinc-500>Jul 2019 - Jul 2021/span>/li>li classflex items-center justify-between gap-4>div classflex items-center gap-3>div classrelative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70>div classrelative h-full w-full>img altOkta logo loadinglazy decodingasync data-nimgfill classobject-contain styleposition:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent sizes100vw srcSet/_next/image?url%2Flogos%2Fokta.png&w640&q75 640w, /_next/image?url%2Flogos%2Fokta.png&w750&q75 750w, /_next/image?url%2Flogos%2Fokta.png&w828&q75 828w, /_next/image?url%2Flogos%2Fokta.png&w1080&q75 1080w, /_next/image?url%2Flogos%2Fokta.png&w1200&q75 1200w, /_next/image?url%2Flogos%2Fokta.png&w1920&q75 1920w, /_next/image?url%2Flogos%2Fokta.png&w2048&q75 2048w, /_next/image?url%2Flogos%2Fokta.png&w3840&q75 3840w src/_next/image?url%2Flogos%2Fokta.png&w3840&q75/>/div>/div>div classmin-w-0>p classtext-sm font-medium text-zinc-200>Okta/p>p classtext-xs text-zinc-400>Senior Software Engineer/p>/div>/div>span classshrink-0 text-xs text-zinc-500>Aug 2018 - Jul 2019/span>/li>li classflex items-center justify-between gap-4>div classflex items-center gap-3>div classrelative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70>div classrelative h-full w-full>img altEventbrite logo loadinglazy decodingasync data-nimgfill classobject-contain styleposition:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent sizes100vw srcSet/_next/image?url%2Flogos%2Feventbrite.png&w640&q75 640w, /_next/image?url%2Flogos%2Feventbrite.png&w750&q75 750w, /_next/image?url%2Flogos%2Feventbrite.png&w828&q75 828w, /_next/image?url%2Flogos%2Feventbrite.png&w1080&q75 1080w, /_next/image?url%2Flogos%2Feventbrite.png&w1200&q75 1200w, /_next/image?url%2Flogos%2Feventbrite.png&w1920&q75 1920w, /_next/image?url%2Flogos%2Feventbrite.png&w2048&q75 2048w, /_next/image?url%2Flogos%2Feventbrite.png&w3840&q75 3840w src/_next/image?url%2Flogos%2Feventbrite.png&w3840&q75/>/div>/div>div classmin-w-0>p classtext-sm font-medium text-zinc-200>Eventbrite/p>p classtext-xs text-zinc-400>Software Engineer/p>/div>/div>span classshrink-0 text-xs text-zinc-500>Sep 2017 - Aug 2018/span>/li>li classflex items-center justify-between gap-4>div classflex items-center gap-3>div classrelative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70>div classrelative h-full w-full>img altTicketfly logo loadinglazy decodingasync data-nimgfill classobject-contain styleposition:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent sizes100vw srcSet/_next/image?url%2Flogos%2Fticketfly.png&w640&q75 640w, /_next/image?url%2Flogos%2Fticketfly.png&w750&q75 750w, /_next/image?url%2Flogos%2Fticketfly.png&w828&q75 828w, /_next/image?url%2Flogos%2Fticketfly.png&w1080&q75 1080w, /_next/image?url%2Flogos%2Fticketfly.png&w1200&q75 1200w, /_next/image?url%2Flogos%2Fticketfly.png&w1920&q75 1920w, /_next/image?url%2Flogos%2Fticketfly.png&w2048&q75 2048w, /_next/image?url%2Flogos%2Fticketfly.png&w3840&q75 3840w src/_next/image?url%2Flogos%2Fticketfly.png&w3840&q75/>/div>/div>div classmin-w-0>p classtext-sm font-medium text-zinc-200>Ticketfly/p>p classtext-xs text-zinc-400>Software Engineer/p>/div>/div>span classshrink-0 text-xs text-zinc-500>Mar 2017 - Sep 2017/span>/li>li classflex items-center justify-between gap-4>div classflex items-center gap-3>div classrelative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70>div classrelative h-full w-full>img altNarvar logo loadinglazy decodingasync data-nimgfill classobject-contain styleposition:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent sizes100vw srcSet/_next/image?url%2Flogos%2Fnarvar.png&w640&q75 640w, /_next/image?url%2Flogos%2Fnarvar.png&w750&q75 750w, /_next/image?url%2Flogos%2Fnarvar.png&w828&q75 828w, /_next/image?url%2Flogos%2Fnarvar.png&w1080&q75 1080w, /_next/image?url%2Flogos%2Fnarvar.png&w1200&q75 1200w, /_next/image?url%2Flogos%2Fnarvar.png&w1920&q75 1920w, /_next/image?url%2Flogos%2Fnarvar.png&w2048&q75 2048w, /_next/image?url%2Flogos%2Fnarvar.png&w3840&q75 3840w src/_next/image?url%2Flogos%2Fnarvar.png&w3840&q75/>/div>/div>div classmin-w-0>p classtext-sm font-medium text-zinc-200>Narvar/p>p classtext-xs text-zinc-400>Software Development Engineer in Test/p>/div>/div>span classshrink-0 text-xs text-zinc-500>Sep 2015 - Mar 2017/span>/li>/ul>a classinline-flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm outline-offset-2 transition active:transition-none bg-zinc-50 font-medium text-zinc-900 hover:bg-zinc-100 active:bg-zinc-100 active:text-zinc-900/60 dark:bg-zinc-800/50 dark:text-zinc-300 dark:hover:bg-zinc-800 dark:hover:text-zinc-50 dark:active:bg-zinc-800/50 dark:active:text-zinc-50/70 mt-6 w-full href/GregKonushResume.pdf>Download resumesvg viewBox0 0 16 16 fillnone aria-hiddentrue classh-3.5 w-3.5>path dM4.75 8.75 8 12.25m0 0 3.25-3.5M8 12.25v-8.5 stroke-width1.5 stroke-linecapround stroke-linejoinround classstroke-zinc-500>/path>/svg>/a>/div>/div>/div>/section>section idprojects classscroll-mt-28 space-y-10 sm:scroll-mt-36>div classflex flex-col gap-3 md:flex-row md:items-end md:justify-between>div>h2 classtext-3xl font-semibold text-white>What I’m building/h2>p classtext-zinc-400>Engagements and experiments that keep my curiosity sharp./p>/div>/div>div classgrid gap-6 md:grid-cols-2 xl:grid-cols-3>article classgroup relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20>h2 classtext-base font-semibold tracking-tight text-zinc-100>a hrefhttps://github.com/proompteng/proompteng target_blank relnoreferrer noopener classrelative z-10 transition hover:text-teal-300>proompteng/a>/h2>p classrelative z-10 mt-2 text-sm text-zinc-400>Kubernetes control plane for AI agents/p>a hrefhttps://github.com/proompteng/proompteng target_blank relnoreferrer noopener classrelative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300>Learn morespan aria-hiddentrue classml-2>→/span>/a>/article>article classgroup relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20>h2 classtext-base font-semibold tracking-tight text-zinc-100>a hrefhttps://github.com/gregkonush/lab target_blank relnoreferrer noopener classrelative z-10 transition hover:text-teal-300>Experimentation Lab/a>/h2>p classrelative z-10 mt-2 text-sm text-zinc-400>Experiments with different tooling across stack, do check it out/p>a hrefhttps://github.com/gregkonush/lab target_blank relnoreferrer noopener classrelative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300>Learn morespan aria-hiddentrue classml-2>→/span>/a>/article>article classgroup relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20>h2 classtext-base font-semibold tracking-tight text-zinc-100>a hrefhttps://github.com/gregkonush/milkshake target_blank relnoreferrer noopener classrelative z-10 transition hover:text-teal-300>Milkshake/a>/h2>p classrelative z-10 mt-2 text-sm text-zinc-400>CLI to generate images with Nano Banana that gets copied into clipboard/p>a hrefhttps://github.com/gregkonush/milkshake target_blank relnoreferrer noopener classrelative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300>Learn morespan aria-hiddentrue classml-2>→/span>/a>/article>article classgroup relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20>h2 classtext-base font-semibold tracking-tight text-zinc-100>a hrefhttps://github.com/gregkonush/mlx-agent target_blank relnoreferrer noopener classrelative z-10 transition hover:text-teal-300>MLX Dev Agent/a>/h2>p classrelative z-10 mt-2 text-sm text-zinc-400>Local first agent that utilizes Apples M chips/p>a hrefhttps://github.com/gregkonush/mlx-agent target_blank relnoreferrer noopener classrelative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300>Learn morespan aria-hiddentrue classml-2>→/span>/a>/article>/div>/section>section idtools classscroll-mt-28 space-y-10 sm:scroll-mt-36>div>h2 classtext-3xl font-semibold text-white>Tools I rely on/h2>p classtext-zinc-400>The stack that keeps the work calm, fast, and resilient./p>/div>div classgrid gap-6 md:grid-cols-3>article classgroup relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20>h2 classtext-base font-semibold tracking-tight text-zinc-100>Editor/h2>p classrelative z-10 mt-2 text-sm text-zinc-400>Neovim with AstroNvim. Codex and Claude Code as agents/p>/article>article classgroup relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20>h2 classtext-base font-semibold tracking-tight text-zinc-100>Stack/h2>p classrelative z-10 mt-2 text-sm text-zinc-400>TypeScript, Go, Kubernetes, Python, NextJS, PostgreSQL/p>/article>article classgroup relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20>h2 classtext-base font-semibold tracking-tight text-zinc-100>Workflow/h2>p classrelative z-10 mt-2 text-sm text-zinc-400>Shape Up work ahead, do deep focused sessions after/p>/article>/div>/section>/div>!--$-->!--/$-->/div>/div>/div>/div>/main>/div>!--$!-->template data-dgstBAILOUT_TO_CLIENT_SIDE_RENDERING>/template>!--/$-->script src/_next/static/chunks/webpack-53d4757151554831.js id_R_ async>/script>script>(self.__next_fself.__next_f||).push(0)/script>script>self.__next_f.push(1,1:\$Sreact.fragment\\n2:I3362,\92\,\static/chunks/fe4b3cca-11165ae6fa8691c2.js\,\846\,\static/chunks/846-b0a9708feed6a08e.js\,\613\,\static/chunks/613-31b0b992cd8d60f8.js\,\177\,\static/chunks/app/layout-36f95ed26c60fc87.js\,\LogRocketProvider\\n3:I6894,\92\,\static/chunks/fe4b3cca-11165ae6fa8691c2.js\,\846\,\static/chunks/846-b0a9708feed6a08e.js\,\613\,\static/chunks/613-31b0b992cd8d60f8.js\,\177\,\static/chunks/app/layout-36f95ed26c60fc87.js\,\default\\n4:I1158,,\\\n5:I1260,,\\\n6:I3113,\92\,\static/chunks/fe4b3cca-11165ae6fa8691c2.js\,\846\,\static/chunks/846-b0a9708feed6a08e.js\,\613\,\static/chunks/613-31b0b992cd8d60f8.js\,\177\,\static/chunks/app/layout-36f95ed26c60fc87.js\,\Analytics\\n7:I460,\92\,\static/chunks/fe4b3cca-11165ae6fa8691c2.js\,\846\,\static/chunks/846-b0a9708feed6a08e.js\,\613\,\static/chunks/613-31b0b992cd8d60f8.js\,\177\,\static/chunks/app/layout-36f95ed26c60fc87.js\,\SpeedInsights\\n8:I940,\846\,\static/chunks/846-b0a9708feed6a08e.js\,\974\,\static/chunks/app/page-8c88eec0e8e72a8d.js\,\Image\\n9:I3915,\846\,\static/chunks/846-b0a9708feed6a08e.js\,\974\,\static/chunks/app/page-8c88eec0e8e72a8d.js\,\\\n11:I2142,,\\\n:HL\/_next/static/media/bb3ef058b751a6ad-s.p.woff2\,\font\,{\crossOrigin\:\\,\type\:\font/woff2\}\n:HL\/_next/static/media/e4af272ccee01ff0-s.p.woff2\,\font\,{\crossOrigin\:\\,\type\:\font/woff2\}\n:HL\/_next/static/css/7ab1372f9d4759f4.css\,\style\\n)/script>script>self.__next_f.push(1,0:{\P\:null,\b\:\GTCdXKj4oXxIMdJ3eibvM\,\p\:\\,\c\:\\,\\,\i\:false,\f\:\\,{\children\:\__PAGE__\,{}},\$undefined\,\$undefined\,true,\\,\$\,\$1\,\c\,{\children\:\$\,\link\,\0\,{\rel\:\stylesheet\,\href\:\/_next/static/css/7ab1372f9d4759f4.css\,\precedence\:\next\,\crossOrigin\:\$undefined\,\nonce\:\$undefined\},\$\,\html\,null,{\lang\:\en\,\className\:\__variable_f367f3 __variable_3c557b\,\children\:\$\,\body\,null,{\className\:\min-h-screen bg-zinc-950 font-sans text-zinc-100 antialiased\,\children\:\$\,\$L2\,null,{},\$\,\div\,null,{\className\:\relative flex min-h-screen w-full flex-col\,\children\:\$\,\$L3\,null,{},\$\,\main\,null,{\className\:\flex-auto pb-24\,\children\:\$\,\div\,null,{\ref\:\$undefined\,\className\:\sm:px-8\,\children\:\$\,\div\,null,{\className\:\mx-auto w-full max-w-7xl lg:px-8\,\children\:\$\,\div\,null,{\ref\:\$undefined\,\className\:\relative px-4 sm:px-8 lg:px-12\,\children\:\$\,\div\,null,{\className\:\mx-auto max-w-2xl lg:max-w-5xl\,\children\:\$\,\$L4\,null,{\parallelRouterKey\:\children\,\error\:\$undefined\,\errorStyles\:\$undefined\,\errorScripts\:\$undefined\,\template\:\$\,\$L5\,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.\}}}},,\forbidden\:\$undefined\,\unauthorized\:\$undefined\}}}}}}},\$\,\$L6\,null,{},\$\,\$L7\,null,{}}}},{\children\:\__PAGE__\,\$\,\$1\,\c\,{\children\:\$\,\div\,null,{\className\:\space-y-24\,\children\:\$\,\section\,null,{\id\:\about\,\className\:\scroll-mt-28 space-y-8 sm:space-y-10 sm:scroll-mt-36\,\children\:\$\,\div\,null,{\children\:\$\,\$L8\,null,{\src\:\/avatar.webp\,\alt\:\Portrait of Greg Konush\,\width\:120,\height\:120,\className\:\h-20 w-20 rounded-full border border-zinc-700/60 object-cover shadow-lg shadow-black/40\,\priority\:true}},\$\,\div\,null,{\className\:\space-y-6\,\children\:\$\,\div\,null,{\className\:\space-y-4\,\children\:\$\,\h1\,null,{\className\:\text-2.25rem font-semibold leading-tight text-white sm:text-2.75rem sm:leading-1.1\,\children\:\Software architect, founder, and partner for ambitious teams.\},\$\,\p\,null,{\className\:\max-w-2xl text-base leading-relaxed text-zinc-400 sm:text-lg\,\children\:\I help founders turn prototypes into durable products - combining systems thinking, pragmatic AI, and hands-on engineering.\}}},\$\,\div\,null,{\className\:\flex flex-wrap items-center gap-4 text-sm\,\children\:\$\,\$L9\,null,{\className\:\inline-flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm outline-offset-2 transition active:transition-none bg-zinc-50 font-medium text-zinc-900 hover:bg-zinc-100 active:bg-zinc-100 active:text-zinc-900/60 dark:bg-zinc-800/50 dark:text-zinc-300 dark:hover:bg-zinc-800 dark:hover:text-zinc-50 dark:active:bg-zinc-800/50 dark:active:text-zinc-50/70\,\href\:\/GregKonushResume.pdf\,\children\:\View resume\},\$\,\$L9\,null,{\className\:\inline-flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm outline-offset-2 transition active:transition-none bg-zinc-800 font-semibold text-zinc-100 hover:bg-zinc-700 active:bg-zinc-800 active:text-zinc-100/70 dark:bg-zinc-700 dark:hover:bg-zinc-600 dark:active:bg-zinc-700 dark:active:text-zinc-100/70\,\href\:\/schedule\,\children\:\Schedule a call\}},\$La\,\$Lb\},\$Lc\,\$Ld\,\$Le\},null,\$Lf\},{},null,false},null,false,\$L10\,false,\m\:\$undefined\,\G\:\$11\,,\s\:false,\S\:true}\n)/script>script>self.__next_f.push(1,1d:I6815,,\OutletBoundary\\n1f:I2126,,\AsyncMetadataOutlet\\n21:I6815,,\ViewportBoundary\\n23:I6815,,\MetadataBoundary\\n24:\$Sreact.suspense\\n12:T526,)/script>script>self.__next_f.push(1,M12 3c-2.444 0-2.75.01-3.71.054-.959.044-1.613.196-2.185.418A4.412 4.412 0 0 0 4.51 4.511c-.5.5-.809 1.002-1.039 1.594-.222.572-.374 1.226-.418 2.184C3.01 9.25 3 9.556 3 12s.01 2.75.054 3.71c.044.959.196 1.613.418 2.185.23.592.538 1.094 1.039 1.595.5.5 1.002.808 1.594 1.038.572.222 1.226.374 2.184.418C9.25 20.99 9.556 21 12 21s2.75-.01 3.71-.054c.959-.044 1.613-.196 2.185-.419a4.412 4.412 0 0 0 1.595-1.038c.5-.5.808-1.002 1.038-1.594.222-.572.374-1.226.418-2.184.044-.96.054-1.267.054-3.711s-.01-2.75-.054-3.71c-.044-.959-.196-1.613-.419-2.185A4.412 4.412 0 0 0 19.49 4.51c-.5-.5-1.002-.809-1.594-1.039-.572-.222-1.226-.374-2.184-.418C14.75 3.01 14.444 3 12 3Zm0 1.622c2.403 0 2.688.009 3.637.052.877.04 1.354.187 1.67.31.421.163.72.358 1.036.673.315.315.51.615.673 1.035.123.317.27.794.31 1.671.043.95.052 1.234.052 3.637s-.009 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.67-.163.421-.358.72-.673 1.036a2.79 2.79 0 0 1-1.035.673c-.317.123-.794.27-1.671.31-.95.043-1.234.052-3.637.052s-2.688-.009-3.637-.052c-.877-.04-1.354-.187-1.67-.31a2.789 2.789 0 0 1-1.036-.673 2.79 2.79 0 0 1-.673-1.035c-.123-.317-.27-.794-.31-1.671-.043-.95-.052-1.234-.052-3.637s.009-2.688.052-3.637c.04-.877.187-1.354.31-1.67.163-.421.358-.72.673-1.036.315-.315.615-.51 1.035-.673.317-.123.794-.27 1.671-.31.95-.043 1.234-.052 3.637-.052Z)/script>script>self.__next_f.push(1,a:\$\,\div\,null,{\className\:\flex items-center gap-5 text-zinc-400\,\children\:\$\,\a\,null,{\href\:\https://github.com/gregkonush\,\target\:\_blank\,\rel\:\noreferrer noopener\,\aria-label\:\GitHub\,\className\:\group -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100\,\children\:\$\,\svg\,null,{\viewBox\:\0 0 24 24\,\aria-hidden\:\true\,\className\:\h-6 w-6 fill-current\,\children\:\$\,\path\,null,{\fillRule\:\evenodd\,\clipRule\:\evenodd\,\d\:\M12 2C6.475 2 2 6.588 2 12.253c0 4.537 2.862 8.369 6.838 9.727.5.09.687-.218.687-.487 0-.243-.013-1.05-.013-1.91C7 20.059 6.35 18.957 6.15 18.38c-.113-.295-.6-1.205-1.025-1.448-.35-.192-.85-.667-.013-.68.788-.012 1.35.744 1.538 1.051.9 1.551 2.338 1.116 2.912.846.088-.666.35-1.115.638-1.371-2.225-.256-4.55-1.14-4.55-5.062 0-1.115.387-2.038 1.025-2.756-.1-.256-.45-1.307.1-2.717 0 0 .837-.269 2.75 1.051.8-.23 1.65-.346 2.5-.346.85 0 1.7.115 2.5.346 1.912-1.333 2.75-1.05 2.75-1.05.55 1.409.2 2.46.1 2.716.637.718 1.025 1.628 1.025 2.756 0 3.934-2.337 4.806-4.562 5.062.362.32.675.936.675 1.897 0 1.371-.013 2.473-.013 2.82 0 .268.188.589.688.486a10.039 10.039 0 0 0 4.932-3.74A10.447 10.447 0 0 0 22 12.253C22 6.588 17.525 2 12 2Z\}}},\$\,\a\,null,{\href\:\https://x.com/gregkonush\,\target\:\_blank\,\rel\:\noreferrer noopener\,\aria-label\:\X (Twitter)\,\className\:\group -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100\,\children\:\$\,\svg\,null,{\viewBox\:\0 0 24 24\,\aria-hidden\:\true\,\className\:\h-6 w-6 fill-current\,\children\:\$\,\path\,null,{\d\:\M13.3174 10.7749L19.1457 4H17.7646L12.7039 9.88256L8.66193 4H4L10.1122 12.8955L4 20H5.38119L10.7254 13.7878L14.994 20H19.656L13.3171 10.7749H13.3174ZM11.4257 12.9738L10.8064 12.0881L5.87886 5.03974H8.00029L11.9769 10.728L12.5962 11.6137L17.7652 19.0075H15.6438L11.4257 12.9742V12.9738Z\}}},\$\,\a\,null,{\href\:\https://www.linkedin.com/in/gregkonush/\,\target\:\_blank\,\rel\:\noreferrer noopener\,\aria-label\:\LinkedIn\,\className\:\group -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100\,\children\:\$\,\svg\,null,{\viewBox\:\0 0 24 24\,\aria-hidden\:\true\,\className\:\h-6 w-6 fill-current\,\children\:\$\,\path\,null,{\d\:\M18.335 18.339H15.67v-4.177c0-.996-.02-2.278-1.39-2.278-1.389 0-1.601 1.084-1.601 2.205v4.25h-2.666V9.75h2.56v1.17h.035c.358-.674 1.228-1.387 2.528-1.387 2.7 0 3.2 1.778 3.2 4.091v4.715zM7.003 8.575a1.546 1.546 0 01-1.548-1.549 1.548 1.548 0 111.547 1.549zm1.336 9.764H5.666V9.75H8.34v8.589zM19.67 3H4.329C3.593 3 3 3.58 3 4.297v15.406C3 20.42 3.594 21 4.328 21h15.338C20.4 21 21 20.42 21 19.703V4.297C21 3.58 20.4 3 19.666 3h.003z\}}},\$\,\a\,null,{\href\:\https://www.instagram.com/gregkonush/\,\target\:\_blank\,\rel\:\noreferrer noopener\,\aria-label\:\Instagram\,\className\:\group -m-2 rounded-full p-2 text-zinc-400 transition hover:text-zinc-100\,\children\:\$\,\svg\,null,{\viewBox\:\0 0 24 24\,\aria-hidden\:\true\,\className\:\h-6 w-6 fill-current\,\children\:\$\,\path\,null,{\d\:\$12\},\$L13\}}}\n)/script>script>self.__next_f.push(1,b:\$\,\dl\,null,{\className\:\grid gap-4 text-sm text-zinc-300 sm:grid-cols-3\,\children\:\$\,\div\,\Currently\,{\className\:\space-y-1\,\children\:\$\,\dt\,null,{\className\:\text-xs uppercase tracking-widest text-zinc-500\,\children\:\Currently\},\$\,\dd\,null,{\className\:\text-base font-medium text-zinc-100\,\children\:\Partnering with founders as a fractional CTO\}},\$\,\div\,\Based in\,{\className\:\space-y-1\,\children\:\$\,\dt\,null,{\className\:\text-xs uppercase tracking-widest text-zinc-500\,\children\:\Based in\},\$\,\dd\,null,{\className\:\text-base font-medium text-zinc-100\,\children\:\San Francisco Bay Area\}},\$\,\div\,\Focus\,{\className\:\space-y-1\,\children\:\$\,\dt\,null,{\className\:\text-xs uppercase tracking-widest text-zinc-500\,\children\:\Focus\},\$\,\dd\,null,{\className\:\text-base font-medium text-zinc-100\,\children\:\Resilient platforms, AI-assisted workflows, product velocity\}}}\n)/script>script>self.__next_f.push(1,c:\$\,\section\,null,{\id\:\articles\,\className\:\scroll-mt-28 space-y-12 sm:scroll-mt-36\,\children\:\$\,\div\,null,{\className\:\mx-auto grid w-full max-w-6xl grid-cols-1 items-start gap-y-16 lg:grid-cols-2 lg:gap-20\,\children\:\$\,\div\,null,{\className\:\flex flex-col gap-20 lg:pr-8\,\children\:\$\,\article\,\vercel-ai-sdk-nextjs\,{\className\:\group relative flex flex-col items-start\,\children\:\$\,\time\,null,{\className\:\relative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500\,\dateTime\:\2025-06-12\,\children\:\$\,\span\,null,{\className\:\absolute inset-y-0 left-0 flex items-center\,\aria-hidden\:\true\,\children\:\$\,\span\,null,{\className\:\h-4 w-0.5 rounded-full bg-zinc-700\}},\June 12, 2025\},\$\,\h3\,null,{\className\:\tracking-tight text-lg font-semibold text-white\,\children\:\$\,\div\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50\},\$\,\$L9\,null,{\href\:\/blog/vercel-ai-sdk-nextjs\,\children\:\$\,\span\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl\},\$\,\span\,null,{\className\:\relative z-10\,\children\:\Vercel AI SDK with Next.js\}}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base\,\children\:\Shipping real-time AI flows in Next.js while keeping latency low, UI snappy, and observability first-class.\},\$\,\div\,null,{\aria-hidden\:\true\,\className\:\relative z-10 mt-4 flex items-center text-sm font-medium text-teal-400\,\children\:\Read article\,\$\,\svg\,null,{\viewBox\:\0 0 16 16\,\fill\:\none\,\aria-hidden\:\true\,\className\:\ml-1 h-4 w-4 stroke-current\,\children\:\$\,\path\,null,{\d\:\M6.75 5.75 9.25 8l-2.5 2.25\,\strokeWidth\:1.5,\strokeLinecap\:\round\,\strokeLinejoin\:\round\}}}},\$\,\article\,\kubernetes-installation-in-harvester\,{\className\:\group relative flex flex-col items-start\,\children\:\$\,\time\,null,{\className\:\relative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500\,\dateTime\:\2025-05-02\,\children\:\$\,\span\,null,{\className\:\absolute inset-y-0 left-0 flex items-center\,\aria-hidden\:\true\,\children\:\$\,\span\,null,{\className\:\h-4 w-0.5 rounded-full bg-zinc-700\}},\May 2, 2025\},\$\,\h3\,null,{\className\:\tracking-tight text-lg font-semibold text-white\,\children\:\$\,\div\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50\},\$\,\$L9\,null,{\href\:\/blog/kubernetes-installation-in-harvester\,\children\:\$\,\span\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl\},\$\,\span\,null,{\className\:\relative z-10\,\children\:\Kubernetes Installation in Harvester\}}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base\,\children\:\Standing up controlled Kubernetes clusters on Harvester with GitOps guardrails and day-two automation baked in.\},\$\,\div\,null,{\aria-hidden\:\true\,\className\:\relative z-10 mt-4 flex items-center text-sm font-medium text-teal-400\,\children\:\Read article\,\$\,\svg\,null,{\viewBox\:\0 0 16 16\,\fill\:\none\,\aria-hidden\:\true\,\className\:\ml-1 h-4 w-4 stroke-current\,\children\:\$\,\path\,null,{\d\:\M6.75 5.75 9.25 8l-2.5 2.25\,\strokeWidth\:1.5,\strokeLinecap\:\round\,\strokeLinejoin\:\round\}}}},\$\,\article\,\astro-for-personal-website\,{\className\:\group relative flex flex-col items-start\,\children\:\$\,\time\,null,{\className\:\relative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500\,\dateTime\:\2025-03-18\,\children\:\$\,\span\,null,{\className\:\absolute inset-y-0 left-0 flex items-center\,\aria-hidden\:\true\,\children\:\$L14\},\March 18, 2025\},\$L15\,\$L16\,\$L17\},\$L18\,\$L19\,\$L1a\},\$L1b\}}\n)/script>script>self.__next_f.push(1,d:\$\,\section\,null,{\id\:\projects\,\className\:\scroll-mt-28 space-y-10 sm:scroll-mt-36\,\children\:\$\,\div\,null,{\className\:\flex flex-col gap-3 md:flex-row md:items-end md:justify-between\,\children\:\$\,\div\,null,{\children\:\$\,\h2\,null,{\className\:\text-3xl font-semibold text-white\,\children\:\What I’m building\},\$\,\p\,null,{\className\:\text-zinc-400\,\children\:\Engagements and experiments that keep my curiosity sharp.\}}},\$\,\div\,null,{\className\:\grid gap-6 md:grid-cols-2 xl:grid-cols-3\,\children\:\$\,\article\,\proompteng\,{\className\:\group relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h2\,null,{\className\:\text-base font-semibold tracking-tight text-zinc-100\,\children\:\$\,\a\,null,{\href\:\https://github.com/proompteng/proompteng\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 transition hover:text-teal-300\,\children\:\proompteng\}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm text-zinc-400\,\children\:\Kubernetes control plane for AI agents\},\$\,\a\,null,{\href\:\https://github.com/proompteng/proompteng\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300\,\children\:\Learn more\,\$\,\span\,null,{\aria-hidden\:true,\className\:\ml-2\,\children\:\→\}}},\$\,\article\,\Experimentation Lab\,{\className\:\group relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h2\,null,{\className\:\text-base font-semibold tracking-tight text-zinc-100\,\children\:\$\,\a\,null,{\href\:\https://github.com/gregkonush/lab\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 transition hover:text-teal-300\,\children\:\Experimentation Lab\}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm text-zinc-400\,\children\:\Experiments with different tooling across stack, do check it out\},\$\,\a\,null,{\href\:\https://github.com/gregkonush/lab\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300\,\children\:\Learn more\,\$\,\span\,null,{\aria-hidden\:true,\className\:\ml-2\,\children\:\→\}}},\$\,\article\,\Milkshake\,{\className\:\group relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h2\,null,{\className\:\text-base font-semibold tracking-tight text-zinc-100\,\children\:\$\,\a\,null,{\href\:\https://github.com/gregkonush/milkshake\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 transition hover:text-teal-300\,\children\:\Milkshake\}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm text-zinc-400\,\children\:\CLI to generate images with Nano Banana that gets copied into clipboard\},\$\,\a\,null,{\href\:\https://github.com/gregkonush/milkshake\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300\,\children\:\Learn more\,\$\,\span\,null,{\aria-hidden\:true,\className\:\ml-2\,\children\:\→\}}},\$\,\article\,\MLX Dev Agent\,{\className\:\group relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h2\,null,{\className\:\text-base font-semibold tracking-tight text-zinc-100\,\children\:\$\,\a\,null,{\href\:\https://github.com/gregkonush/mlx-agent\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 transition hover:text-teal-300\,\children\:\MLX Dev Agent\}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm text-zinc-400\,\children\:\Local first agent that utilizes Apples M chips\},\$L1c\}}}\n)/script>script>self.__next_f.push(1,e:\$\,\section\,null,{\id\:\tools\,\className\:\scroll-mt-28 space-y-10 sm:scroll-mt-36\,\children\:\$\,\div\,null,{\children\:\$\,\h2\,null,{\className\:\text-3xl font-semibold text-white\,\children\:\Tools I rely on\},\$\,\p\,null,{\className\:\text-zinc-400\,\children\:\The stack that keeps the work calm, fast, and resilient.\}},\$\,\div\,null,{\className\:\grid gap-6 md:grid-cols-3\,\children\:\$\,\article\,\Editor\,{\className\:\group relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h2\,null,{\className\:\text-base font-semibold tracking-tight text-zinc-100\,\children\:\Editor\},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm text-zinc-400\,\children\:\Neovim with AstroNvim. Codex and Claude Code as agents\}},\$\,\article\,\Stack\,{\className\:\group relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h2\,null,{\className\:\text-base font-semibold tracking-tight text-zinc-100\,\children\:\Stack\},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm text-zinc-400\,\children\:\TypeScript, Go, Kubernetes, Python, NextJS, PostgreSQL\}},\$\,\article\,\Workflow\,{\className\:\group relative flex flex-col items-start rounded-2xl border border-zinc-800/60 bg-zinc-900/60 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h2\,null,{\className\:\text-base font-semibold tracking-tight text-zinc-100\,\children\:\Workflow\},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm text-zinc-400\,\children\:\Shape Up work ahead, do deep focused sessions after\}}}}\n)/script>script>self.__next_f.push(1,f:\$\,\$L1d\,null,{\children\:\$L1e\,\$\,\$L1f\,null,{\promise\:\$@20\}}\n10:\$\,\$1\,\h\,{\children\:null,\$\,\$L21\,null,{\children\:\$L22\},\$\,\meta\,null,{\name\:\next-size-adjust\,\content\:\\},\$\,\$L23\,null,{\children\:\$\,\div\,null,{\hidden\:true,\children\:\$\,\$24\,null,{\fallback\:null,\children\:\$L25\}}}}\n)/script>script>self.__next_f.push(1,13:\$\,\path\,null,{\d\:\M12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6Zm0-7.622a4.622 4.622 0 1 0 0 9.244 4.622 4.622 0 0 0 0-9.244Zm5.884-.182a1.08 1.08 0 1 1-2.16 0 1.08 1.08 0 0 1 2.16 0Z\}\n14:\$\,\span\,null,{\className\:\h-4 w-0.5 rounded-full bg-zinc-700\}\n15:\$\,\h3\,null,{\className\:\tracking-tight text-lg font-semibold text-white\,\children\:\$\,\div\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50\},\$\,\$L9\,null,{\href\:\/blog/astro-for-personal-website\,\children\:\$\,\span\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl\},\$\,\span\,null,{\className\:\relative z-10\,\children\:\Astro for personal website\}}}\n16:\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base\,\children\:\I tried to use astro my own website, great framework all around\}\n17:\$\,\div\,null,{\aria-hidden\:\true\,\className\:\relative z-10 mt-4 flex items-center text-sm font-medium text-teal-400\,\children\:\Read article\,\$\,\svg\,null,{\viewBox\:\0 0 16 16\,\fill\:\none\,\aria-hidden\:\true\,\className\:\ml-1 h-4 w-4 stroke-current\,\children\:\$\,\path\,null,{\d\:\M6.75 5.75 9.25 8l-2.5 2.25\,\strokeWidth\:1.5,\strokeLinecap\:\round\,\strokeLinejoin\:\round\}}}\n)/script>script>self.__next_f.push(1,18:\$\,\article\,\rails-with-graphql\,{\className\:\group relative flex flex-col items-start\,\children\:\$\,\time\,null,{\className\:\relative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500\,\dateTime\:\2025-01-27\,\children\:\$\,\span\,null,{\className\:\absolute inset-y-0 left-0 flex items-center\,\aria-hidden\:\true\,\children\:\$\,\span\,null,{\className\:\h-4 w-0.5 rounded-full bg-zinc-700\}},\January 27, 2025\},\$\,\h3\,null,{\className\:\tracking-tight text-lg font-semibold text-white\,\children\:\$\,\div\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50\},\$\,\$L9\,null,{\href\:\/blog/rails-with-graphql\,\children\:\$\,\span\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl\},\$\,\span\,null,{\className\:\relative z-10\,\children\:\Rails with GraphQL\}}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base\,\children\:\Combining the Rails toolkit with GraphQL schemas to speed up internal tooling, and how to keep it maintainable.\},\$\,\div\,null,{\aria-hidden\:\true\,\className\:\relative z-10 mt-4 flex items-center text-sm font-medium text-teal-400\,\children\:\Read article\,\$\,\svg\,null,{\viewBox\:\0 0 16 16\,\fill\:\none\,\aria-hidden\:\true\,\className\:\ml-1 h-4 w-4 stroke-current\,\children\:\$\,\path\,null,{\d\:\M6.75 5.75 9.25 8l-2.5 2.25\,\strokeWidth\:1.5,\strokeLinecap\:\round\,\strokeLinejoin\:\round\}}}}\n)/script>script>self.__next_f.push(1,19:\$\,\article\,\monorepo-setup-with-nx-cli\,{\className\:\group relative flex flex-col items-start\,\children\:\$\,\time\,null,{\className\:\relative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500\,\dateTime\:\2024-11-09\,\children\:\$\,\span\,null,{\className\:\absolute inset-y-0 left-0 flex items-center\,\aria-hidden\:\true\,\children\:\$\,\span\,null,{\className\:\h-4 w-0.5 rounded-full bg-zinc-700\}},\November 9, 2024\},\$\,\h3\,null,{\className\:\tracking-tight text-lg font-semibold text-white\,\children\:\$\,\div\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50\},\$\,\$L9\,null,{\href\:\/blog/monorepo-setup-with-nx-cli\,\children\:\$\,\span\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl\},\$\,\span\,null,{\className\:\relative z-10\,\children\:\Monorepo setup with NX CLI tooling\}}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base\,\children\:\Attempted to use NX CLI for my own needs but my monorepo is multi-language\},\$\,\div\,null,{\aria-hidden\:\true\,\className\:\relative z-10 mt-4 flex items-center text-sm font-medium text-teal-400\,\children\:\Read article\,\$\,\svg\,null,{\viewBox\:\0 0 16 16\,\fill\:\none\,\aria-hidden\:\true\,\className\:\ml-1 h-4 w-4 stroke-current\,\children\:\$\,\path\,null,{\d\:\M6.75 5.75 9.25 8l-2.5 2.25\,\strokeWidth\:1.5,\strokeLinecap\:\round\,\strokeLinejoin\:\round\}}}}\n)/script>script>self.__next_f.push(1,1a:\$\,\article\,\modern-tailwindcss-nextjs\,{\className\:\group relative flex flex-col items-start\,\children\:\$\,\time\,null,{\className\:\relative z-10 order-first mb-3 flex items-center pl-3.5 text-xs font-semibold text-zinc-500\,\dateTime\:\2024-08-21\,\children\:\$\,\span\,null,{\className\:\absolute inset-y-0 left-0 flex items-center\,\aria-hidden\:\true\,\children\:\$\,\span\,null,{\className\:\h-4 w-0.5 rounded-full bg-zinc-700\}},\August 21, 2024\},\$\,\h3\,null,{\className\:\tracking-tight text-lg font-semibold text-white\,\children\:\$\,\div\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-zinc-800/50\},\$\,\$L9\,null,{\href\:\/blog/modern-tailwindcss-nextjs\,\children\:\$\,\span\,null,{\className\:\absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl\},\$\,\span\,null,{\className\:\relative z-10\,\children\:\Modern Tailwind CSS and Next.js setup\}}},\$\,\p\,null,{\className\:\relative z-10 mt-2 text-sm leading-relaxed text-zinc-400 sm:text-base\,\children\:\Updated version of tailwindcss v4 setup in nextjs, outdated, you can just create next with tailwindcss\},\$\,\div\,null,{\aria-hidden\:\true\,\className\:\relative z-10 mt-4 flex items-center text-sm font-medium text-teal-400\,\children\:\Read article\,\$\,\svg\,null,{\viewBox\:\0 0 16 16\,\fill\:\none\,\aria-hidden\:\true\,\className\:\ml-1 h-4 w-4 stroke-current\,\children\:\$\,\path\,null,{\d\:\M6.75 5.75 9.25 8l-2.5 2.25\,\strokeWidth\:1.5,\strokeLinecap\:\round\,\strokeLinejoin\:\round\}}}}\n)/script>script>self.__next_f.push(1,1b:\$\,\div\,null,{\className\:\space-y-8 lg:pl-8\,\children\:\$\,\div\,null,{\className\:\rounded-2xl border border-zinc-800/70 bg-zinc-900/50 p-6 shadow-xl shadow-black/20\,\children\:\$\,\h3\,null,{\className\:\flex items-center text-sm font-semibold text-zinc-400\,\children\:\$\,\svg\,null,{\viewBox\:\0 0 24 24\,\fill\:\none\,\strokeWidth\:\1.5\,\strokeLinecap\:\round\,\strokeLinejoin\:\round\,\aria-hidden\:true,\className\:\mr-3 h-5 w-5 flex-none text-zinc-500\,\children\:\$\,\path\,null,{\d\:\M2.75 9.75a3 3 0 0 1 3-3h12.5a3 3 0 0 1 3 3v8.5a3 3 0 0 1-3 3H5.75a3 3 0 0 1-3-3v-8.5Z\,\className\:\fill-zinc-950/40 stroke-zinc-500\},\$\,\path\,null,{\d\:\M3 14.25h6.249c.484 0 .952-.002 1.316.319l.777.682a.996.996 0 0 0 1.316 0l.777-.682c.364-.32.832-.319 1.316-.319H21M8.75 6.5V4.75a2 2 0 0 1 2-2h2.5a2 2 0 0 1 2 2V6.5\,\className\:\stroke-zinc-500\}},\Work\},\$\,\ul\,null,{\className\:\mt-6 space-y-4\,\children\:\$\,\li\,\Truewind\,{\className\:\flex items-center justify-between gap-4\,\children\:\$\,\div\,null,{\className\:\flex items-center gap-3\,\children\:\$\,\div\,null,{\className\:\relative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70\,\children\:\$\,\div\,null,{\className\:\relative h-full w-full\,\children\:\$\,\$L8\,null,{\src\:\/logos/truewind.png\,\alt\:\Truewind logo\,\fill\:true,\className\:\object-contain\}}},\$\,\div\,null,{\className\:\min-w-0\,\children\:\$\,\p\,null,{\className\:\text-sm font-medium text-zinc-200\,\children\:\Truewind\},\$\,\p\,null,{\className\:\text-xs text-zinc-400\,\children\:\Founding Software Engineer\}}},\$\,\span\,null,{\className\:\shrink-0 text-xs text-zinc-500\,\children\:\Aug 2024 - Present\}},\$\,\li\,\Flexport\,{\className\:\flex items-center justify-between gap-4\,\children\:\$\,\div\,null,{\className\:\flex items-center gap-3\,\children\:\$\,\div\,null,{\className\:\relative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70\,\children\:\$\,\div\,null,{\className\:\relative h-full w-full\,\children\:\$\,\$L8\,null,{\src\:\/logos/flexport.png\,\alt\:\Flexport logo\,\fill\:true,\className\:\object-contain\}}},\$\,\div\,null,{\className\:\min-w-0\,\children\:\$\,\p\,null,{\className\:\text-sm font-medium text-zinc-200\,\children\:\Flexport\},\$\,\p\,null,{\className\:\text-xs text-zinc-400\,\children\:\Staff Software Engineer\}}},\$\,\span\,null,{\className\:\shrink-0 text-xs text-zinc-500\,\children\:\Jul 2021 - Jul 2024\}},\$\,\li\,\Illumio\,{\className\:\flex items-center justify-between gap-4\,\children\:\$\,\div\,null,{\className\:\flex items-center gap-3\,\children\:\$\,\div\,null,{\className\:\relative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70\,\children\:\$\,\div\,null,{\className\:\relative h-full w-full\,\children\:\$\,\$L8\,null,{\src\:\/logos/illumio.png\,\alt\:\Illumio logo\,\fill\:true,\className\:\object-contain\}}},\$\,\div\,null,{\className\:\min-w-0\,\children\:\$\,\p\,null,{\className\:\text-sm font-medium text-zinc-200\,\children\:\Illumio\},\$\,\p\,null,{\className\:\text-xs text-zinc-400\,\children\:\Senior Software Engineer\}}},\$\,\span\,null,{\className\:\shrink-0 text-xs text-zinc-500\,\children\:\Jul 2019 - Jul 2021\}},\$\,\li\,\Okta\,{\className\:\flex items-center justify-between gap-4\,\children\:\$\,\div\,null,{\className\:\flex items-center gap-3\,\children\:\$\,\div\,null,{\className\:\relative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70\,\children\:\$\,\div\,null,{\className\:\relative h-full w-full\,\children\:\$\,\$L8\,null,{\src\:\/logos/okta.png\,\alt\:\Okta logo\,\fill\:true,\className\:\object-contain\}}},\$\,\div\,null,{\className\:\min-w-0\,\children\:\$\,\p\,null,{\className\:\text-sm font-medium text-zinc-200\,\children\:\Okta\},\$\,\p\,null,{\className\:\text-xs text-zinc-400\,\children\:\Senior Software Engineer\}}},\$\,\span\,null,{\className\:\shrink-0 text-xs text-zinc-500\,\children\:\Aug 2018 - Jul 2019\}},\$L26\,\$L27\,\$L28\},\$L29\}}\n)/script>script>self.__next_f.push(1,1c:\$\,\a\,null,{\href\:\https://github.com/gregkonush/mlx-agent\,\target\:\_blank\,\rel\:\noreferrer noopener\,\className\:\relative z-10 mt-4 inline-flex items-center text-sm font-medium text-teal-400 transition hover:text-teal-300\,\children\:\Learn more\,\$\,\span\,null,{\aria-hidden\:true,\className\:\ml-2\,\children\:\→\}}\n)/script>script>self.__next_f.push(1,26:\$\,\li\,\Eventbrite\,{\className\:\flex items-center justify-between gap-4\,\children\:\$\,\div\,null,{\className\:\flex items-center gap-3\,\children\:\$\,\div\,null,{\className\:\relative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70\,\children\:\$\,\div\,null,{\className\:\relative h-full w-full\,\children\:\$\,\$L8\,null,{\src\:\/logos/eventbrite.png\,\alt\:\Eventbrite logo\,\fill\:true,\className\:\object-contain\}}},\$\,\div\,null,{\className\:\min-w-0\,\children\:\$\,\p\,null,{\className\:\text-sm font-medium text-zinc-200\,\children\:\Eventbrite\},\$\,\p\,null,{\className\:\text-xs text-zinc-400\,\children\:\Software Engineer\}}},\$\,\span\,null,{\className\:\shrink-0 text-xs text-zinc-500\,\children\:\Sep 2017 - Aug 2018\}}\n)/script>script>self.__next_f.push(1,27:\$\,\li\,\Ticketfly\,{\className\:\flex items-center justify-between gap-4\,\children\:\$\,\div\,null,{\className\:\flex items-center gap-3\,\children\:\$\,\div\,null,{\className\:\relative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70\,\children\:\$\,\div\,null,{\className\:\relative h-full w-full\,\children\:\$\,\$L8\,null,{\src\:\/logos/ticketfly.png\,\alt\:\Ticketfly logo\,\fill\:true,\className\:\object-contain\}}},\$\,\div\,null,{\className\:\min-w-0\,\children\:\$\,\p\,null,{\className\:\text-sm font-medium text-zinc-200\,\children\:\Ticketfly\},\$\,\p\,null,{\className\:\text-xs text-zinc-400\,\children\:\Software Engineer\}}},\$\,\span\,null,{\className\:\shrink-0 text-xs text-zinc-500\,\children\:\Mar 2017 - Sep 2017\}}\n)/script>script>self.__next_f.push(1,28:\$\,\li\,\Narvar\,{\className\:\flex items-center justify-between gap-4\,\children\:\$\,\div\,null,{\className\:\flex items-center gap-3\,\children\:\$\,\div\,null,{\className\:\relative mt-1 flex h-11 w-11 flex-none items-center justify-center overflow-hidden rounded-full border border-zinc-700/60 bg-zinc-900/70\,\children\:\$\,\div\,null,{\className\:\relative h-full w-full\,\children\:\$\,\$L8\,null,{\src\:\/logos/narvar.png\,\alt\:\Narvar logo\,\fill\:true,\className\:\object-contain\}}},\$\,\div\,null,{\className\:\min-w-0\,\children\:\$\,\p\,null,{\className\:\text-sm font-medium text-zinc-200\,\children\:\Narvar\},\$\,\p\,null,{\className\:\text-xs text-zinc-400\,\children\:\Software Development Engineer in Test\}}},\$\,\span\,null,{\className\:\shrink-0 text-xs text-zinc-500\,\children\:\Sep 2015 - Mar 2017\}}\n)/script>script>self.__next_f.push(1,29:\$\,\$L9\,null,{\className\:\inline-flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm outline-offset-2 transition active:transition-none bg-zinc-50 font-medium text-zinc-900 hover:bg-zinc-100 active:bg-zinc-100 active:text-zinc-900/60 dark:bg-zinc-800/50 dark:text-zinc-300 dark:hover:bg-zinc-800 dark:hover:text-zinc-50 dark:active:bg-zinc-800/50 dark:active:text-zinc-50/70 mt-6 w-full\,\href\:\/GregKonushResume.pdf\,\children\:\Download resume\,\$\,\svg\,null,{\viewBox\:\0 0 16 16\,\fill\:\none\,\aria-hidden\:true,\className\:\h-3.5 w-3.5\,\children\:\$\,\path\,null,{\d\:\M4.75 8.75 8 12.25m0 0 3.25-3.5M8 12.25v-8.5\,\strokeWidth\:1.5,\strokeLinecap\:\round\,\strokeLinejoin\:\round\,\className\:\stroke-zinc-500\}}}\n)/script>script>self.__next_f.push(1,22:\$\,\meta\,\0\,{\charSet\:\utf-8\},\$\,\meta\,\1\,{\name\:\viewport\,\content\:\widthdevice-width, initial-scale1\}\n1e:null\n)/script>script>self.__next_f.push(1,20:{\metadata\:\$\,\title\,\0\,{\children\:\Greg Konush || Software Architect\},\$\,\meta\,\1\,{\name\:\description\,\content\:\Greg Konushs website about tech things\},\$\,\meta\,\2\,{\name\:\author\,\content\:\Greg Konush\},\$\,\meta\,\3\,{\name\:\keywords\,\content\:\Greg Konush,software engineer,software architect,CTO,startup builder,investor\},\error\:null,\digest\:\$undefined\}\n)/script>script>self.__next_f.push(1,25:\$20:metadata\\n)/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]