Static personal research website for Adam Haroon (Iowa State University), covering trustworthy perception and control for autonomous systems. The design language follows the "Assured Autonomy Across the Stack" research talk: deep navy, teal (perception), amber (control), pillars / thread / hinge motifs.
No build tools required. Pure HTML + CSS + vanilla JS, ready to deploy on GitHub Pages as-is.
├── index.html # Homepage: hero, thread motif, pillars, flagship results, by-the-numbers
├── about.html # Long-form bio, philosophy, collaborations, background
├── research.html # Three pillars + "the hinge" pipeline diagram
├── projects.html # Selected project cards, grouped by pillar
├── projects/ # 8 individual project pages
├── publications.html # Rendered from data/publications.json (filters + BibTeX, clickable entries)
├── talks.html # 12 talks with slide-styled thumbnails
├── cv.html # Rendered from cv/Adam_Haroon_CV.md
├── contact.html
├── assets/
│ ├── css/style.css # All styling (light/dark themes)
│ ├── js/main.js # Theme toggle, nav, publications renderer, Markdown CV renderer
│ ├── img/ # Favicon, portrait, project figures
│ └── video/ # Project videos (web-compressed MP4)
├── data/publications.json # Single source of truth for the publications list
├── cv/Adam_Haroon_CV.md # Single source of truth for the CV page
├── .nojekyll # Tells GitHub Pages to skip Jekyll processing
└── CNAME.example # Rename to CNAME (containing only your domain) for a custom domain
- Publications: edit
data/publications.json. Each entry drives the list, filters, venue pill, auto-generated BibTeX, and the click-through link (doifirst, thenurl). Statuses:published,accepted,under-review,in-preparation. - CV: edit
cv/Adam_Haroon_CV.md. Headings use### Position Title | datesfor the title/date line, followed by#### Institutionon its own line, then bullet points. - Project figures: images live in
assets/img/fig-*.png; the balloon-swarm video lives inassets/video/fig-hab-marl.mp4. The Safe Preference-Based RL page has a commented-out figure block ready to enable oncefig-safe-pbrl.pngexists. - Videos: keep them web-compressed (H.264 MP4, roughly under 25 MB). GitHub rejects files over 100 MB.
Browsers block fetch() on file:// URLs, so the Publications and CV pages need a local HTTP server:
cd website
python3 -m http.server 8000
# open http://localhost:8000-
Create the repo. For a
https://<username>.github.ioroot site, name the repo exactly<username>.github.io. Any other name (e.g.personal-website) serves athttps://<username>.github.io/<repo>/. Both work; this site uses only relative paths. -
Push the site:
cd website git init -b main git add . git commit -m "Initial personal website" git remote add origin https://github.com/<username>/<repo>.git git push -u origin main
reference/(source PDFs) is excluded by.gitignore. The resume PDF contains a personal phone number and shouldn't be published. -
Enable Pages. On GitHub: Settings → Pages → Build and deployment, set Source to Deploy from a branch, Branch
main, folder/ (root), then Save. The site goes live in 1-2 minutes at the URL shown at the top of that page. -
Custom domain (optional). Rename
CNAME.exampletoCNAMEand put your domain in it (one line, nothing else), commit and push. Then at your DNS provider add aCNAMErecord pointingwwwto<username>.github.io, and enter the domain under Settings → Pages → Custom domain. Enable Enforce HTTPS once the certificate is issued. -
Update the site by committing and pushing; Pages redeploys automatically:
git add -A && git commit -m "Update publications" && git push