1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3415],{127:(e,t,r)=>{"use strict";r.d(t,{default:()=>n});let n=(0,r(7909).default)(()=>r.e(3723).then(r.bind(r,3723)),{loadableGenerated:{webpack:()=>[3723]},ssr:!1})},506:(e,t,r)=>{"use strict";r.d(t,{Z_:()=>u,P:()=>x,h8:()=>n,PG:()=>p,VV:()=>i,m5:()=>l,Ti:()=>m,Yl:()=>f});let n=(e,t,r,n)=>{let l=.022*Math.sin(.018*e+.6)+.014*Math.sin(.052*e);return Math.max(0,Math.min(1,(n*(.5+.2*(e/r*2-1)**2+l)-t)/(.09*n)))},l=(e,t,r,n)=>{let l=Math.min(1,(Math.min(e,r-e)/(.16*r))**1.2);return Math.max(0,(1-((t-n/2)/(n/2))**2+.12*Math.sin(.05*e))*l)},a=e=>e<0||e>=2.1?0:(1-e/2.1)**1.5;function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:42,t=new Float64Array(40),r=new Float64Array(40),n=new Float64Array(40),l=new Float64Array(40).fill(-1/0),i=e*e,s=0,o=NaN,c=NaN,d=-1,h=0,m=0,u=(e,s,u)=>{if(e!==o||s!==c||u!==d){o=e,c=s,d=u,h=0,m=0;for(let o=0;o<40;o++){let c=a(u-l[o]);if(c<=0)continue;let d=e-t[o],x=s-r[o],f=1-(d*d+x*x)/i;if(f<=0)continue;let p=f*c*(.34+1.1*n[o]);p<=h||(h=p,m=c*(.5+2.3*n[o]))}}};return{add:(e,a,i,o)=>{t[s]=e,r[s]=a,n[s]=i**2,l[s]=o,s=(s+1)%40},mask:e=>(t,r)=>(u(t,r,e),h>1?1:h),glow:e=>(t,r)=>(u(t,r,e),m),bounds:n=>{let i=1/0,s=-1/0,o=1/0,c=-1/0;for(let e=0;e<40;e++)!(0>=a(n-l[e]))&&(t[e]<i&&(i=t[e]),t[e]>s&&(s=t[e]),r[e]<o&&(o=r[e]),r[e]>c&&(c=r[e]));return i>s?null:{x:i-e,y:o-e,w:s-i+2*e,h:c-o+2*e}}}}let s=2*Math.PI,o=(e,t)=>{let r=43758.5453*Math.sin(127.1*e+311.7*t);return r-Math.floor(r)},c=(e,t,r,n,l,a)=>{let i=Math.cos(a),s=Math.sin(a);e.beginPath();for(let a=0;a<3;a++){let o=(t[2*a]-r)*l,c=(t[2*a+1]-n)*l;e[0===a?"moveTo":"lineTo"](r+o*i-c*s,n+o*s+c*i)}e.closePath()},d=(e,t,r)=>{let n=e*r,l=t*r;return(e+t&1)==0?[[n,l,n+r,l,n+r,l+r],[n,l,n+r,l+r,n,l+r]]:[[n,l,n+r,l,n,l+r],[n+r,l,n+r,l+r,n,l+r]]},h=(e,t,r,n,l,a)=>{let i=(a[0]+a[2]+a[4])/3,d=(a[1]+a[3]+a[5])/3,h=t.mask(i,d,t.w,t.h);if(h<.02||o(2*r+l,n)>h)return;let[m,u]=((e,t)=>{let r=o(e,t)*s;return[Math.cos(r),Math.sin(r)]})(2*r+l,n),x=((e,t,r,n,l,a)=>{let i=l-e,s=a-t,o=Math.hypot(i,s)||1;return Math.max(0,(r*i+n*s)/o)**5*(.5+.5*Math.exp(-o/380))})(i,d,m,u,t.light.x,t.light.y),f=((e,t,r)=>t>.6&&r>.9?e.red:t>.42?e.glow:e.ink)(t.colors,x,o(3*r+l,n)),p=.03*((e,t,r)=>(Math.sin(.015*e+.01*t+.5*r)+Math.sin((e-t)*.012-.4*r))*.25+.5)(i,d,t.t),g=t.brightness?t.brightness(i,d,t.w,t.h):1;if(o(5*r+l,n)>.4){e.globalAlpha=Math.min(.85,(.045+.85*x+p)*t.intensity*g),e.fillStyle=f,c(e,a,i,d,.9,.05*Math.sin(.5*t.t+6*o(r,n))),e.fill();return}e.globalAlpha=Math.min(.8,(.04+.7*x+p)*t.intensity*g),e.strokeStyle=f,e.lineWidth=.85+.9*x,c(e,a,i,d,.82,0),e.stroke()},m=(e,t)=>{var r;let n=t.cell,l=null!=(r=t.rect)?r:{x:0,y:0,w:t.w,h:t.h},a=Math.floor(l.x/n),i=Math.ceil((l.x+l.w)/n),s=Math.floor(l.y/n),o=Math.ceil((l.y+l.h)/n);((e,t,r)=>{let n=t.x-2,l=t.y-2,a=t.w+4,i=t.h+4;if(!r)return e.clearRect(n,l,a,i);e.fillStyle=r,e.fillRect(n,l,a,i)})(e,{x:a*n,y:s*n,w:(i-a)*n,h:(o-s)*n},t.background),e.lineJoin="round";for(let r=s;r<o;r++)for(let l=a;l<i;l++){let a=d(l,r,n);h(e,t,l,r,0,a[0]),h(e,t,l,r,1,a[1])}e.globalAlpha=1},u=32,x=82;function f(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={ink:"#6f6f6f",glow:"#39342e",red:"#c8483c"},n=()=>{let t=e.theme?"dark"===e.theme:document.documentElement.classList.contains("dark")||document.body.classList.contains("dark");r.ink=t?e.theme?"#c9c6c0":getComputedStyle(document.body).color||"#d0d0d0":"#6f6f6f",r.glow=t?"#f4efe6":"#39342e",r.red=e.primary||getComputedStyle(document.documentElement).getPropertyValue("--primary").trim()||"#c8483c"};n();let l=new MutationObserver(()=>{n(),null==t||t()});return l.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),l.observe(document.body,{attributes:!0,attributeFilter:["class"]}),{colors:r,stop:()=>l.disconnect()}}function p(e,t){var r,n,l;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e.getContext("2d");if(!i)return()=>{};let s=null!=(r=a.cell)?r:16,o=null!=(n=a.intensity)?n:1,c=(e,r,n)=>{var l,c;null==(l=a.beforeFrame)||l.call(a,p,g,e),m(i,{w:p,h:g,t:e,light:{x:r,y:n},colors:d,mask:t,cell:s,intensity:o,background:a.background,brightness:a.brightness}
1),null==(c=a.onFrame)||c.call(a,i,p,g,e)},{colors:d,stop:h}=f(a,()=>void(b&&c(0,p*w.x,g*w.y))),p=0,g=0,v=()=>{if(a.size){p=a.size.w,g=a.size.h,e.width=p,e.height=g,i.setTransform(1,0,0,1,0,0);return}let t=Math.min(2,window.devicePixelRatio||1);p=e.clientWidth,g=e.clientHeight,e.width=p*t,e.height=g*t,i.setTransform(t,0,0,t,0,0)};v();let w=null!=(l=a.staticLight)?l:{x:.3,y:.3},b=!1===a.animate||window.matchMedia("(prefers-reduced-motion: reduce)").matches,y=new ResizeObserver(()=>{v(),b&&c(0,p*w.x,g*w.y)});if(y.observe(e),b)return c(0,p*w.x,g*w.y),()=>{h(),y.disconnect()};let j={x:-9999,y:-9999,active:!1},k=t=>{let r=e.getBoundingClientRect();j.x=(t.clientX-r.left)*(p/r.width),j.y=(t.clientY-r.top)*(g/r.height),j.active=!0},N=()=>{j.active=!1};e.addEventListener("pointermove",k),e.addEventListener("pointerleave",N);let M=!0,E=new IntersectionObserver(e=>{let[t]=e;M=t.isIntersecting},{threshold:0});E.observe(e);let S=0,F=null,I=-1,R=-1,z=-1e9,C=null,P=!1,A=e=>{var t;S=requestAnimationFrame(A),null===F&&(F=e);let r=(e-F)/1e3,n=(e=>{if(j.active)return P=!0,C=null,j;(P||!C)&&(C={x:I<0?.5*p:I,y:R<0?.4*g:R,t:e},P=!1);var t=C,r=p,n=g;let l=e-t.t;return{x:t.x+Math.sin(.25*l)*r*.16+Math.sin(.4*l)*r*.06,y:t.y+Math.sin(.19*l)*n*.16+Math.sin(.33*l)*n*.06}})(r);I<0&&(I=n.x,R=n.y),I+=(n.x-I)*.25,R+=(n.y-R)*.25;let l=j.active||(null==(t=a.eager)?void 0:t.call(a))?u:x;M&&e-z>=l&&(z=e,c(r,I,R))};return S=requestAnimationFrame(A),()=>{cancelAnimationFrame(S),h(),y.disconnect(),E.disconnect(),e.removeEventListener("pointermove",k),e.removeEventListener("pointerleave",N)}}},870:(e,t,r)=>{"use strict";r.d(t,{Abbreviation:()=>a});
1var n=r(5155),l=r(2115);let a=e=>{let{label:t,children:r,className:a}=e,[i,s]=(0,l.useState)(!1),o=(0,l.useRef)(null),c=(0,l.useId)();return(0,l.useEffect)(()=>{if(!i)return;let e=e=>{var t;(null==(t=o.current)?void 0:t.contains(e.target))||s(!1)},t=e=>{"Escape"===e.key&&s(!1)};return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[i]),(0,n.jsxs)("span",{ref:o,className:"relative inline align-baseline",children:[(0,n.jsx)("button",{type:"button","aria-describedby":i?c:void 0,"aria-expanded":i,onClick:()=>s(e=>!e),onPointerEnter:e=>{"mouse"===e.pointerType&&s(!0)},onPointerLeave:e=>{"mouse"===e.pointerType&&s(!1)},onFocus:()=>s(!0),onBlur:()=>s(!1),className:"inline align-baseline cursor-help underline decoration-dotted decoration-current underline-offset-4 ".concat(null!=a?a:""),children:r}),(0,n.jsx)("span",{id:c,role:"tooltip",className:"pointer-events-none absolute bottom-full left-1/2 z-50 mb-2 w-max max-w-[min(18rem,70vw)] -translate-x-1/2 rounded-lg bg-neutral-900 px-3 py-1.5 text-center text-xs font-normal leading-snug text-white shadow-lg transition-all duration-150 dark:bg-white dark:text-neutral-900 ".concat(i?"opacity-100 translate-y-0":"translate-y-1 opacity-0"),"aria-hidden":!i,children:t})]})}},1881:(e,t,r)=>{"use strict";r.d(t,{ProgrammerSection:()=>w});
1var n=r(5155),l=r(2115),a=r(2619),i=r.n(a),s=r(3991),o=r(6795),c=r(8694);let d=e=>{let{children:t,className:r=""}=e,a=l.Children.toArray(t).filter(e=>(0,l.isValidElement)(e));return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"print:hidden w-full overflow-hidden motion-reduce:overflow-auto print:overflow-auto relative scroller ".concat(r),children:(0,n.jsxs)("div",{className:"h-max py-4 flex flex-row print:flex-col motion-reduce:flex-wrap print:flex-wrap justify-start gap-4 items-center scroller-inner",children:[t,a.map((e,t)=>(0,l.cloneElement)(e,{key:t}))]})}),(0,n.jsx)("div",{className:"hidden flex-col print:flex",children:t})]})};var h=r(3787);let m=e=>{let{title:t,description:r,url:a,className:o,titleClassName:d="",index:m,icon:u}=e,x=(0,l.useRef)(null),f=(0,c.K)(x),p=(0,n.jsxs)("div",{ref:x,className:"\n flex md:flex-row items-start md:items-center justify-center !transition-transform duration-300 gap-2 rounded-lg bg-neutral-200/60 dark:bg-neutral-800/60 print:bg-transparent\n ".concat(a?"cursor-pointer hover:scale-105 print:flex-col":"print:flex-row print:items-center","\n ").concat(r?"p-4":"px-4 py-2 items-center h-12","\n ").concat(void 0===m?f?"translate-y-0":"translate-y-10":"","\n ").concat(o||"flex-col","\n print:gap-1 print:p-2 print:rounded-none print:translate-y-0 print:items-start print:text-sm\n "),style:{animationDuration:"".concat(void 0!==m?"1s !important":0)},children:[(0,n.jsxs)("b",{className:"text-lg print:text-base print:font-bold flex items-center gap-2 h-full print:gap-1 print:items-center ".concat(d||"justify-center"),children:[u,(0,n.jsx)("p",{children:t}),a&&(0,n.jsx)("span",{"aria-hidden":"true",className:"hidden print:inline print:text-xs print:ml-1 font-normal italic",children:a})]}),r&&(0,n.jsx)(h.w,{size:"medium",className:"hidden md:block print:hidden"}),r&&(0,n.jsxs)("p",{className:"print:text-sm print:mt-0 print:mb-0 text-muted dark:text-muted-dark",children:[(0,n.jsx)("span",{className:"hidden print:inline",children:"â "}),r]}),a&&(0,n.jsx)(s.k,{className:"print:hidden hidden md:block"})]});return a?(0,n.jsx)(i(),{href:a,rel:"noopener noreferrer",target:"_blank",children:p}):p};var u=r(8060);let x=[{title:"The JYV",url:"https://thejyv.com",description:"A website I built & designed end-to-e
1nd for The Journal For Youth Voice. Also led migration."},{title:"ENF",url:"/projects#enf",description:"The only free, up-to-date European electrical network frequency data.",badge:"Featured by Hack Club!"}],f=[{title:"rendr",description:"3D renderer + raytracer in C",url:"/projects#rendr"},{title:"Amelia",description:"Version control for human context: who spoke, what they said, and what changed since",url:"https://www.linkedin.com/feed/update/urn:li:activity:7493895992778358784/",won:"Hackathon win"},{title:"Standard Physics",description:"Scan a shop with an iPhone and see every ADA and building-code problem on a 3D model",url:"https://www.linkedin.com/feed/update/urn:li:activity:7505484140780281856/",won:"Hackathon win"}],p=[{title:"TypeHero",description:"Profanity filter, DevEx, and UI",url:"https://typehero.dev"},{title:"Overlayed",description:"",url:"https://overlayed.dev"},{title:"helloSystem OS",description:"System apps",url:"https://hellosystem.github.io/docs/"},{title:"ShadowFinder",description:"CLI Caching",url:"https://github.com/bellingcat/ShadowFinder"}],g=[{label:"Solar data analysis"},{label:"OpenCV"},{label:"Data science"},{label:"980x faster CSV reads",highlight:!0}],v=[{label:"G Studio Productions",url:"https://g.studio"},{label:"Palo Alto Stanford Aquatics",url:"https://pasa-rinconada.org"}];function w(){let e=(0,l.useRef)(null),t=(0,c.K)(e);return(0,n.jsx)("section",{className:"landing-section !min-h-0 pt-32 md:pt-40 pb-6 md:pb-8",children:(0,n.jsxs)("div",{ref:e,className:"max-w-6xl mx-auto px-8 w-full flex flex-col gap-20 md:gap-28 transition-all duration-700 ".concat(t?"opacity-100 translate-y-0":"opacity-0 translate-y-8"),children:[(0,n.jsxs)("div",{className:"flex flex-col gap-10",children:[(0,n.jsx)("h2",{className:"vectra text-5xl md:text-7xl leading-tight text-muted dark:text-muted-dark",children:"Building things."}),(0,n.jsx)("div",{className:"flex flex-col gap-8",children:x.map(e=>(0,n.jsxs)(i(),{href:e.url,...b(e.url),className:"group flex flex-col md:flex-row md:items-center gap-2 md:gap-6",children:[(0,n.jsx)("span",{className:"font-bold text-xl group-hover:text-primary transition-colors duration-200",children:e.title}),(0,n.jsx)("span",{className:"text-muted dark:text-muted-dark text-sm md:text-base",children:e.description}),e.badge&&(0,n.jsx)(u.v,{highlight:!0,className:"self-start",children:e.badge}),(0,n.jsx)(s.k,{size:16,className:"hidden md:block ml-auto text-muted dark:text-muted-dark opacity-0 group-hover:opacity-100 transition-opacity duration-200 flex-shrink-0"})]},e.title))})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-0",children:[f.map(e=>(0,n.jsxs)(i(),{href:e.url,...b(e.url),className:"group flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-4 py-4 border-b border-neutral-200 dark:border-neutral-800 first:border-t w-full min-w-0",children:[(0,n.jsx)("span",{className:"font-semibold group-hover:text-primary transition-colors duration-200 sm:w-44 sm:flex-shrink-0",children:e.title}),(0,n.jsx)("span",{className:"text-muted dark:text-muted-dark text-sm flex-1 min-w-0",children:e.description}),e.won&&(0,n.jsx)(u.v,{highlight:!0,className:"flex-shrink-0",children:e.won}),(0,n.jsx)(o.f,{weight:"bold",size:14,className:"text-primary opacity-0 group-hover:opacity-100 transition-opacity duration-200 flex-shrink-0"})]},e.title)),(0,n.jsxs)(i(),{href:"/projects",className:"mt-8 text-sm text-primary font-semibold hover:underline flex items-center gap-2",children:["See all projects ",(0,n.jsx)(o.f,{weight:"bold",size:14})]})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,n.jsx)("h3",{className:"text-sm text-muted dark:text-muted-dark font-normal",children:"Experience"}),(0,n.jsxs)("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3",children:[(0,n.jsx)("span",{className:"font-bold text-lg sm:mr-4",children:"Lockheed Martin"}),(0,n.jsx)("div",{className:"flex flex-wrap gap-2",children:g.map(e=>(0,n.jsx)(u.v,{highlight:e.highlight,children:e.label},e.label))})]}),(0,n.jsxs)("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3 mt-6",children:[(0,n.jsx)("span",{className:"text-muted dark:text-muted-dark",children:"Nowadays, I freelance as a photographer and web developer:"}),(0,n.jsx)("div",{className:"flex flex-wrap gap-2",children:v.map(e=>(0,n.jsx)(u.v,{children:e.url?(0,n.jsxs)(i(),{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"flex flex-row gap-1 items-center hover:underline",children:[e.label,(0,n.jsx)(s.k,{size:12,className:"inline-block ml-1"})]}):e.label},e.label))})]})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,n.jsx)("h3",{className:"text-sm text-muted dark:text-muted-dark font-normal",children:"Open source"}),(0,n.jsx)(d,{children:p.map((e,t)=>
1(0,n.jsx)(m,{title:e.title,description:e.description,url:e.url,className:"inline-block w-max flex-shrink-0 flex-row items-center",index:t},"contribution ".concat(t)))})]})]})})}function b(e){return e.startsWith("http")?{target:"_blank",rel:"noopener noreferrer"}:{}}},3382:(e,t,r)=>{"use strict";r.d(t,{MadWhale:()=>g});var n=r(5155),l=r(2115),a=r(2090);let i={cruise_loop:6,turn_left:2,turn_right:2,rise:1,dive:1,roll_left:.8,roll_right:.8},s=new Set;function o(e){s.size>=256&&s.delete(s.values().next().value),s.add(e)}function c(e){return Math.max(e.cycle[0]-e.steps[0][0],.05)}function d(e){let{catalog:t,laneWidth:r,frameWidth:n,schedule:l,startHeight:a=0,mirrored:d}=e,h=t.behaviors,m=null!=d?d:t.mirrored,{body:u,start:x,distance:f,facing:p}=function(e,t,r,n){let l=e.behaviors,a=l[Object.keys(l)[0]],i=n*a.bodyFraction,s=Object.values(l).map(e=>e.hitInset),o=Math.min(...s.map(e=>e[1])),c=Math.min(...s.map(e=>e[3])),d=(t?o:c)/100/a.bodyFraction,h=(1-(t?c:o)/100)/a.bodyFraction,m=2/i,u=-h-m,x=r/i-d+m,f=t?x:u;return{body:i,start:f,distance:Math.abs((t?u:x)-f),facing:t?-1:1}}(t,m,r,n),g=function(e,t,r){let n=[...null!=t?t:function(e,t){let r=()=>{let r=[],n=0,l=0;for(;n<t||r.length<4;){let t=function(e,t,r){let n=Object.keys(e).filter(e=>e in i).map(e=>{let n=i[e];return e===r&&(n*="cruise_loop"===e?.4:.15),t<-.1&&("rise"===e&&(n=0),"dive"===e&&(n*=4)),t>.1&&("dive"===e&&(n=0),"rise"===e&&(n*=4)),{behavior:e,weight:n}}),l=Math.random()*n.reduce((e,t)=>e+t.weight,0);for(let e of n)if((l-=e.weight)<=0)return e.behavior;return n[0].behavior}(e,l,r.at(-1)),a=e[t];r.push(t),n+=Math.max(a.cycle[0]-a.steps[0][0],.05),l+=a.cycle[1]-a.steps[0][1]}return r};for(let e=0;e<64;e+=1){let e=r(),t=e.join("|");if(!s.has(t))return o(t),e}let n=r();for(;s.has(n.join("|"));)n.push("cruise_loop");return o(n.join("|")),n}(e,r)],l="cruise_loop"in e?"cruise_loop":n[0],a=n.reduce((t,r)=>t+c(e[r]),0);for(;a<r;)n.push(l),a+=c(e[l]);return n}(h,l,f),v=[],w=[],b=0,y=0,j=a,k=-1;for(let e of g){let t=h[e],[r,n]=t.steps[0];if(t.steps.forEach((e,l)=>{let[a,i]=e,s=b+t.frameOffsets[l]*t.seconds,o=y+a-r;v.push({seconds:s,x:x+p*o,y:j+i-n}),k<0&&o>=f&&(k=s)}),b+=t.seconds,y+=t.cycle[0]-r,j+=t.cycle[1]-n,w.push(b),k>=0)break}k<0&&(k=b,v.push({seconds:b,x:x+p*y,y:j}));let N=v.filter(e=>e.seconds<=k).map(e=>({seconds:e.seconds,x:e.x*u,y:e.y*u})),M=N.map(e=>({offset:Math.min(e.seconds/k,1),transform:"translate(".concat(e.x,"px, ").concat(e.y,"px)")}));return M[M.length-1].offset=1,{schedule:g.slice(0,w.length),boundaries:w,totalSeconds:k,frames:M,points:N}}let h=e=>e.cycle[1]-e.steps[0][1],m=e=>Number.isFinite(e)?Math.max(1,Math.round(e)):1;var u=r(506);let x={trace:()=>{},close:()=>{}},f=(e,t,r)=>{let n=Math.max(0,e.x),l=Math.max(0,e.y);return{x:n,y:l,w:Math.max(0,Math.min(t,e.x+e.w)-n),h:Math.max(0,Math.min(r,e.y+e.h)-l)}};var p=r(4309);function g(e){var t;let{style:r,route:i="cross",lift:s,climb:o,heading:c,entryDelaySeconds:g=0}=e,v=(0,l.useRef)(null),w=(0,l.useRef)(null),b=(0,l.useRef)(null),y=(0,l.useRef)(null),j=(0,l.useRef)(null),k=(0,l.useRef)("calm"),N=(0,l.useRef)(null),[M,E]=(0,l.useState)(!1),[S,F]=(0,l.useState)(null),[I,R]=(0,l.useState)(""),[z,C]=(0,l.useState)(0),[P,A]=(0,l.useState)("calm");(0,l.useEffect)(()=>{let e=v.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;return t.isIntersecting&&E(!0)},{rootMargin:"700px"});return t.observe(e),()=>t.disconnect()},[]),(0,l.useEffect)(()=>{if(!M||!(0,p.do)(r))return;let e=!0,t=(0,p.Eu)(r,1,1);return(0,a.ak)(r).then(r=>{e&&(R(Object.keys(r.behaviors)[0]),F({catalog:r,ink:t}))}).catch(()=>void 0),()=>{e=!1,t.close()}},[M,r]),(0,l.useEffect)(()=>{let e=function(e,t,r){let n=null==r?void 0:r.getContext("2d");return e&&t&&r&&n?{swimmer:e,lane:t,canvas:r,context:n}:null}(w.current,v.current,b.current);if(!e||!S)return;let{swimmer:t,lane:r,canvas:n,context:l}=e,s=window.matchMedia("(prefers-reduced-motion: reduce)").matches,p=y.current?function(e){let t=e.getContext("2d");if(!t||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return x;let r=(0,u.VV)(),{colors:n,stop:l}=(0,u.Yl)(),a={x:0,y:0},i=0,s=0,o=!0,c=0,d=0,h=null,m=-1/0,p=()=>{h&&(t.clearRect(h.x,h.y,h.w,h.h),h=null)},g=()=>{let r=Math.min(2,window.devicePixelRatio||1);i=e.clientWidth,s=e.clientHeight,e.width=Math.max(1,Math.round(i*r)),e.height=Math.max(1,Math.round(s*r)),t.setTransform(r,0,0,r,0,0),h=null};g();let v=()=>{if(c=0,!o)return void p();let e=performance.now()/1e3;if(!(e=>{let l=r.bounds(e);if(!l)return p(),!1;let o=f(l,i,s);return(0,u.Ti)(t,{w:i,h:s,t:e,light:a,colors:n,mask:r.mask(e),brightness:r.glow(e),cell:20,intensity:1.3,rect:f(((e,t)=>{let r=Math.min(e.x,t.x),n=Math.min(e.y,t.y);return{x:r,y:n,w:Math.max(e.x+e.w,t.x+t.w)-r,h:Math.max(e.y+e.h,t.y+t.h)-n}})(l,null!=h?h:l),i,s)}),h=o,!0})(e))return;let l=e-m<.4?u.Z_:u.P;d=window.setTimeout(()=>{d=0,c=requestAnimationFrame(v)},l)},w=()=>{c||d||!o||(c=requestAnimationFrame(v))},b=()=>{cancelAnimationFrame(c),clearTimeout(d),c=0,d=0},y=new IntersectionObserver(e=>{let[t]=e;
1(o=!!(null==t?void 0:t.isIntersecting))?w():(b(),p())},{rootMargin:"100px"});y.observe(e);let j=new ResizeObserver(g);return j.observe(e),{trace:(e,t,n)=>{m=performance.now()/1e3,r.add(e,t,n,m),a.x=e,a.y=t,w()},close:()=>{b(),y.disconnect(),j.disconnect(),l()}}}(y.current):null,j=c?"left"===c:S.catalog.mirrored,M=null,E=null,F=0,P=0,A=!0,_=!1,L=!1,T=I,O=0,W=0,H="",D=-1,B="",V=e=>{T!==e&&(T=e,R(e))},Y=()=>{var e;return Number(null!=(e=null==M?void 0:M.currentTime)?e:0)/1e3},G=()=>{if(!E)return null;let e=Math.max(Y(),0),t=0;for(;t<E.schedule.length-1&&e>=E.boundaries[t];)t+=1;return{clock:e,index:t,behavior:E.schedule[t]}},K=()=>{var e,l,a;let c=r.getBoundingClientRect();O=t.offsetWidth,W=t.offsetTop;let u=e=>Number.isFinite(e)&&e>0;if(!u(c.width)||!u(c.height)||!u(O))return;let x=M?Number(M.currentTime):null;null==M||M.cancel();let f=n.getBoundingClientRect(),p=window.devicePixelRatio||1,v=Math.max(1,Math.round(f.width*p)),w=Math.max(1,Math.round(f.height*p));if((n.width!==v||n.height!==w)&&(n.width=v,n.height=w,_=!1,B=""),delete n.dataset.whaleFrame,_=!1,B="",E="climb"===i?function(e){var t;let{catalog:r,laneWidth:n,laneHeight:l,frameWidth:a,rising:i,mirrored:s}=e,o=r.behaviors,c=null!=(t=null!=i?i:s)?t:r.mirrored,u=a*o[Object.keys(o)[0]].bodyFraction;return d({catalog:r,laneWidth:n,frameWidth:a,mirrored:s,schedule:function(e,t,r){var n;let l=t?"rise":"dive",a=e["".concat(l,"_in")],i=e["".concat(l,"_hold")],s=e["".concat(l,"_out")];if(a&&i&&s){let e=m((r-h(a)-h(s))/h(i));return["".concat(l,"_in"),...Array(e).fill("".concat(l,"_hold")),"".concat(l,"_out")]}return Array(m(r/(h(null!=(n=e[l])?n:e[Object.keys(e)[0]])||r))).fill(l)}(o,c,.99*l/u*(c?-1:1)),startHeight:(.94-.5)*l/u*(c?1:-1)})}({catalog:S.catalog,laneWidth:c.width,laneHeight:c.height,frameWidth:O,rising:o?"up"===o:void 0,mirrored:j}):d({catalog:S.catalog,laneWidth:c.width,frameWidth:O,mirrored:j,schedule:null==E?void 0:E.schedule}),s)return void S.ink.want(E.schedule[0]);(M=t.animate(E.frames,{duration:1e3*E.totalSeconds,iterations:1,easing:"linear",fill:"both"})).currentTime=null!=x?x:(a=E.totalSeconds,0===z?1e3*(a>0?((("undefined"==typeof performance?0:performance.now()/1e3)-g)%a+a)%a:0):0),S.ink.want(null!=(l=null==(e=G())?void 0:e.behavior)?l:E.schedule[0]);let b=M;b.finished.then(()=>{A&&M===b&&(E=null,C(e=>e+1))}).catch(()=>void 0)},q=()=>{cancelAnimationFrame(F),clearTimeout(P),F=0,P=0},U=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(!F&&!P&&A&&L&&E){if(e<=0){F=requestAnimationFrame(Z);return}P=window.setTimeout(()=>{P=0,U()},e)}},J=(e,t)=>{if(!E)return 0;let r=0===e?0:E.boundaries[e-1],n=S.catalog.behaviors[E.schedule[e]];return Math.max(1,((t+1<n.frameOffsets.length?r+n.frameOffsets[t+1]*n.seconds:E.boundaries[e])-Y())*1e3+1)},X=(e,t)=>{let{behavior:r,clock:n,path:l}=e;if(!p||!E)return;let i="".concat(r,"/").concat(t);if(i===H)return;H=i;let s=function(e,t){let r=e.points,n=0;for(;n+1<r.length&&r[n+1].seconds<=t;)n+=1;let l=r[n],a=r[Math.min(n+1,r.length-1)],i=a.seconds-l.seconds,s=i>0?Math.min(Math.max((t-l.seconds)/i,0),1):0;return{x:l.x+(a.x-l.x)*s,y:l.y+(a.y-l.y)*s}}(E,n),o=O*l.frameAspect,c=(0,a.p6)(l,j,S.ink.fluke(),S.ink.bodyBox());p.trace(s.x+c.x*O,W+s.y-o/2+c.y*o+80,(0,a.xO)(l,t))},Z=()=>{F=0;let e=(()=>{if(!A||!E||!L)return null;let e=G();if(!e)return null;let{clock:t,index:r,behavior:n}=e,l=0===r?0:E.boundaries[r-1],i=S.catalog.behaviors[n],s=(0,a.jG)(i,Math.min(Math.max(t-l,0),i.seconds));return{clock:t,index:r,behavior:n,began:l,path:i,frame:s}})();if(!e)return;let{behavior:t,began:r,frame:i,index:o}=e;if(V(t),(e=>{let{clock:t,index:r,began:n,path:l}=e,a=null==E?void 0:E.schedule[r+1];a&&(S.ink.want(a),l.seconds-(t-n)<1&&S.ink.warm(a))})(e),_&&B==="".concat(t,"/").concat(i,"/").concat(k.current)){X(e,D),U(J(o,i));return}n.dataset.whaleWant=String(i),n.dataset.whaleClipStart=r.toFixed(3);let c=S.ink.paint(l,t,i,k.current),d=S.ink.waiting();if(d?n.dataset.whaleWaiting=d:delete n.dataset.whaleWaiting,c>=0){_=!0,B="".concat(t,"/").concat(c,"/").concat(k.current),D=c;n.dataset.whaleFrame=String(c);let r=S.ink.ground();r>=0&&(n.dataset.whaleGround=String(r)),X(e,c)}s&&_||U(c>=0?J(o,i):16)};N.current=()=>{q(),U()},K(),L=(()=>{let e=n.getBoundingClientRect();return e.bottom>
1-100&&e.top<window.innerHeight+100&&e.right>-100&&e.left<window.innerWidth+100})(),S.ink.setActive(L),L&&Z();let Q=new IntersectionObserver(e=>{let[t]=e;L=!!(null==t?void 0:t.isIntersecting),S.ink.setActive(L),L?(B="",U()):(q(),delete n.dataset.whaleFrame,_=!1,B="")},{rootMargin:"".concat(100,"px")});Q.observe(n);let $=window.setInterval(()=>{let e=G();e&&V(e.behavior)},250),ee=new ResizeObserver(K);ee.observe(r);let et=window.matchMedia("(resolution: ".concat(window.devicePixelRatio,"dppx)")),er=()=>{K(),et.removeEventListener("change",er),(et=window.matchMedia("(resolution: ".concat(window.devicePixelRatio,"dppx)"))).addEventListener("change",er)};return et.addEventListener("change",er),()=>{A=!1,N.current=null,null==p||p.close(),S.ink.setActive(!1),clearInterval($),et.removeEventListener("change",er),Q.disconnect(),ee.disconnect(),q(),null==M||M.cancel()}},[S,z,i,o,c,g]),(0,l.useEffect)(()=>()=>{j.current&&clearTimeout(j.current)},[]);let _=null!=(t=null==S?void 0:S.catalog.behaviors[I])?t:null,L=c?"left"===c:!!(null==S?void 0:S.catalog.mirrored),T=e=>{var t;k.current=e,A(e),null==(t=N.current)||t.call(N)};return(0,n.jsxs)("div",{ref:v,className:"pointer-events-none absolute inset-0 overflow-x-clip",children:[(0,n.jsx)("canvas",{ref:y,"aria-hidden":!0,className:"absolute inset-x-0 block w-full",style:{top:-80,height:"calc(100% + ".concat(160,"px)")}}),(0,n.jsx)("div",{ref:w,className:"absolute top-1/2 left-0 w-[clamp(17rem,46%,47.5rem)]",style:{transformOrigin:"50% 0",top:s?"calc(50% - ".concat(s,")"):void 0},children:(0,n.jsxs)("div",{className:"relative -translate-y-1/2",style:{aspectRatio:_?"".concat(1/_.frameAspect):void 0,transform:L?"translateY(-50%) scaleX(-1)":void 0},children:[(0,n.jsx)("canvas",{ref:b,"data-whale-style":r,"data-whale-route":i,"data-whale-heading":L?"left":"right","data-whale-behavior":I||void 0,"data-visual-state":P,className:"absolute inset-0 block h-full w-full ".concat((0,p.PV)(r)?p.NU:"")}),_&&(0,n.jsx)("div",{className:"pointer-events-auto absolute inset-0",style:{clipPath:"inset(".concat(_.hitInset.map(e=>"".concat(e,"%")).join(" "),")")},onPointerEnter:()=>{if(j.current&&clearTimeout(j.current),"breakdown"!==r||!S||S.catalog.stateColumns<3||!_)return void T("hover");T("intact"),j.current=setTimeout(()=>{T("hover"),j.current=null},1e3*_.frameSeconds)},onPointerLeave:()=>{j.current&&clearTimeout(j.current),j.current=null,T("calm")}})]})})]})}},3787:(e,t,r)=>{"use strict";r.d(t,{w:()=>a});var n=r(5155);r(2115);let l={xsmall:{vertical:"h-2 w-px",horizontal:"w-2 h-px"},small:{vertical:"h-5 w-px",horizontal:"w-5 h-px"},medium:{vertical:"h-7 w-px",horizontal:"w-7 h-px"},large:{vertical:"h-12 w-px",horizontal:"w-12 h-px"},xlarge:{vertical:"h-16 w-px",horizontal:"w-16 h-px"}},a=e=>{let{vertical:t=!1,children:r,size:a="medium",className:i=""}=e,s=r?"m-0":t?"my-2":"mx-2";return(0,n.jsxs)("div",{className:"flex ".concat(t?"flex-row":"flex-col"," justify-start gap-2 items-center ").concat(i),children:[(0,n.jsx)("div",{className:"!bg-muted dark:!bg-muted-dark ".concat(l[a][!t?"vertical":"horizontal"]," ").concat(s)}),r?(0,n.jsxs)(n.Fragment,{children:[r,(0,n.jsx)("div",{className:"!bg-muted dark:!bg-muted-dark ".concat(l[a][!t?"vertical":"horizontal"]," ").concat(s)})]}):(0,n.jsx)(n.Fragment,{})]})}},5456:(e,t,r)=>{"use strict";r.d(t,{HiImBoris:()=>o});var n=r(5155),l=r(8661),a=r.n(l),i=r(2115);let s=["I build cool things.","I solve problems.","Writing cool stuff!","Working on secret tech @ UC Berkeley!","Tokenmaxxer? I barely know her.","Drop the âThe.â","IEOR & Applied Mathematics, 2029","Boris had a farm, studying I-E-O-R.","@b_nezlobin on Twitter.","1% better every day.","Staying hydrated, ish.","Are you gonna finish that?","/photography!"],o=()=>{let[e,t]=(0,i.useState)(0),[r,l]=(0,i.useState)("in"),[o,c]=(0,i.useState)(""),[d,h]=(0,i.useState)(!1),m=(0,i.useRef)(null),u=s[e];return(0,i.useEffect)(()=>{if("in"===r){h(!0),c("");let e=0,t=setInterval(()=>{e<u.length?(c(u.slice(0,e+1)),e++):(h(!1),clearInterval(t))},75);return()=>clearInterval(t)}},[u,r]),(0,i.useEffect)(()=>{let e=setInterval(()=>{l("out"),setTimeout(()=>{t(e=>{let t=Math.floor(Math.random()*s.length);for(;t===e;)t=Math.floor(Math.random()*s.length);return t}),l("in")},400)},4e3);return()=>clearInterval(e)},[]),(0,n.jsxs)("div",{className:"h-[100svh] relative top-[2rem] items-center w-full flex flex-col justify-center p-4 print:h-auto print:relative print:top-0 print:p-0 print:mb-2",children:[(0,n.jsxs)("div",{className:"relative flex flex-col items-center",children:[(0,n.jsx)("img",{src:"/whale-assets/uptotheright.webp",alt:"","aria-hidden":!0,width:1048,height:547,fetchPriority:"high",decoding:"async","data-whale-hero":!0,className:"whale-negative pointer-events-none select-none absolute z-0 max-w-none w-[132%] md:w-[min(680px,90vw)] lg:w-[780p
1x] left-1/4 -translate-x-1/2 md:-translate-x-[50%] bottom-[50%] md:bottom-[8%] print:hidden"}),(0,n.jsx)("p",{className:"md:hidden text-base relative left-[87px] bottom-[64px] emph z-10 rounded-t-lg px-4 py-1 print:z-20 print:!bg-transparent",children:"Hi, Iâm"}),(0,n.jsx)("h1",{className:"md:hidden text-8xl relative left-[min(1rem,(100vw_-_100%)/2)] bottom-9 font-bold edo z-10 text-center rounded-lg px-4 pb-3 py-1 vectra",children:"Boris."}),(0,n.jsxs)("h1",{className:"hidden md:block text-6xl sm:text-7xl md:text-8xl lg:text-9xl font-bold edo z-10 text-center print:text-5xl print:mt-0 print:mb-1",children:[(0,n.jsx)("span",{className:"text-muted dark:text-muted dark font-normal text-4xl relative left-10",children:"Iâm"}),(0,n.jsx)("span",{className:"vectra",children:"Boris."})]})]}),(0,n.jsxs)("div",{className:"jsx-d9081080cb00b223 hidden relative w-96 md:block print:hidden z-10 px-4 py-1 print:text-xl print:mt-0 print:mb-2",children:[(0,n.jsxs)("p",{ref:m,style:{opacity:+("in"===r),transition:"opacity ".concat(400,"ms cubic-bezier(.4,0,.2,1)"),whiteSpace:"nowrap",display:"inline-block"},className:"jsx-d9081080cb00b223 w-full text-xl text-center print:text-xl emph",children:[o,(0,n.jsx)("span",{style:{animation:d?"none":"blink 1s infinite"},className:"jsx-d9081080cb00b223 "+"inline-block w-0.5 h-5 bg-current ml-1 ".concat(d||"in"===r?"animate-pulse":"animate-ping")})]}),(0,n.jsx)(a(),{id:"d9081080cb00b223",children:"@keyframes blink{0%,50%{opacity:1}51%,100%{opacity:0}}"})]})]})}},5581:(e,t,r)=>{Promise.resolve().then(r.bind(r,870)),Promise.resolve().then(r.bind(r,127)),Promise.resolve().then(r.bind(r,6099)),Promise.resolve().then(r.bind(r,5456)),Promise.resolve().then(r.bind(r,9499)),Promise.resolve().then(r.bind(r,8392)),Promise.resolve().then(r.bind(r,1881)),Promise.resolve().then(r.bind(r,8511)),Promise.resolve().then(r.bind(r,9350)),Promise.resolve().then(r.bind(r,3382)),Promise.resolve().then(r.t.bind(r,2619,23))},6099:(e,t,r)=>{"use strict";r.d(t,{default:()=>n});let n=(0,r(7909).default)(()=>r.e(8294).then(r.bind(r,8294)),{loadableGenerated:{webpack:()=>[8294]}
1,ssr:!1})},8060:(e,t,r)=>{"use strict";r.d(t,{v:()=>l});var n=r(5155);function l(e){let{highlight:t=!1,className:r="",children:l}=e;return(0,n.jsx)("span",{className:"".concat("inline-flex items-center gap-1 text-sm px-3 py-1 rounded-full"," ").concat(t?"bg-primary-light-bg dark:bg-primary-dark-bg text-primary dark:text-primary-dark font-semibold":"bg-neutral-200/70 dark:bg-neutral-800 text-muted dark:text-muted-dark"," ").concat(r),children:l})}},8392:(e,t,r)=>{"use strict";r.d(t,{ArtistSection:()=>f});var n=r(5155),l=r(2115),a=r(2619),i=r.n(a),s=r(6795),o=r(8694);let c="1.5rem",d=e=>{let{words:t,trapezoidHeight:r=.5,trapezoidBaseLength:a=.4,lineSlopeWeight:i=.6,charsBetweenWords:s=4,className:d=""}=e,[h,m]=(0,l.useState)({width:0,height:0}),[u,x]=(0,l.useState)({width:0,height:0}),[f,p]=(0,l.useState)(0),[g,v]=(0,l.useState)([]),w=(0,l.useRef)(null),b=(0,o.K)(w,{trackWindowFocus:!0});(0,l.useEffect)(()=>{let e=()=>{m({width:window.innerWidth,height:window.innerHeight})},r=b?setInterval(()=>{p(e=>(e+1)%t.length)},2e3):null;return(()=>{let e=document.createElement("span");e.style.fontFamily="Courier New, monospace",e.style.fontSize=c,e.style.position="absolute",e.style.visibility="hidden",e.textContent="M",document.body.appendChild(e);let t=e.getBoundingClientRect();x({width:t.width,height:t.height}),document.body.removeChild(e)})(),e(),window.addEventListener("resize",e),()=>{r&&clearInterval(r),window.removeEventListener("resize",e)}},[t.length,b]);let y=()=>{let e=" - \xb7 + ";return e[Math.floor(Math.random()*e.length)]},j=(0,l.useCallback)(e=>{let r="",n=Math.floor(Math.random()*t.length),l=-1,a=Math.floor(4*Math.random())+1;if(e>4)for(let e=0;e<a;e++)r+=y();for(let i=a;i<e;i++)if(i+t[n].length>=e){for(let t=i;t<e;t++)r+=y();break}else{for(;n===l;)n=Math.floor(Math.random()*t.length);r+=t[n],l=n;let a=Math.min(Math.floor(Math.random()*s)+1,e-i-t[n].length);for(let e=0;e<a;e++)r+=y();i+=t[n].length+a-1,n+=Math.floor(4*Math.random())-1+t.length,n%=t.length}return r},[t,s]),k=Math.floor(h.width/u.width)+1,N=Math.floor(h.height/u.height)-3;(0,l.useEffect)(()=>{if(0===u.width||0===u.height)return;let e=[],n=N*r,l=Math.floor((N-n)/2);for(let t=0;t<l;t++)e.push(j(k));for(let r=0;r<n;r++){let l="";t.length;let s=k*a+(n/2-Math.abs(r-n/2))/n*k*i;{let e=Math.floor((k-s)/2);l=j(e)+" ".repeat(s)+j(e)}e.push(l)}for(let t=0;t<l;t++)e.push(j(k));e.push(j(3*k/8)+" ".repeat(k/4)+j(3*k/8)),e.push(j(k/4)+" ".repeat(k/2)+j(k/4)),v(e)},[h,u,k,N,t,j,r,!0,a,i]);let M=g.map((e,r)=>{let l=RegExp("(".concat(t.join("|"),")"),"g"),a=e.split(l).filter(
1Boolean);return(0,n.jsx)("pre",{style:{fontFamily:"Courier New, monospace",fontSize:c},className:"w-full ".concat("justify-start"," items-center m-0 p-0 text-center leading-none !text-[#C5C5C5] dark:!text-[#3C3C3C] select-none"),children:a.map((e,r)=>{let l=e===t[f]?"redhead"===e?"text-primary dark:text-primary-dark":"text-black dark:text-white":"!text-[#D5D5D5] dark:!text-[#3C3C3C]";return(0,n.jsx)("span",{className:"".concat(l," ").concat(""," !transition-colors !duration-1000 emph"),children:e},r)})},r)});return(0,n.jsx)("div",{ref:w,className:"absolute w-full h-[100svh] left-0 text-slate-200 dark:text-slate-800 print:hidden flex flex-col ".concat("justify-start items-start"," pointer-events-none select-none z-0 ").concat(d),children:M.map(e=>e)})},h=["-rotate-3","rotate-2","-rotate-1","rotate-3","rotate-1","-rotate-2"],m=["translate-y-4","-translate-y-2","translate-y-6","-translate-y-3","translate-y-2","-translate-y-4"];function u(e){let{photo:t,rotation:r,offset:l,className:a=""}=e;return(0,n.jsx)("div",{className:"".concat(null!=r?r:""," ").concat(null!=l?l:""," group [perspective:800px] cursor-pointer ").concat(a),children:(0,n.jsxs)("div",{className:"relative w-full h-full transition-transform duration-500 [transform-style:preserve-3d] group-hover:[transform:rotateY(180deg)] group-hover:rotate-0 group-hover:translate-y-0",children:[(0,n.jsx)("div",{className:"absolute inset-0 [backface-visibility:hidden] rounded-sm overflow-hidden shadow-xl bg-white dark:bg-neutral-200 p-2 pb-6",children:(0,n.jsx)("img",{src:t.image,alt:t.title,className:"w-full h-full object-cover rounded-sm",loading:"lazy"})}),(0,n.jsx)("div",{className:"absolute inset-0 [backface-visibility:hidden] [transform:rotateY(180deg)] rounded-sm shadow-xl bg-white dark:bg-neutral-200 p-4 flex flex-col items-center justify-center",children:(0,n.jsxs)("div",{className:"w-full h-full bg-neutral-100 rounded-sm flex flex-col items-center justify-center gap-3 px-4",children:[(0,n.jsx)("p",{className:"vectra text-lg md:text-xl text-neutral-800 text-center leading-snug",children:t.title}),(0,n.jsx)("p",{className:"text-xs text-neutral-500",children:"Boris Nezlobin"})]})})]})})}let x=["artist","photographer","designer","published"];function f(e){let{photos:t}=e,r=(0,l.useRef)(null),a=(0,o.K)(r),[c,f]=(0,l.useState)(!1);(0,l.useEffect)(()=>{a&&f(!0)},[a]);let p=t.slice(0,4);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("section",{className:"landing-section !overflow-hidden",children:[(0,n.jsx)("div",{ref:r,className:"w-full flex flex-col gap-8 md:gap-12 transition-all duration-700 ".concat(c?"opacity-100 translate-y-0":"opacity-0 translate-y-8"),children:(0,n.jsxs)("div",{className:"flex flex-col items-center w-full bottom-8 relative",children:[(0,n.jsx)("h2",{className:"vectra text-5xl md:text-8xl leading-none",children:"Photography"}),(0,n.jsx)("p",{className:"text-muted dark:text-muted-dark mt-6 max-w-2xl text-center px-8",children:"Up, down, yellow, blurred, and brown. I like taking pictures of things!"})]})}),(0,n.jsx)(d,{words:x,className:""})]}),p.length>0&&(0,n.jsx)("div",{className:"w-full max-w-5xl mx-auto px-8 py-12 md:py-16",style:{perspective:"1200px"},children:(0,n.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2 md:-gap-4 place-items-center",children:p.map((e,t)=>{let{rotation:r,offset:l}={rotation:h[t%h.length],offset:m[t%m.length]};return(0,n.jsx)(u,{photo:e,rotation:r,offset:l,className:"w-36 h-44 sm:w-44 sm:h-52 md:w-52 md:h-60"},e.slug)})})}),(0,n.jsx)("div",{className:"flex justify-center w-full mt-12 mb-20",children:(0,n.jsxs)(i(),{href:"/photography",className:"text-primary font-semibold hover:underline flex items-center gap-2",children:["View all photos ",(0,n.jsx)(s.f,{weight:"bold",size:14})]})})]})}},8511:(e,t,r)=>{"use strict";r.d(t,{RoboticistSection:()=>x});
1var n=r(5155),l=r(2115),a=r(2529),i=r(7783),s=r(5866),o=r(5690),c=r(381),d=r(8694),h=r(2619),m=r.n(h),u=r(3787);function x(){let e=(0,l.useRef)(null),t=(0,d.K)(e);return(0,n.jsx)("section",{className:"landing-section",children:(0,n.jsx)("div",{ref:e,className:"max-w-6xl relative mx-auto px-8 w-full flex flex-col md:flex-row gap-8 md:gap-12 transition-all duration-700 ".concat(t?"opacity-100 translate-y-0":"opacity-0 translate-y-8"),children:(0,n.jsxs)("div",{className:"flex-1 flex flex-col gap-10",children:[(0,n.jsxs)("div",{className:"flex flex-col md:flex-row md:items-end gap-4 md:gap-12",children:[(0,n.jsxs)("div",{className:"flex flex-col items-start",children:[(0,n.jsx)("span",{className:"vectra text-[5rem] md:text-[10rem] leading-none text-primary",children:"3x"}),(0,n.jsxs)("div",{className:"flex flex-col gap-1 mt-2",children:[(0,n.jsx)("span",{className:"text-xl md:text-2xl font-semibold",children:"World Championship Qualifier"}),(0,n.jsx)("span",{className:"text-muted dark:text-muted-dark emph",children:"â23 \xb7 â24 \xb7 â25"})]})]}),(0,n.jsxs)("div",{className:"flex flex-row items-start gap-2",children:[(0,n.jsx)("span",{className:"text-muted dark:text-muted-dark",children:"Top"}),(0,n.jsx)("span",{className:"vectra text-[2rem] leading-none text-primary",children:"12"}),(0,n.jsx)("span",{className:"text-muted dark:text-muted-dark",children:"in the world (â23)"})]})]}),(0,n.jsxs)("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3 sm:gap-2",children:[(0,n.jsxs)("div",{className:"flex flex-col md:flex-row md:gap-4",children:[(0,n.jsx)("p",{children:"Team Captain"}),(0,n.jsx)(m(),{href:"https://heronrobotics.vercel.app/",className:"italic ml-4 md:ml-0 text-muted dark:text-muted-dark hover:underline hover:text-primary dark:hover:text-primary-dark",children:"Heron Robotics (â25-26)"})]}),(0,n.jsx)(u.w,{className:"hidden sm:flex"}),(0,n.jsxs)("div",{className:"flex flex-col md:flex-row md:gap-4",children:[(0,n.jsx)("p",{children:"Software Lead + Robot Driver"}),(0,n.jsx)(m(),{href:"https://kuriosityrobotics.com/",className:"italic ml-4 md:ml-0 text-muted dark:text-muted-dark hover:underline hover:text-primary dark:hover:text-primary-dark",children:"Kuriosity Robotics (â22-25)"})]})]}),(0,n.jsxs)("div",{className:"w-full flex flex-wrap flex-row items-center justify-center gap-y-4 gap-x-4 top-16 relative",children:[(0,n.jsx)("p",{children:"Writeup of our 2026 seasonâs software architecture now available!"}),(0,n.jsxs)(m(),{href:"https://github.com/HeronRobotics/heron",target:"_blank",rel:"noopener noreferrer","aria-label":"View Heron Robotics on GitHub",className:"inline-flex items-center gap-2 px-3 !text-[#25292E] dark:!text-[#FDFDFE] !bg-[#F6F8FA] dark:!bg-[#21262D] rounded-md border !border-[#D1D9E0] py-[5px] dark:!border-[#363B41] hover:!bg-[#E1E4E8] dark:hover:!bg-[#21262D]",children:[(0,n.jsx)(c.y,{size:18,weight:"fill"}),(0,n.jsx)("span",{children:"View on GitHub (9 min read)"})]})]})]})})})}a._,i.i,s._,o.L},8694:(e,t,r)=>{"use strict";r.d(t,{K:()=>l});var n=r(2115);function l(e){let{trackWindowFocus:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},[r,l]=(0,n.useState)(!1),[a,i]=(0,n.useState)("undefined"==typeof document||!document.hidden&&document.hasFocus());return(0,n.useEffect)(()=>{if(!t)return;let e=()=>i(!document.hidden&&document.hasFocus()),r=()=>i(!document.hidden),n=()=>i(!1);return document.addEventListener("visibilitychange",e),window.addEventListener("focus",r),window.addEventListener("blur",n),()=>{document.removeEventListener("visibilitychange",e),window.removeEventListener("focus",r),window.removeEventListener("blur",n)}},[t]),(0,n.useEffect)(()=>{if(null==e||null==e.current)return;let t=new IntersectionObserver(e=>{let[t]=e;l(t.isIntersecting)});return t.observe(e.current),()=>{t.disconnect()}},[e]),r&&(!t||a)}},9350:(e,t,r)=>{"use strict";r.d(t,{WriterSection:()=>c});
1var n=r(5155),l=r(2115),a=r(2619),i=r.n(a),s=r(6795),o=r(8694);function c(e){let{articles:t}=e,r=(0,l.useRef)(null),a=(0,o.K)(r);return(0,n.jsx)("section",{className:"landing-section",children:(0,n.jsxs)("div",{ref:r,className:"max-w-6xl mx-auto px-8 w-full flex flex-col gap-20 md:gap-28 transition-all duration-700 ".concat(a?"opacity-100 translate-y-0":"opacity-0 translate-y-8"),children:[(0,n.jsxs)("div",{className:"flex flex-col items-start gap-6",children:[(0,n.jsx)("h2",{className:"vectra text-5xl md:text-8xl leading-none text-muted dark:text-muted-dark",children:"I write things."}),(0,n.jsx)("p",{className:"max-w-4xl",children:"Sometimes I try to change the worldâI helped reinstate multivariable calculus at my school with my writing!âand other times I write the random thoughts Iâve got. Iâm currently exploring creative writing in my free time :)"})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-0",children:[(0,n.jsx)("h3",{className:"text-sm text-muted dark:text-muted-dark font-normal mb-4",children:"Recent articles"}),t.slice(0,3).map((e,t)=>(0,n.jsxs)(i(),{href:"/writing/".concat(e.slug),className:"group w-full h-full flex flex-row items-baseline gap-4 py-4 border-b border-neutral-200 dark:border-neutral-800 first:border-t",children:[(0,n.jsxs)("div",{className:"flex flex-col gap-1 flex-1 min-w-0",children:[(0,n.jsx)("p",{className:"font-semibold text-lg group-hover:text-primary transition-colors duration-200 truncate",children:e.title}),(0,n.jsx)("p",{className:"text-muted dark:text-muted-dark text-sm truncate",children:e.description})]}),(0,n.jsx)("div",{className:"h-full flex flex-col items-center justify-center mr-4",children:(0,n.jsx)(s.f,{weight:"bold",size:14,className:"text-primary opacity-0 group-hover:opacity-100 group-hover:translate-x-1 transition-all duration-200 flex-shrink-0"})})]},e.slug))]}),(0,n.jsxs)("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-10",children:[(0,n.jsxs)(i(),{href:"/writing",className:"text-primary font-semibold hover:underline flex items-center gap-2",children:["See all articles ",(0,n.jsx)(s.f,{weight:"bold",size:14})]}),(0,n.jsxs)(i(),{href:"/write",className:"text-muted dark:text-muted-dark hover:text-primary transition-colors duration-200 flex items-center gap-2 text-sm sm:text-base",children:["Wrisk, the free tool I made to help me write faster",(0,n.jsx)(s.f,{weight:"bold",size:14,className:"flex-shrink-0"})]})]})]})})}},9499:(e,t,r)=>{"use strict";r.d(t,{ScrollForMore:()=>i});var n=r(5155),l=r(4536),a=r(2115);let i=e=>{let{className:t="",text:r}=e,[i,s]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=()=>s(window.scrollY>.05*window.innerHeight);return e(),window.addEventListener("scroll",e,{passive:!0}),()=>window.removeEventListener("scroll",e)},[]),(0,n.jsxs)("div",{className:"print:hidden absolute bottom-0 left-0 flex flex-col gap-2 justify-end items-center pb-1 ".concat(t),children:[(0,n.jsxs)("div",{className:"".concat(i?"opacity-0":""," print:opacity-100 flex flex-row justify-center items-center print:items-end w-screen gap-4 text-muted dark:text-muted-dark"),children:[(0,n.jsx)("p",{className:"text-muted dark:text-muted-dark block print:hidden",children:r||"Scroll for more"}),(0,n.jsx)("p",{"aria-hidden":!0,className:"text-muted dark:text-muted-dark hidden print:block",children:"More"}),(0,n.jsx)(l.A,{size:24,weight:"thin",className:"animate-bounce print:animate-none"})]}),(0,n.jsx)("div",{className:"h-[1px] !bg-[#dddddd] dark:!bg-[#444] w-screen"})]})}}},e=>{e.O(0,[2619,5199,349,8441,1255,7358],()=>e(e.s=5581)),_N_E=e.O()}]);
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.