{"version":3,"sources":["webpack:///./src/components/Button/YellowButton.tsx","webpack:///./src/components/Text/H2.tsx","webpack:///./src/components/Text/P.tsx","webpack:///./src/components/Container/UnorderedList.tsx","webpack:///./src/data/about.ts","webpack:///./src/pages/about.tsx","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.string.link.js","webpack:///./src/components/Image/FixedImage.tsx"],"names":["YellowButton","props","children","to","href","isDownload","target","className","download","H2","textProps","join","P","UnorderedList","keyPrefix","renderItem","renderKey","data","map","listItem","index","key","AboutData","intro","para1","para2","para3_1","para3_link","text","para3_2","para4","outGoingLinks","name","link","caption","renderNetworkLinks","renderNetworkLinkKey","prefix","About","query","path","Layout","title","description","keywords","pagePath","Row","Column","id","FixedImage","src","profilePicture","childImageSharp","fixed","withPrefix","style","marginBottom","createHTML","url","this"],"mappings":"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","file":"component---src-pages-about-tsx-92f2e195373e3e7caab1.js","sourcesContent":["import * as React from \"react\";\nimport { Link } from \"gatsby\";\nimport \"@themes/button.scss\";\n\nexport interface YellowButtonProps {\n\tchildren: string;\n\tto?: string;\n\thref?: string;\n\tisDownload?: string;\n\ttarget?: string;\n}\n\nconst YellowButton = (props: YellowButtonProps) => {\n\tconst { children, to, href, isDownload, target } = props;\n\treturn (\n\t\t\n\t);\n};\n\nexport default YellowButton;\n","import * as React from \"react\";\nimport \"@themes/text.scss\";\nimport { TextProps } from \"./TextProps\";\n\nconst H2 = (props: TextProps) => {\n\tconst { children, className, ...textProps } = props;\n\treturn (\n\t\t

\n\t\t\t{children}\n\t\t

\n\t);\n};\n\nexport default H2;\n","import * as React from \"react\";\nimport \"@themes/text.scss\";\nimport { TextProps } from \"./TextProps\";\n\nconst P = (props: TextProps) => {\n\tconst { className, children, ...textProps } = props;\n\treturn (\n\t\t

\n\t\t\t{children}\n\t\t

\n\t);\n};\n\nexport default P;\n","import * as React from \"react\";\n\nexport interface UnorderedListProps {\n\tdata: T[];\n\tkeyPrefix: string;\n\trenderItem: (data: T, index: number) => JSX.Element;\n\trenderKey: (prefix: string, data: T, index: number) => string;\n}\n\nconst UnorderedList = (props: UnorderedListProps) => {\n\tconst { keyPrefix, renderItem, renderKey } = props;\n\treturn (\n\t\t
    \n\t\t\t{props.data.map((listItem, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t
  • \n\t\t\t\t\t\t{renderItem(listItem, index)}\n\t\t\t\t\t
  • \n\t\t\t\t);\n\t\t\t})}\n\t\t
\n\t);\n};\n\nexport default UnorderedList;\n","export interface AboutOutGoingLink {\n name: string;\n link: string;\n caption: string;\n}\n\nexport const AboutData = {\n intro: \"Hey there, I am Ng Chen Hon.\",\n para1:\n \"I'm a Senior Software Engineer in Singapore, with 6+ years of experience building scalable systems, architecting solutions, and delivering production services. I specialize backend development in Ruby, PostgreSQL, and AWS.\",\n para2:\n \"Graduated in Computer Science (Game Development) from Multimedia University, Malaysia. I'd started as software generalist in frontend and React Native apps. Since then, I’ve worked across multiple domains like high-volume data processing, large-scale migrations and database reliability.\",\n para3_1: \"Now, I work at \",\n para3_link: {\n text: \"Ascenda\",\n href: \"https://www.ascenda.com/\",\n },\n para3_2:\n \". I’ve led meaningful projects like the Ruby 3 Upgrade Initiative, releasing a large-scale migration with no production disruptions and a data archival framework, improving database reliability. I enjoy solving complex backend challenges, improving developer experience and collaborating to ship reliable solutions.\",\n para4:\n \"You can also find me at these places, my username is usually mutatedbread.\",\n outGoingLinks: [\n {\n name: \"Linkedin\",\n link: \"https://www.linkedin.com/in/ngchenhon/\",\n caption: \"for work, 工作, kerja\",\n },\n {\n name: \"Github\",\n link: \"https://github.com/MutatedBread\",\n caption: \"i put some codes here\",\n },\n {\n name: \"Dev.to\",\n link: \"https://dev.to/mutatedbread\",\n caption: \"place for articles\",\n },\n ] as AboutOutGoingLink[],\n};\n\n// 1. Linkedin\n// 2. Github\n// 3. Dev.to\n","import * as React from \"react\";\nimport Layout from \"@components/Layout\";\nimport Row from \"@components/Container/Row\";\nimport Column from \"@components/Container/Column\";\nimport FixedImage from \"@components/Image/FixedImage\";\nimport YellowButton from \"@components/Button/YellowButton\";\nimport H2 from \"@components/Text/H2\";\nimport P from \"@components/Text/P\";\nimport UnorderedList from \"../components/Container/UnorderedList\";\nimport { useStaticQuery, graphql, withPrefix, PageProps } from \"gatsby\";\nimport { AboutData, AboutOutGoingLink } from \"../data/about\";\nimport \"@themes/layout.scss\";\nimport SEO from \"@components/seo\";\n\nconst renderNetworkLinks = (data: AboutOutGoingLink, index: number) => {\n const { name, link, caption } = data;\n return (\n \n \n {name}\n \n {` `} - {caption}\n \n );\n};\n\nconst renderNetworkLinkKey = (\n prefix: string,\n data: AboutOutGoingLink,\n index: number\n) => {\n const { name } = data;\n return `${prefix}_${name}_${index}`;\n};\n\nconst About = (props: PageProps) => {\n const query = useStaticQuery(graphql`\n query {\n profilePicture: file(relativePath: { eq: \"new_hon.jpg\" }) {\n childImageSharp {\n fixed(width: 200, height: 200) {\n ...GatsbyImageSharpFixed\n }\n }\n }\n }\n `);\n const { path } = props;\n\n return (\n \n \n \n \n

{AboutData.intro}

\n

{AboutData.para1}

\n
\n
\n \n
\n
\n \n \n
\n \n Download my résumé\n \n
\n

{AboutData.para2}

\n

\n {AboutData.para3_1}\n \n {AboutData.para3_link.text}\n \n {AboutData.para3_2}\n

\n
\n
\n \n \n

{AboutData.para4}

\n \n
\n
\n
\n );\n};\n\nexport default About;\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","import * as React from \"react\";\nimport Img, { FixedObject } from \"gatsby-image\";\n\nexport interface FixedImageProps {\n\tsrc: FixedObject;\n\tstyle?: React.CSSProperties;\n\tclassName?: string;\n}\n\nconst FixedImage = (props: FixedImageProps) => {\n\tconst { src, style, className } = props;\n\treturn ;\n};\n\nexport default FixedImage;\n"],"sourceRoot":""}