diff --git a/Annotate/Capital_Punishment.txt b/Annotate/Capital_Punishment.txt new file mode 100644 index 0000000..f880339 --- /dev/null +++ b/Annotate/Capital_Punishment.txt @@ -0,0 +1,20 @@ +Primary Research Question +------------------------- +Does capital punishment deter criminals from commiting crimes. + +Scope +----- +Evidence for deterrence. +Evidence for no deterrence. +What the Experts have to say about it. + +Secondary Research Questions +---------------------------- +Mentions the "overload" hypothesis a few times. Says to look into it. +Conduct research on a larger scale. + +Findings +-------- + +Recommendations +--------------- diff --git a/Annotate/Draft/Makefile b/Annotate/Draft/Makefile new file mode 100644 index 0000000..a3fe5c7 --- /dev/null +++ b/Annotate/Draft/Makefile @@ -0,0 +1,11 @@ +all: + latex sample + bibtex sample + latex sample + latex sample + dvipdf sample.dvi + rm *.aux *.dvi *.log *.bbl *.blg + evince sample.pdf + +clean: + rm *.aux *.dvi *.log *.bbl *.blg diff --git a/Annotate/Draft/__MACOSX/._mla-good.bst b/Annotate/Draft/__MACOSX/._mla-good.bst new file mode 100644 index 0000000..3465e1d Binary files /dev/null and b/Annotate/Draft/__MACOSX/._mla-good.bst differ diff --git a/Annotate/Draft/mla-good.bst b/Annotate/Draft/mla-good.bst new file mode 100644 index 0000000..6b48667 --- /dev/null +++ b/Annotate/Draft/mla-good.bst @@ -0,0 +1,1583 @@ +%% +%% This is file `mla-new.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `ay,nat,nm-revf,jnrlst,nmdash,nmd-3,keyxyr,tit-qq,bt-qq,atit-u,vnum-cm,volp-sp,jdt-vs,pp-last,num-xser,jnm-x,bkpg-x,add-pub,pub-date,pub-xpar,edby,edbyx,in-x,ppx,ed,abr,ednx,xedn,url,url-nl,nfss,') +%% ---------------------------------------- +%% *** a new and more accurate mla style *** +%% +%% Copyright 1994-2004 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... + % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the part in brackets) consists + % of the author names, as they should appear in the citation, with the year + % in parentheses following. There must be no space before the opening + % parenthesis! + % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) + % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) + % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) + % \citeauthor{key} ==>> Jones et al. + % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 + %--------------------------------------------------------------------- + +ENTRY + { address + annote + author + booktitle + chapter + edition + editor + eid + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label extra.label sort.label short.list } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {format.annotate} +{ annote empty$ + { "" } + { %" \begin{quotation}\noindent " + newline$ + annote + %* " \end{quotation} " * + } + if$ +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + new.block +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +FUNCTION {non.stop} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "ed." } + +FUNCTION {bbl.volume} +{ "vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "" } + +FUNCTION {bbl.page} +{ "" } + +FUNCTION {bbl.chapter} +{ "chap." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {write.url} +{ url empty$ + { skip$ } + { "\newline\urlprefix\url{" url * "}" * write$ newline$ } + if$ +} + +STRINGS { bibinfo} +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{, ff}{, jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ff~}{vv~}{ll}{, jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + + " " * bbl.etal * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author "author" format.names +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + "," * + " " * + get.bbl.editor + * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + "\enquote{" swap$ * + add.period$ "}" * + } + if$ +} +FUNCTION {end.quote.btitle} +{ booktitle empty$ + 'skip$ + { editor empty$ + { before.all 'output.state := } + 'skip$ + if$ + } + if$ +} +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { + numnames #2 > + { "," * } + 'skip$ + if$ + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ "" } + +FUNCTION {format.date} +{ year "year" bibinfo.check duplicate$ empty$ + { + "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" + } + 'skip$ + if$ + extra.label * +} +FUNCTION{format.year} +{ year "year" bibinfo.check duplicate$ empty$ + { "empty year in " cite$ * + "; set to ????" * + warning$ + pop$ "????" + } + { + } + if$ + extra.label * + " (" swap$ * ")" * +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ bbl.of space.word * swap$ + emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { number "number" bibinfo.check } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + n.dashify + } + { + } + if$ + "pages" bibinfo.check + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ": " * + swap$ + n.dashify + "pages" bibinfo.check + * + } + if$ + } + if$ +} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { + ": " * + } + if$ + swap$ * + } + if$ +} +FUNCTION {format.vol.num.pages} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { + "volume" bibinfo.check + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "." swap$ * + format.year * + } + if$ * +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + } + if$ +} + +FUNCTION {bt.enquote} +{ duplicate$ empty$ 'skip$ + { "\enquote{" swap$ * + non.stop + { ",} " * } + { "}, " * } + if$ + } + if$ +} +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + ". " * + } + if$ +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { + editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { + get.bbl.editor + " " * swap$ * + swap$ + "" * + " " * swap$ + * } + if$ + word.in swap$ * + } + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address "address" bibinfo.check * + t empty$ + 'skip$ + { address empty$ + 'skip$ + { ": " * } + if$ + t * + } + if$ + year duplicate$ empty$ + { "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" } + { "year" bibinfo.check extra.label * } + if$ + t empty$ address empty$ and + { * } + { ", " swap$ * * } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +STRINGS {oldname} + +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { "---{}---{}---" } + { s 'oldname := s } + if$ + } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output + name.or.dash + new.block + format.title "title" output.check + new.block + crossref missing$ + { + journal + "journal" bibinfo.check + emphasize + "journal" output.check + add.blank + format.vol.num.pages output + } + { format.article.crossref output.nonnull + } + if$ + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ + new.block + format.note output + fin.entry + write.url +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + name.or.dash + } + { format.authors output.nonnull + name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + format.publisher.address output + } + { + new.block + format.book.crossref output.nonnull + format.date "year" output.check + } + if$ + format.edition output + new.block + format.note output + fin.entry + write.url +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output + name.or.dash + new.block + format.title "title" output.check + new.block + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.date "year" output.check + new.block + format.note output + fin.entry + write.url +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + name.or.dash + } + { format.authors output.nonnull + name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + format.date "year" output.check + } + if$ + format.edition output + format.pages "pages" output.check + new.block + format.note output + fin.entry + write.url +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + name.or.dash + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + end.quote.btitle + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + format.publisher.address output + format.edition output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + format.pages "pages" output.check + new.block + format.note output + fin.entry + write.url +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output + name.or.dash + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + end.quote.btitle + format.bvolume output + format.number.series output + new.sentence + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages "pages" output.check + new.block + format.note output + fin.entry + write.url + format.annotate write$ +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output + name.or.dash + new.block + format.btitle "title" output.check + organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output + format.date "year" output.check + new.block + format.note output + fin.entry + write.url +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + name.or.dash + new.block + format.btitle + "title" output.check + new.block + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check + new.block + format.note output + fin.entry + write.url +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output + name.or.dash + new.block + format.title output + new.block + howpublished "howpublished" bibinfo.check output + format.date "year" output.check + new.block + format.note output + fin.entry + write.url +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + name.or.dash + new.block + format.btitle + "title" output.check + new.block + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check + new.block + format.note output + fin.entry + write.url +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output + name.or.dash + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + new.sentence + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + new.block + format.note output + fin.entry + write.url +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output + name.or.dash + new.block + format.title + "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check + new.block + format.note output + fin.entry + write.url +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output + name.or.dash + new.block + format.title "title" output.check + format.date "year" output.check + new.block + format.note "note" output.check + fin.entry + write.url +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {format.lab.names} +{ 's := + "" 't := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + } + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + { purify$ #-1 #4 substring$ } + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { t sortify * } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} +SORT +STRINGS { last.label next.extra } +INTEGERS { last.extra.num number.label } +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} +EXECUTE {initialize.extra.label.stuff} +ITERATE {forward.pass} +REVERSE {reverse.pass} +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {bib.sort.order} +SORT +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\newcommand{\enquote}[1]{``#1''}" + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\providecommand{\urlprefix}{URL }" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `mla-new.bst'. diff --git a/Annotate/Draft/mla-good.bst.zip b/Annotate/Draft/mla-good.bst.zip new file mode 100644 index 0000000..d596589 Binary files /dev/null and b/Annotate/Draft/mla-good.bst.zip differ diff --git a/Annotate/Draft/mla.sty b/Annotate/Draft/mla.sty new file mode 100644 index 0000000..4c70570 --- /dev/null +++ b/Annotate/Draft/mla.sty @@ -0,0 +1,175 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% +% The MLA Package for LaTeX +% By Ryan Aycock +% +% with contributions by Steven Wheelwright, +% Edward Z. Yang, and Teddy Bradford +% +% Last updated on December 29, 2010 +% +% For use with LaTeX and pdflatex. +% +% To use, +% 1. Put \usepackage{mla} in the preamble +% 2. After the \begin{document}, put \begin{mla}{Firstname}{Lastname}{Prof's lastname}{class name}{date}{Paper title} +% 3. Immediately - the next line - start typing your paper. +% 4. Put \end{mla} just before \end{document} +% +% To use the bibliography feature, +% 1. Use \begin{workscited} to start the bibliography. There is no need to +% declare a new page or even type "Works Cited" at the top of the page. +% 2. Use \bibent before each entry. +% 3. Put \end{workscited} at the end. +% +% +% +% +% The following template is what I use: +% +% \documentclass[12pt,letterpaper]{article} +% \usepackage{mla} +% \begin{document} +% \begin{mla}{Ryan}{Aycock}{Professor's last name}{Class name}{\today}{Really Cool Title} +% Start typing paragraph 1 here. +% +% Continue the rest of the paper as normal. +% +% \begin{workscited} +% +% \bibent +% author's last name, first name. ``Paper Title." \textit{Book Title}. Date of publication. +% +% \end{workscited} +% \end{mla} +% \end{document} +% +% +% Tips for writing MLA: +% I strongly recommend using \documentclass[12pt,letterpaper]{article} +% Some professors require block quotes to be singled space. To accomplish this with +% the MLA package, use the blocks and blockm environments for single paragraph and +% multiple paragraph cites, respectively. +% LaTeX will not tab the first paragraph after new sections. To get around this, use \tab +% LaTeX does not allow double spaces after periods like most term and research papers require. +% When typing your paper, hit the spacebar twice as normal. After you are finished with your project, +% do a find/replace by changing all double spaces into (space)\(space). +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\ProvidesPackage{mla} +\typeout{MLA Package - by Ryan Aycock} + +% New code thanks to Edward Z. Yang +\ifpdf % We're generating a pdf + \usepackage[pdftex]{color,graphicx} + \pdfpagewidth=\paperwidth + \pdfpageheight=\paperheight + \usepackage{thumbpdf} + %\pdfcompresslevel=9 +\else + \usepackage[dvips]{graphicx} +\fi + +% The old code +% \ifx\pdfoutput\undefined % We're not running pdftex +% \usepackage[dvips]{graphicx} +% \else +% \usepackage[pdftex]{color,graphicx} +% \pdfpagewidth=\paperwidth +% \pdfpageheight=\paperheight +% \usepackage{thumbpdf} +% %\pdfcompresslevel=9 +% \fi + +\usepackage{times} + +% +% fixes headings +% +\pagestyle{headings} + +% +% correct page size +% +\setlength{\paperheight}{11in} +\setlength{\paperwidth}{8.5in} +\setlength{\textwidth}{6.5in} +\setlength{\textheight}{9in} +\setlength{\footskip}{40pt} + +% +% One inch borders +% +\setlength{\hoffset}{0in} +\setlength{\voffset}{-1in} + +% +% eliminates margin notes +% +\setlength{\oddsidemargin}{0in} +\setlength{\evensidemargin}{0in} +\setlength{\marginparwidth}{0in} +\setlength{\marginparpush}{0in} +\setlength{\marginparsep}{0in} + +% +% Double space +% +\linespread{2} + +% +% Places heading 1/2 inch from top of page +% +\setlength{\topmargin}{.5in} +\setlength{\headsep}{18pt} + +% +% Last name and page number on every page +% +\usepackage{fancyhdr} +\fancypagestyle{norule}{ % + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} +} +\fancyhf{} +\pagestyle{headings} +\pagestyle{norule} + +% +% If you want an index, uncomment the lines below +% +% \usepackage{makeidx} +% \makeindex + +% +% Other new commands +% +\newcommand{\tab}{\hspace{0.5in}} + +% +% MLA environment +% +\newenvironment{mla}[6]{\newcommand{\lastname}{#2} \fancyhead[RO]{\lastname\ \thepage} \raggedright #1\ #2 \\ #3 \\ #4 \\ #5 \\ \centering #6 \\ \frenchspacing\raggedright\setlength{\parindent}{.5in}}{\newpage} + +% +% Block quote environment +% +\newenvironment{blocks}{\begin{quote} \linespread{1} \small \normalsize}{\end{quote} \linespread{2} \small \normalsize} +\newenvironment{blockm}{\begin{quotation} \linespread{1} \small \normalsize}{\end{quotation} \linespread{2} \small \normalsize} + +% +% Russ Ault's mla quote environment +% +\newenvironment{mlaquote}{\list{}{\leftmargin=1in}\item[]}{\endlist} +\newenvironment{mlaquotation}{\list{}{\leftmargin=1in}\item[]\parindent=0.5in}{\endlist} + + +% +% Works Cited environment +% +\newcommand{\bibent}{\noindent \hangindent 40pt} +\newenvironment{workscited}{\newpage {\centering Works Cited\\}}{\newpage} \ No newline at end of file diff --git a/Annotate/Draft/plain-annote.bst b/Annotate/Draft/plain-annote.bst new file mode 100644 index 0000000..78164a5 --- /dev/null +++ b/Annotate/Draft/plain-annote.bst @@ -0,0 +1,1142 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +%% Modified 1-23-97, HJG, for annotation + +ENTRY + { address +%% + annote + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +%annotation addition +FUNCTION {format.annotate} +{ annote empty$ + { "" } + { " \begin{quotation}\noindent " + annote + * " \end{quotation} " * + } + if$ +} + + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + newline$ +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + newline$ +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + empty.misc.check +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/Annotate/Draft/sample.bak b/Annotate/Draft/sample.bak new file mode 100644 index 0000000..595101e --- /dev/null +++ b/Annotate/Draft/sample.bak @@ -0,0 +1,103 @@ +%\documentclass{article} +\documentclass[letterpaper,11pt]{texMemo} +\usepackage{setspace} +\usepackage[american]{babel} +\usepackage{natbib} + +\bibliography{sample.bib} + + +\memoto{Roby Conner, Writing 327 Instructor} +\memofrom{Jacques Uber, Oregon State University Student} +\memodate{Feb 12, 2012} +\memosubject{Proposal to investigate imporovements to Tor} + +\begin{document} +\singlespace +\maketitle +\section*{Introduction} + +It is my goal to investigate how engineers are working to improve Tor. I will focus on the +improvements to latency and congestion, and the methods used to improve user anonymity. + +The literature review will include all scholarly articles on Tor found via the Academic Search +Premier database using the keywords Tor, Improvements, Congestion, Fair, Timing Attacks, +Anonymity and published between the years 2009 and 2012. + +There will be three section in the document. The first section will introduce core concepts used +to implement Tor. The second will investigate techniques used to compromise user +anonymity. The third will investigate network latency and congestion. + +\section*{Background} + + \subsection*{What is Tor?} + Tor is an overlay network that enables users to use the Internet anonymously. Tor was originally + developed by the Navy and is used by militaries, journalist, law enforcement, activists, and the + average internet user\cite{tor:web}. To ensure a users privacy and anonymity Tor uses multiple + layers of encryption while routing cells of data and is sometimes refered to as the "Onion Router". + + \subsection*{Why is Tor important?} + Tor has many legititamte uses. ONI, the OpenNet Initiative, reported that "the Middle East and + North Africa is one of the most heavily censored regions in the world". It also claimed that it + "conducted tests for technical Internet filtering in all of the countries in the Middle East + and North Africa between 2008 and 2009. Test results prove that the governments and Internet + service providers (ISPs) censor content deemed politically sensitive; critical of governments, + leaders or ruling families; morally offensive; or in violation of public ethics and order." Tor + can bypass these filters ensuring a freedom of speech and freedom of expression on the Internet. + + + \subsection*{Congestion} + As of 2010 users on the Tor have experienced network delay. The reason why network + delay was the focus of \cite{delay}. They ask the question, why is there delay in the network, + and where is the delay taking place. The routers themselves could be the cause. All traffic that + goes through the network needs to pass throuh routers. It could be that there are traffic bottle + necks forming at certain nodes. The methods used to test for what is causing the delays would be + to set up multiple Onion Routers and measure where bottle necks occur and record how the circuit + selection algorithm is making node selections. + + Different protocols can cause congestion more than others. This is the focus of . + There is growing concern that bulk transfer protocols, like Bittorent and other P2P (Peer to + Peer) protocols, are causing latency sensitive protocols, like ssh and HTTP, to become delayed + and in some cases hard to use \cite{analysis}. This problems are not new to computer networks. + Major ISPs (Internet Service Providers) have to make sure that their cusomters have the ablity + to stream music and browse the web while also accomidating other services like FTP (File Transfer + Protocol) and Bittorent. This coexistance is normally achieved by packet shapers. Packet shapers + look at traffic (usually the source and destination port of the traffic) and give bandwidth + priority to latency sensitive protocols. This is not possible on the Tor network. The encryption + that gives anonymity also stops and QoS (Quality of Service from being applied). + + Reworking how Tor scheduales traffic is a possible solution to Congestion. A Tor Onion Router + treats all data equally. A Router will forward data for multiple circuits and it uses a Round Robin + algorithm to determine which circuit it will service. This means that circuits with data that + tends to come in bursts will have the same priority as a circuit that has a relativly + continuous flow of data through it. This is not optimal because data that comes in bursts is usually + sensative to latency and should take priority over traffic that appears continuous. \cite{Tang} + There have been multiple schedualling schemes proposed to replace the Round Robin schedauler. + +\begin{itemize} + \item + \cite{unfair} This paper explores the mechanisms for handling congestion + and fairness and proposes a new scheduling algorithm. + \item + \cite{Tang} This paper proposes a new scheduling algorithm. + \item + \cite{analysis} Chaabane analysis what the tor network is being used for and where congestion is taking place. + \item + \cite{delay} Dhungel exposes where and how Tor is unfair to certain kinds of traffic. + \item + \cite{Bauer} Bauer discusses the consiquences of new routing algorithms and proposes a new + algorithm. + \item + \cite{Edman} This paper explores "modifications to Tor's path selection algorithm to help clients avoid + an AS-level observer". +\end{itemize} + + +\section*{Research Plan} +Conclusion + o Summary of Key Points + +%\nocite{*} +\bibliographystyle{mla-good} +\bibliography{sample} +\end{document} diff --git a/Annotate/Draft/sample.bib b/Annotate/Draft/sample.bib new file mode 100644 index 0000000..907fc35 --- /dev/null +++ b/Annotate/Draft/sample.bib @@ -0,0 +1,134 @@ +@inproceedings{Tang, + author = {Tang, Can and Goldberg, Ian}, + title = {An improved algorithm for tor circuit scheduling}, + booktitle = {Proceedings of the 17th ACM conference on Computer and communications security}, + series = {CCS '10}, + year = {2010}, + isbn = {978-1-4503-0245-6}, + location = {Chicago, Illinois, USA}, + pages = {329--339}, + numpages = {11}, + url = {http://doi.acm.org/10.1145/1866307.1866345}, + doi = {http://doi.acm.org/10.1145/1866307.1866345}, + acmid = {1866345}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {Tor, latency, onion routing}, +} +@INPROCEEDINGS{ +analysis, +author={Chaabane, A. and Manils, P. and Kaafar, M.A.}, +booktitle={Network and System Security (NSS), 2010 4th International Conference on}, +title={Digging into Anonymous Traffic: A Deep Analysis of the Tor Anonymizing Network}, +year={2010}, +month={sept.}, +volume={}, +number={}, +pages={167 -174}, +keywords={BitTorrent protocols;BitTorrent traffic;HTTP;Internet;P2P applications;Tor Anonymizing Network;anonymous traffic;Internet;peer-to-peer computing;routing protocols;telecommunication security;telecommunication traffic;}, +doi={10.1109/NSS.2010.47}, +ISSN={}, +annote = {The authors of this paper investigate the relation between human + performance in an IVE and the size of the cursor, object and controller. + The \emph{cursor} here refers to the graphical object that maps the input device + (controller) to the virtual world. A study was performed to arrive at two + conclusions. The first (\emph{the relative size hypothesis}) states that the + \textbf{interplay} between the size of the controller, cursor, and object has a direct + effect on the performance in the virtual environment rather than the size of + the controller, cursor or the object \textbf{alone}. The second hypothesis that was proved + shows that only the orientation time was fastest when the controller and cursor + were largest. This study can help us during the development of our UI system. The + 3D pointer that was developed probably should be a little larger than its current + size.} +} +@INPROCEEDINGS{unfair, + author={Tschorsch, Florian and Scheuermann, Bjorn}, + booktitle={Local Computer Networks (LCN), 2011 IEEE 36th Conference on}, + title={Tor is unfair: And what to do about it}, + year={2011}, + month={oct.}, + volume={}, + number={}, + pages={432 -440}, + keywords={}, + doi={10.1109/LCN.2011.6115503}, + ISSN={0742-1303},} +@INPROCEEDINGS{delay, +author={Dhungel, P. and Steiner, M. and Rimac, I. and Hilt, V. and Ross, K.W.}, +booktitle={Peer-to-Peer Computing (P2P), 2010 IEEE Tenth International Conference on}, +title={Waiting for Anonymity: Understanding Delays in the Tor Overlay}, +year={2010}, +month={aug.}, +volume={}, +number={}, +pages={1 -4}, +keywords={Tor network;Tor onion proxy;Tor overlay;Tor router;Web application;anonymity service;delay distribution;Internet;telecommunication network routing;}, +doi={10.1109/P2P.2010.5569995}, +ISSN={},} +@inproceedings{Bauer, + author = {Bauer, Kevin and McCoy, Damon and Grunwald, Dirk and Kohno, Tadayoshi and Sicker, Douglas}, + title = {Low-resource routing attacks against tor}, + booktitle = {Proceedings of the 2007 ACM workshop on Privacy in electronic society}, + series = {WPES '07}, + year = {2007}, + isbn = {978-1-59593-883-1}, + location = {Alexandria, Virginia, USA}, + pages = {11--20}, + numpages = {10}, + url = {http://doi.acm.org/10.1145/1314333.1314336}, + doi = {http://doi.acm.org/10.1145/1314333.1314336}, + acmid = {1314336}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {anonymity, load balancing, tor, traffic analysis}, +} +@inproceedings{Edman, + author = {Edman, Matthew and Syverson, Paul}, + title = {As-awareness in Tor path selection}, + booktitle = {Proceedings of the 16th ACM conference on Computer and communications security}, + series = {CCS '09}, + year = {2009}, + isbn = {978-1-60558-894-0}, + location = {Chicago, Illinois, USA}, + pages = {380--389}, + numpages = {10}, + url = {http://doi.acm.org/10.1145/1653662.1653708}, + doi = {http://doi.acm.org/10.1145/1653662.1653708}, + acmid = {1653708}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {anonymity, autonomous systems, privacy, tor}, +} +@ONLINE{tor:web, +author = {The Tor Project, Inc.}, +title = {Inception}, +month = feb, +year = {2012}, +url = {https://www.torproject.org/about/torusers.html.en} +} +@techreport{ONI, +author = {Helmi Noman}, +title = {Internet Filtering in the Middle East and North Africa}, +year = {2009}, +institution = {The OpenNet Initiative}, +type = {Technical Report}, +AUTHOR1_URL = {http://opennet.net/sites/opennet.net/files/}, +FILE = {ONI_MENA_2009.pdf}, +} +@inproceedings{Moore, + author = {Moore, W. Brad and Wacek, Chris and Sherr, Micah}, + title = {Exploring the potential benefits of expanded rate limiting in Tor: slow and steady wins the race with Tortoise}, + booktitle = {Proceedings of the 27th Annual Computer Security Applications Conference}, + series = {ACSAC '11}, + year = {2011}, + isbn = {978-1-4503-0672-0}, + location = {Orlando, Florida}, + pages = {207--216}, + numpages = {10}, + url = {http://doi.acm.org/10.1145/2076732.2076762}, + doi = {http://doi.acm.org/10.1145/2076732.2076762}, + acmid = {2076762}, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {Tor, anonymity, performance}, +} diff --git a/Annotate/Draft/sample.tex b/Annotate/Draft/sample.tex new file mode 100644 index 0000000..1a110d3 --- /dev/null +++ b/Annotate/Draft/sample.tex @@ -0,0 +1,139 @@ +\documentclass[letterpaper,13pt]{texMemo} +\usepackage[american]{babel} +\usepackage{natbib} +\usepackage{setspace} + +\memoto{Roby Conner, Writing 327 Instructor} +\memofrom{Jacques Uber, Oregon State University Student} +\memodate{Feb 12, 2012} +\memosubject{Proposal to investigate imporovements to Tor} + +\begin{document} +\singlespace +\begin{center} +\large {\bf Memorandum} +\end{center} +\setlength{\topmargin}{0in} +\maketitle +%\section*{Introduction} +\noindent +It is my goal to investigate how engineers are working to improve latency and congestion issues in +Tor. The literature review will include all scholarly articles on Tor found via the Academic Search +Premier, IEEE, and ACM databases using the keywords Tor, Improvements, Congestion, Fair, Timing +Attacks, Anonymity and published between the years 2009 and 2012. + +\noindent +\\There will be three section in this document. The first section will introduce core concepts used to +implement Tor. The second will investigate why latency and congestion exists and why it is a +problem. The third will investigate the proposals to improve latency and congestion. + +\section*{Background} + + \subsection*{What is Tor?} + Tor enables users to use the Internet anonymously. Tor was originally developed by the Navy + and is used by militaries, journalist, law enforcement, activists, and the average internet user + \citep[2]{Tor:web}. + %To ensure a user's privacy and anonymity Tor uses multiple layers of + %encryption while routing cells of data. By building circuits between multiple nodes, a user + %routes her traffic through the network. Tor is an overlay network. This means that packets are + %routed and scheduled. While the Internet is packet switched, Tor is built on a circuit switching + %scheme. + "Tor is a volunteer-operated network of approximately 2,500 application-layer routers (also + called relays or ORs). The network provides anonymity by forwarding traffic from clients (also + called proxies or OPs) along a bidirectional anonymous circuit consisting of Tor routers. To + conceal the identities of the communicants, Tor encrypts messages such that each relay can + discern only the identities of the previous and next hops along the anonymous circuit. By + default, Tor uses three-relay hops, consisting of a guard relay, a middle relay, and an exit + relay." (\citeauthor[1]{Moore}) + + \subsection*{Why is Tor important?} + ONI, the OpenNet Initiative, reported that "the Middle East and North Africa is one of the most + heavily censored regions in the world". ONI says that it "conducted tests for technical + Internet filtering in all of the countries in the Middle East and North Africa between 2008 and + 2009. Test results prove that the governments and Internet service providers (ISPs) censor + content deemed politically sensitive; critical of governments, leaders or ruling families; + morally offensive; or in violation of public ethics and order" (\citeauthor[6]{ONI}). Tor can + bypass these filters ensuring freedom of speech and expression on the Internet. + +\section*{Research Plan} + + + \subsection*{Congestion and Delay} + As of 2010 users on the Tor network have experienced network delay. "Why are there delays in + the network?" and "Where are the delays taking place?" are the questions asked by + \citeauthor[]{delay}. Using log files from network nodes that they controlled, Dhungel's group + determined that "router delays are the principal contributors to delays in Tor" and that "some + routers frequently introduce delays as high as a few seconds". The researchers were careful to + measure "Total Delay" while making sure that any delay caused by the target service was not included + in the timing data. + + \subsection*{Causes} + Different protocols can cause congestion more than others. This is the focus of + \citeauthor{analysis}. There is concern that bulk transfer protocols, like FTP (File Transfer + Protocol) and P2P (Peer to Peer) protocols, are causing latency sensitive protocols, like ssh + and HTTP, to become delayed and in some cases hard to use (\citeauthor[2]{analysis}). This + problem is not new. Major ISPs have allowed their customers to have the ability to stream music + and browse the web while also accommodating other services like FTP and BitTorent. This + coexistence is normally achieved by packet shapers. A packet shaper looks at the TCP source and + destination port of traffic to determine what type of traffic it is. It can then give + bandwidth priority to latency sensitive protocols. This is not possible on the inner nodes of + the Tor network due to the encrypted nature of Tor. + + \subsection*{Ingress and Postgress Filtering} + If a user is not using a natively encrypted service like HTTP or standard Bittorrent, it is + possible to preform DPI (Deep Packet Inspection) on that traffic when it leaves or exits the + network. It has been proposed that "exit relays could examine outgoing traffic and discard any + detected BitTorrent packets." Blocking Bittorent outright seems ironic and rate limiting + might be a better option (\citeauthor[2]{Moore}). + + \subsection*{Scheduler} + A possible solution to congestion is to rework how Tor schedules traffic. A Tor onion router + treats all data equally when deciding when to forward a cell. Furthermore, a router will forward + data for multiple circuits using a Round Robin algorithm to determine which circuit it will + serve. This means that a circuit with data that comes in bursts will have the same priority as a + circuit that contains a periodic flow of data. This is not optimal because data that comes in + intermittently is usually sensitive to latency and should take priority over traffic that + arrives at regular intervals (\citeauthor[2]{unfair}). There have been multiple scheduling + schemes proposed to replace the Round Robin scheduler. A large part my literature review will be + spent reviewing these scheduling algorithms and their effect on delay and latency. + +\subsection*{White Papers} +\begin{itemize} + \item + \citeauthor*{unfair}: This paper explores the mechanisms for handling congestion + and fairness and proposes a new scheduling algorithm. + \item + \citeauthor*{Tang}: This paper proposes a new scheduling algorithm. + \item + \citeauthor*{analysis}: This paper does analysis on what the Tor network is being used for and where congestion is taking place. + \item + \citeauthor*{delay}: This paper investigates where and how Tor is unfair to certain kinds of traffic. + \item + \citeauthor*{Bauer}: This paper discusses the consequences of replacing the Round Robin algorithm and + proposes a new scheduling algorithm. + \item + \citeauthor*{Edman}: This paper explores modifying Tor's path selection algorithm to help + clients avoid observers from discovering their identities. + \item + \citeauthor*{Moore}: This paper describes a different idea of how to improve latency. The + authors propose that traffic should be throttled at the ingress of the network. + +\end{itemize} + + +\section*{Conclusion} +\begin{itemize} + \item + Tor is a valuable cyber anonymity tool for many disciplines. + \item + Tor has congestion and latency issues. + \item + There are many different proposed solutions to Tor's congestion and latency issues. +\end{itemize} +I am asking for approval to do a literature review on the ways engineers are addressing the +congestion and latency issues within the Tor network. + +\bibliographystyle{mla-good} +%\bibliographystyle{plain-annote} +\bibliography{sample} +\end{document} diff --git a/Annotate/Draft/texMemo.cls b/Annotate/Draft/texMemo.cls new file mode 100644 index 0000000..46736ac --- /dev/null +++ b/Annotate/Draft/texMemo.cls @@ -0,0 +1,70 @@ +% This document class provides a simple memo for LaTeX users. +% It is based on article.cls and inherits most of the functionality +% that class. +% +% Author: Rob Oakes, Copyright 2010. Released under the LGPL, version 3. +% A copy of the LGPL can be found at http://www.gnu.org/licenses/lgpl.html + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{texMemo}[2010/07/31 - Simple Memo Class, Including Logo] +\RequirePackage{palatino} + +% Load the Base Class +\LoadClassWithOptions{article} + +% Begin Requirements +\RequirePackage{ifthen} + +% Specialized memo Commands (To, From, Subject, Logo, Letterhead Address) + +\def\@memoto{\relax} +\newcommand{\memoto}[1]{\gdef\@memoto{#1}} + +\def\@memofrom{\relax} +\newcommand{\memofrom}[1]{\gdef\@memofrom{#1}} + +\def\@memosubject{\relax} +\newcommand{\memosubject}[1]{\gdef\@memosubject{#1}} + +\def\@memodate{\relax} +\newcommand{\memodate}[1]{\gdef\@memodate{#1}} + +\def\@memologo{\relax} +\newcommand{\logo}[1]{\gdef\@memologo{\protect #1}} + +\def\@letterheadaddress{\relax} +\newcommand{\lhaddress}[1]{\gdef\@letterheadaddress{#1}} + +% Custom Document Formatting +\newcommand\decorativeline[1][1pt]{ + \par\noindent% + \rule[0.5ex]{\linewidth}{#1}\par +} + +% Set the Paper Size and margins +\RequirePackage{geometry} +\geometry{margin=1.0in} + +% Create the Letterhead and To/From Block + +\renewcommand{\maketitle}{\makememotitle} +\newcommand\makememotitle{ + \ifthenelse{\equal{\@memologo}{\relax}}{} + { % Create With Logo + \begin{minipage}[t]{1\columnwidth}% + \begin{flushright} + \vspace{-0.6in} + \@memologo + \vspace{0.5in} + \par\end{flushright}% + \end{minipage} + } + % To, From, Subject Block + \begin{description} + \ifthenelse{\equal{\@memoto}{\relax}}{}{\item [{To:}] \@memoto} + \ifthenelse{\equal{\@memofrom}{\relax}}{}{\item [{From:}] \@memofrom} + \ifthenelse{\equal{\@memosubject}{\relax}}{}{\item [{Subject:}] \@memosubject} + \ifthenelse{\equal{\@memodate}{\relax}}{}{\item [{Date:}] \@memodate} + \end{description} + %\decorativeline\bigskip{} %HACK +} diff --git a/Annotate/Lean.tex b/Annotate/Lean.tex new file mode 100644 index 0000000..7c5cb10 --- /dev/null +++ b/Annotate/Lean.tex @@ -0,0 +1,28 @@ +Primary Research Question +------------------------- +What does the term Lean mean in the context of product development (PD)? To what limit can you use Lean to improve PD? Who is using Lean in PD currently and how are they using it? + +Scope +----- +All things related to Lean in when applying the method to product development. +1999-2005 +"there is clear evidence in the literature that +the benefits of Lean cannot be realized simply by +adopting a few tools and techniques." + +"the purpose of this paper is to provide an up-to-date review of +Lean (in its widest interpretation) and its application +to the processes of PD within manufacturing +enterprises." + +Evidence +Evidence + +Secondary Research Questions +---------------------------- + +Findings +-------- + +Recommendations +--------------- diff --git a/Proposal/Draft2/mla-good.bst b/Proposal/Draft2/mla-good.bst index 74a63d6..6a7a1fc 100644 --- a/Proposal/Draft2/mla-good.bst +++ b/Proposal/Draft2/mla-good.bst @@ -53,6 +53,7 @@ ENTRY { address + annote author booktitle chapter @@ -107,6 +108,16 @@ FUNCTION {output.nonnull} if$ s } + +FUNCTION {format.annotate} +{ annote empty$ + { "" } + { " \begin{quotation}\noindent " + annote + * " \end{quotation} " * + } + if$ +} FUNCTION {output} { duplicate$ empty$ 'pop$ @@ -1150,6 +1161,7 @@ FUNCTION {inproceedings} format.note output fin.entry write.url + format.annotate write$ } FUNCTION {conference} { inproceedings } FUNCTION {manual} diff --git a/Proposal/Draft2/plain-annote.bst b/Proposal/Draft2/plain-annote.bst new file mode 100644 index 0000000..78164a5 --- /dev/null +++ b/Proposal/Draft2/plain-annote.bst @@ -0,0 +1,1142 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +%% Modified 1-23-97, HJG, for annotation + +ENTRY + { address +%% + annote + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +%annotation addition +FUNCTION {format.annotate} +{ annote empty$ + { "" } + { " \begin{quotation}\noindent " + annote + * " \end{quotation} " * + } + if$ +} + + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + newline$ +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + newline$ +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + empty.misc.check +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry +%added for annotation + format.annotate write$ + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +%added for annotation + format.annotate write$ +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/Proposal/Draft2/sample.bib b/Proposal/Draft2/sample.bib index 9564edd..25f9975 100644 --- a/Proposal/Draft2/sample.bib +++ b/Proposal/Draft2/sample.bib @@ -27,7 +27,8 @@ @INPROCEEDINGS{ pages={167 -174}, keywords={BitTorrent protocols;BitTorrent traffic;HTTP;Internet;P2P applications;Tor Anonymizing Network;anonymous traffic;Internet;peer-to-peer computing;routing protocols;telecommunication security;telecommunication traffic;}, doi={10.1109/NSS.2010.47}, -ISSN={},} +ISSN={}, +} @INPROCEEDINGS{unfair, author={Tschorsch, Florian and Scheuermann, Bjorn}, booktitle={Local Computer Networks (LCN), 2011 IEEE 36th Conference on}, diff --git a/Proposal/Draft2/sample.tex b/Proposal/Draft2/sample.tex index e1efafc..1a110d3 100644 --- a/Proposal/Draft2/sample.tex +++ b/Proposal/Draft2/sample.tex @@ -61,10 +61,11 @@ \section*{Research Plan} \subsection*{Congestion and Delay} As of 2010 users on the Tor network have experienced network delay. "Why are there delays in the network?" and "Where are the delays taking place?" are the questions asked by - \citeauthor[]{delay}. "Router delays are the principal contributors to delays in Tor. Some - routers frequently introduce delays as high as a few seconds" (\citeauthor[3]{delay}). They used - log files from network nodes that they controlled to measure "Total Delay" while making sure - that delay caused by the target service was not included in the timing data. + \citeauthor[]{delay}. Using log files from network nodes that they controlled, Dhungel's group + determined that "router delays are the principal contributors to delays in Tor" and that "some + routers frequently introduce delays as high as a few seconds". The researchers were careful to + measure "Total Delay" while making sure that any delay caused by the target service was not included + in the timing data. \subsection*{Causes} Different protocols can cause congestion more than others. This is the focus of @@ -82,21 +83,21 @@ \section*{Research Plan} If a user is not using a natively encrypted service like HTTP or standard Bittorrent, it is possible to preform DPI (Deep Packet Inspection) on that traffic when it leaves or exits the network. It has been proposed that "exit relays could examine outgoing traffic and discard any - detected BitTorrent packets." Blocking Bittorent outright might seem ironic and rate limiting + detected BitTorrent packets." Blocking Bittorent outright seems ironic and rate limiting might be a better option (\citeauthor[2]{Moore}). \subsection*{Scheduler} A possible solution to congestion is to rework how Tor schedules traffic. A Tor onion router - treats all data equally when deciding when to forward a cell. Furthermore, a router will - forward data for multiple circuits using a Round Robin algorithm to determine which circuit it - will serve. This means that a circuit with data that comes in bursts will have the same priority - as a circuit that contains a periodic flow of data. This is not optimal because data that comes - in intermittently is usually sensitive to latency and should take priority over traffic that + treats all data equally when deciding when to forward a cell. Furthermore, a router will forward + data for multiple circuits using a Round Robin algorithm to determine which circuit it will + serve. This means that a circuit with data that comes in bursts will have the same priority as a + circuit that contains a periodic flow of data. This is not optimal because data that comes in + intermittently is usually sensitive to latency and should take priority over traffic that arrives at regular intervals (\citeauthor[2]{unfair}). There have been multiple scheduling schemes proposed to replace the Round Robin scheduler. A large part my literature review will be spent reviewing these scheduling algorithms and their effect on delay and latency. -\subsubsection*{White Papers} +\subsection*{White Papers} \begin{itemize} \item \citeauthor*{unfair}: This paper explores the mechanisms for handling congestion @@ -109,9 +110,9 @@ \subsubsection*{White Papers} \citeauthor*{delay}: This paper investigates where and how Tor is unfair to certain kinds of traffic. \item \citeauthor*{Bauer}: This paper discusses the consequences of replacing the Round Robin algorithm and - proposes a new algorithm. + proposes a new scheduling algorithm. \item - \citeauthor*{Edman}: This paper explores modifications to Tor's path selection algorithm to help + \citeauthor*{Edman}: This paper explores modifying Tor's path selection algorithm to help clients avoid observers from discovering their identities. \item \citeauthor*{Moore}: This paper describes a different idea of how to improve latency. The @@ -133,5 +134,6 @@ \section*{Conclusion} congestion and latency issues within the Tor network. \bibliographystyle{mla-good} +%\bibliographystyle{plain-annote} \bibliography{sample} \end{document}