Skip to content

Commit

Permalink
LWT Update Fixes (#139)
Browse files Browse the repository at this point in the history
* refactor auto-cite to plugin architecture, add orcid plugin (#70)

- complete overhaul of auto-cite architecture
- move auto-cite and related files to dedicated `scripts` folder
- add `__pycache__` to gitignore
- improve logging clarity
- make plugin architecture. plugins take list data from one yaml file at a time, and return a list of sources.
- make config.yaml for plugin order and input files. you can now split up input sources into separate files. example: you have `2019-papers.yaml` `2020-papers.yaml` `2021-papers.yaml` that get processed by the normal `sources` plugin, and `current-orcid.yaml` `alumni-orcid.yaml` that get processed by the `orcid` plugin
- orcid plugin copies over any metadata to each source it returns, which can be used for filtering. example: `- orcid: 09182-12398-912837-129387 page: alex-lee` will return a bunch of papers for that orcid, and each paper will have the field `page` set to `alex-lee`. then that field can be used as a filter in the list component

* close a few small issues (#74)

- fix tooltip bug on safari?
- make the components that look up their info by id more robust by moving variable assignments closer to their use location to avoid variable scoping issues
- filter blank sections and remove unnecessary `break` option in section component
- add ability for list component to read numerical filter values in addition to just strings
- add ability for portrait and post excerpts to look up team member and blog post by id instead of filling out params manually
- add generic two column component
- update documentation for the above

* rename scripts folder to auto-cite, update readme auto-cite docs link

* revert autocite plugin order

* remove orcid input and plugin run

* move auto-cite config to main config, fix tooltip (#79)

- set tooltip display to none after it fades out to avoid potential layout issues
- move auto-cite configuration from its own separate config file to the main site config, to be less confusing
- make citations component get the location of the auto-cite output citations from the config file, rather than being hard-coded to "citations.yaml"

* Create CITATION.cff (#91)

* update pull request template to include warning about forks and gh-actions

* Remove specified body font size for accessibility

* Accessibility, bug, performance, and misc fixes (#103)


- take site-wide google search on 404 page and make it into reusable component (see #2)
- remove gallery from readme (since we'll be want to update it somewhat regularly) and move to wiki
- set `img` alt attributes as appropriate
- refactor sections to be only one html element
- load font awesome async for performance
- add spots for extra details in footer, and add ad for template
- move some basic items in head to meta
- turn logo-text config option into simple boolean
- fix small blog post excerpt bug
- defer load all scripts
- move from popper.js to tippy.js for tooltips
- add accessible label to search box
- make tags component accept list or comma-separated values more robustly
- fix two col component bug where it can't accept markdown
- add html doctype and lang to prevent warnings and various issues
- remove bash scripts that no-one should probably be using, and are documented in the wiki anyway
- various css tweaks
- add aria labels to anchors
- fix anchor move-to-parent bug
- on team page, replace dead link to non-existent join page with just some job positing filler details (see #86 for discussion)
- test each page with lighthouse (in chrome dev tools), mobile and desktop

* Tag fixes (#106)


- add webrick for ruby 3.0.0+ support
- add example tags to tools
- remove flex sass mixin
- misc css fixes
- make use of flex gap where appropriate
- 0.9rem for certain sans texts
- fix search box button color to make visible
- add active color to tags
- dedup and add tooltip to tags when fetched from github
- refactor search script, rename "query" to (CSS) "selector" for less confusion, update url from search box and clear buttons
- add clear search link to search info component
- add util script file, including func to normalize strings for comparisons, and debounce func

* add subtitle option, tooltip tweaks

* Update .gitignore

* add flip behavior to button and feature

* rename name/headline to title, add subtitle to card, misc fixes

* fix card tags logic

* add boolean support to list filters

* fix blank tooltips

* minor tweaks

* misc css and js fixes (#109)

- simplify css to replace margin with flex gap where possible/appropriate. more simple and robust against direction changes, wrapping, new elements/rows/cols.
- fix regression with feature component when flipped and on small screen
- change "smart" behavior of `search-info`. show/hide based on whether anything searched, not whether anything filtered. more intuitive/expected and simpler. (there can be searches that don't filter anything because every item matches).

* make portrait name text smaller

* update font awesome version to 6

* update font awesome to v6

* add clearer note to auto-generated citations file

* fix generated warning note in citations file

* Update pull_request_template.md

* tweak manubot log level (#113)

- increase manubot log level to "warning" to show message when an invalid identifier type is used
- force manubot logging to gray color
- rearrange `try` blocks around manubot call for a bit better distinction between errors
- make trueHide/trueShow util funcs just be locally `<script>` scoped (like the other util functions) rather than attached to `window`

* Improve auto-cite process (#120)


- change auto-cite github actions workflow to install via requirements.txt (allows us to add more packages later if we need)
- update CFF file
- rebuild demo citations with new cache key
- add explicit cache matching key to sources. do this as a hash of the input source object. so, when any field in the source changes, invalidate the cache. just to be safe and for simpler/less error-prone behavior.
- add special case for when `id` is not defined. in this case, do not pass to manubot (because it will throw error), and instead pass source through untouched.
- move the code that merges in extra/overridden input props into the sources loop to avoid another "match by id" situation" (error prone)  
- force pyyaml to not use references (shows up when there are duplicate data structures)
- rename "find_match" to "get_cached". match by explicit cache key instead of id. if key absent, do not count as match. if more than one match, do not count as match (needed because if there are multiple sources with the same id in the same file, but with different other props, the template could choose the wrong one and screw up the output).
- add requirements.txt
- reformat all python with black formatter
- updated docs to reflect the above.

* update citation component to support id-less (#122)

* add shield to readme

* use page.name instead of .title for members

* fix bug from previous page.name hot fix

* in doc title, move page title in front of site title

* Don't error exit code on metasource failure, and misc error handling improvements (#127)

- temporarily track which plugin source came from with `_plugin` and `_input`, then ignore `exit()` when it is a metasource to address #121. delete these keys before exporting.
- better error catching for various error-prone points
- make logging and `.get()` fallbacks better
- make `exit()`s happen at end of loop with `will_exit` flags, instead of stopping in the middle so users can see all entries that cause problems at once
- rerun auto-cite and regenerate cache keys due to renaming of internal `_plugin` and `_input` keys
- change "message" in exception catching to "e" to match convention
- update docs to reflect above

* update auto-cite workflow (#128)

- add the ability to run auto-cite workflow periodically, or on demand (through the github website interface), but comment out
- increase timeout for auto-cite workflow
- better citation date handling and fallbacks
- truncate non-rich citation authors

* Update link.scss

* Update theme.scss

* Update palettes.scss

* Update palettes.scss

* fix citation component lookup bug

* fix code css, add rounded var to theme

* add new font awesome class names, tweak rule css

* citation and portrait css tweaks

* change google scholar to user id

* update google scholar link pattern

* update member paper button to be clearer

* fix code block and two-col css

* First official version (#159)

greenelab/lab-website-template#159

* v1.1.0 (#166)

* v1.1.1 (#174)

See changelog for high level, user-facing changes.

- docker python install changes. pin watchdog version, turn off unneeded
caching.
- docker entrypoint changes. run cite process immediately, ensure no
simultaneous runs.
- first time setup fixes. don't parse config.yaml as yaml, instead
customize with string replacement to preserve key order and comments.
- add title and link fallbacks to citation component
- fix start/end markers for blog post excerpts, and remove special
characters from hidden search attribute
- change member page from col layout to float
- add multi-line option to regex_scan liquid plugin (to support
start/end marker bug above)
- add new regex_strip liquid plugin to strip all special characters from
string
- card, code, portrait, post excerpt css fixes
- fix testbed image links
- (re)include user pr template
- fix versioning workflow to correctly parse and split changelog
- add show-title and show-subtitle site config options
- include site subtitle in description meta tag

* v1.1.2 (#178)

See greenelab/lab-website-template#177 .
v1.1.1 introduced a regression in `first-time-setup.yaml` when clearing
the `gh-pages` branch. I wanted to make the command simpler -- to simply
delete everything in the folder -- but I didn't think it through enough.
[There is a safeguard to prevent the command from
working](https://unix.stackexchange.com/questions/369530/rm-refusing-to-remove-or-directory-skipping),
and also even if it did work it would delete the `.git` folder which
would break things. Thus, this version reverts the command to how it was
before, manually specifying each `.` folder.

* v1.1.3 (#185)

Closes #181 and #180 
Closes #179 

- fix typo in first-time-setup.yaml
- fix versioning workflow tag/release
- tweak some cite.py and _plugins comments
- add commented out `continue` for if user wants to discard sources that
have ids that can't be cited by Manubot, per #186 discussion
- clean Manubot title/authors/publisher/etc output. trim whitespace and
filter.
- fix citation, portrait, and float css

The tagging/releasing step is now reverted to [how I had it in
v1.1.0](https://github.com/greenelab/lab-website-template/pull/166/files#diff-67cc7f4d3d06063e6239e59de699c4a2c768ba544777ded6aa22ab45aa0ad24a),
just using `ncipollo/release-action` for both the tag and the release,
and removing `mathieudutour/github-tag-action`. Idk why I keep going
back and forth. I guess the last time I tried using just `ncipollo` it
didn't work? But it seems to be working now (links ephemeral):

https://github.com/vincerubinetti/lwt-test/pull/2
https://github.com/vincerubinetti/lwt-test/releases/tag/v1.1.4

---------

Co-authored-by: vincerubinetti <[email protected]>

* v1.1.4 (#192)

- explicitly list cite process cache files in gitignore
- add default values for all `.get()` calls for extra safety and also to
indicate expected type
- change `id` to `_id` in plugins. this was done in the main `cite.py`
script in v1.1.1 but i missed it in the plugins.
- fix dangerous memoize/cache bug where cache key doesn't include the id
of the metasource currently being cited, which affects the output
- orcid plugin: update api to v3
- orcid plugin: fix bug where all ids for single source were being
included. instead, find most recent doi, and fallback to other id type
if not available.
- orcid plugin: keep a few details from api for ids that aren't citable
by manubot
- allow `format_date` util func to accept numeric timestamp (returned
from orcid api)
- tweak member bio page

* v1.1.5 Fix orcid plugin attributeerror bug (#198)

- various cite process tweaks
- add traceback logging of running plugins
- change variable names for clarity and consistency
- add generic "safe get" function as suggested by Faisal last pr
- use generic safe get in place all of all gets. helps fix bug due to
orcid api sometimes returning none types for certain fields, and other future bugs.

* v1.1.6 unpin python packages (#212)

Unpins all cite process python packages from their exact versions, pins
them to **major versions**. This ensures users will be on the latest
versions of packages, without breaking changes (assuming the packages
follow semver properly), and without having to constantly update their
template version (which can be a pain).

Closes #210 
Addresses #211 

FOR THE TEMPLATE MAINTAINER(S)

New template version checklist:

- [x] I have updated CITATION and CHANGELOG as appropriate.
- [x] I have updated lab-website-template-docs as appropriate.
- [x] I have checked the testbed as appropriate.

---------

Co-authored-by: vincerubinetti <[email protected]>

* V1.2.0 (#244)

- add discussion templates. be more aggressive requiring fields.
- update to latest version of all github actions (checking for breaking
changes)
- add debug step to each workflow to allow ssh access in
- fix site.location vs page.url bug (see issue)
- add html-proofer plugin to check for broken images and links, disabled
by default because it adds a lot of time to hot-reload, but set
explicitly as false in config so users can easily flip it on
- update bundler version and re-bundle gems
- add "remove" option for cite-process that allows a user to remove a
source from a metasource. e.g., an ORCID returns a source that the user
doesn't want on their site, so in their sources.yaml they put the id and
remove: true.
- by default, ignore sources that manubot can't cite if they're from
metasources (see changelog)
- add markdownify to more component params
- fix bug in citation (and other) components where when lookup is blank,
first entry in list is always chosen
- make use of newly widely available CSS container queries
- remove compilation-time wrapping of tables because it breaks nested
tables, and is not (practically) possible to support them in the same
way. replace with run-time js plugin for wrapping.
- upgrade font awesome and improve loading mechanism
- fix header title/subtitle CSS bug reported by @Maruuka 
- add "image" param to post excerpt component, so blog posts can have
thumbnails
- fix bug that prevents manual passing of tags to tag component
- add heading 5/6 styles/support
- tweak dark mode plugin
- various style tweaks

New template version checklist:

- [x] I have updated CITATION and CHANGELOG as appropriate.
- [x] I have updated lab-website-template-docs as appropriate.
- [x] I have checked the testbed as appropriate.
- [x] I have tested changed workflows on a freshly generated and forked
repo.

* V1.2.1 (#247)

- fix bug where literal yaml date object doesn't get parsed correctly
- fixes addition of site.url by gh-actions workflow

New template version checklist:

- [x] I have updated CITATION and CHANGELOG as appropriate.
- [x] I have updated lab-website-template-docs as appropriate.
- [x] I have checked the testbed as appropriate.

* v1.2.2 (#257)

Closes #250 
Closes #256 
Closes #260 
Closes #258

- adds `affiliation` to member portrait component
- simplify portrait component code/css
- make tag de-dupe behavior the same as search de-dupe. normalize to
lower-kebab-case.
- expand list of manubot-supported id types for falling back to orcid
api details
- change order and type of preferred ids from orcid

---------

Co-authored-by: Faisal Alquaddoomi <[email protected]>
Co-authored-by: vincerubinetti <[email protected]>

* v1.3.0 (#274)

Closes #272 
Closes #269 
Closes #191  (hopefully)

New template version checklist:

- [x] I have updated CITATION and CHANGELOG as appropriate.
- [x] I have updated lab-website-template-docs as appropriate. Pending
change request:
https://greene-lab.gitbook.io/lab-website-template-docs/~/changes/a57wjuxagDtJUR241kyt/basics/components/list
- [x] I have checked the testbed as appropriate.

---

- use `name` field for all debug/logging steps in workflows
- use `jwalton/gh-find-current-pr` to get PR number to be more reliable
(in rare cases, `github.event.number` can be empty)
- fix bug in "first time setup" workflow where `description` gets
appended to `user` due to missing `\n` in printf
- rename workflows from `.yml` to `.yaml` for consistency
- remove useless "build preview" workflow run in "on schedule" †
- dont run "update citations" workflow on PR close, which should
hopefully avoid issues discussed in #191. in my testing on a fork
(vincerubinetti/lab-website-template), it does. need to use step-level
`if` skipping instead of job-level or workflow-level because of [this
issue](actions/runner#491 (comment)).
- when "on schedule" workflow opens a PR, add hint in body of the PR on
how to trigger the live preview workflow
- use the `xml_escape` liquid filter wherever a user/third-party
provided field is used in an HTML attribute to prevent special
characters breaking HTML rendering. example: `aria-label="{{
citation.title }}"` and `citation.title` is `"Lorem Ipsum" dataset`,
causing attribute to prematurely close.
- change `data_filter` to accept Ruby expressions instead of custom
syntax. use Ruby `eval` and define each field in the item as a local
variable, e.g. `{"animal": "cat"}` lets you use `filter="animal ==
'cat'"`.
- fix heading anchor styles
- add styles for `<details>` element
- fix logo shrinking/growing css bugs

† due to a [github
limitation](https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs),
it wouldn't not run anyway on the auto-created PR. the user must
close/reopen the PR, then the regular "on pr" workflow (which includes
running "build preview") will run. i've already [updated the docs to
talk about
this](https://greene-lab.gitbook.io/lab-website-template-docs/basics/citations#periodic-updates).
from now on, let's treat auto-opening PR as the only supported way.
previously i considered that the user could change `open-pr` to `false`
to have "on schedule" commit updated citations directly to `main`, but
let's nix that to maintain simplicity. it's probably better that we
force the user to review the changes before pushing them to their live
site anyway. if we did want to support that in the future, the "build
preview" run i removed would have to be changed to a "build site", since
we'd want to be re-building the `main` branch version of the site, not a
preview for a PR.

---------

Co-authored-by: Faisal Alquaddoomi <[email protected]>

* v1.3.1 (#289)

Closes #288
Closes #287 
Closes #285

New template version checklist:

- [x] I have updated CITATION and CHANGELOG as appropriate.
- [x] I have updated lab-website-template-docs as appropriate.
- [x] I have checked the testbed as appropriate.

---

- use latest major version of setup-ruby gh-action
- run "commit cache" step if citations step fails so that progress
(successful citations) will be saved
- replace xml_escape filter with appropriate escapes for each situation,
and slightly modify regex_strip filter to allow some basic punctuation

* v1.3.2 (#297)

Closes #293 
Addresses #294
Closes #295 
Addresses #296

- "pi" -> "principal-investigator" to encourage more specific names
- add bluesky icon by default
- fix header/footer/section background image regressions from v1.3.0
- upgrade font awesome version
- do full audit of changes from v1.3.0 and v1.3.1, and all `_escape`
filters applied. make fixes/simplifications where applicable.

FOR THE TEMPLATE MAINTAINER(S)

New template version checklist:

- [x] I have updated CITATION and CHANGELOG as appropriate.
- [x] I have updated lab-website-template-docs as appropriate.
- [x] I have checked the testbed as appropriate.

* v1.3.3 (#303)

Closes #298 
Closes #301 
Closes #302 

- adds support for multiple blog post authors
- improves citation error logging
- adds status badges to first time setup workflow to add it to user
readmes

New template version checklist:

- [x] I have updated CITATION and CHANGELOG as appropriate.
- [x] I have updated lab-website-template-docs as appropriate.
- [x] I have checked the testbed as appropriate.

* fix duplication

* pull gemfile from lwt

* fix config file

* revert to 1.2.1

* try own merge

* fixes and updates

* fix contact page

---------

Co-authored-by: Vincent Rubinetti <[email protected]>
Co-authored-by: vincerubinetti <[email protected]>
Co-authored-by: Faisal Alquaddoomi <[email protected]>
  • Loading branch information
4 people authored Jan 29, 2025
1 parent a08e1f5 commit 3235bf1
Show file tree
Hide file tree
Showing 14 changed files with 5 additions and 106 deletions.
22 changes: 0 additions & 22 deletions .github/workflows/on-pull-request.yml

This file was deleted.

24 changes: 0 additions & 24 deletions .github/workflows/on-push.yml

This file was deleted.

Empty file modified 404.md
100755 → 100644
Empty file.
Empty file modified Gemfile
100755 → 100644
Empty file.
Binary file not shown.
Binary file modified _cite/.cache/cache.db
Binary file not shown.
28 changes: 0 additions & 28 deletions _config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ links:
instagram: greenelab

### jekyll settings
### jekyll settings

# front matter defaults
# front matter defaults
defaults:
# all markdown files
Expand All @@ -39,32 +37,21 @@ defaults:
layout: post

collections:
# generate page for each member
# generate page for each member
members:
output: true
# generate page for each post
posts:
output: true
# generate page for each post
posts:
output: true

# jekyll plugins
# jekyll plugins
plugins:
- jekyll-spaceship
- jekyll-sitemap
- jekyll-spaceship
- jekyll-sitemap
- jekyll-redirect-from
- jekyll-feed
- jekyll-last-modified-at

# code block syntax highlighting
highlighter: rouge
- jekyll-last-modified-at

# code block syntax highlighting
highlighter: rouge

Expand All @@ -85,18 +72,3 @@ exclude:
- README.md
- LICENSE.md
- CITATION.cff

# sass settings
sass:
sass_dir: _styles

# force jekyll to include certain files/folders
include:
- _styles
- _scripts

# force jekyll to exclude certain files/folders
exclude:
- README.md
- LICENSE.md
- CITATION.cff
Empty file modified _includes/head.html
100755 → 100644
Empty file.
4 changes: 0 additions & 4 deletions _includes/two-col.html

This file was deleted.

Empty file modified _layouts/default.html
100755 → 100644
Empty file.
12 changes: 0 additions & 12 deletions _posts/2019-01-29-infant-in-arms.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ Here I’m compiling some observations from my travel that may be informative or
height="300px"
%}

{% include section.html %}

## Travel Supplies

**A good backpack beats a diaper bag.**
Expand Down Expand Up @@ -73,8 +71,6 @@ For deplaning, I do this in reverse.
Finding a routine that works has helped me to keep everything together in some hectic situations.
The one caveat of going this route is to note that you need two gate-check tags - one for the stroller and a second one for the car seat.

{% include section.html %}

## Feeding

**Traveling with formula was the best option for me.**
Expand All @@ -96,8 +92,6 @@ I’ve found that with the rate of heat loss from such cups, equal amounts of fo
If the volume of the cup is too large the formula ends up too hot and I increase the risk of cooking it.
If it’s too low, our baby won’t drink it.

{% include section.html %}

## In Air and Airport

**Flights with a connection are better for longer itineraries.**
Expand Down Expand Up @@ -152,8 +146,6 @@ After service, the flight attendants must have asked the cockpit to reduce the t
As soon as it started cooling down, she went to sleep and slept the rest of the flight.
If I’d used the call button before service, I could have saved everyone a half-hour of listening to a crying baby.

{% include section.html %}

## Hotels

**For our baby at least, the first night in each new hotel room was a rough one.**
Expand All @@ -170,8 +162,6 @@ But this seems to be something hotels in the US are more or less terrible at, so
We did purchase [a travel crib](https://smile.amazon.com/Lotus-Travel-Crib-Lightweight-Comfortable/dp/B00AKKDSNG?sa-no-redirect=1), which we have used when my wife and I have traveled together.
My daughter sleeps better in this, but the weight and added item makes it too cumbersome for me to take when it’s just me.

{% include section.html %}

## Other Venue Notes

**Some places have been remarkably wonderful to work with.**
Expand Down Expand Up @@ -214,8 +204,6 @@ On the other hand, the [American Society for Cell Biology (ASCB)](https://ascb-e
[The Pacific Symposium on Biocomputing (PSB)](http://psb.stanford.edu/), a computational biology conference, has been family friendly for as long as I can remember.
[The American Society for Human Genetics (ASHG)](https://www.ashg.org/2017meeting/pages/general.shtml) and [International Society for Computational Biology (ISCB)](https://www.iscb.org/ismbeccb2019-general/faq#childrenallowed) get special shoutouts for both providing childcare options and allowing children at the meeting itself providing parents with the flexibility they need.

{% include section.html %}

## Closing thoughts

I’ve enjoyed traveling with our daughter during this time.
Expand Down
2 changes: 0 additions & 2 deletions _posts/2020-10-19-DL-workshop.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ I am currently applying these methods to understand mechanisms of _P.aeruginosa_
My goal is to develop methods that help gain insight into the complexities of disease traits.
You can find my current research projects on my [github page](https://github.com/ajlee21).

{% include section.html %}

## Deep learning in biology workshop

To celebrate and pass on the knowledge, my lab mate, [Ben Heil](https://ben-heil.github.io/) and [I](https://twitter.com/localee_compact) are hosting a [“Deep Learning for Biologists Workshop”](https://ben-heil.github.io/2020-10-08-workshop/).
Expand Down
4 changes: 2 additions & 2 deletions _styles/header.scss
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
---

$logo-big: 80px;
$logo: 40px;
$logo-big: 150px;
$logo: 80px;
$big-padding: 100px;
$collapse: 700px;
$sticky: true;
Expand Down
15 changes: 3 additions & 12 deletions team/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,8 @@ We recognize that diverse teams do better research.
We foster an environment where team members are treated equally, and where we respect and admire our differences.
The team includes postdocs, students at all levels, staff, and our lab mascots.

{% include list.html data="members" component="portrait" filters="role: pi, group: " %}
{% include list.html data="members" component="portrait" filters="role: postdoc, group: " %}
{% include list.html data="members" component="portrait" filters="role: phd, group: " %}
{% include list.html data="members" component="portrait" filters="role: undergrad, group: " %}
{% include list.html data="members" component="portrait" filters="role: programmer, group: " %}
{% include list.html data="members" component="portrait" filters="role: mascot, group: " %}
{% include list.html data="members" component="portrait" filter="role == 'principal-investigator' and group != 'alum'" %}
{% include list.html data="members" component="portrait" filter="role != 'principal-investigator' and group != 'alum'" %}

{% include section.html dark=true %}

Expand All @@ -46,12 +42,7 @@ Gone but never forgotten.
These are past lab members who have moved on to the [Childhood Cancer Data Lab](https://www.alexslemonade.org/data-lab), other school programs, new jobs, or elsewhere.
They have all made lasting contributions to science and to our hearts. ❤️

{% include list.html data="members" component="portrait" filters="role: pi, group: alum" style="small" %}
{% include list.html data="members" component="portrait" filters="role: postdoc, group: alum" style="small" %}
{% include list.html data="members" component="portrait" filters="role: phd, group: alum" style="small" %}
{% include list.html data="members" component="portrait" filters="role: undergrad, group: alum" style="small" %}
{% include list.html data="members" component="portrait" filters="role: programmer, group: alum" style="small" %}
{% include list.html data="members" component="portrait" filters="role: mascot, group: alum" style="small" %}
{% include list.html data="members" component="portrait" filter="group == 'alum'" style="small" %}

{% include section.html %}

Expand Down

0 comments on commit 3235bf1

Please sign in to comment.