From ec4d8f97af14fe25b7264a7b2f4275feb02a727d Mon Sep 17 00:00:00 2001 From: Amit Aryeh Levy Date: Sat, 15 Sep 2018 18:02:04 -0400 Subject: [PATCH] Initial commit Including some example data from the current website --- .gitignore | 3 ++ 404.md | 9 ++++++ Gemfile | 30 ++++++++++++++++++ Gemfile.lock | 74 +++++++++++++++++++++++++++++++++++++++++++ _config.yml | 43 +++++++++++++++++++++++++ _data/people.yml | 54 +++++++++++++++++++++++++++++++ _data/projects.yml | 35 ++++++++++++++++++++ _layouts/default.html | 33 +++++++++++++++++++ _layouts/page.html | 8 +++++ _layouts/project.html | 27 ++++++++++++++++ assets/css/main.scss | 5 +++ home.md | 10 ++++++ people.md | 27 ++++++++++++++++ projects.md | 21 ++++++++++++ projects/passe.md | 30 ++++++++++++++++++ projects/replex.md | 15 +++++++++ publications.md | 31 ++++++++++++++++++ shell.nix | 8 +++++ 18 files changed, 463 insertions(+) create mode 100644 .gitignore create mode 100644 404.md create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 _config.yml create mode 100644 _data/people.yml create mode 100644 _data/projects.yml create mode 100644 _layouts/default.html create mode 100644 _layouts/page.html create mode 100644 _layouts/project.html create mode 100644 assets/css/main.scss create mode 100644 home.md create mode 100644 people.md create mode 100644 projects.md create mode 100644 projects/passe.md create mode 100644 projects/replex.md create mode 100644 publications.md create mode 100644 shell.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..45c1505 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +_site +.sass-cache +.jekyll-metadata diff --git a/404.md b/404.md new file mode 100644 index 0000000..8cb4c24 --- /dev/null +++ b/404.md @@ -0,0 +1,9 @@ +--- +layout: default +--- + +# 404 + +**Page not found :(** + +The requested page could not be found. diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..6d3120f --- /dev/null +++ b/Gemfile @@ -0,0 +1,30 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "~> 3.7.3" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0" if Gem.win_platform? + diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..4a957b2 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,74 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + concurrent-ruby (1.0.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + ffi (1.9.25) + forwardable-extended (2.6.0) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.4) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-watch (2.0.0) + listen (~> 3.0) + kramdown (1.17.0) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + minima (2.5.0) + jekyll (~> 3.5) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + pathutil (0.16.1) + forwardable-extended (~> 2.6) + public_suffix (3.0.3) + rb-fsevent (0.10.3) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (3.2.1) + ruby_dep (1.5.0) + safe_yaml (1.0.4) + sass (3.5.7) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (~> 3.7.3) + jekyll-feed (~> 0.6) + minima (~> 2.0) + tzinfo-data + +BUNDLED WITH + 1.16.1 diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..76aad02 --- /dev/null +++ b/_config.yml @@ -0,0 +1,43 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: Princeton SNS Group +subtitle: "{Scalable, Secure, Self-Organizing, Software-Defined, ...} Network Systems" +description: >- # this means to ignore newlines until "baseurl:" + {Scalable, Secure, Self-Organizing, Software-Defined, ...} Network Systems +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +twitter_username: PrincetonSNS +github_username: princeton-sns + +sass: + style: compressed + +# Build settings +markdown: kramdown +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +# exclude: +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_data/people.yml b/_data/people.yml new file mode 100644 index 0000000..cd61efc --- /dev/null +++ b/_data/people.yml @@ -0,0 +1,54 @@ + - name: Mike Freedman + nick: mfreed + type: leader + active: true + url: http://www.cs.princeton.edu/~mfreed/ + picture: http://sns.cs.princeton.edu/wp-content/uploads/2011/06/Mike-Switz-Alps-e1307212234323.jpg + bio: >- + is a Professor in Princeton’s Computer Science Department, where he + has been since 2007. Prior to that, he received a Ph.D. from NYU’s + Courant Insitute, during which he spent two years at Stanford + University, and S.B. and M.Eng. degrees from MIT. Mike’s research + interests are in distributed systems, security, and networking, + broadly defined. He used to enjoy climbing, hiking, and + mountaineering in his spare time, although this little thing called + work keeps getting in the way lately. + - name: Wyatt Lloyd + nick: wlloyd + type: leader + active: true + url: http://www.cs.princeton.edu/~wlloyd/ + picture: http://sns.cs.princeton.edu/wp-content/uploads/2018/02/wyatts_head.png + bio: >- + is an Assistant Professor of Computer Science at Princeton + University. His research interests include the distributed systems + and networking problems that underlie the architecture of + large-scale Web sites, cloud computing, and big data. He received + his Ph.D. from Princeton University in 2013, spend the next year as + a Postdoctoral Researcher at Facebook, and spent 3 years as an + Assistant Professor of Computer Science at the University of + Southern California before returning to Princeton. + - name: Aaron Blankenstein + nick: ablankst + type: phd + url: http://www.princeton.edu/~ablankst/ + picture: http://sns.cs.princeton.edu/wp-content/uploads/2009/03/BLANKS-mug.jpg + bio: >- + is a sixth-year Ph.D. student. Previously, he + received an M.Eng. and B.S. degree from MIT, where he worked with + Barbara Liskov on information-flow control. He is interested in + security and distributed systems, and has worked on untrusted cloud + services (Frientegrity and CONIKS) and least privilege web services + (Passe). He is currently investigating cost-aware caching + architectures for multi-tiered datacenter services. + - name: Amy Tai + nick: amytai + type: phd + active: true + url: http://www.cs.princeton.edu/~amytai/ + picture: http://sns.cs.princeton.edu/wp-content/uploads/2013/08/amytaisns.jpg + bio: >- + is a fourth-year PhD student. She graduated from Harvard + University in 2013 with a joint degree in computer science and + mathematics. She is interested in the reliability and consistency + models of scalable distributed systems and databases. diff --git a/_data/projects.yml b/_data/projects.yml new file mode 100644 index 0000000..37d78e9 --- /dev/null +++ b/_data/projects.yml @@ -0,0 +1,35 @@ +- title: "Replex" + id: replex + active: true + brief: Unifying replication and indexing in distributed storage + opensource: https://github.com/CorfuDB/CorfuDB + people: + - amytai + - mfreed + publications: + - title: "Replex: A Scalable, Highly Available Multi-Index Data Store" + people: + - Amy Tai + - Michael Wei + - Michael J. Freedman + - Ittai Abraham + - Dahlia Malkhi + venue: USENIX Annual Technical Conference 2016 (ATC ’16) Denver, Colorado, June 2016 + pdf: http://sns.cs.princeton.edu/wp-content/uploads/2016/10/atc2016.pdf + year: 2016 + award: + - Best Paper Award +- title: Passe + id: passe + brief: "Automating Application Security for Cloud Services" + publications: + - title: Automating Isolation and Least Privilege in Web Services. + people: + - Aaron Blankenstein + - Michael J. Freedman + venue: In Proc. IEEE Security and Privacy (SP ’14), San Jose, CA, May 2014. + pdf: http://sns.cs.princeton.edu/docs/passe-sp14-final.pdf + year: 2014 + people: + - mfreed + - ablankst diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..097f2d4 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,33 @@ + + + + + + + + {%- feed_meta -%} + {%- if jekyll.environment == 'production' and site.google_analytics -%} + {%- include google-analytics.html -%} + {%- endif -%} + {%- if page.title == "Home" -%} + {{ site.title }} + {%- else -%} + {{ page.title }} | {{ site.title }} + {%- endif -%} + + +
+

