Personal portfolio for Jiawei (Jacky) Ye, a Computer Engineering student and hardware/software engineer. The site presents embedded systems, FPGA, RF, and AI work through project case studies and playable browser recreations.
| Project | What it demonstrates | Demo |
|---|---|---|
| Laser Puzzle | A Canvas recreation of a DE1-SoC laser-reflection game, with the original board geometry, mirrors, targets, hazards, timer, and lives | Solve the puzzle |
| Donkey Kong FPGA Game | A browser version of a Verilog platform game using its original sprites, movement timing, collision rules, and win condition | Play the game |
| IMU Sandbox | A Three.js recreation of an STM32, BNO055, and OLED particle sandbox with roll, pitch, yaw, gravity, and material controls | Alter gravity |
| RF Frequency Downconversion System | A case study covering the design, assembly, and validation of an analog receiver PCB | Read the case study |
| Vision-Assisted Adaptive Cruise Control | A Raspberry Pi vehicle combining PID control, lane keeping, emergency braking, and stop-sign detection | Read the case study |
- Responsive, accessible portfolio with light and dark themes
- Content managed from a single YAML file
- Keyboard, pointer, and touch support for interactive projects
- Reduced-motion support for animated project previews
- Locally hosted Three.js assets with no runtime CDN dependency
- Static output designed for GitHub Pages
- Automated tests for all three interactive project engines
- Jekyll, Liquid, HTML, and CSS
- Vanilla JavaScript and Canvas
- Three.js
- Node.js' built-in test runner
- GitHub Pages
The repository has no npm package dependencies. To use the included preview builder, install:
- Node.js 20.11 or newer
- Ruby with the standard
yamllibrary
Then clone and build the site:
git clone https://github.com/oldyemeister/oldyemeister.github.io.git
cd oldyemeister.github.io
npm run preview:buildThe rendered site is written to /private/tmp/personal-website-preview. Serve that directory with any static file server, for example:
python3 -m http.server 8000 --directory /private/tmp/personal-website-previewOpen http://localhost:8000 in a browser.
npm test # Run the interactive engine tests
npm run assets # Regenerate game assets from archived hardware sources
npm run preview:build # Build a local static preview
npm run build # Build the published site into _site/The asset conversion scripts expect the original project sources under tools/.reference/demos/. Those reference files are used for local regeneration and are not part of the deployed site.
Edit _data/content.yml to update your profile, experience, and project summaries.
Project pages, styling, and interactive demos live in the directories below.
| Location | Purpose |
|---|---|
_data/content.yml |
Profile, experience, and project content |
index.html, projects/, 404.html |
Homepage, project pages, and error page |
_layouts/, _includes/ |
Base layouts and reusable components |
assets/css/, assets/themes/ |
Styles, themes, and web fonts |
templates/ |
Design templates and page rendering |
assets/js/ |
Game engines and supporting scripts |
assets/images/, assets/documents/, assets/vendor/ |
Images, documents, and bundled libraries |
docs/ |
Editing guide, attribution, and publishing notes |
tools/, test/ |
Build tools, asset converters, and engine tests |
Run npm run build and serve _site/ to review the published design locally.
For alternate design previews, see the design editing guide.
Nearly all personal content lives in _data/content.yml; the layouts,
includes, build tooling, and CSS/JS architecture underneath are generic. To
reuse this repo for a different portfolio:
- Rewrite
_data/content.ymlwith your own profile, experience, skills, and project entries. - Set
_config.yml'surl:to your own GitHub Pages (or custom) domain. - Replace
assets/documents/resume/*.pdfwith your own résumé and updateresume.urlincontent.ymlto match its filename. - Replace
assets/images/site/profile-monogram.svg(or swapabout.image.pathincontent.ymlto point at your own portrait/monogram). - Update this README's own personal links, badges, and
git cloneURL. - Add or remove case studies by adding or removing
projects/<name>/index.htmlorindex.md; the build finds them automatically and lists them insitemap.xml. - Interface wording (menu, keyboard hints, "Start game", card labels, section numbers) lives in the
ui:block ofcontent.yml. - Regenerate the link-preview card and favicons with
npm run assets:brand, and the playable-project preview videos withnpm run assets:previews(both need Chrome; the previews also need ffmpeg).
The build versions every CSS/JS URL with a content hash and bundles each page's
stylesheets, so never add ?v= query strings by hand.
The Persona-themed alternate design (templates/persona/, assets/themes/persona/)
is optional decoration layered on top of the same content — see the
design editing guide if you want to keep, customize, or
remove it.
Pushing to main runs .github/workflows/pages.yml: engine tests, the Node
static build, and deployment to GitHub Pages. GitHub Pages uses GitHub Actions
as its publishing source.
npm run build writes the deployable site to _site/, which is ignored by Git.
See publishing notes for route details and deployment setup.
