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
|
-- Modified : JH: Use just the bibtex parser
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
module Text.CSL.Input.Bibtex
|
module Bibtex
|
||||||
(
|
(
|
||||||
bibEntries
|
bibEntries
|
||||||
, resolveCrossRefs
|
, resolveCrossRefs
|
|
@ -17,7 +17,7 @@ import Control.Applicative
|
||||||
import Data.Binary (Binary (..))
|
import Data.Binary (Binary (..))
|
||||||
import Data.Typeable (Typeable)
|
import Data.Typeable (Typeable)
|
||||||
import Hakyll
|
import Hakyll
|
||||||
import qualified Text.CSL.Input.Bibtex as B
|
import qualified Bibtex as B
|
||||||
import qualified Text.Pandoc as Pandoc
|
import qualified Text.Pandoc as Pandoc
|
||||||
import qualified Text.Parsec as Parsec
|
import qualified Text.Parsec as Parsec
|
||||||
|
|
||||||
|
|
|
@ -397,7 +397,8 @@
|
||||||
@STRING{vmcai13 = vmcai # ", Rome, Italy" }
|
@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{csf08 = csf # ", Pittsburgh, Pennsylvania" }
|
||||||
@STRING{csf13 = csf # ", New Orleans, Louisiana" }
|
@STRING{csf13 = csf # ", New Orleans, Louisiana" }
|
||||||
@STRING{csf14 = csf # ", Vienna, Austria" }
|
@STRING{csf14 = csf # ", Vienna, Austria" }
|
||||||
|
|
|
@ -471,7 +471,7 @@
|
||||||
url = {http://arxiv.org/abs/0803.0032}
|
url = {http://arxiv.org/abs/0803.0032}
|
||||||
}
|
}
|
||||||
|
|
||||||
@inproceedings{HGH+13,
|
@inproceedings{HGH+14,
|
||||||
author = {Justin Hsu and
|
author = {Justin Hsu and
|
||||||
Marco Gaboardi and
|
Marco Gaboardi and
|
||||||
Andreas Haeberlen and
|
Andreas Haeberlen and
|
||||||
|
@ -1518,7 +1518,6 @@ year = {2014}
|
||||||
year = {2014},
|
year = {2014},
|
||||||
url = {http://arxiv.org/abs/1402.1526},
|
url = {http://arxiv.org/abs/1402.1526},
|
||||||
jh = yes,
|
jh = yes,
|
||||||
slides = yes,
|
|
||||||
poster = yes,
|
poster = yes,
|
||||||
eprint = yes
|
eprint = yes
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
|
@ -0,0 +1,7 @@
|
||||||
|
## Drafts ##
|
||||||
|
|
||||||
|
\$draft\$
|
||||||
|
|
||||||
|
## Conference Publications ##
|
||||||
|
|
||||||
|
\$confs\$
|
|
@ -1,3 +1,3 @@
|
||||||
# Contacts # {#contacts}
|
### Contacts ###
|
||||||
* Office: GRW 561
|
Office: GRW 561
|
||||||
* Email: justin@justinh.su
|
Email: email@justinh.su
|
||||||
|
|
|
@ -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.
|
|
@ -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!
|
234
css/style.scss
234
css/style.scss
|
@ -1,99 +1,213 @@
|
||||||
@import "compass/css3";
|
@import "compass/css3";
|
||||||
@import "compass/css3/border-radius";
|
@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";
|
@import "compass/typography/vertical_rhythm";
|
||||||
|
|
||||||
$base-font-size: 16px;
|
$base-font-size: 16px;
|
||||||
$base-line-height: 24px;
|
$base-line-height: 24px;
|
||||||
|
$break-point: 45em;
|
||||||
|
$bg-color: #EEEEEE;
|
||||||
|
$main-color: #2196F3;
|
||||||
|
$acc-color: #C51162;
|
||||||
|
|
||||||
@include establish-baseline;
|
@include establish-baseline;
|
||||||
|
|
||||||
.container {
|
@mixin flexed {
|
||||||
@include display-flex;
|
@include display-flex;
|
||||||
@include flex-direction(column);
|
|
||||||
@include flex-wrap(nowrap);
|
@include flex-wrap(nowrap);
|
||||||
@include justify-content(flex-start);
|
|
||||||
@include align-items(center);
|
@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 > * {
|
.container > * {
|
||||||
width: 50%;
|
width: $break-point;
|
||||||
padding: rhythm(0.5);
|
|
||||||
margin: rhythm(0.5);
|
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);
|
padding: rhythm(0.5);
|
||||||
margin: rhythm(0.5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media all and (max-width: 700px) {
|
@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 {
|
.topbox {
|
||||||
@include flex-direction(column);
|
@include flex-direction(column);
|
||||||
background: yellow;
|
@include align-items(stretch);
|
||||||
}
|
}
|
||||||
|
|
||||||
.topbox > * {
|
.bio-bar {
|
||||||
padding: rhythm(0.5);
|
@include flex-direction(row);
|
||||||
margin: rhythm(0.5);
|
@include order(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.picture {
|
.picture {
|
||||||
@include flex(1 1 10em);
|
@include flex(1 1);
|
||||||
background: green;
|
padding: rhythm(0.5);
|
||||||
@include order(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact {
|
.contact {
|
||||||
@include flex(1 1 10em);
|
@include flex(1 1);
|
||||||
background: red;
|
padding: rhythm(0.5);
|
||||||
@include order(3);
|
|
||||||
|
h3 {
|
||||||
|
color: $main-color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media all and (max-width: 700px) {
|
// About cell ~ 2x sidebar in normal mode
|
||||||
.picture {
|
.about {
|
||||||
@include order(3);
|
@include flex(2 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact {
|
@media all and (max-width: $break-point) {
|
||||||
|
.about {
|
||||||
@include order(2);
|
@include order(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#card {
|
// Two section headers, different bg colors.
|
||||||
background: blue;
|
#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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 5.5 KiB |
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="topbox" id="card">
|
||||||
<div class="picture">
|
<div class="bio-bar">
|
||||||
picture
|
<div class="picture">
|
||||||
|
<img src="images/round.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact">
|
||||||
|
$contacts$
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="contact">
|
<div class="about">
|
||||||
$contacts$
|
<div id="mini-header">
|
||||||
|
About Me
|
||||||
|
</div>
|
||||||
|
|
||||||
|
$about$
|
||||||
</div>
|
</div>
|
||||||
</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 HakyllBibTex
|
||||||
import System.Process
|
import System.Process
|
||||||
import Text.Pandoc.Options
|
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 :: Compiler (Item String)
|
||||||
compass =
|
compass =
|
||||||
getResourceString >>=
|
getResourceString >>=
|
||||||
|
@ -21,23 +38,12 @@ b2bflags = [ "--expand"
|
||||||
, "-r"
|
, "-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]
|
bib2bib :: [String]
|
||||||
-> Compiler (Item String)
|
-> Compiler (Item String)
|
||||||
bib2bib flags = (unsafeCompiler $
|
bib2bib flags = (unsafeCompiler $
|
||||||
readProcess "bib2bib" (bibSources ++ b2bflags ++ flags) "")
|
readProcess "bib2bib" (bibSources ++ b2bflags ++ flags) "")
|
||||||
>>= makeItem
|
>>= makeItem
|
||||||
|
|
||||||
bib2bibParse :: Item String
|
bib2bibParse :: Item String
|
||||||
-> Compiler [Item BibEntry]
|
-> Compiler [Item BibEntry]
|
||||||
|
@ -53,6 +59,10 @@ main = hakyll $ do
|
||||||
route idRoute
|
route idRoute
|
||||||
compile copyFileCompiler
|
compile copyFileCompiler
|
||||||
|
|
||||||
|
match "images/**" $ do
|
||||||
|
route idRoute
|
||||||
|
compile copyFileCompiler
|
||||||
|
|
||||||
match "css/*.scss" $ do
|
match "css/*.scss" $ do
|
||||||
route $ setExtension "css"
|
route $ setExtension "css"
|
||||||
compile $ compass
|
compile $ compass
|
||||||
|
@ -61,14 +71,14 @@ main = hakyll $ do
|
||||||
create [fromCapture "bibs/*.html" nick] $ do
|
create [fromCapture "bibs/*.html" nick] $ do
|
||||||
route idRoute
|
route idRoute
|
||||||
compile $
|
compile $
|
||||||
let itemCtx = mconcat
|
let itemCtx = mconcat
|
||||||
[ bibEntryContext
|
[ bibEntryContext
|
||||||
, functionField "doclink"
|
, functionField "doclink"
|
||||||
(\(i:_) _ -> return $ "files/docs/" ++ i ++ "paper.pdf")
|
(\(i:_) _ -> return $ "files/docs/" ++ i ++ "paper.pdf")
|
||||||
, functionField "slidelink"
|
, functionField "slidelink"
|
||||||
(\(i:_) _ -> return $ "files/slides/" ++ i ++ "slides.pdf")
|
(\(i:_) _ -> return $ "files/slides/" ++ i ++ "slides.pdf")
|
||||||
, functionField "posterlink"
|
, functionField "posterlink"
|
||||||
(\(i:_) _ -> return $ "files/poster/" ++ i ++ "poster.pdf")
|
(\(i:_) _ -> return $ "files/posters/" ++ i ++ "poster.pdf")
|
||||||
]
|
]
|
||||||
biblioCtx = mconcat
|
biblioCtx = mconcat
|
||||||
[ field "bibtitle" (\_ -> return $ title)
|
[ field "bibtitle" (\_ -> return $ title)
|
||||||
|
@ -79,38 +89,40 @@ main = hakyll $ do
|
||||||
>>= bib2bibParse
|
>>= bib2bibParse
|
||||||
>>= applyTemplateList bibTpl itemCtx
|
>>= applyTemplateList bibTpl itemCtx
|
||||||
>>= makeItem
|
>>= makeItem
|
||||||
>>= loadAndApplyTemplate
|
>>= loadAndApplyTemplate "templates/biblisttpl.html" biblioCtx
|
||||||
"templates/biblisttpl.html" biblioCtx
|
|
||||||
>>= relativizeUrls
|
>>= relativizeUrls
|
||||||
|
|
||||||
match "content/body.md" $ do
|
match "content/biblio.md" $ do
|
||||||
route $ setExtension "html"
|
route $ setExtension "html"
|
||||||
compile $ do
|
compile $ do
|
||||||
let makeBibCtx (nick, _, _) =
|
let makeBibCtx (nick, _, _) =
|
||||||
field nick (\_ -> loadBody $ fromFilePath ("bibs/" ++ nick ++ ".html"))
|
field nick (\_ -> loadBody $ fromFilePath ("bibs/" ++ nick ++ ".html"))
|
||||||
secDiv = defaultHakyllWriterOptions { writerSectionDivs = True }
|
secDiv = defaultHakyllWriterOptions { writerSectionDivs = True }
|
||||||
bodyCtx = mconcat $ map makeBibCtx bibHeaders in do
|
biblioCtx = mconcat $ map makeBibCtx bibHeaders in do
|
||||||
pandocCompilerWith defaultHakyllReaderOptions secDiv
|
pandocCompilerWith defaultHakyllReaderOptions secDiv
|
||||||
>>= applyAsTemplate bodyCtx
|
>>= applyAsTemplate biblioCtx
|
||||||
>>= relativizeUrls
|
>>= relativizeUrls
|
||||||
|
|
||||||
match "content/*.md" $ do
|
match "content/*.md" $ do
|
||||||
route $ setExtension "html"
|
route $ setExtension "html"
|
||||||
compile $ do
|
compile $ do
|
||||||
pandocCompiler >>= relativizeUrls
|
let secDiv = defaultHakyllWriterOptions { writerSectionDivs = True }
|
||||||
|
pandocCompilerWith defaultHakyllReaderOptions secDiv
|
||||||
|
>>= relativizeUrls
|
||||||
|
|
||||||
match "index.html" $ do
|
match "index.html" $ do
|
||||||
route idRoute
|
route idRoute
|
||||||
compile $ do
|
compile $ do
|
||||||
contacts <- loadBody "content/contacts.md"
|
let loadSec sec = field sec
|
||||||
content <- loadBody "content/body.md"
|
(\_ -> loadBody (fromFilePath $ "content/" ++ sec ++ ".md"))
|
||||||
let indexContext = mconcat
|
mainContext = mconcat $ fmap loadSec contentSections
|
||||||
[ field "contacts" $ \_ -> return contacts
|
indexContext =
|
||||||
, field "content" $ \_ -> return content
|
field "footer" (\_ -> loadBody "content/footer.md")
|
||||||
]
|
`mappend`
|
||||||
|
defaultContext
|
||||||
getResourceBody
|
getResourceBody
|
||||||
>>= applyAsTemplate indexContext
|
>>= applyAsTemplate mainContext
|
||||||
>>= loadAndApplyTemplate "templates/main.html" defaultContext
|
>>= loadAndApplyTemplate "templates/main.html" indexContext
|
||||||
>>= relativizeUrls
|
>>= relativizeUrls
|
||||||
|
|
||||||
match "templates/*" $ compile templateCompiler
|
match "templates/*" $ compile templateCompiler
|
||||||
|
|
|
@ -1,21 +1,27 @@
|
||||||
<li>
|
<tr>
|
||||||
<!-- $identifier$ -->
|
<!-- $identifier$ -->
|
||||||
$title$ </br>
|
<td id="bibcell"> <b> $year$ </b> </td>
|
||||||
$author$ </br>
|
<td id="bibcell">
|
||||||
$if(eprint)$
|
<div id="titlecell"> <b> $title$ </b> </div>
|
||||||
[<a href="$eprint$">Arxiv</a>]
|
$author$. </br>
|
||||||
$endif$
|
$if(booktitle)$
|
||||||
$if(docs)$
|
In $booktitle$.</br>
|
||||||
[<a href="$doclink(identifier)$">Paper</a>]
|
$endif$
|
||||||
$endif$
|
$if(eprint)$
|
||||||
$if(slides)$
|
[<a href="$url$">ArXiV</a>]
|
||||||
[<a href="$slidelink(identifier)$">Slides</a>]
|
$endif$
|
||||||
$endif$
|
$if(docs)$
|
||||||
$if(poster)$
|
[<a href="$doclink(identifier)$">Paper</a>]
|
||||||
[<a href="$posterlink(identifier)$">Poster</a>]
|
$endif$
|
||||||
$endif$
|
$if(slides)$
|
||||||
<br>
|
[<a href="$slidelink(identifier)$">Slides</a>]
|
||||||
$if(notes)$
|
$endif$
|
||||||
$notes$ <br>
|
$if(poster)$
|
||||||
$endif$
|
[<a href="$posterlink(identifier)$">Poster</a>]
|
||||||
</li>
|
$endif$
|
||||||
|
<br>
|
||||||
|
$if(notes)$
|
||||||
|
$notes$ <br>
|
||||||
|
$endif$
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
<h2> $bibtitle$ </h2>
|
<table>
|
||||||
<ul>
|
|
||||||
$bibitems$
|
$bibitems$
|
||||||
</ul>
|
</table>
|
||||||
|
|
|
@ -1,18 +1,39 @@
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title> My Site </title>
|
<title> Justin Hsu </title>
|
||||||
<link rel="stylesheet" type="text/css" href="css/style.css">
|
<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>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container" id="flexed">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h1> Justin Hsu </h1>
|
<h1> Justin Hsu </h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
$body$
|
$body$
|
||||||
</div>
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<small>
|
||||||
|
$footer$
|
||||||
|
</small>
|
||||||
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue