diff --git a/danielchen_web_fullstack.typ b/backend_infra.typ similarity index 98% rename from danielchen_web_fullstack.typ rename to backend_infra.typ index a2c86a6..baf077c 100644 --- a/danielchen_web_fullstack.typ +++ b/backend_infra.typ @@ -1,6 +1,5 @@ -#import "lib.typ": SMALL_STRONG -#import "template_common.typ": template_common, work_entry, project, indent +#import "lib/template_common.typ": template_common, work_entry, project, indent, SMALL_STRONG #let education = indent[ #work_entry( diff --git a/hardware.typ b/hardware.typ new file mode 100644 index 0000000..baf077c --- /dev/null +++ b/hardware.typ @@ -0,0 +1,203 @@ + +#import "lib/template_common.typ": template_common, work_entry, project, indent, SMALL_STRONG + +#let education = indent[ + #work_entry( + "B.A.Sc. in Computer Engineering", + "University of Waterloo", + start_date: "Sep 2022", + end_date: "Apr 2027", + location: "Waterloo, ON", + tasks: ( + [Courses: Object-oriented programming, data structures & algorithms, digital + logic & circuits, operating systems], + [Extracurriculars: Hack the North Organising Team, UW Orbital Satellite Design + Team, Creative Writing Club Secretary], + ), + ) +] + +#let skills = indent[ + *Languages:* TypeScript/JavaScript, HTML, CSS, SQL, Python, Java, C, C++, Rust \ + // Dart + *Technologies:* React, Next.js, Spring Boot, Express, Prisma, Apollo, GraphQL \ + // Qt, Jest / Pytest, Apollo, Prisma, Rails + *Tools:* Linux, Git, Docker, Postgres, Pytest, Jest, AWS/GCP, Kubernetes, + Terraform, Figma // Jenkins, systemd, Jira +] + +#show: doc => template_common(education, skills, doc) + += Experience + +#indent[ + #work_entry( + "Software Engineering Intern", + "Magna", + company_link: "https://magna.so", + start_date: "Sep 2024", + end_date: "Dec 2024", + location: "New York, NY", + tools: "Rust, TypeScript, Solidity, React, GraphQL", + tasks: ( + [?? Portal claim config (db, FE, BE, how lucrative it is) padding padding + padding, automated deployments], + [?? Solana claim fees Wrote a Rust smart contract to add a fee for claiming + tokens on Solana], + [?? perf and databasest], + ), + ) + + #work_entry( + "Software Engineering Intern", + "Immigr8", + company_link: "https://immigr8now.com", + start_date: "Jan 2024", + end_date: "Apr 2024", + location: "Tampa, FL (Remote)", + tools: "TypeScript, Spring Boot, React, Postgres, Terraform, AWS", + tasks: ( + // [Owned the creation of an end-to-end document vault feature in React for users to + // upload and verify identity documents with Textract, reducing support tickets by + // *25%*], + [Planned and executed a roadmap to *SOC 2 security compliance* by implementing + *role-based permissions with JWTs* in Spring Boot, logging alerts to CloudWatch, + and introducing new privacy controls for user data], + [?? be specific Investigated and improved initial load time by *80%* for tool + using async data fetching and optimising relations], + [?? make it clear that you deployed the entire setup, atm makes it seem like you + clicked some buttons Created CI/CD pipelines to automatically deploy AWS Lambdas + with Terraform and Jenkins], + ), + ) + + #work_entry( + "Software Engineering Intern", + "Dropbase", + company_link: "https://dropbase.io", + start_date: "May 2023", + end_date: "Aug 2023", + location: "San Francisco, CA (Remote)", + tools: "TypeScript, Python, React, Postgres, AWS", + tasks: ( + [??? make it clearer what this is Engineered a new React data query builder and + FastAPI backend for our business intelligence visualisation service to *33000+* + users, eliminating the need for clients to manually write API calls], + [?? what is it Shipped a new database sync tool for *46000+* users by abstracting + data sources behind an adapter-based architecture and AWS Lambdas], + [?? data focus, new tool dDeveloped a *serverless microservice* that + asynchronously ingests email attachments directly into ETL pipelines], + // [??? emphasise test driven development or remove line *Reduced request errors by 30%* by creating backend testing infrastructure with + // *Pytest* to catch regressions and test new features across database engines with + // *90% code coverage*], + ), + ) + + #work_entry( + "Backend Developer", + "Hack the North", + company_link: "https://hackthenorth.com", + start_date: "Mar 2023", + end_date: "Oct 2024", + location: "Waterloo, ON", + tools: "TypeScript, Express, Postgres, Kubernetes", + tasks: ( + [Built a new travel registration application leveraging GraphQL to track bus + capacity for *500+* attendees in real time], + [??? Apple wallet, mention it's a new feature], + [Diagnosed and recovered from crashes due to load spikes up to *800k* updates per + hour at the world's largest student-run hackathon by maintaining and autoscaling + Redis and Postgres on Kubernetes], + [??? CI/infra focus, deploying otel and traces], + // [Upgraded the event statistics dashboard to update in real time with GraphQL + // *subscriptions with Redis PubSub*], + ), + ) +] + += Projects +#set strong(delta: SMALL_STRONG) + +#indent[ + #project( + "Game Boy Advance Emulator", + "Rust, SDL2, Vulkan", + repo_link: "https://github.com/potatoeggy/gbarr", + tasks: ( + [Implemented an *ARMv7* emulator for old games to run on modern x86_64 platforms + with *SDL2* and *Vulkan*], + [WebGPU and WASM for portability, typestate to guarantee everything is always + valid], + ), + ) + + #project( + "Mandown Comic Downloader", + "Python, Qt", + repo_link: "https://github.com/potatoeggy/mandown", + tasks: ( + [Created a CLI and GUI to scrape, download, and convert webcomics into + e-ink-optimised PDF/EPUBs], + [Designed a scalable ebook converter with a *plugin-based architecture* to + improve compatibility], + [Implemented *image caching and multithreading* to increase download and update + speeds by *300%*], + ), + ) + + // #project( + // "Kobo Sync Server", + // "Rust, Axum", + // repo_link: "https://github.com/potatoeggy/kobink", + // tasks: ( + // [Developed a *Rust* backend to sync custom ebook files to Kobos by reimplementing + // the Kobo Sync API], + // [Deployed the service behind an nginx reverse proxy and Cloudflare DNS to sync + // over the internet], + // ), + // ) + + // #project( + // "Genshin Rewards Simulator", + // "Vue, TypeScript", + // repo_link: "https://github.com/potatoeggy/primoprod", + // demo_link: "https://primoprod.vercel.app", + // tasks: ( + // [Built a realistic and beautiful *loot box simulator* with CSS animations based + // off a popular game], + // [Reduced action latency by *90%* by lazily loading art assets at opportune times, + // such as during cutscenes], + // ), + // ) + + // #project( + // "Jeopardy!", + // "Vue, TypeScript, WebSockets", + // repo_link: "https://github.com/potatoeggy/jeopardy", + // demo_link: "https://jeopardy.eggworld.me/host", + // tasks: ( + // [Developed a beautiful and polished game where participants buzz in on their + // devices over *WebSockets*], + // [Synchronised game state between clients and the host with shared types and the + // *observer pattern*], + // ), + // ) + + // #project( + // "RecipeReady", + // "https://github.com/vincentjguo/recipeready-server", + // "Flutter, Selenium, FastAPI, Android", + // ) + // - Developed a *Flutter app* to generate recipes based on ingredients and filters + // through a FastAPI server + // - Scraped thousands of websites for recipes to build a database with a robust + // *many-to-many tag system* + // - Aggregated common ingredients heuristically to build a shopping list and a meal + // plan for each week + + // #project("Arch Linux Server", "Linux, Docker, nginx, systemd", demo_link: "https://eggworld.me") + // - Created a *self-hosted CI/CD pipeline* with *Gitea* to automatically deploy + // personal projects behind *nginx* + // - Containerised services with *Docker* and *systemd* to simplify deployment and + // management +] \ No newline at end of file diff --git a/fontawesome.typ b/lib/fontawesome.typ similarity index 100% rename from fontawesome.typ rename to lib/fontawesome.typ diff --git a/lib.typ b/lib/lib.typ similarity index 100% rename from lib.typ rename to lib/lib.typ diff --git a/template_common.typ b/lib/template_common.typ similarity index 100% rename from template_common.typ rename to lib/template_common.typ diff --git a/web_fullstack.typ b/web_fullstack.typ new file mode 100644 index 0000000..2c47466 --- /dev/null +++ b/web_fullstack.typ @@ -0,0 +1,202 @@ +#import "lib/template_common.typ": template_common, work_entry, project, indent, SMALL_STRONG + +#let education = indent[ + #work_entry( + "B.A.Sc. in Computer Engineering", + "University of Waterloo", + start_date: "Sep 2022", + end_date: "Apr 2027", + location: "Waterloo, ON", + tasks: ( + [Courses: Object-oriented programming, data structures & algorithms, digital + logic & circuits, operating systems], + [Extracurriculars: Hack the North Organising Team, UW Orbital Satellite Design + Team, Creative Writing Club Secretary], + ), + ) +] + +#let skills = indent[ + *Languages:* TypeScript/JavaScript, HTML, CSS, SQL, Python, Java, C, C++, Rust \ + // Dart + *Technologies:* React, Next.js, Spring Boot, Express, Prisma, Apollo, GraphQL \ + // Qt, Jest / Pytest, Apollo, Prisma, Rails + *Tools:* Linux, Git, Docker, Postgres, Pytest, Jest, AWS/GCP, Kubernetes, + Terraform, Figma // Jenkins, systemd, Jira +] + +#show: doc => template_common(education, skills, doc) + += Experience + +#indent[ + #work_entry( + "Software Engineering Intern", + "Magna", + company_link: "https://magna.so", + start_date: "Sep 2024", + end_date: "Dec 2024", + location: "New York, NY", + tools: "Rust, TypeScript, Solidity, React, GraphQL", + tasks: ( + [?? Portal claim config (db, FE, BE, how lucrative it is) padding padding + padding, automated deployments], + [?? Solana claim fees Wrote a Rust smart contract to add a fee for claiming + tokens on Solana], + [?? perf and databasest], + ), + ) + + #work_entry( + "Software Engineering Intern", + "Immigr8", + company_link: "https://immigr8now.com", + start_date: "Jan 2024", + end_date: "Apr 2024", + location: "Tampa, FL (Remote)", + tools: "TypeScript, Spring Boot, React, Postgres, Terraform, AWS", + tasks: ( + // [Owned the creation of an end-to-end document vault feature in React for users to + // upload and verify identity documents with Textract, reducing support tickets by + // *25%*], + [Planned and executed a roadmap to *SOC 2 security compliance* by implementing + *role-based permissions with JWTs* in Spring Boot, logging alerts to CloudWatch, + and introducing new privacy controls for user data], + [?? be specific Investigated and improved initial load time by *80%* for tool + using async data fetching and optimising relations], + [?? make it clear that you deployed the entire setup, atm makes it seem like you + clicked some buttons Created CI/CD pipelines to automatically deploy AWS Lambdas + with Terraform and Jenkins], + ), + ) + + #work_entry( + "Software Engineering Intern", + "Dropbase", + company_link: "https://dropbase.io", + start_date: "May 2023", + end_date: "Aug 2023", + location: "San Francisco, CA (Remote)", + tools: "TypeScript, Python, React, Postgres, AWS", + tasks: ( + [??? make it clearer what this is Engineered a new React data query builder and + FastAPI backend for our business intelligence visualisation service to *33000+* + users, eliminating the need for clients to manually write API calls], + [?? what is it Shipped a new database sync tool for *46000+* users by abstracting + data sources behind an adapter-based architecture and AWS Lambdas], + [?? data focus, new tool dDeveloped a *serverless microservice* that + asynchronously ingests email attachments directly into ETL pipelines], + // [??? emphasise test driven development or remove line *Reduced request errors by 30%* by creating backend testing infrastructure with + // *Pytest* to catch regressions and test new features across database engines with + // *90% code coverage*], + ), + ) + + #work_entry( + "Backend Developer", + "Hack the North", + company_link: "https://hackthenorth.com", + start_date: "Mar 2023", + end_date: "Oct 2024", + location: "Waterloo, ON", + tools: "TypeScript, Express, Postgres, Kubernetes", + tasks: ( + [Built a new travel registration application leveraging GraphQL to track bus + capacity for *500+* attendees in real time], + [??? Apple wallet, mention it's a new feature], + [Diagnosed and recovered from crashes due to load spikes up to *800k* updates per + hour at the world's largest student-run hackathon by maintaining and autoscaling + Redis and Postgres on Kubernetes], + [??? CI/infra focus, deploying otel and traces], + // [Upgraded the event statistics dashboard to update in real time with GraphQL + // *subscriptions with Redis PubSub*], + ), + ) +] + += Projects +#set strong(delta: SMALL_STRONG) + +#indent[ + #project( + "Game Boy Advance Emulator", + "Rust, SDL2, Vulkan", + repo_link: "https://github.com/potatoeggy/gbarr", + tasks: ( + [Implemented an *ARMv7* emulator for old games to run on modern x86_64 platforms + with *SDL2* and *Vulkan*], + [WebGPU and WASM for portability, typestate to guarantee everything is always + valid], + ), + ) + + #project( + "Mandown Comic Downloader", + "Python, Qt", + repo_link: "https://github.com/potatoeggy/mandown", + tasks: ( + [Created a CLI and GUI to scrape, download, and convert webcomics into + e-ink-optimised PDF/EPUBs], + [Designed a scalable ebook converter with a *plugin-based architecture* to + improve compatibility], + [Implemented *image caching and multithreading* to increase download and update + speeds by *300%*], + ), + ) + + // #project( + // "Kobo Sync Server", + // "Rust, Axum", + // repo_link: "https://github.com/potatoeggy/kobink", + // tasks: ( + // [Developed a *Rust* backend to sync custom ebook files to Kobos by reimplementing + // the Kobo Sync API], + // [Deployed the service behind an nginx reverse proxy and Cloudflare DNS to sync + // over the internet], + // ), + // ) + + // #project( + // "Genshin Rewards Simulator", + // "Vue, TypeScript", + // repo_link: "https://github.com/potatoeggy/primoprod", + // demo_link: "https://primoprod.vercel.app", + // tasks: ( + // [Built a realistic and beautiful *loot box simulator* with CSS animations based + // off a popular game], + // [Reduced action latency by *90%* by lazily loading art assets at opportune times, + // such as during cutscenes], + // ), + // ) + + // #project( + // "Jeopardy!", + // "Vue, TypeScript, WebSockets", + // repo_link: "https://github.com/potatoeggy/jeopardy", + // demo_link: "https://jeopardy.eggworld.me/host", + // tasks: ( + // [Developed a beautiful and polished game where participants buzz in on their + // devices over *WebSockets*], + // [Synchronised game state between clients and the host with shared types and the + // *observer pattern*], + // ), + // ) + + // #project( + // "RecipeReady", + // "https://github.com/vincentjguo/recipeready-server", + // "Flutter, Selenium, FastAPI, Android", + // ) + // - Developed a *Flutter app* to generate recipes based on ingredients and filters + // through a FastAPI server + // - Scraped thousands of websites for recipes to build a database with a robust + // *many-to-many tag system* + // - Aggregated common ingredients heuristically to build a shopping list and a meal + // plan for each week + + // #project("Arch Linux Server", "Linux, Docker, nginx, systemd", demo_link: "https://eggworld.me") + // - Created a *self-hosted CI/CD pipeline* with *Gitea* to automatically deploy + // personal projects behind *nginx* + // - Containerised services with *Docker* and *systemd* to simplify deployment and + // management +] \ No newline at end of file