{{ site.title }}

+

{{ site.subtitle }}

+ +
+{{ content }} + + diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..a977d33 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,8 @@ +--- +layout: default +--- + +
+

{{ page.title | escape }}

+ {{ content }} +
diff --git a/_layouts/project.html b/_layouts/project.html new file mode 100644 index 0000000..d074862 --- /dev/null +++ b/_layouts/project.html @@ -0,0 +1,27 @@ +--- +layout: default +--- +{%- assign project = site.data.projects | where: "id", page.project_id | first -%} +
+

{{ page.title | escape }}

+ {{ content }} +

Publications

+
    + {%- for publication in project.publications -%} +
  1. +

    {{ publication.title }}

    +

    {{ publication.people | array_to_sentence_string }}. {{ publication.venue }}

    + {%- if publication.pdf -%} +

    Paper: PDF

    + {%- endif -%} +
  2. + {% endfor %} +
+

People

+ +
diff --git a/assets/css/main.scss b/assets/css/main.scss new file mode 100644 index 0000000..92ee245 --- /dev/null +++ b/assets/css/main.scss @@ -0,0 +1,5 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +@charset "utf-8"; diff --git a/home.md b/home.md new file mode 100644 index 0000000..554788a --- /dev/null +++ b/home.md @@ -0,0 +1,10 @@ +--- +layout: page +title: Home +permalink: / +--- + +This is the home page of the Princeton S\* Network Systems (SNS) group within +Princeton’s [Computer Science Department](http://www.cs.princeton.edu/). The +undefined S\* — Scalable, Secure, Self-Organizing, Self-Managing, +Service-centric, Storage-based — characterizes the broad scope of our research. diff --git a/people.md b/people.md new file mode 100644 index 0000000..bc1a8f1 --- /dev/null +++ b/people.md @@ -0,0 +1,27 @@ +--- +layout: page +title: People +permalink: /people +--- + +The SNS group is comprised of the following people. Prospective graduate +students should apply to Princeton’s PhD program; see the department’s +[admissions website](http://www.cs.princeton.edu/academics/gradpgm/) or [this +page](/applicants-interested-in-sns-group) for more information about joining +the SNS group. Princeton undergraduates are encouraged to contact us for +research opportunities. + +## Group Leaders + +{%- assign leaders = site.data.people | where: "type", "leader" -%} +{%- assign phds = site.data.people | where: "type", "phd" -%} + +{% for person in leaders %} +![{{person.name}}]({{person.picture}}) [{{person.name}}]({{person.url}}) {{person.bio}} +{% endfor %} + +## PhD Students + +{% for person in phds %} +![{{person.name}}]({{person.picture}}) [{{person.name}}]({{person.url}}) {{person.bio}} +{% endfor %} diff --git a/projects.md b/projects.md new file mode 100644 index 0000000..edad085 --- /dev/null +++ b/projects.md @@ -0,0 +1,21 @@ +--- +layout: page +title: Projects +permalink: /projects +--- + +{%- assign active = site.data.projects | where: "active", true -%} +{%- assign previous = site.data.projects | where_exp: "item", "item.active != true" -%} + +## Active Projects + +{% for project in active %} +* [{{project.title}}](/projects/{{project.id}}) +{% endfor %} + +## Previous Projects + +{% for project in previous %} +* [{{project.title}}](/projects/{{project.id}}) +{% endfor %} + diff --git a/projects/passe.md b/projects/passe.md new file mode 100644 index 0000000..c873d55 --- /dev/null +++ b/projects/passe.md @@ -0,0 +1,30 @@ +--- +layout: project +title: "Automating Application Security for Cloud Services" +project_id: passe +--- + +Network services play a central role in users’ online experiences. In doing so, +these services often gather significant amounts of valuable, user-specific, and +sometimes privacy-sensitive data. Unfortunately, in many client-facing +applications, a vulnerability in any part may compromise the entire +application. In order to address this problem, we have designed and implemented +Passe, a system that protects a data store from unintended data leaks and +unauthorized writes even in the face of application compromise. + +Passe automatically splits (previously shared-memory-space) applications into +sandboxed processes. Passe limits communication between those components and +the types of accesses each component can make to shared storage, such as a +backend database. In order to limit components to their least privilege, Passe +uses dynamic analysis on developer-supplied end-to-end test cases to learn data +and control-flow relationships between database queries and previous query +results, and it then strongly enforces those relationships. + +Our prototype of Passe acts as a drop-in replacement for the Django web +framework. By running eleven unmodified, off-the-shelf applications in Passe, +we demonstrate its ability to provide strong security guarantees — Passe +correctly enforced 96% of the applications’ policies — with little additional +overhead. Additionally, in the web-specific setting of the prototype, we also +mitigate the cross-component effects of cross-site scripting (XSS) attacks by +combining browser HTML5 sandboxing techniques with our automatic component +separation. diff --git a/projects/replex.md b/projects/replex.md new file mode 100644 index 0000000..38f260b --- /dev/null +++ b/projects/replex.md @@ -0,0 +1,15 @@ +--- +layout: project +title: "Replex" +project_id: replex +--- + +Replex is a novel concept that can be applied to any distributed database. We +introduce the data replication unit that we call a replex, which combines +replication and indexing. We then fundamentally change the replication paradigm +by replicating data to replexes, as opposed to exact data replicas. In doing +so, distributed databases can greatly reduce the overheads of supporting +secondary indexes, which are crucial to supporting rich functionality. + +An [open source implementation](https://github.com/CorfuDB/CorfuDB) of Replex can be found integrated into the Corfu +database. diff --git a/publications.md b/publications.md new file mode 100644 index 0000000..2083a9c --- /dev/null +++ b/publications.md @@ -0,0 +1,31 @@ +--- +layout: page +title: Publications +permalink: /publications +--- + +{% comment %}Collect all publications into a single array from the projects database{% endcomment %} +{%- assign pubs = site.data.projects | map: "publications" -%} +{%- assign publications = nil -%} +{%- for ps in pubs -%} +{%- assign publications = publications | concat: ps -%} +{%- endfor -%} + + +{%- assign publications = publications | sort: "year" | reverse -%} +{%- assign year = publications | map: "year" | first -%} + +## {{year}} + +{% for publication in publications %} +{%- if publication.year != year -%} +{%- assign year = publication.year -%} +## {{year}} +{% endif %} + + 1. {{ publication.title }} + {{ publication.people | array_to_sentence_string }} + {{ publication.venue }} + [Paper]({{ publication.pdf }}) + +{% endfor %} diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..d1b97e1 --- /dev/null +++ b/shell.nix @@ -0,0 +1,8 @@ + +{ pkgs ? import {} }: + +with pkgs; +stdenv.mkDerivation { + name = "sns-site"; + buildInputs = [ jekyll ruby ]; +}