PageSourceSearch

https://www.joshshergill.com/_next/static/chunks/559.657bbad5655e137b.js

js joshshergill.com collected 2026-10-03 23:19:16 UTC 12,883 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[559],{4559:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u});var a=n(5155),s=n(2115),i=n(5565),o=n(1536),r=n(1430),l=n(4222);let c={backgroundImage:"url(\"data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.5' numOctaves='6' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E\")",opacity:.06},d=[{id:1,title:"Software Engineer Intern",company:"Shopify",year:"Incoming - May 2026 start",duration:"4 months",type:"internship",imageUrl:"/experience-logos/shopify.png",description:"Accepted an internship offer to join Shopify's Toronto team in May 2026, where I will be working on building scalable e-commerce solutions and enhancing the merchant experience.",achievements:["TBD!"],technologies:["TBD"]},{id:2,title:"Software Engineer Intern",company:"Boost Collective",year:"Jan. 2026 - Present",duration:"4 months",type:"internship",imageUrl:"/experience-logos/boost-collective.png",description:"Maintaining a large-scale PNPM monorepo powering tools used by 50k+ musical artists, building analytics tools, and integrating CMS solutions.",achievements:["Maintaining a large-scale PNPM monorepo powering tools used by 50k+ musical artists, resolving cross-package build issues and improving site speed","Built artist-facing analytics tools with a robust backend, processing 1M+ streaming data points for royalty modeling, growth projections, and statistical anomaly detection","Integrated a headless CMS tool enabling non-technical teams to manage static content and publish SEO-optimized blog posts, streamlining user acquisition funnels"],technologies:["PNPM","Monorepo","Analytics","CMS","Backend Development","Data Processing"]},{id:3,title:"Director of Operations",company:"Google Developer Student Clubs - UTSG",year:"Sep. 2025 - Present",duration:"6+ months",type:"part-time",imageUrl:"/experience-logos/gdg.png",description:"Operations executive for the University of Toronto St. George chapter of the Google Developer Student Club, managing club operations and community engagement.",achievements:["Leading operational strategies for UTSG's Google Developer Student Club chapter","Coordinating technical workshops and events for student developers","Managing club resources and facilitating collaboration between technical teams","Building partnerships with industry professionals and organizing community outreach programs"],technologies:["Leadership","Operations Management","Community Building","Event Planning","Google Technologies"]},{id:4,title:"Founder & Lead Engineer",company:"Camel (saycamel.com)",year:"Jan. 2025 - Present",duration:"1+ year",type:"founder",imageUrl:"/experience-logos/camel.png",description:"Founded and scaled a full-stack campus event discovery platform designed to handle 30k+ monthly API calls, continuous scraping jobs, and real-time recommendation inference.",achievements:["Founded and scaled a full-stack campus event discovery platform designed to handle 30k+ monthly API calls, continuous scraping jobs, and real-time recommendation inference","Developed a machine learning engine leveraging TF-IDF vectorization and category-aware similarity scoring, achieving 92% accuracy through real-time user preference learning and behavioral analysis","Automated data pipeline using Selenium and Gemini API for processing 400+ events weekly from 1k+ sources","Managed a team of 10 to assist in accelerating platform growth to over 800 accounts & 4.1k monthly visitors"],technologies:["Next.js","React.js","Python","Gemini","Vercel","Supabase","Machine Learning","TF-IDF","Selenium"]},{id:5,title:"Software Developer",company:"Department of Computer Science @ UofT, SDS Team",year:"May 2025 - December 2025",duration:"8 months",type:"part-time",imageUrl:"/experience-logos/uoftcs.png",description:"Developing and enhancing educational technology tools for computer science education, with a focus on improving learning experiences for novice Python programmers.",achievements:["Developing and enhancing a TypeScript-based memory visualization library used by CS educators","Improving tooling and UX for novice Python learners","Executing a high quality CI/CD workflow with automated testing","Implementing extensive code coverage analysis"],technologies:["TypeScript","Python","CI/CD","Testing","Educational Technology","UX Design"]},{id:6,title:"Software Engineer Research Intern",company:"Ontario Institute for Studies in Education @ UofT",year:"Sept. 2024 - Dec. 2024",duration:"4 months",type:"internship",imageUrl:"/experience-logos/oise.png",description:"Worked on educational technology research focusing on user engagement and backend optimization for student assessment platforms.",achievements:["Increased user engagement by 50% through a redesigned interactive map interface using new React states","Optimized backend dashboard functionality to display student data 2x faster from Google Firebase","Enhanced accessibility for teachers viewing student data on https://balanceai.ca"],technologies:["React","Google Firebase","UI/UX Design","Backend Optimization","Educational Technology"]},{id:7,title:"Software QA Dev",company:"Stellar",year:"Dec. 2023 - May 2025",duration:"1+ years",type:"contract",imageUrl:"/experience-logos/stellar.png",description:"Led quality assurance and development projects for cutting-edge AI systems, focusing on comprehensive testing and code review processes for large language models.",achievements:["Wrote high-quality tests and intensive code quality assurance reviews","Thoroughly assessed data fed to LLMs for quality assurance","Led multiple micro-development projects advancing cutting-edge large language models","Worked on agentic AI such as Google's Jules, utilizing various languages/frameworks"],technologies:["Python","AI/ML","LLM Development","Testing","Quality Assurance","Multiple Programming Languages"]}],m=e=>{switch(e){case"part-time":return"from-blue-100 to-white";case"internship":return"from-blue-200 to-blue-100";case"contract":return"from-white to-blue-100";
1case"founder":return"from-blue-50 to-white";default:return"from-gray-400 to-gray-500"}},h=e=>{switch(e){case"part-time":return"Part Time";case"internship":return"Internship";case"contract":return"Contract";case"founder":return"Founder";default:return"Position"}},g=e=>{let{experience:t,onClick:n,index:s,isVisible:r}=e;return(0,a.jsxs)("div",{className:"relative bg-[#111111] border border-white/10 rounded-none overflow-hidden p-6 cursor-pointer font-helvetica tracking-tighter",onClick:n,style:{opacity:r?1:0,transform:r?"translateY(0)":"translateY(50px)",transition:"all 0.8s cubic-bezier(0.16, 1, 0.3, 1) ".concat(150*s,"ms")},children:[(0,a.jsx)("div",{className:"absolute inset-0 pointer-events-none",style:c}),(0,a.jsxs)("div",{className:"relative z-10 flex items-start space-x-4 mb-4",children:[t.imageUrl?(0,a.jsx)("div",{className:"relative w-12 h-12 flex-shrink-0 bg-white/10 rounded-none overflow-hidden",children:(0,a.jsx)(i.default,{src:t.imageUrl,alt:"".concat(t.company," logo"),fill:!0,className:"object-cover"})}):(0,a.jsx)("div",{className:"p-3 flex-shrink-0 bg-white/10 rounded-none",children:(0,a.jsx)(o.ymh,{className:"text-xl text-white"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("h3",{className:"text-xl font-bold text-white",children:t.title}),(0,a.jsx)("p",{className:"text-blue-100 font-semibold",children:t.company})]})]}),(0,a.jsxs)("div",{className:"relative z-10 flex items-center space-x-4 mb-4 text-gray-300",children:[(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(o.bfZ,{className:"text-sm"}),(0,a.jsx)("span",{className:"text-sm",children:t.year})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(o._yv,{className:"text-sm"}),(0,a.jsx)("span",{className:"text-sm",children:t.duration})]})]}),(0,a.jsx)("p",{className:"relative z-10 text-gray-300 text-sm leading-relaxed mb-4 line-clamp-3",children:t.description}),(0,a.jsxs)("div",{className:"relative z-10 flex flex-wrap gap-2 mb-4",children:[t.technologies.slice(0,3).map((e,t)=>(0,a.jsx)("span",{className:"px-3 py-1 bg-white/10 text-white text-xs rounded-full border border-white/20",children:e},t)),t.technologies.length>3&&(0,a.jsxs)("span",{className:"px-3 py-1 bg-white/10 text-gray-300 text-xs rounded-full border border-white/20",children:["+",t.technologies.length-3," more"]})]}),(0,a.jsxs)("div",{className:"relative z-10 flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-xs text-gray-400",children:"Click to view details"}),(0,a.jsx)(o.X6T,{className:"text-gray-400 text-sm"})]})]})},p=e=>{let{experience:t,onClose:n,isOpen:i}=e;return((0,s.useEffect)(()=>(i?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[i]),i)?(0,a.jsxs)("div",{className:"fixed inset-0 z-50 font-helvetica tracking-tighter flex items-center justify-center p-4",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/85 animate-in fade-in duration-300",onClick:n}),(0,a.jsx)("div",{className:"relative w-full max-w-3xl max-h-[90vh] overflow-y-auto animate-in zoom-in-95 duration-500 slide-in-from-bottom-10",children:(0,a.jsxs)("div",{className:"relative bg-[#111111] border border-white/20 rounded-none overflow-hidden shadow-2xl",children:[(0,a.jsx)("div",{className:"absolute inset-0 pointer-events-none",style:c}),(0,a.jsxs)("div",{className:"relative z-10 bg-[#161616] p-8 border-b border-white/10",children:[(0,a.jsx)("button",{onClick:n,className:"absolute top-6 right-6 p-3 bg-black/40 hover:bg-black/50 border border-white/20 rounded-none text-white hover:text-red-400 transition-all duration-300 group",children:(0,a.jsx)(o.QCr,{className:"w-5 h-5 group-hover:rotate-90 transition-transform duration-300"})}),".",(0,a.jsx)("div",{className:"absolute top-6 left-6",children:(0,a.jsx)("div",{className:"px-4 py-2 bg-gradient-to-r ".concat(m(t.type)," text-black text-sm font-bold rounded-none"),children:h(t.type)})}),(0,a.jsxs)("div",{className:"mt-8",children:[(0,a.jsx)("h1",{className:"text-3xl md:text-4xl font-bold text-white mb-2 leading-tight",children:t.title}),(0,a.jsx)("h2",{className:"text-xl text-blue-100 font-semibold mb-4",children:t.company}),(0,a.jsxs)("div",{className:"flex items-center space-x-6 text-gray-200",children:[(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(o.bfZ,{}),(0,a.jsx)("span",{children:t.year})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(o._yv,{}),(0,a.jsx)("span",{children:t.duration})]})]})]})]}),(0,a.jsxs)("div",{className:"relative z-10 p-8 space-y-8",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-xl font-bold text-white mb-4",children:"About This Role"}),(0,a.jsx)("p",{className:"text-gray-300 leading-relaxed text-lg",children:t.description})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-xl font-bold text-white mb-4",children:"Key Achievements"}),(0,a.jsx)("ul",{className:"space-y-3",children:t.achievements.map((e,t)=>(0,a.jsxs)("li",{className:"flex items-start space-x-3",children:[(0,a.jsx)("div",{className:"w-2 h-2 bg-white/80 rounded-full mt-2 flex-shrink-0"}),(0,a.jsx)("span",{className:"text-gray-300 leading-relaxed",children:e})]},t))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-xl font-bold text-white mb-4",children:"Technologies Used"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-3",children:t.technologies.map((e,t)=>(0,a.jsx)("span",{className:"px-4 py-2 bg-white/5 border border-white/20 text-white rounded-none font-medium hover:bg-white/10 transition-all duration-300",children:e},t))})]})]})]})})]}):null};
1function u(){let[e,t]=(0,s.useState)(null),[n,i]=(0,l.r)(),[o,c]=(0,l.r)();return(0,a.jsx)("section",{className:"min-h-screen flex flex-col justify-center py-20",children:(0,a.jsxs)("div",{className:"w-full max-w-5xl mx-auto px-6",children:[(0,a.jsx)("div",{className:"text-center",ref:n,children:i&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(r.A,{text:"work experience.",delay:100,animateBy:"words",direction:"top",className:"text-5xl md:text-7xl text-white font-bold mb-6"}),(0,a.jsxs)("p",{className:"mt-8 mb-8 text-white text-sm md:text-lg font-mono text-left",children:["where i've worked, what i've learned, and the teams that taught me how to ",(0,a.jsx)("span",{className:"text-[#7a9d7e]",children:" build better software. "})]})]})}),(0,a.jsx)("div",{ref:o,children:(0,a.jsx)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8",children:d.map((e,n)=>(0,a.jsx)(g,{experience:e,onClick:()=>t(e),index:n,isVisible:c},e.id))})}),(0,a.jsx)(p,{experience:e,onClose:()=>t(null),isOpen:!!e})]})})}}}]);

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.