Portfolio of Abdullah Erzin, computer vision engineer. Astro, TypeScript, plain CSS, raw WebGL2 (no 3D library). No analytics, no third-party scripts, fonts self-hosted.
Design concept "Point Cloud": the home page is one live point cloud that rebuilds itself, project by project, as you scroll. Every point is coloured by its real distance to the camera; hold anywhere (or press Space, or use "Camera view") to see the scene's own colours. All scenes are synthetic and generated in the browser. See DESIGN.md.
Two other complete redesigns are kept on backup branches: redesign ("Approach": a depth readout from 7.5 m to "In reach") and redesign-replay ("Replay": the career as a field recording with a timeline playhead).
- Brief:
INITIAL.md - Design plan and decisions:
DESIGN.md - Source of truth for every fact:
Abdullah Erzin – CV.pdf, published as/cv.pdf
Requires Node 22.12 or newer.
npm install
npm run dev # http://localhost:4321
npm run check # astro check (types, templates)
npm run build # static site in ./dist
npm run preview # serve ./distAstro 7 runs the dev server in the background. npx astro dev status shows it, npx astro dev stop stops it.
With the dev or preview server running:
npx playwright install chromium # once
npm run shots # or: npm run shots -- --base http://localhost:4322Writes / and one project page at 1440, 768 and 390 px to ./shots/, in light, dark and reduced-motion variants, plus a hover capture of the hero. The script exits non-zero if the browser logs a console error.
public/og.png is a 1200×630 capture of the live hero (made with the awwwards skill's og.mjs against the production build). public/favicon.svg is the identity mark; public/apple-touch-icon.png is a 180 px render of it. The older npm run og script still draws the previous calibration-board motif: do not run it unless you want that look back.
| Path | What |
|---|---|
src/lib/shapes.ts |
Seeded synthetic point clouds, one per chapter (orchard, calibration, detection, navigation, face, thermal, attention, name) |
src/lib/cloud-gl.ts |
WebGL2 renderer: morph between two shapes, live depth colouring (turbo), camera, projection for labels |
src/scripts/cloud.ts |
Home controller: scroll → chapter and morph, pointer camera, hold-for-camera-view, live distance labels |
src/data/chapters.ts |
Chapter copy, numbers and camera framing |
src/components/Stage.astro |
Canvas, label overlay and caption |
src/lib/thermal.ts, src/scripts/thermal.ts, src/components/ThermalScene.astro |
Interactive flash-thermography figure on the thermal NDT page |
src/lib/backprop.ts, src/lib/attention.ts, src/components/BackpropScene.astro, src/components/AttentionScene.astro |
Interactive figures on the self-study page |
src/content/projects/*.md |
Project pages (frontmatter: title, outcome, order, employer, period, tags, figure) |
src/data/experience.ts |
Timeline, education, skills |
src/lib/site.ts |
Name, email, links |
To add a project: add a Markdown file to src/content/projects/. Without figure.diagram the page shows a visible "Figure to come" placeholder.
Pek Automotive work is employer work. The site uses only synthetic scenes and schematic diagrams for it, and describes method and outcome at the level of the CV. Confirm with employer before adding real field imagery.
- Back up the current site: in
Erzn3522/erzn3522.github.io, push the existingmainto a branch calledlegacy-site. - Replace
mainwith this project and push.astro.config.mjsalready setssite: 'https://erzn3522.github.io'andbase: '/'. - Repo settings → Pages → Source: GitHub Actions. The workflow in
.github/workflows/deploy.ymlbuilds withwithastro/actionand publishes withactions/deploy-pages. - Check
https://erzn3522.github.io/,/cv.pdf, a project page, and a missing URL (the 404 page).
robots.txt, the sitemap, canonical URLs, Open Graph/Twitter tags and lang="en" are in place.
The PDF in this repo is newer than the summary in INITIAL.md. The site follows the CV, as the brief asks:
- Location is Logatec, Slovenia (CV header), not Ljubljana or Istanbul.
- Robsys is Mar 2024 – Mar 2025, and appears once.
- The CV spells Pek Automotive.
- "−60% calibration time", "±5mm", "gradient boosting" and "custom linear regression" are not in the CV and are not on the site. The calibration number is "5 mm max positional error (2 mm std) against a 10 mm production threshold".
- Numbers are written as the CV writes them:
4 KB,30 ms. - Projects: the brief's "stereo calibration" and "camera-to-arm transform" are one piece of work in the CV and became one page. The freed slot is the end-to-end perception-to-picking pipeline.
- Skills follow the CV's groups (no scikit-learn; adds Docker, RealSense, Linux and others).
Search the source for TODO(abdullah) to find each one in place.
- Medium link. It is not in the CV. Keep it, or show only GitHub and LinkedIn? (Currently shown; Bento was removed on request.)
src/lib/site.ts - "What I would do next" sections. All five are drafts written from the CV. Confirm or rewrite each one.
- Numbers you can share. Depth/detection and navigation pages have no metric in the CV. Add one if you can.
- Real figures. Which projects can have real, non-confidential figures? All five are schematics for now.
- AR face filter side project (CV, Projects section). Not on the site. Add as a sixth project?
- Contact email subject. The mailto subject is "Hello from erzn3522.github.io". Change it if you prefer.
- Custom domain later? Not needed for launch.
- Thermal NDT page. Written from the CV plus your description (Halcon and C#, Fourier transform of cooling curves, crack detection). Confirm the method wording, and add a number if you have one.
Answered by the CV: location (1), Robsys end date (2), Robsys listed once (3), "Pek Automotive" spelling (4).
src/content/projects/ml-first-principles.mdx is based on Abdullah's own self-study summary (Feb–May 2026), not on the CV. It is MDX so the two interactive figures can sit inside the text (inlineFigures: true skips the figure block under the title). There is no code link on purpose: the exercises were not kept.
src/content/projects/side-project-infrastructure.md covers an unreleased, confidential side project. It describes engineering practice only (Docker, CI/CD) and must never describe the product, its users, data, architecture or launch plans, or link a repository or demo. The CI/CD tool could not be checked against a repository, so the body is tool-agnostic and "GitHub Actions" appears only in the tags Abdullah supplied.