Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • verified-software/psvg.doc.ic.ac.uk
  • xr119/psvg.doc.ic.ac.uk
2 results
Show changes
Commits on Source (788)
#!/bin/sh
# Use rsync to transfer files to a server via ssh, ensuring that the files are transferred with the correct permissions,
# user group. The command will also remove old files from the remote directory.
# To transfer files to the default location, you will need to be a member of the `rr` DoC usergroup.
#
# Example usage:
# DOC_DEPLOY_USER=me ./.deploy.sh
set -x
USER=${DOC_DEPLOY_USER:+${DOC_DEPLOY_USER}@}
SERVER=${DOC_DEPLOY_SERVER:-shell1.doc.ic.ac.uk}
PTH=${DOC_DEPLOY_PATH:-/vol/rr/www}
exec rsync -e "ssh -o StrictHostKeyChecking=no" --chmod=Dg+s,ug+rwX,o+rX --chown=:rr -igrp --delete _site/ "${USER}${SERVER}:${PTH}"
...@@ -3,3 +3,4 @@ _site ...@@ -3,3 +3,4 @@ _site
.jekyll-metadata .jekyll-metadata
vendor vendor
.bundle/config .bundle/config
.DS_Store
stages: stages:
- update - update
- test - build
- deploy - deploy
update_publications: image: "ruby:2.6-buster"
stage: update variables:
script: NOKOGIRI_USE_SYSTEM_LIBRARIES: "true"
- git checkout -B ${CI_BUILD_REF_NAME}
- git submodule update --init --remote
- git add publications
- git commit -m "[AUTO] Updating publications submodule" --author="Resource Reasoning Group Backup Bot <rr-gitlab-bot@example.com>" || exit 0
- git remote rm rw || true
- git remote add rw git@gitlab.doc.ic.ac.uk:${CI_PROJECT_PATH}.git
- eval `ssh-agent`
- echo "$PUSH_KEY" | ssh-add -
- git push rw ${CI_BUILD_REF_NAME}
- ssh-agent -k
only:
- triggers
.before_script: &before_script build:
- bundle install --without=development stage: build
- bundle exec rake init artifacts:
paths:
test: - _site/
stage: test expire_in: 1 day
before_script: *before_script cache:
paths:
- vendor/bundle/
except:
- triggers
tags:
- docker
- vtss_site
before_script:
- bundle install --deployment --without=development --with=test
- bundle exec rake init
script: script:
- bundle exec rake test - bundle exec rake -s --suppress-backtrace . test
deadlinks:
stage: deploy
allow_failure: true
cache:
paths:
- vendor/bundle/
except: except:
- triggers - triggers
tags:
- docker
- vtss_site
before_script:
- bundle install --deployment --without=development --with=test
script:
- bundle exec rake -s --suppress-backtrace . testlinks
deploy: deploy:
stage: deploy stage: deploy
environment: production environment: production
before_script: *before_script image: resourcereasoning/website-deploy
script:
- bundle exec rake deploy
tags: tags:
- doc - docker
- vtss_site
only: only:
- master - master
except: except:
- triggers - triggers
# DOC_DEPLOY_USER and DOC_DEPLOY_KEY should be defined as secret variables in the GitLab CI Settings panel
# Not a test stage to prevent race conditions with gem installations. before_script:
deadlinks: - eval `ssh-agent`
stage: deploy - echo "$DOC_DEPLOY_KEY" | ssh-add -
script: script:
- bundle exec rake testlinks - ./.deploy.sh
allow_failure: true
except:
- triggers
# Special target triggered when publications repository is updated:
update_publications:
stage: update
variables:
GIT_AUTHOR_NAME: Resource Reasoning Group Backup Bot
GIT_COMMITTER_NAME: Resource Reasoning Group Backup Bot
GIT_AUTHOR_EMAIL: rr-gitlab-bot@example.com
EMAIL: rr-gitlab-bot@example.com
# PUSH_KEY should be defined as a secret variable in the GitLab UI
SSH_KEY: $PUSH_KEY
image: ignoredambience/github-gitlab-sync
tags:
- docker
- vtss_site
only:
- triggers
before_script:
- eval `ssh-agent`
- echo "$SSH_KEY" | ssh-add -
script:
- git checkout -B ${CI_COMMIT_REF_NAME}
- git submodule update --init --remote
- git add publications
- git commit -m "[AUTO] Updating publications submodule" || exit 0
- git remote rm rw || true
- git remote add rw git@gitlab.doc.ic.ac.uk:${CI_PROJECT_PATH}.git
- git push rw ${CI_COMMIT_REF_NAME}
[submodule "publications"] [submodule "publications"]
path = publications path = publications
url = https://gitlab.doc.ic.ac.uk/resource-reasoning/publications.git url = https://gitlab.doc.ic.ac.uk/verified-software/publications.git
branch = master branch = master
...@@ -5,16 +5,16 @@ RewriteEngine on ...@@ -5,16 +5,16 @@ RewriteEngine on
# Rewrite former site subdomain pages to new site pages # Rewrite former site subdomain pages to new site pages
RewriteCond %{HTTP_HOST} =www-rw.doc.ic.ac.uk RewriteCond %{HTTP_HOST} =www-rw.doc.ic.ac.uk
RewriteRule ^ http://psvg.doc.ic.ac.uk/research/javascript.html [R=301,L] RewriteRule ^ http://vtss.doc.ic.ac.uk/research/javascript.html [R=301,L]
RewriteCond %{HTTP_HOST} =www-lrr.doc.ic.ac.uk RewriteCond %{HTTP_HOST} =www-lrr.doc.ic.ac.uk
RewriteRule ^papers.html http://psvg.doc.ic.ac.uk/publications/ [R=301,L] RewriteRule ^papers.html http://vtss.doc.ic.ac.uk/publications/ [R=301,L]
RewriteCond %{HTTP_HOST} =www-lrr.doc.ic.ac.uk RewriteCond %{HTTP_HOST} =www-lrr.doc.ic.ac.uk
RewriteRule ^ca($|/) http://psvg.doc.ic.ac.uk/research/concurrency.html [R=301,L] RewriteRule ^ca($|/) http://vtss.doc.ic.ac.uk/research/concurrency.html [R=301,L]
# Bump any other subdomain request that gets here over to the main psvg site # Bump any other subdomain request that gets here over to the main psvg site
RewriteCond %{HTTP_HOST} !=psvg.doc.ic.ac.uk RewriteCond %{HTTP_HOST} !=vtss.doc.ic.ac.uk
RewriteRule ^(.*)$ http://psvg.doc.ic.ac.uk/$1 [R=301,L] RewriteRule ^(.*)$ http://vtss.doc.ic.ac.uk/$1 [R=301,L]
ErrorDocument 403 /403.html ErrorDocument 403 /403.html
ErrorDocument 404 /404.html ErrorDocument 404 /404.html
FROM ruby:2.6
# throw errors if Gemfile has been modified since Gemfile.lock
RUN bundle config --global frozen 1
RUN gem install bundler:1.16.6
WORKDIR /usr/src/app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
RUN bundle exec rake init
EXPOSE 4000
CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
\ No newline at end of file
source 'https://rubygems.org' source 'https://rubygems.org'
Encoding.default_external = Encoding::UTF_8
gem 'rake' gem 'rake'
gem 'jekyll' group :build do
gem 'jekyll'
end
group :default, :jekyll_plugins do group :build, :jekyll_plugins do
gem 'jekyll-scholar', '~> 5.10' gem 'jekyll-scholar', '~> 5.10'
#gem 'jekyll-scholar', :git => '/home/thomas/jekyll-scholar', :branch => 'master' #gem 'jekyll-scholar', :git => '/home/thomas/jekyll-scholar', :branch => 'master'
#gem 'jekyll-redirect-from' # Temporarily disable due to incompatibility with Jekyll 3.5.0 gem 'jekyll-redirect-from'
gem 'jekyll-feed' gem 'jekyll-feed'
gem 'jekyll-sitemap' gem 'jekyll-sitemap'
end end
......
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
activesupport (5.1.2) activesupport (5.2.1)
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7) i18n (>= 0.7, < 2)
minitest (~> 5.1) minitest (~> 5.1)
tzinfo (~> 1.1) tzinfo (~> 1.1)
addressable (2.5.1) addressable (2.5.2)
public_suffix (~> 2.0, >= 2.0.2) public_suffix (>= 2.0.2, < 4.0)
bibtex-ruby (4.4.4) bibtex-ruby (4.4.7)
latex-decode (~> 0.0) latex-decode (~> 0.0)
citeproc (1.0.5) citeproc (1.0.9)
namae (~> 0.8) namae (~> 1.0)
citeproc-ruby (1.1.7) citeproc-ruby (1.1.10)
citeproc (>= 1.0.4, < 2.0) citeproc (~> 1.0, >= 1.0.9)
csl (~> 1.4) csl (~> 1.5)
colorator (1.1.0) colorator (1.1.0)
colored (1.2) colorize (0.8.1)
concurrent-ruby (1.0.5) concurrent-ruby (1.1.3)
csl (1.4.5) csl (1.5.0)
namae (~> 0.7) namae (~> 1.0)
csl-styles (1.0.1.8) csl-styles (1.0.1.9)
csl (~> 1.0) csl (~> 1.0)
ethon (0.10.1) em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
ethon (0.11.0)
ffi (>= 1.3.0) ffi (>= 1.3.0)
ffi (1.9.18) eventmachine (1.2.7)
ffi (1.9.25)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
html-proofer (3.7.2) html-proofer (3.9.2)
activesupport (>= 4.2, < 6.0) activesupport (>= 4.2, < 6.0)
addressable (~> 2.3) addressable (~> 2.3)
colored (~> 1.2) colorize (~> 0.8)
mercenary (~> 0.3.2) mercenary (~> 0.3.2)
nokogiri (~> 1.7) nokogiri (~> 1.8.1)
parallel (~> 1.3) parallel (~> 1.3)
typhoeus (~> 0.7) typhoeus (~> 1.3)
yell (~> 2.0) yell (~> 2.0)
i18n (0.8.4) http_parser.rb (0.6.0)
jekyll (3.5.0) i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.8.5)
addressable (~> 2.4) addressable (~> 2.4)
colorator (~> 1.0) colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0) jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1) jekyll-watch (~> 2.0)
kramdown (~> 1.3) kramdown (~> 1.14)
liquid (~> 4.0) liquid (~> 4.0)
mercenary (~> 0.3.3) mercenary (~> 0.3.3)
pathutil (~> 0.9) pathutil (~> 0.9)
rouge (~> 1.7) rouge (>= 1.7, < 4)
safe_yaml (~> 1.0) safe_yaml (~> 1.0)
jekyll-feed (0.9.2) jekyll-feed (0.11.0)
jekyll (~> 3.3)
jekyll-redirect-from (0.14.0)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-sass-converter (1.5.0) jekyll-sass-converter (1.5.2)
sass (~> 3.4) sass (~> 3.4)
jekyll-scholar (5.10.1) jekyll-scholar (5.14.0)
bibtex-ruby (~> 4.0, >= 4.0.13) bibtex-ruby (~> 4.0, >= 4.0.13)
citeproc-ruby (~> 1.0) citeproc-ruby (~> 1.0)
csl-styles (~> 1.0) csl-styles (~> 1.0)
jekyll (~> 3.0) jekyll (~> 3.0)
jekyll-sitemap (1.1.1) jekyll-sitemap (1.2.0)
jekyll (~> 3.3) jekyll (~> 3.3)
jekyll-watch (1.5.0) jekyll-watch (2.1.2)
listen (~> 3.0, < 3.1) listen (~> 3.0)
kramdown (1.14.0) kramdown (1.17.0)
latex-decode (0.2.2) latex-decode (0.3.1)
unicode (~> 0.4) liquid (4.0.1)
liquid (4.0.0) listen (3.1.5)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7) rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
mercenary (0.3.6) mercenary (0.3.6)
mini_portile2 (2.2.0) mini_portile2 (2.3.0)
minitest (5.10.2) minitest (5.11.3)
namae (0.11.3) namae (1.0.1)
nokogiri (1.8.0) nokogiri (1.8.5)
mini_portile2 (~> 2.2.0) mini_portile2 (~> 2.3.0)
parallel (1.11.2) parallel (1.12.1)
pathutil (0.14.0) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (2.0.5) public_suffix (3.0.3)
rake (12.0.0) rake (12.3.1)
rb-fsevent (0.10.2) rb-fsevent (0.10.3)
rb-inotify (0.9.10) rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2) ffi (>= 0.5.0, < 2)
rouge (1.11.1) rouge (3.3.0)
ruby_dep (1.5.0)
safe_yaml (1.0.4) safe_yaml (1.0.4)
sass (3.4.24) sass (3.7.2)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
thread_safe (0.3.6) thread_safe (0.3.6)
typhoeus (0.8.0) typhoeus (1.3.1)
ethon (>= 0.8.0) ethon (>= 0.9.0)
tzinfo (1.2.3) tzinfo (1.2.5)
thread_safe (~> 0.1) thread_safe (~> 0.1)
unicode (0.4.4.4)
yell (2.0.7) yell (2.0.7)
PLATFORMS PLATFORMS
...@@ -99,9 +113,10 @@ DEPENDENCIES ...@@ -99,9 +113,10 @@ DEPENDENCIES
html-proofer (~> 3.0) html-proofer (~> 3.0)
jekyll jekyll
jekyll-feed jekyll-feed
jekyll-redirect-from
jekyll-scholar (~> 5.10) jekyll-scholar (~> 5.10)
jekyll-sitemap jekyll-sitemap
rake rake
BUNDLED WITH BUNDLED WITH
1.15.1 1.16.6
--- ---
layout: page layout: page
title: PSVG Group Website Readme title: VTSS Group Website Readme
--- ---
This readme file is published in its fully rendered form [on the website](https://psvg.doc.ic.ac.uk/README.html). This readme file is published in its fully rendered form [on the website]({{site.baseurl}}{% link README.md %}).
The source code for [this site](https://psvg.doc.ic.ac.uk) is [hosted on the DoC GitLab server](https://gitlab.doc.ic.ac.uk/resource-reasoning/psvg.doc.ic.ac.uk), The source code for [this site](https://vtss.doc.ic.ac.uk) is [hosted on the DoC GitLab server](https://gitlab.doc.ic.ac.uk/resource-reasoning/vtss.doc.ic.ac.uk),
you should have access to edit it if a member of the resource-reasoning group. you should have access to edit it if a member of the resource-reasoning group.
**DO NOT EDIT THE SOURCE CODE IN `/vol/rr/www`, IT IS ALL REPLACED EACH TIME THE SITE IS REBUILT FROM VERSION CONTROL** **DO NOT EDIT THE SOURCE CODE IN `/vol/rr/www`, IT IS ALL REPLACED EACH TIME THE SITE IS REBUILT FROM VERSION CONTROL**
[![Build Status](https://gitlab.doc.ic.ac.uk/resource-reasoning/psvg.doc.ic.ac.uk/badges/master/build.svg)](https://gitlab.doc.ic.ac.uk/resource-reasoning/psvg.doc.ic.ac.uk/commits/master) [![Build Status](https://gitlab.doc.ic.ac.uk/resource-reasoning/vtss.doc.ic.ac.uk/badges/master/build.svg)](https://gitlab.doc.ic.ac.uk/resource-reasoning/vtss.doc.ic.ac.uk/commits/master)
[![Dependency Status](https://gemnasium.com/bd81b2aa11ff43417700f75dbd194221.svg)](https://gemnasium.com/6ba7afbbfda9adcba06f007cc565a29a) [![Dependency Status](https://gemnasium.com/bd81b2aa11ff43417700f75dbd194221.svg)](https://gemnasium.com/6ba7afbbfda9adcba06f007cc565a29a)
## Managing Content ## Managing Content
...@@ -55,6 +55,35 @@ Any other files present in the directory structure (except for those prefixed wi ...@@ -55,6 +55,35 @@ Any other files present in the directory structure (except for those prefixed wi
For the detail of adding publication, please refer to the README file in publication directory. For the detail of adding publication, please refer to the README file in publication directory.
Jekyll Scholar Configuration Detail
===================================
We desire the output URL structure to be:
* `/publications/`
* `index.html` - a page listing the entire bibliography
* `publications.bib` - the raw bibtex file, directly from the source
* `Key.html` - details page generated for each publication
* `Key.*` - Any files associated with each publication, copied directly from the source
In the `scholar` section of the configuration file, configuration options we've used are:
* `source`: Directory in which our bibtex files are to be found (`publications`)
* `details_dir`: Directory to output `Key.html` files for each publication (`publications`), rendered using the layout
defined in the `details_layout` option.
* `details_link`: We override the default here, as we generate our own HTML to render this link in our
`bibliography_template`.
* `repository`: Location of files associated with publications (`publications`) (the same
directory is used for both input and output: it is handled as usual by jekyll)
The template used to generate individual publication pages is [here](_layouts/publication.html). The part of interest is
the Source Materials section. We iterate through a
[predefined list of file types](publications/_publication_file_types.yml) and output a link (using icon and text from
the file type list) to the file in the repository if it exists.
Finally, in order to generate the complete biography page, we use a [page](publications.html) in the site's root just
outputting a `{% bibliography %}` as normal (which renders each entry using the layout defined by the scholar
`bibliography_template` option). By using a `permalink` jekyll option we place the rendered bibliography into the
`/publications/` output directory as `index.html`.
Testing and Deployment Testing and Deployment
---------------------- ----------------------
The DoC GitLab instance is configured (using .gitlab-ci.yml) to build, test and deploy the website on tests passing. The DoC GitLab instance is configured (using .gitlab-ci.yml) to build, test and deploy the website on tests passing.
...@@ -64,7 +93,19 @@ are consistent. ...@@ -64,7 +93,19 @@ are consistent.
An additional check that external links are still live is also run, but this test is permitted to fail without blocking An additional check that external links are still live is also run, but this test is permitted to fail without blocking
the deployment. the deployment.
The site is deployed to `/vol/rr/www` automatically on successful build. The site should be deployed automatically by GitLab CI. To deploy the site manually from your own machine, run the `.deploy.sh` script. This will use `rsync` to synchronise the contents of the `_site` directory with the webserver via SSH. Default deployment parameters:
* DOC_DEPLOY_USER: the default username used by SSH to connect, usually the username on your local machine
* DOC_DEPLOY_SERVER: `shell1.doc.ic.ac.uk`
* DOC_DEPLOY_PATH: `/vol/rr/www`
To override these parameters, set shell variables, eg: `DOC_DEPLOY_USER=me ./.deploy.sh`
The site is deployed to `/vol/rr/www` automatically on successful build using the `.deploy.sh` script.
The contents of the `DOC_DEPLOY_KEY` CI environment variable are used
as the private key used to authenticate with the server. This key is currently configured to give locked-down rsync access to the
`/vol/rr/www` using `pg`'s user account. For further details for how this is achieved, [see this
howto](https://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/). Note: when deploying to a locked-down
rsync account, the DOC_DEPLOY_PATH should be set to a path relative to the lockdown path -- use `.` if in doubt. You
won't need to set this if you're deploying from your own user account.
Locally Building and Testing Locally Building and Testing
---------------------------- ----------------------------
......
...@@ -15,7 +15,8 @@ end ...@@ -15,7 +15,8 @@ end
htmlproofer_config = { htmlproofer_config = {
:disable_external => true, :disable_external => true,
:check_html => true, :check_html => true,
:parallel => { :in_processes => 1 } :parallel => { :in_processes => 1 },
:file_ignore => [/README.html/]
} }
desc "Build the site and test output for dead links, invalid html etc." desc "Build the site and test output for dead links, invalid html etc."
...@@ -35,7 +36,7 @@ task :serve do ...@@ -35,7 +36,7 @@ task :serve do
sh "bundle exec jekyll serve" sh "bundle exec jekyll serve"
end end
desc "Deploy the site using rsync" desc "Deploy the website to the webserver"
task :deploy => :build do task :deploy do
sh "umask 0002 && rsync --chmod=Dg+s,ug+rwX,o+rX --chown=:rr -igrp --delete _site/ /vol/rr/www" sh ".deploy.sh"
end end
title: Program Specification and Verification Group title: Verified Software
subtitle: <a href="http://www.doc.ic.ac.uk">Department of Computing</a>, <a href="http://www.imperial.ac.uk/">Imperial College London</a> subtitle: <a href="http://www.doc.ic.ac.uk">Department of Computing</a>, <a href="http://www.imperial.ac.uk/">Imperial College London</a>
copyright: Imperial College London copyright: Imperial College London
baseurl: "" baseurl: ""
url: "https://psvg.doc.ic.ac.uk" url: "https://vtss.doc.ic.ac.uk"
markdown: kramdown markdown: kramdown
encoding: utf-8
timezone: Europe/London
include: include:
- .htaccess - .htaccess
exclude: exclude:
...@@ -14,6 +17,7 @@ exclude: ...@@ -14,6 +17,7 @@ exclude:
- Rakefile - Rakefile
- .gitlab-ci.yml - .gitlab-ci.yml
- vendor - vendor
- publications/README.md
collections: collections:
people: people:
......
...@@ -26,8 +26,8 @@ fontawesome: ...@@ -26,8 +26,8 @@ fontawesome:
integrity: "sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+" integrity: "sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+"
mathjax: mathjax:
uri: "http://cdn.mathjax.org/mathjax/" uri: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/"
version: "latest" version: "2.7.5"
js: js:
path: "/MathJax.js?config=TeX-AMS-MML_HTMLorMML" path: "/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
async: true async: true
<div class="people panel">
{% assign grouped_people = include.people | group_by: 'position' | sort: 'name' %}
{% for group in grouped_people %}
{% assign position = group.name %}
{% assign id = group.name | replace:' ','-' %}
<div class="panel-heading">
<h6 class="panel-title">
<a data-toggle="collapse" href="#{{id}}" style="color:black">{{position}}s ↯</a>
</h6>
</div>
<div id="{{id}}" class="panel-collapse collapse">
{% for person in group.items %}
<div class="row">
<div class="col-sm-1" >
<a href="{{ person.url }}" >{% include person-photo-small.html %}</a>
</div>
<div class="col-sm-11">
<a href="{{ person.url }}" class="h6" style="color:black;font-weight:bold;">{{ person.firstname }} {{ person.lastname }}</a>
{{ person.content | remove: '<p>' | remove: '</p>' }}
</div>
</div>
<br/>
{% endfor %}
</div>
{% endfor %}
</div>
<footer class="site-footer"> <footer class="site-footer">
<p>&copy; {{ site.time | date: "%Y" }} {{ site.copyright }}</p> <p>&copy; {{ site.time | date: "%Y" }} {{ site.copyright }}<br />
<a href="https://www.imperial.ac.uk/about-the-site/privacy/">Privacy Notice</a> - <a href="{{ '/accessibility/' | relative_url }}">Accessibility</a></p>
</footer> </footer>
...@@ -6,7 +6,7 @@ layout: default ...@@ -6,7 +6,7 @@ layout: default
{{ content }} {{ content }}
</div> </div>
{% assign research_pages = site.pages | where_exp: 'page', 'page.url contains "/research/"'%} {% assign research_pages = site.pages | where_exp: 'page', 'page.url contains "/research/"'%}
{% for item in research_pages reversed %} {% for item in research_pages %}
<a class="btn btn-primary btn-lg" href="{{ item.url }}">{{ item.title }}</a> <a class="btn btn-primary btn-lg" href="{{ item.url }}">{{ item.title }}</a>
{% endfor %} {% endfor %}
</div> </div>
......
...@@ -13,7 +13,8 @@ menu: false ...@@ -13,7 +13,8 @@ menu: false
</header> </header>
{% comment %} Test that we have main content to show {% endcomment %} {% comment %} Test that we have main content to show {% endcomment %}
{% capture bibliography %}{% bibliography -q @*[author ~= {{ page.lastname }}] %}{% endcapture %} {% if page.search_lastname %}{% assign search_lastname = page.search_lastname %}{% else %}{% assign search_lastname = page.lastname %}{% endif %}
{% capture bibliography %}{% bibliography -q @*[author ~= {{ search_lastname }}] %}{% endcapture %}
{% assign test_bib = bibliography | strip_html | strip_newlines %} {% assign test_bib = bibliography | strip_html | strip_newlines %}
{% assign test = test_bib | append: content | strip_html | strip_newlines %} {% assign test = test_bib | append: content | strip_html | strip_newlines %}
{% if test == "" %}{% assign card-col-class = " col-md-offset-4" %}{% endif %} {% if test == "" %}{% assign card-col-class = " col-md-offset-4" %}{% endif %}
......
---
firstname: Sacha
lastname: Ayoun
position: PhD Student
webpage: https://www.doc.ic.ac.uk/~sja3417/
email: s.ayoun17@imperial.ac.uk
github: https://github.com/Giltho/
alumnus: false
projects:
- gillian
- sl
---
Sacha Ayoun is a PhD student at the Department of Computing at Imperial, under
the supervision of Professor Philippa Gardner. He is currently working
on [Gillian](https://gillianplatform.github.io), a parametric symbolic execution
tool for symbolic testing, verification and automatic compositional testing.
As an undergraduate, Sacha worked at the [French Alternative and Atomic Energy Commission
(CEA)](http://www.cea.fr/english) as a researcher-engineer intern in 2017. His goal was
to improve the Frame-C abstract interpreter to better handle file descriptors.
In 2018 he completed his Supelec Engineer Diploma at [CentraleSupelec](http://www.centralesupelec.fr/)
as well as his MSc in Advanced Computing at Imperial.
---
firstname: Martin
lastname: Bodin
position: Researcher
webpage: https://mbodin.github.io/index.html?lang=en&pedanticJS=no#en
email: mbodin@ic.ac.uk
github:
alumnus: true
projects:
- web
---
Martin joined the group as a Research Associate in 2018. His work focused on a formalism called [skeletons](http://skeletons.inria.fr) to represent the semantics of real-world programming languages (JavaScript, R, etc.) He also was part of the team working on the [formalisation of WebAssembly/Wasm in Coq](https://github.com/Imperial-Wasm/wasm-coq-public). In 2020 Martin was appointed CRCN (chargé de recherche de classe normale) in the [Sound Programming of Adaptive Dependable Embedded Systems (Spades)](https://team.inria.fr/spades/) group at [Inria Grenoble-Rhône-Alpes Research Centre](https://www.inria.fr/en/centre-inria-grenoble-rhone-alpes), France.
\ No newline at end of file
--- ---
firstname: Andrea firstname: Andrea
lastname: Cerone lastname: Cerone
position: Research Associate position: Researcher
webpage: https://www.doc.ic.ac.uk/~acerone/
email: a.cerone@imperial.ac.uk
github: acerone85 github: acerone85
alumnus: true
projects: projects:
- concurrency - concurrency
- moc - moc
--- ---
Andrea joined the group as a Research Associate in 2016. He left Imperial College in 2019,
to move to industry. He is still an active researcher, continuing his work on the mathematical foundations
of geo-replicated and distributed systems, with a particular emphasis to databases,
and its applications for overcoming practical challenges in such systems.
His latest publication is [Data Consistency in Transactional Storage Systems:
A Centralised Semantics](https://2020.ecoop.org/details/ecoop-2020-papers/21/Data-Consistency-in-Transactional-Storage-Systems-A-Centralised-Semantics)
at [Ecoop 2020](https://2020.ecoop.org/)
--- ---
firstname: Emanuele firstname: Emanuele
lastname: D'Osualdo lastname: D'Osualdo
position: Research Associate position: Researcher
webpage: http://www.emanueledosualdo.com/ webpage: http://www.emanueledosualdo.com/
email: e.dosualdo@imperial.ac.uk email: e.dosualdo@imperial.ac.uk
github: bordaigorl github: bordaigorl
alumnus: true
projects: projects:
- concurrency - concurrency
redirect_from: /people/dosualdo.html
--- ---
Emanuele joined the group as a Marie-Curie Fellow in 2018 with his project [“Verification through Security and Progress Abstractions” (VeSPA)](https://www.emanueledosualdo.com/blog/2018/announce-marie-curie-fellowship.html). In 2020 he moved to the [Max Planck Institute for Software Systems (MPI-SWS)](https://www.mpi-sws.org/research-areas/programming-languages-and-verification/), Germany, to work on the verification of concurrent programs with the [IRIS program logic](https://iris-project.org/) project.
\ No newline at end of file