Portfolio Cookbook & Maintenance Guide 🍳

This cookbook provides guides, shortcuts, and commands to manage, update, and run your academic portfolio website.


πŸ› οΈ Portfolio Management Utility (scripts/manage.py)

A custom Python script has been added to scripts/manage.py to automate common updates. To use it, make sure you are in your active Python environment where pyyaml is installed.

1. Run the Local Development Server

Starts the Jekyll server with hot-reloading enabled.

./scripts/manage.py serve
# Or: python3 scripts/manage.py serve

The website will be hosted locally at http://localhost:4000/.

2. Add a Publication (Interactive)

Prompts you for all metadata, sets up tags (Year, Venue, Rank, Impact), links, and custom BibTeX, then formats and inserts it in the correct year order inside _data/publications.yml.

./scripts/manage.py add-pub

3. Add a Project (Interactive)

Prompts you to add a new Bootcamp, Research Project, or Industry Collaboration, handles point list formats, and saves to _data/projects.yml.

./scripts/manage.py add-project

4. Log a Research Idea (Interactive)

Prompts for the theme, status, priority, source, open questions and next actions, then prepends the entry to _data/research_ideas.yml. The schema comment at the top of that file is preserved on save.

./scripts/manage.py add-idea

The entry renders on /research-ideas/ as a card and as a node on the mind map, and is reachable at /research-ideas/#idea-<id>.

5. Import Bookmarks into the Resources Library

Merges a browser bookmarks export (Chrome: Bookmark manager > Export bookmarks) into _data/link_library.yml. Existing entries and hand edits are kept, new URLs are appended, duplicates are dropped, tracking parameters are stripped, and anything behind a login or inside a private workspace is skipped and reported.

./scripts/manage.py import-bookmarks --file ../bookmarks_9_21_26.html --dry-run   # report only
./scripts/manage.py import-bookmarks --file ../bookmarks_9_21_26.html
./scripts/manage.py add-link                                                      # one link, interactively

Folder mapping: Robo Labs to Robotics Labs, Robo Labs/Benchmark to Benchmarks, CV Labs to Computer Vision Labs, Scientists to Researchers. Anything else lands in Tools, or in Funding when the link looks like a job or fellowship call. Change FOLDER_GROUPS in scripts/manage.py to add a mapping.

6. Add a News/Update Item

Quickly prepends a new update to the home page timeline modal.

./scripts/manage.py add-news --text "Paper on VLA models accepted at <strong>CVPR'27</strong>! Check project page <a href='https://example.com' target='_blank'>here</a>."

Note: You can specify a custom date (e.g. July 2026) using the optional --date flag. Defaults to the current Month & Year.

7. Discover and Track PhD & Postdoc Openings

Runs the automated discovery pipeline across public academic feeds and search results, checks relevance against your research profile, resolves canonical official sources, audits deadlines, and builds _data/openings.yml.

./scripts/manage.py openings run                # full discovery and build pipeline
./scripts/manage.py openings run --dry-run      # preview discovered positions without saving
./scripts/manage.py openings build              # rebuild _data/openings.yml from SQLite state

The page renders at /phd-postdoc-openings/ and is discoverable through Cmd/Ctrl-K.


πŸ“‚ Content Data Guide (_data/)

The website is fully data-driven. You can update any page content by editing the corresponding YAML file in the _data/ folder:

πŸ“– publications.yml

List of research publications.

πŸ’Ό education.yml

Education details rendered on the Experience page.

🏒 experience.yml

Research and professional work experience.

🌐 collaborations.yml

Academic collaborations rendered on the Experience page (interactive shimmer-on-hover cards).

πŸŽ“ teaching.yml

Courses taught or assisted.

πŸ’‘ research_ideas.yml

Capture log behind /research-ideas/, reached from the home page hero chip and from Cmd/Ctrl-K, deliberately not in the navigation.

Directory boxed at the top of /research-ideas/, above the idea board. Generated by import-bookmarks, safe to edit by hand.

πŸ”¬ deep_dives.yml

Long reads about someone else’s system, one box each at the top of /research-ideas/, under the Resources Library.

πŸ† awards.yml

Scholarships, medals, and academic awards.

πŸŽ“ openings.yml

Automated collection of PhD, Postdoc, and research scientist positions behind /phd-postdoc-openings/. Built from scripts/openings/ crawler, never manually fabricated.


🎨 Layout & CSS Structures (_sass/theme/)

The website styling has been modularized:


πŸš€ Publishing Updates

To deploy changes to your live portfolio:

  1. Edit the relevant file (or use manage.py).
  2. Test changes locally using ./scripts/manage.py serve.
  3. Commit and push the updates:
    git add .
    git commit -m "update: add new paper to publications"
    git push origin master