PageSourceSearch

https://stefaniemolin.com/_next/static/chunks/pages/interviews-287ae47542cd146a.js

js stefaniemolin.com collected 2026-10-03 19:16:03 UTC 38,748 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[248],{6417:(e,t,a)=>{"use strict";a.d(t,{A:()=>s,O:()=>i});var n=a(54317);let s={PANDAS_WORKSHOP:{link:"/workshops/pandas-workshop",contentClass:"workshop",image:{src:"https://hips.hearstapps.com/elleuk.cdnds.net/16/36/3200x1599/gallery-1473083573-pandas.jpg",width:3200,height:1599},title:"Pandas Workshop"},DATA_VIZ_WORKSHOP:{link:"/workshops/python-data-viz-workshop",contentClass:"workshop",image:{src:"https://images.unsplash.com/photo-1517783999520-f068d7431a60?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=2340&q=80",width:2340,height:1560},title:"Python Data Visualization Workshop"},PRE_COMMIT_WORKSHOP:{link:"/workshops/pre-commit-workshop",contentClass:"workshop",image:{src:"".concat(n.Cy,"/pre-commit-workshop/images/cover.jpg"),width:1344,height:768},title:"Pre-Commit Hooks Workshop"},AST_WORKSHOP:{link:"/workshops/ast-workshop",contentClass:"workshop",image:{src:"https://stefaniemolin.com/ast-workshop/media/animation-try-except-nested-full.gif",width:1576,height:1299},title:"Abstract Syntax Tree (AST) Workshop"},PIVOT_AND_PLOT_WITH_PANDAS_ARTICLE:{link:"/articles/data-science/how-to-pivot-and-plot-data-with-pandas",contentClass:"article",image:{src:"/assets/articles/data-science/how-to-pivot-and-plot-data-with-pandas/cover-image.jpg",width:2880,height:1920},title:"How to Pivot and Plot Data with Pandas"},PRE_COMMIT_ARTICLES:{link:"/articles/devx/pre-commit/",contentClass:"page",image:{src:"/assets/articles/devx/pre-commit/setup-guide/cover.jpg",width:1200,height:691},title:"Pre-Commit Articles"},DATA_MORPH_ARTICLE:{link:"/articles/data-science/introducing-data-morph/",contentClass:"article",image:{src:"/assets/articles/data-science/introducing-data-morph/panda-to-star.gif",width:774,height:379},title:"[Project] Data Morph"},EXIF_STRIPPER_ARTICLE:{link:"/articles/devx/pre-commit/exif-stripper/",contentClass:"article",image:{src:"https://stefaniemolin.com/exif-stripper/logo.png",width:269,height:176},title:"[Project] exif-stripper"},DATA_SCIENCE_ARTICLES:{link:"/tags/data%20science/",contentClass:"page",image:{src:"/assets/articles/data-science/introducing-data-morph/panda-to-star.gif",width:774,height:379},title:"Data Science Articles"},DATA_VIZ_ARTICLES:{link:"/tags/data%20visualization/",contentClass:"page",image:{src:"/assets/articles/data-science/introducing-data-morph/panda-to-star.gif",width:774,height:379},title:"Data Visualization Articles"},PANDAS_BOOK:{link:"/books/Hands-On-Data-Analysis-with-Pandas-2nd-edition/",contentClass:"book",image:{src:"/assets/books/pandas-book-stack.jpg",width:2520,height:1897},title:"Hands-On Data Analysis with Pandas"},PANDAS_BOOK_1:{link:"/books/Hands-On-Data-Analysis-with-Pandas-1st-edition/",contentClass:"book",image:{src:"/assets/books/hands-on-data-analysis-with-pandas-1st-edition/cover.png",width:250,height:309},title:"Hands-On Data Analysis with Pandas (1st edition)"},PANDAS_BOOK_2:{link:"/books/Hands-On-Data-Analysis-with-Pandas-2nd-edition/",contentClass:"book",image:{src:"/assets/books/hands-on-data-analysis-with-pandas-2nd-edition/cover.png",width:1050,height:1295},title:"Hands-On Data Analysis with Pandas (2nd edition)"},BOOKS:{link:"/books/",contentClass:"page",image:{src:"/assets/books/pandas-book-stack.jpg",width:2520,height:1897},title:"Books"},EVENTS:{link:"/events/",contentClass:"page",image:{src:"/assets/events/events-thumbnail.jpg",width:1653,height:1264},title:"Events"},INTERVIEWS:{link:"/interviews/",contentClass:"page",image:{src:"/assets/interviews/portrait.jpg",width:2500,height:1668},title:"Interviews"},WORKSHOPS:{link:"/workshops/",contentClass:"page",image:{src:"/assets/workshops/thumbnail.jpg",width:1152,height:896,alt:"Conference talks developed by Stefanie Molin."},title:"Workshops"},TALKS:{link:"/talks/",contentClass:"page",image:{src:"/assets/talks/thumbnail.jpg",width:300,height:225,alt:"Conference talks developed by Stefanie Molin."},title:"Talks"},ARTICLES:{link:"/articles/",contentClass:"page",image:{src:"https://images.unsplash.com/photo-1453928582365-b6ad33cbcf64?q=80&w=2673&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",width:400,height:311},title:"Articles"},BLOG:{link:"/blog/",contentClass:"page",image:{src:"/assets/blog/thumbn
1ail.jpg",width:400,height:311},title:"Journal"},TRAVEL_BLOG:{link:"/blog/travel/",contentClass:"page",image:{src:"/assets/blog/travel/travel-blog.jpg",width:1152,height:896},title:"Travel Blog"},BOOK_SIGNINGS:{link:"/events/book-signings/",contentClass:"page",image:{src:"/assets/events/book-signings/first-book-signing-line.jpg",width:2016,height:1512},title:"Book Signings"},CONFERENCES:{link:"/events/conferences/",contentClass:"page",image:{src:"/assets/events/conferences/conference-badges.jpg",width:2967,height:2956},title:"Conferences"},TIMELINE:{link:"/timeline/",contentClass:"page",image:{src:"https://images.unsplash.com/photo-1476820865390-c52aeebb9891?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTZ8fGdyb3d0aHxlbnwwfHwwfHx8MA%3D%3D",width:800,height:534},title:"Timeline"},UPCOMING_EVENTS:{link:"/events/upcoming/",contentClass:"page",image:{src:"https://images.unsplash.com/photo-1499591934245-40b55745b905?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTZ8fGdyb3d0aHxlbnwwfHwwfHx8MA%3D%3D",width:800,height:532},title:"Upcoming Events"},AST_KEYNOTE:{link:"/talks#build-your-own-(simple)-static-code-analyzer",contentClass:"page",image:{src:"https://stefaniemolin.com/build-your-own-simple-static-code-analyzer-talk/media/traversal-animation.gif",width:1368,height:1079},title:"Build Your Own (Simple) Static Code Analyzer"}},i={GET_STARTED_IN_OPEN_SOURCE_ARTICLE:{title:"5 Ways to Get Started in Open Source",slug:"/articles/open-source/5-ways-to-get-started-in-open-source",contentClass:"article"}}},10804:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(6417),s=a(10947);let i=e=>{let{contentClass:t,link:a,title:n}=e;return{contentClass:t,slug:a,title:n}},o=[{title:"PyCon Lithuania Special - Stefanie Molin",link:"https://youtu.be/etV2lQxWqM0",coverImage:"https://img.youtube.com/vi/etV2lQxWqM0/sddefault.jpg",format:"podcast",host:"Uncle Data",date:"2025-05-19",description:{text:"This discussion follows Stefanie Molin's evolution from programming novice to core\n      open-source developer. Stefanie shares her transition from R to Python and her approach to\n      creating accessible learning materials for workshops and presentations.\n\n      She offers practical insights into open-source development, emphasising how quality\n      documentation drives tool adoption and user engagement. The conversation addresses challenges\n      like balancing contribution time with other responsibilities and staying current with emerging\n      libraries.\n\n      Stefanie provides valuable advice for aspiring contributors, highlighting the importance of\n      communication skills and understanding user needs. Her reflections on her engineering journey\n      and upcoming projects offer a realistic look at the collaborative nature of open-source\n      development and the satisfaction that comes from community contribution.",source:"episode summary"},duration:"54 min",seeAlso:[{contentClass:"page",slug:s.EL.AST_KEYNOTE.link,title:"PyCon Lithuania Keynote"},i(n.A.PRE_COMMIT_ARTICLES),n.O.GET_STARTED_IN_OPEN_SOURCE_ARTICLE]},{title:"Episode 482: Pre-Commit Hooks for Python Devs",link:"https://talkpython.fm/episodes/show/482/pre-commit-hooks-for-python-devs",coverImage:"https://cdn-podcast.talkpython.fm/episodes/youtube_image/EzlzX1OL92w/pre-commit-hooks-for-python-devs.jpg?v=1",format:"podcast",host:"Talk Python To Me",date:"2024-10-24",time:"15:20:00-04:00",description:{text:"Do you struggle to make sure your code is always correct before you check it in? What\n      about your team members' code? That one person who never wants to run the linter? Tired of\n      dealing with tons of conflicts and spurious git changes? You need git pre-commit hooks. We're\n      lucky to have Stefanie Molin on this episode who has done a bunch of writing and teaching of\n      git hooks.",source:"episode summary"},duration:"1h 10m",seeAlso:[i(n.A.PRE_COMMIT_ARTICLES)]},{title:"Episode 190: Great Starting Points for Contributing to Open Source",link:"https://realpython.com/podcasts/rpp/190/",coverImage:"https://realpython.com/cdn-cgi/image/width=1920,format=auto/https://files.realpython.com/media/E_190_Podcast_Title.2a7fa5865b10.jpg",format:"podcast",host:"The Real Python Podcast",date:"2024-02-02",description:{text:"What's it like to sit down for your first developer sprint at a conference?\n      How do you find an appropriate issue to work on as a new open-source\n      contributor? This week on the show, author and software engineer Stefanie\n      Molin is here to discu
1ss starting to contribute to open-source projects.",source:"episode summary"},duration:"1h 19m",seeAlso:[n.O.GET_STARTED_IN_OPEN_SOURCE_ARTICLE]},{title:"SDS 675: Pandas for Data Analysis and Visualization",link:"https://www.superdatascience.com/podcast/pandas-for-data-analysis-and-visualization",coverImage:"https://img.youtube.com/vi/wLwazwvOCv8/sddefault.jpg",format:"podcast",host:"Super Data Science Podcast",date:"2023-05-02",description:{text:"Wrangling data in Pandas, when to use Pandas, Matplotlib or Seaborn, and why\n    you should learn to create Python packages: Jon Krohn speaks with guest Stefanie Molin,\n    author of Hands-On Data Analysis with Pandas.",source:"episode summary"},duration:"1h 09m",seeAlso:[i(n.A.DATA_MORPH_ARTICLE)]},{title:"PyDev of the Week: Stefanie Molin",link:"https://www.blog.pythonlibrary.org/2022/08/01/pydev-of-the-week-stefanie-molin/",coverImage:"/assets/interviews/portrait.jpg",format:"article",host:"Mouse vs. Python",date:"2022-08-01",description:{text:"In her feature as PyDev of the Week, Stefanie Molin discusses how she got started\n    with Python, her favorite Python libraries, and what projects she is working on. She also discusses\n    the top 3 lessons she learned while writing Hands-On Data Analysis with Pandas."},duration:"6 min",seeAlso:[i(n.A.WORKSHOPS)]},{title:"Writing the Book on Pandas - KNN Ep. 58",link:"https://www.youtube.com/watch?v=Pb5CfWa8yUU",coverImage:"https://i3.ytimg.com/vi/Pb5CfWa8yUU/maxresdefault.jpg",format:"podcast",host:"Ken's Nearest Neighbors Podcast",date:"2021-07-28",description:{text:"During her guest episode on the Ken's Nearest Neighbor's Podcast, Stefanie Molin\n    talks about how she got started in data, the importance of domain knowledge, and what data\n    professionals could learn from software engineers. On a personal side, Ken and Stefanie discuss\n    balancing work and studies, the process of writing a book, and the importance of accountability\n    and seeking feedback."},duration:"1h 17m"},{title:"Interview with Stefanie Molin",link:"https://partnerships.packt.com/interview-with-stefanie-molin/",coverImage:"/assets/interviews/portrait.jpg",format:"article",host:"Packt",date:"2021-04-27",description:{text:"In this written interview, Stefanie Molin shares her experience writing the second edition\n    of Hands-On Data Analysis with Pandas (published by Packt on April 29, 2021)."},duration:"4 min"},{title:"A Conversation with Bloomberg's Stefanie Molin about her new book on Data Science, Python and Pandas",link:"https://www.bloomberg.com/company/stories/conversation-bloombergs-stefanie-molin-data-science-python-pandas-recent-book/",coverImage:"https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/company/sites/51/2019/08/IMG_4612.jpeg",format:"article",host:"Tech At Bloomberg",date:"2019-08-22",description:{text:"Stefanie Molin recently wrote the technical book Hands-On Data Analysis with Pandas\n      (published by Packt on July 26, 2019). Her work shows readers how to analyze data and get started\n      with machine learning in Python using the powerful pandas library. She's a software engineer and\n      data scientist, and a member of the Security Data Science team at Bloomberg that researches and\n      develops solutions using data and machine learning to help improve and automate Bloomberg's\n      information security processes. In her job, Stefanie focuses on identifying and answering\n      security-related questions using data and developing software to solve them. She holds a bachelor's\n      degree in Operations Research from Columbia University's Fu Foundation School of Engineering and\n      Applied Science (CUSEAS), with minors in Economics, and Entrepreneurship and Innovation.",source:"article introduction"},duration:"7 min"}]},10947:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>o,EL:()=>r});var n=a(54317),s=a(6417);let i={DATA_MORPH:{talk:{contentClass:"talk",title:"Data Morph: A Cautionary Tale of Summary Statistics",coverImage:s.A.DATA_MORPH_ARTICLE.image,description:["Statistics do not come intuitively to humans; they always try to find simple ways to\n        describe complex things. Given a complex dataset, they may feel tempted to use simple\n        summary statistics like the mean, median, or standard deviation to describe it. However,\n        these numbers are not a replacement for visualizing the distribution.","To illustrate this fact, researchers have generated many datasets that are very different\n        visually, but share the same summary statistics. In this talk, I will discuss\n        [Data Morp
1h](/data-morph/), an open source package that builds on\n        previous research using simulated annealing to perturb an arbitrary input dataset into a\n        variety of shapes, while preserving the mean, standard deviation, and correlation to\n        multiple decimal points. I will showcase how it works, discuss the challenges faced during\n        development, and explore the limitations of this approach."],slidesLink:"".concat(n.Cy,"/data-morph-talk/"),duration:"30 minutes",link:"/talks/#data-morph-a-cautionary-tale-of-summary-statistics"},seeAlso:{title:"Data Morph: Moving Beyond the Datasaurus Dozen",slug:s.A.DATA_MORPH_ARTICLE.link,contentClass:s.A.DATA_MORPH_ARTICLE.contentClass}},GETTING_STARTED_IN_OPEN_SOURCE:{talk:{contentClass:"talk",title:"Getting Started with Open Source Contributions",coverImage:{src:"".concat(n.Cy,"/getting-started-with-open-source-talk/images/cover.jpeg"),width:1200,height:800,alt:"A guide to getting started with open source contributions."},description:["The open source community is all about giving back and learning from one another. No matter\n        how small, every contribution is valuable. And everyone can contribute something with a\n        little bit of help. The hardest part is finding something to work on that fits your interests\n        and skills.","In this talk, I will provide five ways that I used to get started contributing to different\n        open source projects. I also share some guidance on selecting projects to contribute to and\n        how to set yourself up for success. Get ready to start your open source journey!"],slidesLink:"".concat(n.Cy,"/getting-started-with-open-source-talk/"),duration:"30 minutes",link:"/talks/#getting-started-with-open-source-contributions"},seeAlso:s.O.GET_STARTED_IN_OPEN_SOURCE_ARTICLE},AST_KEYNOTE:{talk:{contentClass:"talk",subclass:"keynote",title:"Build Your Own (Simple) Static Code Analyzer",coverImage:{src:"".concat(n.Cy,"/build-your-own-simple-static-code-analyzer-talk/media/traversal-animation.gif"),width:1368,height:1079,alt:"Animation of AST traversal in Python on a simple module with a class and two methods."},description:["Code reviewers often face significant cognitive load. Depending on the project, they must\n        scrutinize the implementation, check that the code adheres to conventions – such as\n        using the latest syntax and language constructs – verify that the code is properly\n        documented, and much more. When performed manually, these code-quality checks can easily\n        monopolize the reviewer's time. As a result, it is a key priority to offload as many tasks\n        as possible onto static code analysis tools – like linters and formatters – so\n        the reviewer can focus on the implementation itself.","How do these tools work, and how could you build one of your own to enforce conventions\n        specific to your codebase? In this keynote, I will walk you through the process of creating\n        a simple static code analyzer in Python using a data structure called an abstract syntax\n        tree, which represents your code's structure and allows you to access its components in\n        order to perform checks."],slidesLink:"".concat(n.Cy,"/build-your-own-simple-static-code-analyzer-talk/"),duration:"55 minutes",link:"/talks/#build-your-own-(simple)-static-code-analyzer"},seeAlso:{title:"Process, Analyze, and Transform Python Code with ASTs",slug:s.A.AST_WORKSHOP.link,contentClass:s.A.AST_WORKSHOP.contentClass}}},o=Object.values(i),r=Object.entries(i).reduce((e,t)=>{let[a,n]=t;return{...e,[a]:{contentClass:n.talk.contentClass,title:n.talk.title,link:n.talk.link,subclass:n.talk.subclass}}},{})},26868:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(37876),s=a(84371),i=a(11041);let o=e=>{let{duration:t}=e;return(0,n.jsxs)("div",{className:"flex flex-row items-center gap-x-1",children:[(0,n.jsx)(s.g,{icon:i.a$}),(0,n.jsx)("span",{children:t})]})}},49514:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(37876),s=a(15039),i=a.n(s);let o=e=>{let{children:t,className:a="px-10"}=e;return(0,n.jsx)("div",{className:i()("container mx-auto",a),children:t})}},56715:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var n=a(37876),s=a(84371),i=a(11041),o=a(82353);let r=e=>{let{date:t,relative:a,long:r}=e;return(0,n.jsx)(o.A,{dateString:t,relative:a,long:r,children:(0,n.jsx)(s.g,{icon:i.isQ,className:"pr-1"},t)})}},58345:(e,t,a)=>{"use strict";a.d(t,{m:()=>s});var n=a(54317);let s=e=>e.startsWith("/")?"".concat(n.Cy).concat(e):e},70588:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>k});
1var n=a(37876),s=a(48230),i=a.n(s),o=a(62867),r=a(11041),l=a(84371),c=a(14232),d=a(49514),p=a(64545),h=a(58345),u=a(56715),g=a(26868),m=a(10804),f=a(6417),b=a(15770),v=a(85025),y=a(23445),w=a(99606);function k(){let e=(0,c.useRef)(null),[t,a]=(0,c.useState)(0),s="Interviews",k=f.A.INTERVIEWS.image;return(0,n.jsx)(p.A,{children:(0,n.jsxs)(d.A,{children:[(0,n.jsx)(o.bV,{title:s,description:"A listing of written interviews and podcasts featuring Stefanie Molin on a variety of topics.",openGraph:{images:[{url:(0,h.m)(k.src),width:k.width,height:k.height,alt:"Photo of Stefanie Molin taken by Alex Guevara (@agnyphoto on Instagram) after her first book came out."}]}}),(0,n.jsxs)("div",{className:"-mt-5 mb-20 max-w-5xl mx-auto",children:[(0,n.jsx)("h1",{className:"text-5xl md:text-6xl text-center",children:s}),(0,n.jsx)("div",{ref:e,className:"flex flex-col mt-3 -mx-10 sm:-mx-5 lg:mx-auto",children:m.A.slice(t,t+3).map(e=>{let{link:t,coverImage:a,format:s,host:o,date:c,title:d,description:p,duration:h,seeAlso:m}=e;return(0,n.jsx)(v.A,{id:d,header:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"w-full text-center lg:text-left",children:(0,n.jsx)(b.A,{href:t,children:(0,n.jsxs)("h3",{className:"text-lg sm:text-xl md:text-2xl hover:underline text-pretty",children:[d,(0,n.jsx)(l.g,{icon:r.Ju_,size:"sm",className:"pl-2"})]})})}),(0,n.jsx)("div",{className:"text-sm sm:text-base md:text-lg w-full text-center lg:text-left",children:(0,n.jsxs)("h4",{className:"text-slate-600",children:[(0,n.jsx)(l.g,{icon:"podcast"===s?r.uaS:r.bG5,className:"pr-1"}),o]})})]}),body:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b.A,{href:t,children:(0,n.jsx)("img",{src:a,alt:d,className:"lg:float-left lg:mr-5 mb-2 mx-auto sm:h-60 object-cover"})}),(0,n.jsx)("div",{className:"lg:-mt-1",children:((e,t)=>{let{text:a,source:s}=e,o="text-left text-pretty sm:text-lg",r="".concat(a).concat(null!=s?" (This description comes from the ".concat(s,".)"):""),l=/Hands-On Data Analysis with Pandas/;if(null==l.exec(r))return(0,n.jsx)("p",{className:o,children:r});let[c,d]=r.split(l),p=2020>parseInt(t.slice(0,4))?"1st":"2nd";return(0,n.jsxs)("p",{className:o,children:[c,(0,n.jsx)(i(),{href:{pathname:"/books/Hands-On-Data-Analysis-with-Pandas-".concat(p,"-edition")},className:"text-slate-500",children:(0,n.jsx)("em",{children:"Hands-On Data Analysis with Pandas"})}),d]})})(p,c)}),null!=m?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("br",{}),(0,n.jsxs)("p",{className:"text-sm sm:text-base",children:["See also:",m.map((e,t)=>{let{title:a,slug:s,contentClass:i}=e;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(y.A,{className:"text-slate-500 pl-1",linkClass:"internal",resourceLink:{contentClass:i,slug:s},children:a},a),m.length>1&&t!==m.length-1?",":""]})})]})]}):null]}),footer:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(u.A,{date:c}),(0,n.jsx)("div",{className:"flex flex-row items-center",children:(0,n.jsx)(g.A,{duration:"".concat(h," ").concat("podcast"===s?"listen":"read")})})]}),footerClassName:"flex-col-reverse sm:flex-row"},d)})}),(0,n.jsx)(w.A,{itemsPerPage:3,scrollRef:e,setOffset:a,totalItems:m.A.length})]})]})})}},71840:(e,t,a)=>{"use strict";a.d(t,{l:()=>s});var n=a(14232);let s=()=>{let[e,t]=(0,n.useState)({width:void 0,height:void 0});return(0,n.useEffect)(()=>{function e(){t({width:window.innerWidth,height:window.innerHeight})}return window.addEventListener("resize",e),e(),()=>window.removeEventListener("resize",e)},[]),e}},82353:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(37876),s=a(44824),i=a(14232);let o=e=>{let{dateString:t,relative:a,format:o,long:r,children:l}=e,c=s.c9.fromISO(t),[d,p]=(0,i.useState)(t);return(0,i.useEffect)(()=>{var e;c>s.c9.now().minus({days:2})&&a?p(null!=(e=c.toRelative())?e:t):"string"==typeof o?p(c.toFormat(o)):p(c.toLocaleString((null!=o?o:r)?s.c9.DATETIME_FULL:s.c9.DATE_FULL))}),(0,n.jsxs)("time",{dateTime:t,className:"whitespace-nowrap",children:[l,d]})}},85025:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(37876),s=a(15039),i=a.n(s);function o(e){let{body:t,footer:a,footerClassName:s,header:o,id:r}=e;return(0,n.jsx)("div",{id:r.replaceAll(":","").replaceAll(" ","-").toLowerCase(),className:"shadow-xs hover:shadow-lg transition-shadow duration-200 p-6 lg:p-8 flex flex-col m-5",children:(0,n.jsxs)("div",{className:"flex flex-col justify-evenly gap-y-5",children:[(0,n.jsx)("div",{className:"flex flex-col items-start",children:o}),(0,n.jsx)("div",{children:t}),(0,n.jsx)("div",{className:i()("flex flex-col-reverse items-center justify-between w-full",s),children:a})]})})}},88060:(e,t,a)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/interviews",function(){return a(70588)}])},91238:function(e,t,a){let n;n=a(14232),e.exports=(()=>{var e={703:(e,t,a)=>{"use strict";var n=a(414);function s(){}function i(){}i.resetWarningCache=s,e.exports=function(){function e(e,t,a,s,i,o){if(o!==n){var r=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw r.name="Invariant Violation",r}}function t(){return e}e.isRequired=e;var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol
1:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:s};return a.PropTypes=a,a}},697:(e,t,a)=>{e.exports=a(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},98:e=>{"use strict";e.exports=n}},t={};function a(n){var s=t[n];if(void 0!==s)return s.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,a),i.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";a.r(s),a.d(s,{default:()=>v});var e=a(98),t=a.n(e),n=a(697),i=a.n(n);function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}var r=function(e){var a=e.pageClassName,n=e.pageLinkClassName,s=e.page,i=e.selected,r=e.activeClassName,l=e.activeLinkClassName,c=e.getEventListener,d=e.pageSelectedHandler,p=e.href,h=e.extraAriaContext,u=e.pageLabelBuilder,g=e.rel,m=e.ariaLabel||"Page "+s+(h?" "+h:""),f=null;return i&&(f="page",m=e.ariaLabel||"Page "+s+" is your current page",a=void 0!==a?a+" "+r:r,void 0!==n?void 0!==l&&(n=n+" "+l):n=l),t().createElement("li",{className:a},t().createElement("a",o({rel:g,role:p?void 0:"button",className:n,href:p,tabIndex:i?"-1":"0","aria-label":m,"aria-current":f,onKeyPress:d},c(d)),u(s)))};function l(){return(l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}r.propTypes={pageSelectedHandler:i().func.isRequired,selected:i().bool.isRequired,pageClassName:i().string,pageLinkClassName:i().string,activeClassName:i().string,activeLinkClassName:i().string,extraAriaContext:i().string,href:i().string,ariaLabel:i().string,page:i().number.isRequired,getEventListener:i().func.isRequired,pageLabelBuilder:i().func.isRequired,rel:i().string};var c=function(e){var a=e.breakLabel,n=e.breakAriaLabel,s=e.breakClassName,i=e.breakLinkClassName,o=e.breakHandler,r=e.getEventListener;return t().createElement("li",{className:s||"break"},t().createElement("a",l({className:i,role:"button",tabIndex:"0","aria-label":n,onKeyPress:o},r(o)),a))};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return null!=e?e:t}function p(e){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function h(){return(h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}function u(e,t){return(u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function g(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}c.propTypes={breakLabel:i().oneOfType([i().string,i().node]),breakAriaLabel:i().string,breakClassName:i().string,breakLinkClassName:i().string,breakHandler:i().func.isRequired,getEventListener:i().func.isRequired};var b=function(e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,"prototype",{writable:!1}),e&&u(i,e);var a,n,s=(n=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}(),function(){var e,t=m(i);if(e=n?Reflect.construct(t,arguments,m(this).constructor):t.apply(this,arguments),e&&("object"===p(e)||"function"==typeof e))return e;if(void 0!==e)throw TypeError("Derived constructors may only return object or undefined");return g(this)});function i(e){var a;return function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,i),f(g(a=s.call(this,e)),"handlePreviousPage",function(e){var t=a.state.selected;a.handleClick(e,null,t>0?t-1:void 0,{isPrevious:!0})}),f(g(a),"handleNextPage",function(e){var t=a.state.selected,n=a.props.pageCount;a.handleClick(e,null,t<n-1?t+1:void 0,{isNext:!0})}),f(g(a),"handlePageSelected",function(e,t){if(a.state.selected===e)return a.callActiveCallback(e),void a.handleClick(t,null,void 0,{isActive:!0});a.handleClick(t,null,e)}),f(g(a),"handlePageChange",function(e){a.state.selected!==e&&(a.setState({selected:e}
1),a.callCallback(e))}),f(g(a),"getEventListener",function(e){return f({},a.props.eventListener,e)}),f(g(a),"handleClick",function(e,t,n){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=s.isPrevious,o=s.isNext,r=s.isBreak,l=s.isActive;e.preventDefault?e.preventDefault():e.returnValue=!1;var c=a.state.selected,d=a.props.onClick,p=n;if(d){var h=d({index:t,selected:c,nextSelectedPage:n,event:e,isPrevious:void 0!==i&&i,isNext:void 0!==o&&o,isBreak:void 0!==r&&r,isActive:void 0!==l&&l});if(!1===h)return;Number.isInteger(h)&&(p=h)}void 0!==p&&a.handlePageChange(p)}),f(g(a),"handleBreakClick",function(e,t){var n=a.state.selected;a.handleClick(t,e,n<e?a.getForwardJump():a.getBackwardJump(),{isBreak:!0})}),f(g(a),"callCallback",function(e){void 0!==a.props.onPageChange&&"function"==typeof a.props.onPageChange&&a.props.onPageChange({selected:e})}),f(g(a),"callActiveCallback",function(e){void 0!==a.props.onPageActive&&"function"==typeof a.props.onPageActive&&a.props.onPageActive({selected:e})}),f(g(a),"getElementPageRel",function(e){var t=a.state.selected,n=a.props,s=n.nextPageRel,i=n.prevPageRel,o=n.selectedPageRel;return t-1===e?i:t===e?o:t+1===e?s:void 0}),f(g(a),"pagination",function(){var e=[],n=a.props,s=n.pageRangeDisplayed,i=n.pageCount,o=n.marginPagesDisplayed,r=n.breakLabel,l=n.breakClassName,d=n.breakLinkClassName,p=n.breakAriaLabels,h=a.state.selected;if(i<=s)for(var u=0;u<i;u++)e.push(a.getPageElement(u));else{var g=s/2,m=s-g;h>i-s/2?g=s-(m=i-h):h<s/2&&(m=s-(g=h));var f,b,v=function(e){return a.getPageElement(e)},y=[];for(f=0;f<i;f++){var w=f+1;if(w<=o)y.push({type:"page",index:f,display:v(f)});else if(w>i-o)y.push({type:"page",index:f,display:v(f)});else if(f>=h-g&&f<=h+(0===h&&s>1?m-1:m))y.push({type:"page",index:f,display:v(f)});else if(r&&y.length>0&&y[y.length-1].display!==b&&(s>0||o>0)){var k=f<h?p.backward:p.forward;b=t().createElement(c,{key:f,breakAriaLabel:k,breakLabel:r,breakClassName:l,breakLinkClassName:d,breakHandler:a.handleBreakClick.bind(null,f),getEventListener:a.getEventListener}),y.push({type:"break",index:f,display:b})}}y.forEach(function(t,a){var n=t;"break"===t.type&&y[a-1]&&"page"===y[a-1].type&&y[a+1]&&"page"===y[a+1].type&&y[a+1].index-y[a-1].index<=2&&(n={type:"page",index:t.index,display:v(t.index)}),e.push(n.display)})}return e}),void 0!==e.initialPage&&void 0!==e.forcePage&&console.warn("(react-paginate): Both initialPage (".concat(e.initialPage,") and forcePage (").concat(e.forcePage,") props are provided, which is discouraged.")+" Use exclusively forcePage prop for a controlled component.\nSee https://reactjs.org/docs/forms.html#controlled-components"),a.state={selected:e.initialPage?e.initialPage:e.forcePage?e.forcePage:0},a}return a=[{key:"componentDidMount",value:function(){var e=this.props,t=e.initialPage,a=e.disableInitialCallback,n=e.extraAriaContext,s=e.pageCount,i=e.forcePage;void 0===t||a||this.callCallback(t),n&&console.warn("DEPRECATED (react-paginate): The extraAriaContext prop is deprecated. You should now use the ariaLabelBuilder instead."),Number.isInteger(s)||console.warn("(react-paginate): The pageCount prop value provided is not an integer (".concat(s,"). Did you forget a Math.ceil()?")),void 0!==t&&t>s-1&&console.warn("(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (".concat(t," > ").concat(s-1,").")),void 0!==i&&i>s-1&&console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(i," > ").concat(s-1,")."))}},{key:"componentDidUpdate",value:function(e){void 0!==this.props.forcePage&&this.props.forcePage!==e.forcePage&&(this.props.forcePage>this.props.pageCount-1&&console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(this.props.forcePage," > ").concat(this.props.pageCount-1,").")),this.setState({selected:this.props.forcePage})),Number.isInteger(e.pageCount)&&!Number.isInteger(this.props.pageCount)&&console.warn("(react-paginate): The pageCount prop value provided is not an integer (".concat(this.props.pageCount,"). Did you forget a Math.ceil()?"))}},{key:"getForwardJump",value:function(){var e=this.state.selected,t=this.props,a=t.pageCount,n=e+t.pageRangeDisplayed;return n>=a?a-1:n}},{key:"getBackwardJump",value:function(){var e=this.state.selected-this.props.pageRangeDisplayed;return e<0?0:e}},{key:"getElementHref",value:function(e){var t=this.props,a=t.hrefBuilder,n=t.pageCount,s=t.hrefAllControls;if(a)return s||e>=0&&e<n?a(e+1,n,this.state.selected):void 0}},{key:"ariaLabelBuilder",value:function(e){var t=e===this.state.selected;if(this.props.ariaLabelBuilder&&e>=0&&e<this.props.pageCount){var a=this.props.ariaLabelBuilder(e+1,t);return this.props.extraAriaContext&&!t&&(a=a+" "+this.props.extraAriaContext),a}}},{key:"getPageElement",value:function(e){var a=this.state.selected,n=this.props,s=n.pageClassName,i=n.pageLinkClassName,o=n.activeClassName,l=n.activeLinkClassName,c=n.extraAriaContext,d=n.pageLabelBuilder;return t().createElement(r,{key:e,pageSelectedHandler:this.handlePageSelected.bind(null,e),selected:a===e,rel:this.getElementPageRel(e),pageClassName:s,pageLinkClassName:i,activeClassName:o,activeLinkClassName:l,extraAriaContext:c,href:this.getElementHref(e),ariaLabel:this.ariaLabelBuilder(e),page:e+1,pageLabelBuilder:d,getEventListener:this.getEventListener})}},{key:"render",value:function(){var e=this.props.renderOnZeroPageCount;if(0===this.props.pageCount&&void 0!==e)return e?e(this.props):e;var a=this.props,n=a.disabledClassName,s=a.disabledLinkClassName,i=a.pageCount,o=a.className,r=a.containerClassName,l=a.previousLabel,c=a.previousClassName,p=a.previousLinkClassName,u=a.previousAriaLabel,g=a.prevRel,m=a.nextLabel,f=a.nextClassName,b=a.nextLinkClassName,v=a.nextAriaLabel,y=a.nextRel,w=this.state.selected,k=0===w,x=w===i-1,C="".concat(d(c)).concat(k?" ".concat(d(n)):""),P="".concat(d(f)).concat(x?" ".concat(d(n)):""),A="".concat(d(p)).concat(k?" ".concat(d(s)):""),N="".concat(d(b)).concat(x?" ".concat(d(s)):"");return t().createElement("ul",{className:o||r,role:"navigation","aria-label":"Pagination"},t().createElement("li",{className:C},t().createElement("a",h({className:A,href:this.getElementHref(w-1),tabIndex:k?"-1":"0",role:"button",onKeyPress:this.handlePreviousPage,"aria-disabled":k?"true":"false","aria-label":u,rel:g},this.getEventListener(this.handlePreviousPage)),l)),this.pagination(),t().createElement("li",{className:P},t().createElement("a",h({className:N,href:this.getElementHref(w+1),tabIndex:x?"-1":"0",role:"button",onKeyPress:this.handleNextPage,"aria-disabled":x?"true":"false","aria-label":v,rel:y},this.getEventListener(this.handleNextPage)),m)))}}],function(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(i.prototype,a),Object.defineProperty(i,"prototype",{writable:!1}),i}(e.Component);f(b,"propTypes",{pageCount:i().number.isRequired,pageRangeDisplayed:i().number,marginPagesDisplayed:i().number,previousLabel:i().node,previousAriaLabel:i().string,prevPageRel:i().string,prevRel:i().string,nextLabel:i().node,nextAriaLabel:i().string,nextPageRel:i().string,nextRel:i().string,breakLabel:i().oneOfType([i().string,i().node]),breakAriaLabels:i().shape({forward:i().string,backward:i().string}),hrefBuilder:i().func,hrefAllControls:i().bool,onPageChange:i().func,onPageActive:i().func,onClick:i().func,initialPage:i().number,forcePage:i().number,disableInitialCallback:i().bool,containerClassName:i().string,className:i().string,pageClassName:i().string,pageLinkClassName:i().string,pageLabelBuilder:i().func,activeClassName:i().string,activeLinkClassName:i().string,previousClassName:i().string,nextClassName:i().string,previousLinkClassName:i().string,nextLinkClassName:i().string,disabledClassName:i().string,disabledLinkClassName:i().string,breakClassName:i().string,breakLinkClassName:i().string,extraAriaContext:i().string,ariaLabelBuilder:i().func,eventListener:i().string,renderOnZeroPageCount:i().func,selectedPageRel:i().string}),f(b,"defaultProps",{pageRangeDisplayed:2,marginPagesDisplayed:3,activeClassName:"selected",previousLabel:"Previous",previousClassName:"previous",previousAriaLabel:"Previous page",prevPageRel:"prev",prevRel:"prev",nextLabel:"Next",nextClassName:"next",nextAriaLabel:"Next page",nextPageRel:"next",nextRel:"next",breakLabel:"...",breakAriaLabels:{forward:"Jump forward",backward:"Jump backward"},disabledClassName:"disabled",disableInitialCallback:!1,pageLabelBuilder:function(e){return e},eventListener:"onClick",renderOnZeroPageCount:void 0,selectedPageRel:"canonical",hrefAllControls:!1});let v=b})(),s})()},99606:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(37876),s=a(11041),i=a(84371),o=a(15039),r=a.n(o),l=a(91238),c=a.n(l),d=a(71840);function p(e){let{itemsPerPage:t,scrollRef:a,setOffset:o,totalItems:l}=e,{width:p}=(0,d.l)(),h="px-3 md:px-5 py-2",u="hover:no-underline cursor-not-allowed";return l>t?(0,n.jsx)(c(),{breakLabel:(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.g,{icon:s.Dwc})}),previousLabel:(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.g,{icon:s.Otu})}),nextLabel:(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.g,{icon:s.fU5})}),onPageChange:e=>{let{selected:n}=e;o(n*t%l),null!=a.current&&a.current.scrollIntoView()},pageRangeDisplayed:p&&p<300?1:2,marginPagesDisplayed:p&&p<300?1:2,pageCount:Math.ceil(l/t),renderOnZeroPageCount:null,className:r()("flex flex-row items-center justify-center gap-x-1","text-base md:text-xl font-bold text-slate-800 py-5 md:px-5"),pageLinkClassName:r()(h,"hover:underline"),activeLinkClassName:r()("shadow-inner bg-slate-100 rounded-full",u),breakLinkClassName:r()(h,"hover:text-blue-700"),nextLinkClassName:r()(h,"hover:text-blue-700"),previousLinkClassName:r()(h,"hover:text-blue-700"),disabledClassName:r()(u,"invisible")}):null}}},e=>{e.O(0,[725,805,167,545,636,593,792],()=>e(e.s=88060)),_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.