Initial version of site almost ready.
This commit is contained in:
		
							parent
							
								
									f4ac1192f4
								
							
						
					
					
						commit
						cc7021ac4e
					
				@ -11,7 +11,7 @@
 | 
			
		||||
-- Modified    :  JH: Use just the bibtex parser
 | 
			
		||||
-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
module Text.CSL.Input.Bibtex
 | 
			
		||||
module Bibtex
 | 
			
		||||
    (
 | 
			
		||||
      bibEntries
 | 
			
		||||
    , resolveCrossRefs
 | 
			
		||||
@ -17,7 +17,7 @@ import           Control.Applicative
 | 
			
		||||
import           Data.Binary              (Binary (..))
 | 
			
		||||
import           Data.Typeable            (Typeable)
 | 
			
		||||
import           Hakyll
 | 
			
		||||
import qualified Text.CSL.Input.Bibtex    as B
 | 
			
		||||
import qualified Bibtex                   as B
 | 
			
		||||
import qualified Text.Pandoc              as Pandoc
 | 
			
		||||
import qualified Text.Parsec              as Parsec
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -397,7 +397,8 @@
 | 
			
		||||
@STRING{vmcai13  = vmcai # ", Rome, Italy" }
 | 
			
		||||
 | 
			
		||||
% ----
 | 
			
		||||
@STRING{csf      = "{IEEE} {C}omputer {S}ecurity {F}oundations {S}ymposium" }
 | 
			
		||||
@STRING{csf      = "{IEEE} {C}omputer {S}ecurity {F}oundations {S}ymposium
 | 
			
		||||
                   ({CSF})" }
 | 
			
		||||
@STRING{csf08    = csf # ", Pittsburgh, Pennsylvania" }
 | 
			
		||||
@STRING{csf13    = csf # ", New Orleans, Louisiana" }
 | 
			
		||||
@STRING{csf14    = csf # ", Vienna, Austria" }
 | 
			
		||||
 | 
			
		||||
@ -471,7 +471,7 @@
 | 
			
		||||
  url       = {http://arxiv.org/abs/0803.0032}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@inproceedings{HGH+13,
 | 
			
		||||
@inproceedings{HGH+14,
 | 
			
		||||
  author    = {Justin Hsu and
 | 
			
		||||
               Marco Gaboardi and
 | 
			
		||||
               Andreas Haeberlen and
 | 
			
		||||
@ -1518,7 +1518,6 @@ year = {2014}
 | 
			
		||||
  year      = {2014},
 | 
			
		||||
  url       = {http://arxiv.org/abs/1402.1526},
 | 
			
		||||
  jh        = yes,
 | 
			
		||||
  slides    = yes,
 | 
			
		||||
  poster    = yes,
 | 
			
		||||
  eprint    = yes
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								content/about.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								content/about.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
I am a graduate student in the [Department of Computer
 | 
			
		||||
Science](http://cis.upenn.edu) at the [University of
 | 
			
		||||
Pennsylvania](http://upenn.edu).
 | 
			
		||||
There, I am associated with the [Theory Group](http://theory.cis.upenn.edu), the
 | 
			
		||||
[PL Club], and the [Privacy Group](http://privacy.cis.upenn.edu).
 | 
			
		||||
I am very fortunate to be co-advised by [Benjamin
 | 
			
		||||
Pierce](http://cis.upenn.edu/~bcpierce) and [Aaron
 | 
			
		||||
Roth](http://cis.upenn.edu/~aaroth). 
 | 
			
		||||
 | 
			
		||||
## Research Interests ##
 | 
			
		||||
I spend my time thinking about questions in **verification**, **programming
 | 
			
		||||
languages**, and **algorithms**. My work has mostly centered on [differential
 | 
			
		||||
privacy](http://en.wikipedia.org/wiki/Differential_privacy), a rigorous
 | 
			
		||||
definition of privacy that is currently under extensive study.
 | 
			
		||||
 | 
			
		||||
From the verification side, I am interested in using formal methods---such as
 | 
			
		||||
[type systems](http://en.wikipedia.org/wiki/Type_system) and [program
 | 
			
		||||
logics](http://en.wikipedia.org/wiki/Hoare_logic))---to verify that programs are
 | 
			
		||||
differentially private. From the algorithms side, I am interested in
 | 
			
		||||
applications of differential privacy to optimization, machine learning, and
 | 
			
		||||
mechanism design.
 | 
			
		||||
							
								
								
									
										7
									
								
								content/biblio.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								content/biblio.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
## Drafts ##
 | 
			
		||||
 | 
			
		||||
\$draft\$
 | 
			
		||||
 | 
			
		||||
## Conference Publications ##
 | 
			
		||||
 | 
			
		||||
\$confs\$
 | 
			
		||||
@ -1,3 +1,3 @@
 | 
			
		||||
# Contacts # {#contacts}
 | 
			
		||||
* Office: GRW 561
 | 
			
		||||
* Email: justin@justinh.su
 | 
			
		||||
### Contacts ###
 | 
			
		||||
Office: GRW 561  
 | 
			
		||||
Email: email@justinh.su
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								content/footer.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								content/footer.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
[Source](http://git.justinh.su/justin/justin-site/tree/master/).
 | 
			
		||||
Powered by
 | 
			
		||||
[Hakyll](http://jaspervdj.be/hakyll/),
 | 
			
		||||
[Pandoc](http://johnmacfarlane.net/pandoc/),
 | 
			
		||||
and [bibtex2html](https://www.lri.fr/~filliatr/bibtex2html/).
 | 
			
		||||
© Justin Hsu, 2015.
 | 
			
		||||
							
								
								
									
										4
									
								
								content/news.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								content/news.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
+ **11/2014** Our paper **Jointly private convex programming** has been uploaded to
 | 
			
		||||
  `arxiv`.
 | 
			
		||||
+ **9/2014** Our paper, **Higher-order refinement types for mechanism design and
 | 
			
		||||
  differential privacy**, has been accepted to POPL 2015!
 | 
			
		||||
							
								
								
									
										236
									
								
								css/style.scss
									
									
									
									
									
								
							
							
						
						
									
										236
									
								
								css/style.scss
									
									
									
									
									
								
							@ -1,99 +1,213 @@
 | 
			
		||||
@import "compass/css3";
 | 
			
		||||
@import "compass/css3/border-radius";
 | 
			
		||||
@import "compass/css3/box-shadow";
 | 
			
		||||
@import "compass/typography/links/link-colors";
 | 
			
		||||
@import "compass/typography/links/unstyled-link";
 | 
			
		||||
@import "compass/typography/links/hover-link";
 | 
			
		||||
@import "compass/typography/vertical_rhythm";
 | 
			
		||||
 | 
			
		||||
$base-font-size: 16px;
 | 
			
		||||
$base-line-height: 24px;
 | 
			
		||||
$break-point: 45em;
 | 
			
		||||
$bg-color: #EEEEEE;
 | 
			
		||||
$main-color: #2196F3;
 | 
			
		||||
$acc-color: #C51162;
 | 
			
		||||
 | 
			
		||||
@include establish-baseline;
 | 
			
		||||
 | 
			
		||||
.container {
 | 
			
		||||
@mixin flexed {
 | 
			
		||||
  @include display-flex;
 | 
			
		||||
  @include flex-direction(column);  
 | 
			
		||||
  @include flex-wrap(nowrap);
 | 
			
		||||
  @include justify-content(flex-start);
 | 
			
		||||
  @include align-items(center);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  background: $bg-color;
 | 
			
		||||
  a {
 | 
			
		||||
    @include hover-link;
 | 
			
		||||
    @include link-colors($acc-color);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Default table style sets the wrong font weight
 | 
			
		||||
// if we set this in body.
 | 
			
		||||
* {
 | 
			
		||||
  font-family: 'roboto', sans-serif;
 | 
			
		||||
  font-weight: 300;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.container {
 | 
			
		||||
  @include flexed;
 | 
			
		||||
  @include flex-direction(column);  
 | 
			
		||||
  @include justify-content(flex-start);
 | 
			
		||||
 | 
			
		||||
  h1 {
 | 
			
		||||
    @include adjust-font-size-to(3em, 1/2);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  h2 {
 | 
			
		||||
    @include adjust-font-size-to(2em, 1/2);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  h3 {
 | 
			
		||||
    @include adjust-font-size-to(1.5em, 1/2);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  p {
 | 
			
		||||
    @include adjust-font-size-to(1em);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.container > * {
 | 
			
		||||
  width: 50%;
 | 
			
		||||
  padding: rhythm(0.5);
 | 
			
		||||
  width: $break-point;
 | 
			
		||||
  margin: rhythm(0.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.container h1 {
 | 
			
		||||
  @include adjust-font-size-to(3em);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.container h2 {
 | 
			
		||||
  @include adjust-font-size-to(2em);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.container p {
 | 
			
		||||
  @include adjust-font-size-to(1em);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header {
 | 
			
		||||
  background: purple;
 | 
			
		||||
  @include border-radius(5px, 5px);
 | 
			
		||||
  // @include border-radius(10px 25px, 15px 30px);
 | 
			
		||||
  // @include border-radius(1px 3px 5px 7px, 2px 4px 6px 8px);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header h1 {
 | 
			
		||||
  @include adjust-font-size-to(5em);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.topbox {
 | 
			
		||||
  @include display-flex;
 | 
			
		||||
  @include flex-direction(row);  
 | 
			
		||||
  @include flex-wrap(nowrap);
 | 
			
		||||
  @include justify-content(space-around);
 | 
			
		||||
  @include align-items(stretch);
 | 
			
		||||
  background: blue;
 | 
			
		||||
 | 
			
		||||
  max-height: 30em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.topbox > * {
 | 
			
		||||
  padding: rhythm(0.5);
 | 
			
		||||
  margin: rhythm(0.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media all and (max-width: 700px) {
 | 
			
		||||
  .container > * {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Top banner.
 | 
			
		||||
.header {
 | 
			
		||||
  @include single-box-shadow(0, 10px, 5px, -10px);
 | 
			
		||||
  background: $main-color;
 | 
			
		||||
 | 
			
		||||
  h1 {
 | 
			
		||||
    @include adjust-font-size-to(5em,1/2);
 | 
			
		||||
    color: white;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// The top box. About, picture, and contact.
 | 
			
		||||
.topbox {
 | 
			
		||||
  @include flexed;
 | 
			
		||||
  @include flex-direction(row);
 | 
			
		||||
  @include justify-content(space-around);
 | 
			
		||||
  background: white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.topbar > * {
 | 
			
		||||
  max-width: 100%;
 | 
			
		||||
  h1 h2 {
 | 
			
		||||
    color: $main-color;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Bar containing picture and contact info.
 | 
			
		||||
.bio-bar {
 | 
			
		||||
  @include flexed;
 | 
			
		||||
  @include flex-direction(column);
 | 
			
		||||
  @include justify-content(space-around);
 | 
			
		||||
  @include flex(1 1);
 | 
			
		||||
  @include order(2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media all and (max-width: $break-point) {
 | 
			
		||||
  .topbox {
 | 
			
		||||
    @include flex-direction(column);  
 | 
			
		||||
    background: yellow;
 | 
			
		||||
    @include flex-direction(column);
 | 
			
		||||
    @include align-items(stretch);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .topbox > * {
 | 
			
		||||
    padding: rhythm(0.5);
 | 
			
		||||
    margin: rhythm(0.5);
 | 
			
		||||
  .bio-bar {
 | 
			
		||||
    @include flex-direction(row);  
 | 
			
		||||
    @include order(1);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.picture {
 | 
			
		||||
  @include flex(1 1 10em);
 | 
			
		||||
  background: green;
 | 
			
		||||
  @include order(2);
 | 
			
		||||
  @include flex(1 1);
 | 
			
		||||
  padding: rhythm(0.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.contact {
 | 
			
		||||
  @include flex(1 1 10em);
 | 
			
		||||
  background: red;
 | 
			
		||||
  @include order(3);
 | 
			
		||||
  @include flex(1 1);
 | 
			
		||||
  padding: rhythm(0.5);
 | 
			
		||||
 | 
			
		||||
  h3 {
 | 
			
		||||
    color: $main-color;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media all and (max-width: 700px) {
 | 
			
		||||
  .picture {
 | 
			
		||||
    @include order(3);
 | 
			
		||||
  }
 | 
			
		||||
// About cell ~ 2x sidebar in normal mode
 | 
			
		||||
.about {
 | 
			
		||||
  @include flex(2 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  .contact {
 | 
			
		||||
@media all and (max-width: $break-point) {
 | 
			
		||||
  .about {
 | 
			
		||||
    @include order(2);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#card {
 | 
			
		||||
  background: blue;
 | 
			
		||||
// Two section headers, different bg colors.
 | 
			
		||||
#mini-header {
 | 
			
		||||
  background: $main-color;
 | 
			
		||||
  color: white;
 | 
			
		||||
  @include adjust-font-size-to(3em,1/2);
 | 
			
		||||
  padding: rhythm(0.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#mini-header-alt {
 | 
			
		||||
  background: $acc-color;
 | 
			
		||||
  color: white;
 | 
			
		||||
  @include adjust-font-size-to(3em,1/2);
 | 
			
		||||
  padding: rhythm(0.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Main unit for sections.
 | 
			
		||||
#card {
 | 
			
		||||
  padding: rhythm(0.5);
 | 
			
		||||
  @include single-box-shadow(0, 11px, 5px, -10px);
 | 
			
		||||
  background: white;
 | 
			
		||||
  h1 {
 | 
			
		||||
    background: $main-color;
 | 
			
		||||
    color: white;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  h2 {
 | 
			
		||||
    background: white;
 | 
			
		||||
    color: $main-color;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  b, strong {
 | 
			
		||||
    font-family: 'Roboto', sans-serif;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  em {
 | 
			
		||||
    font-family: 'Roboto', sans-serif;
 | 
			
		||||
    font-weight: 300;
 | 
			
		||||
    font-style: italic;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  code {
 | 
			
		||||
    font-family: 'Inconsolata', monospace;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#bibcell {
 | 
			
		||||
  vertical-align: top;
 | 
			
		||||
  padding: rhythm(1/2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Latex parsed as {H} turns into spans, make these bold.
 | 
			
		||||
#titlecell span {
 | 
			
		||||
  font-family: 'Roboto', sans-serif;
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
footer * {
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  background: $main-color;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  a {
 | 
			
		||||
    // Turn off colors. Using both colors together looks bad.
 | 
			
		||||
    @include unstyled-link;
 | 
			
		||||
    @include hover-link;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								images/haskell-logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/haskell-logo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 5.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								images/round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/round.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 67 KiB  | 
							
								
								
									
										34
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								index.html
									
									
									
									
									
								
							@ -1,11 +1,33 @@
 | 
			
		||||
<div class="topbox">
 | 
			
		||||
  <div class="picture">
 | 
			
		||||
    picture
 | 
			
		||||
<div class="topbox" id="card">
 | 
			
		||||
  <div class="bio-bar">
 | 
			
		||||
    <div class="picture">
 | 
			
		||||
      <img src="images/round.png">  
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="contact">
 | 
			
		||||
      $contacts$
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="contact">
 | 
			
		||||
    $contacts$
 | 
			
		||||
  <div class="about">
 | 
			
		||||
    <div id="mini-header">
 | 
			
		||||
      About Me
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    $about$
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
$content$
 | 
			
		||||
<div id="card">
 | 
			
		||||
  <div id="mini-header-alt">
 | 
			
		||||
    News
 | 
			
		||||
  </div>
 | 
			
		||||
  $news$
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="card">
 | 
			
		||||
  <div id="mini-header">
 | 
			
		||||
    Bibliography
 | 
			
		||||
  </div>
 | 
			
		||||
  $biblio$
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										72
									
								
								site.hs
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								site.hs
									
									
									
									
									
								
							@ -6,7 +6,24 @@ import           Hakyll
 | 
			
		||||
import           HakyllBibTex
 | 
			
		||||
import           System.Process
 | 
			
		||||
import           Text.Pandoc.Options
 | 
			
		||||
import           Text.Regex
 | 
			
		||||
 | 
			
		||||
--------------------------------------------------------------------------------
 | 
			
		||||
bibHeaders :: [(String, String, [String])]
 | 
			
		||||
bibHeaders = [ ("confs", "Conference Publications",
 | 
			
		||||
               ["-c", "$type='INPROCEEDINGS'" ] )
 | 
			
		||||
             , ("draft", "Drafts"                 ,
 | 
			
		||||
               [ "-c", "$type='UNPUBLISHED'"  ] )
 | 
			
		||||
             ]
 | 
			
		||||
 | 
			
		||||
bibSources :: [String]
 | 
			
		||||
bibSources = [ "bibs/header.bib"
 | 
			
		||||
             , "bibs/myrefs.bib"
 | 
			
		||||
             ]
 | 
			
		||||
 | 
			
		||||
contentSections :: [String]
 | 
			
		||||
contentSections = [ "contacts", "about", "news", "biblio" ]
 | 
			
		||||
--------------------------------------------------------------------------------
 | 
			
		||||
compass :: Compiler (Item String)
 | 
			
		||||
compass =
 | 
			
		||||
    getResourceString >>=
 | 
			
		||||
@ -21,23 +38,12 @@ b2bflags = [ "--expand"
 | 
			
		||||
           , "-r"
 | 
			
		||||
           ]
 | 
			
		||||
 | 
			
		||||
bibHeaders :: [(String, String, [String])]
 | 
			
		||||
bibHeaders = [ ("confs", "Conference Publications",
 | 
			
		||||
               ["-c", "$type='INPROCEEDINGS'" ] )
 | 
			
		||||
             , ("draft", "Drafts"                 ,
 | 
			
		||||
               [ "-c", "$type='UNPUBLISHED'"  ] )
 | 
			
		||||
             ]
 | 
			
		||||
 | 
			
		||||
bibSources :: [String]
 | 
			
		||||
bibSources = [ "bibs/header.bib"
 | 
			
		||||
             , "bibs/myrefs.bib"
 | 
			
		||||
             ]
 | 
			
		||||
 | 
			
		||||
bib2bib :: [String]
 | 
			
		||||
           -> Compiler (Item String)
 | 
			
		||||
bib2bib flags = (unsafeCompiler $
 | 
			
		||||
    readProcess "bib2bib" (bibSources ++ b2bflags ++ flags) "")
 | 
			
		||||
    >>= makeItem
 | 
			
		||||
        >>= makeItem
 | 
			
		||||
 | 
			
		||||
bib2bibParse :: Item String
 | 
			
		||||
                -> Compiler [Item BibEntry]
 | 
			
		||||
@ -53,6 +59,10 @@ main = hakyll $ do
 | 
			
		||||
        route   idRoute
 | 
			
		||||
        compile copyFileCompiler
 | 
			
		||||
 | 
			
		||||
    match "images/**" $ do
 | 
			
		||||
        route   idRoute
 | 
			
		||||
        compile copyFileCompiler
 | 
			
		||||
 | 
			
		||||
    match "css/*.scss" $ do
 | 
			
		||||
        route $ setExtension "css"
 | 
			
		||||
        compile $ compass
 | 
			
		||||
@ -61,14 +71,14 @@ main = hakyll $ do
 | 
			
		||||
        create [fromCapture "bibs/*.html" nick] $ do
 | 
			
		||||
            route idRoute
 | 
			
		||||
            compile $
 | 
			
		||||
                let itemCtx = mconcat
 | 
			
		||||
                let itemCtx   = mconcat
 | 
			
		||||
                        [ bibEntryContext
 | 
			
		||||
                        , functionField "doclink"
 | 
			
		||||
                          (\(i:_) _ -> return $ "files/docs/" ++ i ++ "paper.pdf")
 | 
			
		||||
                        , functionField "slidelink"
 | 
			
		||||
                          (\(i:_) _ -> return $ "files/slides/" ++ i ++ "slides.pdf")
 | 
			
		||||
                        , functionField "posterlink"
 | 
			
		||||
                          (\(i:_) _ -> return $ "files/poster/" ++ i ++ "poster.pdf")
 | 
			
		||||
                          (\(i:_) _ -> return $ "files/posters/" ++ i ++ "poster.pdf")
 | 
			
		||||
                        ]
 | 
			
		||||
                    biblioCtx = mconcat
 | 
			
		||||
                        [ field "bibtitle" (\_ -> return $ title)
 | 
			
		||||
@ -79,38 +89,40 @@ main = hakyll $ do
 | 
			
		||||
                            >>= bib2bibParse
 | 
			
		||||
                            >>= applyTemplateList bibTpl itemCtx
 | 
			
		||||
                            >>= makeItem
 | 
			
		||||
                            >>= loadAndApplyTemplate
 | 
			
		||||
                                    "templates/biblisttpl.html" biblioCtx
 | 
			
		||||
                            >>= loadAndApplyTemplate "templates/biblisttpl.html" biblioCtx
 | 
			
		||||
                            >>= relativizeUrls
 | 
			
		||||
 | 
			
		||||
    match "content/body.md" $ do
 | 
			
		||||
    match "content/biblio.md" $ do
 | 
			
		||||
        route $ setExtension "html"
 | 
			
		||||
        compile $ do
 | 
			
		||||
            let makeBibCtx (nick, _, _) =
 | 
			
		||||
                    field nick (\_ -> loadBody $ fromFilePath ("bibs/" ++ nick ++ ".html"))
 | 
			
		||||
                secDiv = defaultHakyllWriterOptions { writerSectionDivs = True }
 | 
			
		||||
                bodyCtx = mconcat $ map makeBibCtx bibHeaders in do
 | 
			
		||||
                secDiv    = defaultHakyllWriterOptions { writerSectionDivs = True }
 | 
			
		||||
                biblioCtx = mconcat $ map makeBibCtx bibHeaders in do
 | 
			
		||||
                    pandocCompilerWith defaultHakyllReaderOptions secDiv
 | 
			
		||||
                        >>= applyAsTemplate bodyCtx
 | 
			
		||||
                        >>= applyAsTemplate biblioCtx
 | 
			
		||||
                        >>= relativizeUrls
 | 
			
		||||
 | 
			
		||||
    match "content/*.md" $ do
 | 
			
		||||
        route $ setExtension "html"
 | 
			
		||||
        compile $ do
 | 
			
		||||
            pandocCompiler >>= relativizeUrls
 | 
			
		||||
            let secDiv = defaultHakyllWriterOptions { writerSectionDivs = True }
 | 
			
		||||
            pandocCompilerWith defaultHakyllReaderOptions secDiv
 | 
			
		||||
                >>= relativizeUrls
 | 
			
		||||
 | 
			
		||||
    match "index.html" $ do
 | 
			
		||||
        route idRoute
 | 
			
		||||
        compile $ do
 | 
			
		||||
            contacts <- loadBody "content/contacts.md"
 | 
			
		||||
            content <- loadBody "content/body.md"
 | 
			
		||||
            let indexContext = mconcat
 | 
			
		||||
                  [ field "contacts" $ \_ -> return contacts
 | 
			
		||||
                  , field "content"  $ \_ -> return content
 | 
			
		||||
                  ]
 | 
			
		||||
            let loadSec sec  = field sec
 | 
			
		||||
                  (\_ -> loadBody (fromFilePath $ "content/" ++ sec ++ ".md"))
 | 
			
		||||
                mainContext  = mconcat $ fmap loadSec contentSections
 | 
			
		||||
                indexContext =
 | 
			
		||||
                  field "footer" (\_ -> loadBody "content/footer.md")
 | 
			
		||||
                  `mappend`
 | 
			
		||||
                  defaultContext
 | 
			
		||||
            getResourceBody
 | 
			
		||||
              >>= applyAsTemplate indexContext
 | 
			
		||||
              >>= loadAndApplyTemplate "templates/main.html" defaultContext
 | 
			
		||||
              >>= relativizeUrls
 | 
			
		||||
                >>= applyAsTemplate mainContext
 | 
			
		||||
                >>= loadAndApplyTemplate "templates/main.html" indexContext
 | 
			
		||||
                >>= relativizeUrls
 | 
			
		||||
 | 
			
		||||
    match "templates/*" $ compile templateCompiler
 | 
			
		||||
 | 
			
		||||
@ -1,21 +1,27 @@
 | 
			
		||||
<li>
 | 
			
		||||
<!-- $identifier$ -->
 | 
			
		||||
$title$ </br>
 | 
			
		||||
$author$ </br>
 | 
			
		||||
$if(eprint)$
 | 
			
		||||
[<a href="$eprint$">Arxiv</a>]
 | 
			
		||||
$endif$
 | 
			
		||||
$if(docs)$
 | 
			
		||||
[<a href="$doclink(identifier)$">Paper</a>]
 | 
			
		||||
$endif$
 | 
			
		||||
$if(slides)$
 | 
			
		||||
[<a href="$slidelink(identifier)$">Slides</a>]
 | 
			
		||||
$endif$
 | 
			
		||||
$if(poster)$
 | 
			
		||||
[<a href="$posterlink(identifier)$">Poster</a>]
 | 
			
		||||
$endif$
 | 
			
		||||
<br>
 | 
			
		||||
$if(notes)$
 | 
			
		||||
$notes$ <br>
 | 
			
		||||
$endif$
 | 
			
		||||
</li>
 | 
			
		||||
<tr>
 | 
			
		||||
  <!-- $identifier$ -->
 | 
			
		||||
  <td id="bibcell"> <b> $year$ </b> </td>
 | 
			
		||||
  <td id="bibcell">
 | 
			
		||||
    <div id="titlecell"> <b> $title$ </b> </div>
 | 
			
		||||
    $author$. </br>
 | 
			
		||||
    $if(booktitle)$
 | 
			
		||||
      In $booktitle$.</br>
 | 
			
		||||
    $endif$
 | 
			
		||||
    $if(eprint)$
 | 
			
		||||
      [<a href="$url$">ArXiV</a>]
 | 
			
		||||
    $endif$
 | 
			
		||||
    $if(docs)$
 | 
			
		||||
      [<a href="$doclink(identifier)$">Paper</a>]
 | 
			
		||||
    $endif$
 | 
			
		||||
    $if(slides)$
 | 
			
		||||
      [<a href="$slidelink(identifier)$">Slides</a>]
 | 
			
		||||
    $endif$
 | 
			
		||||
    $if(poster)$
 | 
			
		||||
      [<a href="$posterlink(identifier)$">Poster</a>]
 | 
			
		||||
    $endif$
 | 
			
		||||
    <br>
 | 
			
		||||
    $if(notes)$
 | 
			
		||||
      $notes$ <br>
 | 
			
		||||
    $endif$
 | 
			
		||||
  </td>
 | 
			
		||||
</tr>
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,3 @@
 | 
			
		||||
<h2> $bibtitle$ </h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<table>
 | 
			
		||||
$bibitems$
 | 
			
		||||
</ul>
 | 
			
		||||
</table>
 | 
			
		||||
 | 
			
		||||
@ -1,18 +1,39 @@
 | 
			
		||||
<meta charset=utf-8>
 | 
			
		||||
<html>
 | 
			
		||||
<head>
 | 
			
		||||
<title> My Site </title>
 | 
			
		||||
<title> Justin Hsu </title>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="css/style.css">
 | 
			
		||||
<link href='http://fonts.googleapis.com/css?family=Roboto:500,300,300italic'
 | 
			
		||||
rel='stylesheet' type='text/css'>
 | 
			
		||||
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet'
 | 
			
		||||
type='text/css'>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 | 
			
		||||
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 | 
			
		||||
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 | 
			
		||||
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 | 
			
		||||
 | 
			
		||||
  ga('create', 'UA-33267683-1', 'auto');
 | 
			
		||||
  ga('send', 'pageview');
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="container">
 | 
			
		||||
<div class="container" id="flexed">
 | 
			
		||||
  <div class="header">
 | 
			
		||||
    <h1> Justin Hsu </h1>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  $body$
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<footer>
 | 
			
		||||
  <small>
 | 
			
		||||
    $footer$
 | 
			
		||||
  </small>
 | 
			
		||||
</footer>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user