1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 6 <meta charset="UTF-8"> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 8 <meta name="description" content="Hello there! I'm Calvin, a Product Designer specializing in UI and design systems, with a strong background in front-end web development."> 9 <meta property="og:image" content="https://calvinckang.github.io/images/social-image.jpg"> 10 <meta property="og:image:width" content="1200"> 11 <meta property="og:image:height" content="627"> 12 <link rel="stylesheet" href="style.css"> 13 <link rel="icon" type="image/x-icon" href="images/favicon.png"> 14 <title>Calvin Kang â Portfolio</title> 15 16 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 66 bytes, lines 16-17
16 17 <script async src="https://www.googletagmanager.com/gtag/js?id=
17G-MEK505NVDB
vendor: 14 bytes, lines 17-18
17"></script> 18
18<script> 19
vendor: 139 bytes, lines 19-22
19window.dataLayer = window.dataLayer || []; 20 function gtag(){dataLayer.push(arguments);} 21 gtag('js', new Date()); 22 gtag('config', '
22G-MEK505NVDB
vendor: 6 bytes, lines 22-23
22'); 23
23</script>
23 24 25</head> 26 27<body> 28 29 <header> 30 <a href="index.html" class="logo">Calvin Kang</a> 31 <nav> 32 <a href="#work" class="active">Work</a> 33 <a href="about.html">About</a> 34 <a href="contact.html">Contact</a> 35 </nav> 36 </header> 37 38 <section class="intro"> 39 <div class="middle-column memoji-scale"> 40 <img id="memoji" src="images/memoji/calvin-memoji-1.png" alt="Calvin's Memoji"> 41 </div> 42 <h1 class="home-intro">Hello there! I'm Calvin, a <span class="gradient-1">Product Designer</span> specializing in UI and design systems, with a strong background in front-end web development.</h1> 43
43<script src="main.js"></script>
43 44 </section> 45 46 <section class="jumplink" id="work"></section> 47 48 <section class="grid-layout"> 49 <a href="dow-jones-risk-and-compliance.html" class="thumbnail"> 50 <img src="images/dow-jones-risk-and-compliance/cover-thumbnail.png" alt="Dow Jones Risk & Compliance"/> 51 <div class="snippet"> 52 <h2>Dow Jones Risk & Compliance ð</h2> 53 <p>Redesigning a data-dense, financial crime compliance product to enhance its usability and accessibility, and building its design system.</p> 54 </div> 55 </a> 56 <a href="dow-jones-interoperable-modules.html" class="thumbnail"> 57 <img src="images/dow-jones-interoperable-modules/cover-thumbnail.png" alt="Dow Jones Interoperable Modules"/> 58 <div class="snippet"> 59 <h2>Dow Jones Interoperable Modules</h2> 60 <p>Building a modular solution that integrates Dow Jones' news and data directly into customers' workspaces to optimize their workflows.</p> 61 </div> 62 </a> 63 <a href="reportly.html" class="thumbnail"> 64 <img src="images/reportly/cover-thumbnail.png" alt="Reportly"/> 65 <div class="snippet"> 66 <h2>Reportly</h2> 67 <p>B2B SaaS web app for creating aesthetic reports with automated data import and custom branded templates collaboratively.</p> 68 </div> 69 </a> 70 <a href="chorescore.html" class="thumbnail"> 71 <img src="images/chorescore/cover-thumbnail.png" alt="Chorescore"/> 72 <div class="snippet"> 73 <h2>Chorescore</h2> 74 <p>Designing a household chores scheduling app with a twist: gamifying tasks to make them fun and engaging. Game on!</p> 75 </div> 76 </a> 77 </section> 78 79 <footer> 80 <p>Copyright © 2025 Calvin Kang. All rights reserved.</p> 81 </footer> 82 83</body> 84 85</html>
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.