:HL["/client/home.55bddbd7.css","stylesheet"]
0:[["$","link",null,{"rel":"stylesheet","href":"/client/home.55bddbd7.css","precedence":"default"}],"$@1"]
1:["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","meta",null,{"charSet":"utf-8"}],["$","meta",null,{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ui-theme')||'system';if(t==='system'){t=window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';}document.documentElement.classList.add(t);}catch(e){}})();"}}],["$","link",null,{"rel":"icon","type":"image/png","sizes":"32x32","href":"/favicon-32.png"}],["$","link",null,{"rel":"apple-touch-icon","sizes":"180x180","href":"/apple-touch-icon.png"}],["$","meta",null,{"name":"theme-color","content":"#ffffff","media":"(prefers-color-scheme: light)"}],["$","meta",null,{"name":"theme-color","content":"#0a0a0a","media":"(prefers-color-scheme: dark)"}],["$","title",null,{"children":"Luke Woods - Associate Principal Frontend Architect"}],["$","meta",null,{"name":"description","content":"15+ years building performant, accessible React, React Native & Node applications — bridging design and engineering while leading agile teams at scale."}],["$","meta",null,{"name":"author","content":"Luke Woods"}],["$","link",null,{"rel":"canonical","href":"https://www.lukewoods.me/"}],["$","meta",null,{"property":"og:type","content":"website"}],["$","meta",null,{"property":"og:site_name","content":"Luke Woods"}],["$","meta",null,{"property":"og:title","content":"Luke Woods - Associate Principal Frontend Architect"}],["$","meta",null,{"property":"og:description","content":"15+ years building performant, accessible React, React Native & Node applications — bridging design and engineering while leading agile teams at scale."}],["$","meta",null,{"property":"og:url","content":"https://www.lukewoods.me/"}],["$","meta",null,{"property":"og:image","content":"https://www.lukewoods.me/avatar.jpg"}],["$","meta",null,{"property":"og:image:alt","content":"Luke Woods"}],["$","meta",null,{"property":"og:image:width","content":"650"}],["$","meta",null,{"property":"og:image:height","content":"650"}],["$","meta",null,{"property":"og:locale","content":"en_CA"}],["$","meta",null,{"name":"twitter:card","content":"summary"}],["$","meta",null,{"name":"twitter:title","content":"Luke Woods - Associate Principal Frontend Architect"}],["$","meta",null,{"name":"twitter:description","content":"15+ years building performant, accessible React, React Native & Node applications — bridging design and engineering while leading agile teams at scale."}],["$","meta",null,{"name":"twitter:image","content":"https://www.lukewoods.me/avatar.jpg"}],["$","meta",null,{"name":"twitter:image:alt","content":"Luke Woods"}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Person\",\"name\":\"Luke Woods\",\"url\":\"https://www.lukewoods.me/\",\"image\":\"https://www.lukewoods.me/avatar.jpg\",\"jobTitle\":\"Associate Principal Frontend Architect\",\"description\":\"15+ years building performant, accessible React, React Native & Node applications — bridging design and engineering while leading agile teams at scale.\",\"worksFor\":{\"@type\":\"Organization\",\"name\":\"Bounteous\"},\"address\":{\"@type\":\"PostalAddress\",\"addressLocality\":\"Riverside-Albert\",\"addressRegion\":\"NB\",\"addressCountry\":\"CA\"},\"knowsAbout\":[\"React\",\"React Native\",\"TypeScript\",\"Node.js\",\"Web Performance\",\"Web Accessibility\"],\"sameAs\":[\"https://github.com/SteadfastContributor\",\"https://www.linkedin.com/in/luke-woods-riverside/\"]}"}}],["$","script",null,{"async":true,"src":"https://www.googletagmanager.com/gtag/js?id=G-LW5J2NFSNJ"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"if(location.hostname==='www.lukewoods.me'||location.hostname==='lukewoods.me'){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','G-LW5J2NFSNJ');}"}}]]}],"$L2"]}]
3:I["5lGzp","ThemeProvider",["client/server.6be0515e.js","client/home.7483c927.js"]]
4:I["kLHry","SidebarProvider",["client/server.6be0515e.js","client/home.7483c927.js"]]
5:I["aodLG","AppSidebar",["client/server.6be0515e.js","client/home.7483c927.js"]]
6:I["kLHry","SidebarTrigger",["client/server.6be0515e.js","client/home.7483c927.js"]]
7:I["kht1L","HeaderNav",["client/server.6be0515e.js","client/home.7483c927.js"]]
8:I["aOTHr","Avatar",["client/server.6be0515e.js","client/home.7483c927.js"]]
9:I["aOTHr","AvatarImage",["client/server.6be0515e.js","client/home.7483c927.js"]]
a:I["aOTHr","AvatarFallback",["client/server.6be0515e.js","client/home.7483c927.js"]]
b:I["fA0WI","ImageSlideshow",["client/server.6be0515e.js","client/home.7483c927.js"]]
2:["$","body",null,{"children":["$","$L3",null,{"defaultTheme":"system","storageKey":"ui-theme","children":["$","$L4",null,{"defaultOpen":true,"children":[["$","$L5",null,{}],["$","main",null,{"className":"w-full border-box","children":[["$","header",null,{"className":"px-4 h-12 flex items-center justify-start sticky top-0 z-10 bg-background border-b","children":[["$","$L6",null,{}],["$","$L7",null,{}]]}],["$","div",null,{"className":"p-6 flex flex-col","children":[["$","div",null,{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm mb-8 max-w-[960px] scroll-mt-20","id":"summary","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","h1",null,{"className":"flex gap-2.5 items-center text-2xl font-bold","children":[["$","$L8",null,{"children":[["$","$L9",null,{"src":"avatar.jpg","alt":""}],["$","$La",null,{"children":"LW"}]]}],"Luke Woods"]}],["$","h2",null,{"className":"flex gap-2 items-center text-lg font-semibold mt-4","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":16,"height":16,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-info","aria-hidden":"true","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","1dtifu",{"d":"M12 16v-4"}],["$","path","e9boi3",{"d":"M12 8h.01"}],"$undefined"]}]," Summary"]}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6","children":["$","div",null,{"className":"flex flex-col md:flex-row gap-12","children":[["$","div",null,{"className":"w-full md:w-1/3 md:shrink-0","children":["$","$Lb",null,{"images":[{"src":"avatar.jpg","alt":"Luke Woods avatar"}]}]}],["$","div",null,{"className":"w-full md:w-2/3","children":[["$","p",null,{"className":"leading-7","children":"I have 15+ years of hands-on experience designing and building frontend-focused web and mobile applications, specializing in React, React Native, TypeScript, and Node. A background in digital interface design, plus naturally accumulated full-stack and infrastructure knowledge, gives me a practical perspective that bridges design and engineering. I've built and led agile teams across insurance, hospitality, education, and enterprise security to deliver highly performant, accessible user experiences at scale. I work remotely from Riverside-Albert, NB, Canada."}],["$","p",null,{"className":"leading-7 mt-6","children":"I believe strong developer experience — the day-to-day workflows, ceremonies, trust, and camaraderie — is fundamental to great products. By establishing clear patterns and investing in quality tooling, I create fast, predictable, and scalable development workflows that enable performant interfaces from the start. I approach performance holistically: optimizing Core Web Vitals, reducing bundle size, architecting for server-side rendering, designing mobile-first, and making deliberate framework choices that serve both developer and user. Just as importantly, these systems are built to scale, evolve, and be maintained over time."}],["$","p",null,{"className":"leading-7 mt-6","children":"I'm an Associate Principal Frontend Architect currently leading large-scale, mission-critical projects for major hotel brands. Last year I architected and executed a full website rebuild for one of them with Contentful CMS — from content model design to migration scripts to Angular SSR performance optimization. This year I'm leading agile teams rebuilding another brand's platform with AEM, React Native Expo mobile, and a layered BFF/BLL architecture, while pioneering the transition to Claude Code through Bedrock — proving how agentic AI can amplify team output without replacing the human judgment that drives quality."}]]}]]}]}]]}],"$Lc"]}],"$Ld"]}]]}]}]}]
e:I["8q6ep","default",["client/server.6be0515e.js","client/home.7483c927.js"]]
f:T415,I architected the server-side rendering approach for a large Contentful-driven enterprise site, delivering a roughly 5x improvement in page render time, with every page rendering in under three seconds across hundreds of authored dynamic pages. I re-engineered the Angular SSR/Node layer to resolve content in parallelized batches rather than walking deep dependency trees serially, bounded response complexity through JSON max-depth limits and guarded against cyclical dependencies, and introduced a per-page-type 'depth map' as the single source of truth for how deeply to resolve each Contentful content type — cascading two levels down via parallel requests keyed off parent content-type references. The approach preserved full authoring flexibility, with no lost sections or content-type variants. Paired with AI-assisted tooling (Claude Code), I empirically pinpointed the max-depth thresholds that balanced performance against authoring flexibility. I also contributed to the platform's backend .NET layer, primarily on GraphQL updates.c:["$","div",null,{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm mb-8 max-w-[960px] scroll-mt-20","id":"my-story","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":["$","h2",null,{"className":"flex gap-2 items-center text-xl font-bold","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":16,"height":16,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-clipboard-clock","aria-hidden":"true","children":[["$","path","fo4ql5",{"d":"M16 14v2.2l1.6 1"}],["$","path","1ujtp2",{"d":"M16 4h2a2 2 0 0 1 2 2v.832"}],["$","path","qvpao1",{"d":"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h2"}],["$","circle","qoo3c4",{"cx":"16","cy":"16","r":"6"}],["$","rect","ublpy",{"x":"8","y":"2","width":"8","height":"4","rx":"1"}],"$undefined"]}]," My Story"]}]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex flex-col gap-6","children":["$","ul",null,{"children":[["$","$Le","Bounteous-0",{"company":"Bounteous","title":"Associate Principal Frontend Architect","period":"Jun 2021 - Present (5 yrs 3 mos)","avatarSrc":["icons/bounteous_logo.jpeg"],"avatarFallback":"LW","description":["Bounteous is a global digital experience consultancy that co-innovates with ambitious brands, spanning strategy, experience design, digital engineering, cloud, and data & AI across a team of 5,000+ worldwide.","$f","I was a primary code contributor and project leader for a React Native mobile team at a major online education provider, allowing students to upload their transcripts to find suitable programs in their area. On a separate engagement, I was the lead React Native engineer on a national health insurer's white-label mobile application.","I led the development and team for the nation's largest contact lens distributor, building a Next.js React web application with DevOps integrations that lets wearers order in bulk at a discount through their primary eye care provider.","I contributed to the React starter kit accelerator program by providing a solution for sharing React web and React Native component code across platforms while leveraging a single design system (Figma), without sacrificing HTML semantics or accessibility. I mentored junior developers within the React apprenticeship program on frontend development best practices, code quality, and accessibility.","I've led multiple teams across my tenure as a principal and lead architect. On the current engagement I sit on the program leadership team as principal architect over roughly 30 people organized into multiple full-stack POD teams. I was lead architect on a major global hotel brand's web platform and on a major online education provider's React Native app, and led the contact-lens distributor engagement end to end — authoring requirements and test cases, running scrum, and owning the big-picture architecture.","Bounteous has deepened its partnership with Anthropic, and I serve as an internal AI Champion — pursuing Anthropic certifications and currently leading an AI pilot on a client engagement, while advocating for and guiding the adoption of AI-assisted engineering practices across teams."],"badges":[{"label":"JavaScript","link":"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript"},{"label":"React","link":"https://react.dev/"},{"label":"React Native","link":"https://reactnative.dev/"},{"label":"Next.js","link":"https://nextjs.org/"},{"label":"Angular","link":"https://angular.dev/"},{"label":"Contentful","link":"https://www.contentful.com/"},{"label":".NET","link":"https://dotnet.microsoft.com/"},{"label":"GraphQL","link":"https://graphql.org/"},{"label":"Azure DevOps","link":"https://azure.microsoft.com/en-ca/products/devops#overview"},{"label":"Node.js","link":"https://nodejs.org/en/learn/getting-started/introduction-to-nodejs"},{"label":"Express","link":"https://expressjs.com/"},{"label":"MongoDB Atlas","link":"https://www.mongodb.com/cloud/atlas/efficiency"},{"label":"Mongoose","link":"https://mongoosejs.com/"},{"label":"Formik","link":"https://formik.org/"},{"label":"Storybook","link":"https://storybook.js.org/"},{"label":"Husky","link":"https://typicode.github.io/husky/"},{"label":"TypeScript","link":"https://www.typescriptlang.org/"},{"label":"Redux Toolkit","link":"https://redux-toolkit.js.org/"},{"label":"Luxon","link":"https://moment.github.io/luxon/"},{"label":"Webpack Bundle Analyzer","link":"https://www.npmjs.com/package/@next/bundle-analyzer"},{"label":"Lottie React","link":"https://www.npmjs.com/package/lottie-react"},{"label":"React Testing Library","link":"https://testing-library.com/docs/react-testing-library/intro/"},{"label":"Anthropic","link":"https://www.anthropic.com/"},{"label":"Claude Code","link":"https://www.anthropic.com/claude-code"},{"label":"Visual Studio Code","link":"https://code.visualstudio.com/"},{"label":"git","link":"https://git-scm.com/"},{"label":"Agile Methodology","link":"https://www.atlassian.com/agile"},{"label":"Jira","link":"https://www.atlassian.com/software/jira"},{"label":"Confluence","link":"https://www.atlassian.com/software/confluence"},{"label":"Figma","link":"https://www.figma.com/"},{"label":"Sketch","link":"https://www.sketch.com/"}]}],"$L10","$L11","$L12","$L13","$L14","$L15","$L16","$L17","$L18","$L19"]}]}]]}]
d:["$","footer",null,{"className":"mt-12 py-6 px-6 border-t border-border text-sm text-muted-foreground flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between","children":[["$","p",null,{"children":["© ",2026," Luke Woods."]}],["$","nav",null,{"aria-label":"Contact","children":["$","ul",null,{"className":"flex flex-wrap items-center gap-4","children":[["$","li",null,{"children":["$","a",null,{"className":"flex items-center gap-1.5 hover:text-foreground","href":"mailto:personal@lukewoods.me","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":16,"height":16,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-mail","aria-hidden":true,"children":[["$","path","132q7q",{"d":"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"}],["$","rect","izxlao",{"x":"2","y":"4","width":"20","height":"16","rx":"2"}],"$undefined"]}]," Email"]}]}],["$","li",null,{"children":["$","a",null,{"className":"flex items-center gap-1.5 hover:text-foreground","href":"https://github.com/SteadfastContributor/","target":"_blank","rel":"noreferrer noopener","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":16,"height":16,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-github","aria-hidden":true,"children":[["$","path","tonef",{"d":"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}],["$","path","9comsn",{"d":"M9 18c-4.51 2-5-2-7-2"}],"$undefined"]}]," GitHub"]}]}],["$","li",null,{"children":["$","a",null,{"className":"flex items-center gap-1.5 hover:text-foreground","href":"https://www.linkedin.com/in/luke-woods-riverside/","target":"_blank","rel":"noreferrer noopener","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":16,"height":16,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-linkedin","aria-hidden":true,"children":[["$","path","c2jq9f",{"d":"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"}],["$","rect","mk3on5",{"width":"4","height":"12","x":"2","y":"9"}],["$","circle","bt5ra8",{"cx":"4","cy":"4","r":"2"}],"$undefined"]}]," LinkedIn"]}]}]]}]}]]}]
10:["$","$Le","Levr.ai-1",{"company":"Levr.ai","title":"Frontend Software Engineer","period":"Jan 2025 - Jul 2025 (7 mos, concurrent)","avatarSrc":["icons/levrfinance_logo.jpeg"],"avatarFallback":"LW","description":["Levr.ai is a Vancouver-based fintech whose AI-powered platform matches small businesses with the right lenders from a network of 50+, using machine learning to make business lending faster and more transparent.","A primary code contributor to the frontend application and the driving force behind a greenfield React TypeScript component library. After investigating the codebase and identifying code duplication as a leading cause of churn, I pitched, proof-of-concepted, and led adoption of a private npm package of Storybook-documented reusable components as a single source of truth, which the team adopted enthusiastically. Focused on improving the agile process and code reuse while maintaining delivery velocity and elevating the quality of the user experience."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:16","$c:props:children:1:props:children:props:children:0:props:badges:1",{"label":"Jest","link":"https://jestjs.io/"},"$c:props:children:1:props:children:props:children:0:props:badges:13","$c:props:children:1:props:children:props:children:0:props:badges:14","$c:props:children:1:props:children:props:children:0:props:badges:15","$c:props:children:1:props:children:props:children:0:props:badges:24","$c:props:children:1:props:children:props:children:0:props:badges:25","$c:props:children:1:props:children:props:children:0:props:badges:26","$c:props:children:1:props:children:props:children:0:props:badges:27","$c:props:children:1:props:children:props:children:0:props:badges:28","$c:props:children:1:props:children:props:children:0:props:badges:29",{"label":"Docker","link":"https://www.docker.com/"}]}]
11:["$","$Le","VERB Interactive-2",{"company":"VERB Interactive","title":"Senior Frontend React Engineer","period":"Nov 2020 - Jun 2021 (7 mos)","avatarSrc":["icons/verb-logo.jpeg"],"avatarFallback":"LW","description":["VERB Interactive is a Halifax-based digital marketing and technology agency specializing in travel and hospitality, building immersive platforms and omnichannel campaigns for cruise lines, resorts, ferries, and destinations.","I led the development, optimization, and deployment of React client applications for the agency's travel and hospitality clients. Championed a single white-label React application — driven by per-client environment variables, configuration, and theming — to build ferry and cruise booking experiences atop a shared logic and best-practice layer. The approach surfaced repeatedly in leadership discussions. It was adopted and expanded into the agency's general frontend best practices. Related leadership discussions also established agreed-upon PR gating, unit testing practices, and web application standards leveraged across all React applications at the agency."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$c:props:children:1:props:children:props:children:0:props:badges:1","$c:props:children:1:props:children:props:children:0:props:badges:3","$c:props:children:1:props:children:props:children:0:props:badges:14","$c:props:children:1:props:children:props:children:0:props:badges:17",{"label":"GitLab","link":"https://about.gitlab.com/"},"$10:props:badges:2",{"label":"Atom","link":"https://github.com/atom/atom"},"$c:props:children:1:props:children:props:children:0:props:badges:25","$c:props:children:1:props:children:props:children:0:props:badges:26","$c:props:children:1:props:children:props:children:0:props:badges:27","$c:props:children:1:props:children:props:children:0:props:badges:28","$c:props:children:1:props:children:props:children:0:props:badges:29"]}]
12:["$","$Le","IBM Security-3",{"company":"IBM Security","title":"Advisory Frontend Software Engineer","period":"Apr 2019 - Nov 2020 (1 yr 8 mos)","avatarSrc":["icons/ibm_logo.jpeg"],"avatarFallback":"LW","description":["IBM Security was IBM's cybersecurity division, delivering enterprise threat detection, data protection, and identity solutions — built on IBM's open-source Carbon Design System.","As an advisory software engineer at IBM Security, I led two frontend teams of roughly six to seven engineers each. I drove the migration of both teams to Next.js and established global best practices for Next.js and Redux across them. We developed the first versions of the Data Explorer and Data Connector Next.js security applications, and collaborated closely with the IBM Carbon components team to test and provide feedback for Carbon components."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$c:props:children:1:props:children:props:children:0:props:badges:1","$c:props:children:1:props:children:props:children:0:props:badges:3","$c:props:children:1:props:children:props:children:0:props:badges:9","$c:props:children:1:props:children:props:children:0:props:badges:10","$c:props:children:1:props:children:props:children:0:props:badges:17","$10:props:badges:2","$c:props:children:1:props:children:props:children:0:props:badges:25","$c:props:children:1:props:children:props:children:0:props:badges:26","$10:props:badges:12",{"label":"Kubernetes","link":"https://kubernetes.io/"},{"label":"Babel","link":"https://babeljs.io/"},{"label":"Jenkins","link":"https://www.jenkins.io/"},{"label":"npm","link":"https://www.npmjs.com/"},{"label":"GitHub","link":"https://github.com/"}]}]
13:["$","$Le","OneClass-4",{"company":"OneClass","title":"Frontend Software Engineer","period":"Apr 2018 - May 2019 (1 yr 1 mo)","avatarSrc":["icons/oneclass-logo.jpeg"],"avatarFallback":"LW","description":["OneClass is a Toronto-based edtech platform where university students share and access crowdsourced lecture notes, study guides, and video tutorials, having served over 4 million students.","Brought in as the React expert, I led OneClass's migration to server-side React with Next.js — driving the frontend SSR direction entirely while teaching and empowering their other frontend developer to move with it. Partnering with the CTO (their lead backend developer, working in Ruby), we consolidated many granular API requests into well-structured, all-encompassing page-level data sets; together with the Next.js migration, this markedly improved the platform's SEO and performance. Also contributed API and data work as part of full-stack solutions to the platform's rendering and performance challenges."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$c:props:children:1:props:children:props:children:0:props:badges:1","$c:props:children:1:props:children:props:children:0:props:badges:3","$c:props:children:1:props:children:props:children:0:props:badges:17",{"label":"Ruby","link":"https://www.ruby-lang.org/en/"},"$10:props:badges:2","$11:props:badges:7","$c:props:children:1:props:children:props:children:0:props:badges:25","$c:props:children:1:props:children:props:children:0:props:badges:26","$12:props:badges:11",{"label":"Chai","link":"https://www.chaijs.com/"},{"label":"Sinon","link":"https://sinonjs.org/"},{"label":"Yarn","link":"https://yarnpkg.com/"},"$12:props:badges:13","$12:props:badges:14"]}]
14:["$","$Le","Manifold.co (Snyk Security)-5",{"company":"Manifold.co (Snyk Security)","title":"Frontend Software Engineer","period":"Jun 2017 - Mar 2018 (10 mos)","avatarSrc":["icons/manifold-logo.jpeg","icons/snyk.jpeg"],"avatarFallback":"LW","description":["Manifold was a cloud-based developer marketplace for discovering, buying, and managing services and APIs without vendor lock-in, handling pricing, billing, identity, and provisioning; the company was later acquired by developer-security leader Snyk.","Joined the developer marketplace during its MVP era to take over frontend leadership from a co-founding frontend engineer who was shifting focus to marketing, leading the React team on a React and Redux codebase. Built the user settings pages and the Stripe payment integration, and replaced manual test-case checklists with proper automated end-to-end testing (Cypress.io) alongside Husky pre-commit hooks.","Helped build out the frontend team: I created the frontend engineer take-home coding test, screened and interviewed candidates before extending take-homes, reviewed submissions, made the hiring decisions, and onboarded new engineers into the first team.","The company was remote-first; I worked primarily remotely — as I had for years prior — travelling to Halifax periodically to be present as a leader."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$c:props:children:1:props:children:props:children:0:props:badges:1","$c:props:children:1:props:children:props:children:0:props:badges:3","$c:props:children:1:props:children:props:children:0:props:badges:17",{"label":"Stripe","link":"https://stripe.com/"},"$10:props:badges:2","$11:props:badges:7","$c:props:children:1:props:children:props:children:0:props:badges:25","$c:props:children:1:props:children:props:children:0:props:badges:26","$12:props:badges:11","$13:props:badges:10","$13:props:badges:11","$13:props:badges:12","$12:props:badges:13","$c:props:children:1:props:children:props:children:0:props:badges:15",{"label":"Codecov","link":"https://about.codecov.io/"},{"label":"Cypress","link":"https://www.cypress.io/"},"$12:props:badges:14"]}]
15:["$","$Le","Binary Star/Levio (Liberty Mutual Insurance)-6",{"company":"Binary Star/Levio (Liberty Mutual Insurance)","title":"Frontend Software Engineer","period":"May 2015 - Jun 2017 (2 yrs 2 mos)","avatarSrc":["icons/levio.jpeg","icons/liberty_mutual_insurance_logo.jpeg"],"avatarFallback":"LW","description":["Binary Star (later acquired by Levio) was a software consultancy that embedded engineers into enterprise client teams — here augmenting Liberty Mutual Insurance, a Fortune 100 property & casualty insurer.","Augmented the Liberty Mutual Insurance team as part of a small agile effort to migrate their entire home and auto insurance customer base and applications from the Dojo Toolkit to React.js.","Developed a white label React application that was also leveraged by Geico. Rolled the React app out state by state, folding in user-event analysis, critical bug fixes, and performance improvements before each successive release as the production rollout expanded.","Eventually retired the Dojo Toolkit across all home and auto insurance web applications within Liberty Mutual and Geico after transitioning them to the new React white label responsive web application architecture.","Worked alongside seasoned Liberty Mutual engineering experts whose best practices became lasting influences and a source of inspiration for my later projects."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$c:props:children:1:props:children:props:children:0:props:badges:1","$c:props:children:1:props:children:props:children:0:props:badges:9","$c:props:children:1:props:children:props:children:0:props:badges:11","$c:props:children:1:props:children:props:children:0:props:badges:12","$c:props:children:1:props:children:props:children:0:props:badges:17","$c:props:children:1:props:children:props:children:0:props:badges:25","$c:props:children:1:props:children:props:children:0:props:badges:26","$c:props:children:1:props:children:props:children:0:props:badges:27","$c:props:children:1:props:children:props:children:0:props:badges:28","$13:props:badges:10","$12:props:badges:13",{"label":"Gulp","link":"https://gulpjs.com/"},{"label":"Grunt","link":"https://gruntjs.com/"},{"label":"Photoshop","link":"https://www.adobe.com/ca/products/photoshop.html"},{"label":"SoapUI","link":"https://www.soapui.org/"},{"label":"BitBucket","link":"https://bitbucket.org/product"},"$12:props:badges:14",{"label":"Dojo Toolkit","link":"https://dojotoolkit.org/"},{"label":"AngularJS","link":"https://angularjs.org/"},{"label":"Mocha","link":"https://mochajs.org/"},{"label":"Sublime Text","link":"https://www.sublimetext.com/"},{"label":"Eclipse","link":"https://eclipseide.org/"},{"label":"WebSockets","link":"https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API"}]}]
16:["$","$Le","Blue Spurs (Deloitte Canada)-7",{"company":"Blue Spurs (Deloitte Canada)","title":"FullStack JavaScript Software Engineer","period":"May 2014 - May 2015 (1 yr 1 mo)","avatarSrc":["icons/blue-spurs-logo.jpeg","icons/deloitte-logo.png"],"avatarFallback":"LW","description":["Blue Spurs was a Fredericton-based cloud and IoT consultancy and AWS Advanced Consulting Partner delivering custom cloud solutions; the firm was acquired by Deloitte Canada in 2019.","Provided custom full stack JavaScript solutions. For one client I built, end to end, a mobile app that let university students safely connect and meet up on campus: one student posts a request for help, another accepts, the two are routed into real-time chat, and if they choose to meet, the app walks them on foot — via the Google Maps APIs — to a safe, public location on campus. Real-time messaging ran on AWS, with an Angular.js front end packaged through Cordova/PhoneGap into native iOS and Android apps.","I owned the entire stack — the SQL database design and schemas, the Node/Express API layer, and the AWS integrations — supported by seasoned AWS experts on the team who were readily available for guidance.","Beyond the engineering, I designed the entire interface in Photoshop, created the app's logo, and presented the UX and design approach before building it end to end."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$c:props:children:1:props:children:props:children:0:props:badges:9","$c:props:children:1:props:children:props:children:0:props:badges:10",{"label":"AWS","link":"https://aws.amazon.com/"},{"label":"Google Maps API","link":"https://developers.google.com/maps"},"$c:props:children:1:props:children:props:children:0:props:badges:25","$c:props:children:1:props:children:props:children:0:props:badges:26","$c:props:children:1:props:children:props:children:0:props:badges:27","$c:props:children:1:props:children:props:children:0:props:badges:28","$12:props:badges:13","$15:props:badges:13",{"label":"Less","link":"https://lesscss.org/"},{"label":"CSS","link":"https://developer.mozilla.org/en-US/docs/Web/CSS"},{"label":"HTML","link":"https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics"},{"label":"PHP","link":"https://www.php.net/"},{"label":"CakePHP","link":"https://cakephp.org/"},{"label":"SQL","link":"https://www.w3schools.com/sql/sql_intro.asp"},{"label":"Cordova","link":"https://cordova.apache.org/"},"$15:props:badges:19","$15:props:badges:14"]}]
17:["$","$Le","ZapTap-8",{"company":"ZapTap","title":"FullStack JavaScript Software Engineer","period":"Jan 2013 - Apr 2014 (1 yr 4 mos)","avatarSrc":["icons/zaptap-logo.png"],"avatarFallback":"LW","description":["ZapTap was a Fredericton startup building QR- and NFC-powered product tags that let shoppers scan in-store items for rich product details without an app — an early 'augmented retail' platform.","Joined a six-person startup as the frontend engineering and design lead, operating in two-week sprints. As essentially a two-person delivery team, I designed and built both applications end to end in Knockout.js: a provider app where brands and retailers manage their product profiles and NFC/QR tags, and a client app where shoppers scan a tag to view rich product information.","While I lived mostly in the Knockout and design world, I collaborated closely with the lead backend developer — reviewing and shaping API contracts and staying deeply involved in full-stack implementation planning — a mentorship that carried through my career.","Design work extended beyond the screen: I also produced print collateral for conventions and the physical wrap designs for the units that housed the QR and NFC hardware."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$c:props:children:1:props:children:props:children:0:props:badges:26","$15:props:badges:14",{"label":"InDesign","link":"https://www.adobe.com/ca/products/indesign.html"},{"label":"Illustrator","link":"https://www.adobe.com/ca/products/illustrator.html"},"$16:props:badges:11","$16:props:badges:12","$16:props:badges:13",{"label":"jQuery","link":"https://jquery.com/"},{"label":"Knockout.js","link":"https://knockoutjs.com/"},{"label":"JSON","link":"https://www.json.org/json-en.html"},{"label":"AJAX","link":"https://en.wikipedia.org/wiki/Ajax_(programming)"},{"label":"WordPress","link":"https://wordpress.com/"},{"label":"Tortoise SVN","link":"https://tortoisesvn.net/"},{"label":"RESTful API","link":"https://aws.amazon.com/what-is/restful-api/"}]}]
18:["$","$Le","OrangeSprocket-9",{"company":"OrangeSprocket","title":"Frontend Software Engineer","period":"Mar 2011 - Jan 2013 (1 yr 11 mos)","avatarSrc":["icons/orangesprocket_logo.jpeg"],"avatarFallback":"LW","description":["OrangeSprocket is a Fredericton-based digital branding agency delivering branding, web design and development, and digital marketing for clients ranging from local businesses to global brands.","As a frontend engineer at this small agency, I built white label WordPress themes, Expression Engine content management integrations, static websites, and HTML templates — with plenty of custom PHP and jQuery. Working in an agile-like rhythm, we triaged incoming client work in morning stand-ups and divided and conquered, shipping on the order of half a dozen or more client sites.","This is also where I began designing as well as building, laying the foundation for the design responsibilities I carried through later roles."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$15:props:badges:14","$17:props:badges:3","$17:props:badges:4","$16:props:badges:11","$16:props:badges:12","$16:props:badges:13","$16:props:badges:14","$17:props:badges:8",{"label":"Expression Engine","link":"https://expressionengine.com/"},{"label":"Coda/Nova","link":"https://panic.com/coda/"},{"label":"Razor Syntax for ASP.NET","link":"https://learn.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-8.0"},"$15:props:badges:21"]}]
19:["$","$Le","Centre for Arts and Technology-10",{"company":"Centre for Arts and Technology","title":"Internet Publishing College Instructor","period":"Oct 2009 - Dec 2011 (2 yrs 3 mos, concurrent)","avatarSrc":["icons/cat-logo.jpeg"],"avatarFallback":"LW","description":["The Centre for Arts and Technology is an Atlantic Canada career college offering industry-designed diploma programs in digital media, graphic and web design, animation, and audio production.","As an instructor I took the existing curriculum and modernized it to better equip students for current industry job needs — teaching roughly 20 students per class in three-hour sessions covering HTML/CSS, content management systems, modern web development techniques, web design principles, PHP, and WordPress integrations.","Having attended this college myself and landed a job immediately after graduating, I was asked to identify the 'why.' I advised the college on how to modernize its curriculum, then taught the updated material — and my students went on to strong outcomes in the field.","This was the origin of a mentorship and leadership instinct that runs throughout my career — from apprenticeship mentoring and building hiring pipelines to upskilling the engineers on the teams I've since led."],"badges":["$c:props:children:1:props:children:props:children:0:props:badges:0","$15:props:badges:14","$16:props:badges:12","$16:props:badges:13","$16:props:badges:14","$17:props:badges:8","$17:props:badges:12",{"label":"FileZilla","link":"https://filezilla-project.org/"},{"label":"Acrobat Pro","link":"https://www.adobe.com/ca/acrobat/complete-pdf-solution.html"},{"label":"SEO","link":"https://developers.google.com/search/docs/fundamentals/seo-starter-guide"},{"label":"Dreamweaver","link":"https://www.adobe.com/ca/products/dreamweaver.html"},"$15:props:badges:21"]}]
