diff --git a/KennedyOliver-CV.pdf b/KennedyOliver-CV.pdf new file mode 100644 index 00000000..1eb1a289 Binary files /dev/null and b/KennedyOliver-CV.pdf differ diff --git a/Rakefile b/Rakefile index b14d5f3d..aea417c2 100644 --- a/Rakefile +++ b/Rakefile @@ -14,6 +14,7 @@ require "nsfconflicts.rb" require "ubreporting.rb" require "bootstrap_markdown.rb" require "disqus.rb" +require "ABET" include GemSmith $db = JDB.new("db") @@ -236,6 +237,16 @@ file "okennedy_full.pdf" => "okennedy_full.tex" do system("pdflatex okennedy_full.tex") end +file "KennedyOliver-CV.tex" => (["db/cv/okennedy.json", "lib/cv.rb", "lib/ABET.rb", "Rakefile"]+Dir["db/cv/okennedy/**"]) do + File.open("KennedyOliver-CV.tex", "w+") do |fh| + ABET_CV.new(fh).gen + end +end +file "KennedyOliver-CV.pdf" => "KennedyOliver-CV.tex" do + system("pdflatex KennedyOliver-CV.tex") +end +task abet_cv: "KennedyOliver-CV.pdf" + file "artifacts/okennedy_collaborators.txt" => ($db.files + ["lib/nsfconflicts.rb"]) do NSFConflicts.new("Oliver Kennedy", $db). render("artifacts/okennedy_collaborators.txt") diff --git a/db/cv/okennedy.json b/db/cv/okennedy.json index dd7f5cd9..805c0a35 100644 --- a/db/cv/okennedy.json +++ b/db/cv/okennedy.json @@ -161,7 +161,7 @@ } ], "chairs" : [ - { "venue" : "pVLDB", "track" : "Reproducability", "years" : [ 2018 ] }, + { "venue" : "pVLDB", "track" : "Reproducability", "years" : [ 2018, 2019, 2020 ] }, { "venue" : "SoCC", "track" : "Scholarship", "years" : [ 2019 ] } ], "reviewer" : [ @@ -199,7 +199,8 @@ ] }, { "org" : "Coder Dojo Mentor", "years" : [2013, 2014] }, - { "org" : "Science is Elementary Class Leader", "years" : [2014, 2015, 2016] } + { "org" : "Science is Elementary Class Leader", "years" : [2014, 2015, 2016] }, + { "org" : "CSExplore", "years": [2019] } ], "service" : { "general" : [ diff --git a/lib/ABET.rb b/lib/ABET.rb new file mode 100644 index 00000000..be66b83f --- /dev/null +++ b/lib/ABET.rb @@ -0,0 +1,150 @@ +require "text.rb" +require "latex.rb" + +class ABET_CV < CV + + def initialize(output) + super("okennedy", output, + title: "ABET CV: Oliver Kennedy", + include_pending_papers: true, + include_pending_grants: true, + include_rejected_grants: false, + include_blurb: false, + since: { + employment: 2012, + service: 2017, + publications: 2010 + } + ) + + end + + def do_section(title) + noindent + textbf { puts title } + yield + puts "" + medskip + end + + def make_section(title) + end + + def gen() + documentclass("12pt", "article") + usepackage "fullpage" + usepackage "bibentry" + usepackage "enumitem" + puts_direct("\\usepackage[margin=.75in]{geometry}") + + puts_direct("\\setlist[itemize,1]{leftmargin=\\dimexpr 26pt-.2in}") + + + document do + pagestyle "empty" + + do_section("Name") do + puts "Oliver Kennedy" + end + + do_section("Education") do + puts_direct "\\vspace*{-3mm}" + render_education + end + + do_section("Academic Experience") do + puts_direct "\\vspace*{-3mm}" + render_employment_history(@data["employment"].take(2)) + end + + do_section("Non-academic Experience") do + puts "None" + end + + do_section("Certifications or professional registrations") do + puts "None" + end + + do_section("Current membership in professional organizations") do + puts "ACM, IEEE" + end + + do_section("Honors and awards") do + puts_direct "\\vspace*{-3mm}" + render_honors + end + + do_section("Service activities") do + puts "" + noindent + textit { puts "Leadership:" } + puts(@data["chairs"] + .map do |meta| + "#{LabMetadata.venue_name(meta, size: :short)} (#{duration(meta)})" + end.join(", ")) + + puts "" + noindent + textit { puts "Program Committees: " } + puts(@data["reviewer"] + .select { |r| r.fetch("pc", true) } + .map do |meta| + "#{LabMetadata.venue_name(meta, size: :short)} (#{duration(meta)})" + end.join(", ")) + + puts "" + noindent + textit { puts "Reviewer: " } + puts(@data["reviewer"] + .select { |r| r.fetch("pc", false) } + .map do |meta| + "#{LabMetadata.venue_name(meta, size: :short)} (#{duration(meta)})" + end.join(", ")) + + puts "" + noindent + textit { puts "Outreach: " } + puts(@data["volunteering"] + .map do |meta| + "#{meta["org"]} (#{duration(meta)})" + end.join(", ")) + + puts "" + noindent + textit { puts "Departmental Service: " } + puts(@data["service"]["dept"][0]["service"] + .map do |meta| + "#{meta["org"]} (#{duration(meta)})" + end.join(", ")) + end + + do_section("Recent publications and presentations") do + top_venues = [ "SIGMOD", "ICDE", "CIDR" ] + top_pubs = + LabMetadata.publications_for(@who) + .select do |pub| + get_venue_type(pub) == "journal" or + ( top_venues.include?(pub["venue"]) and + not pub.has_key? "track" ) + end + .select { |pub| pub["year"].to_i >= @since[:publications] } + .each do |pub| + puts "" + noindent + textit { + puts "``#{pub["title"]}\"" + } + puts " --- #{pub["authors"].join(", ")} (#{pub["venue"]} #{pub["year"]})" + end + # .map { |pub| pub["title"] } + # .join(", ") + # puts "#{top_pubs}" + end + + do_section("Recent professional development activities") do + puts "None" + end + + end + end +end \ No newline at end of file diff --git a/lib/cv.rb b/lib/cv.rb index 638e1db5..72715f56 100644 --- a/lib/cv.rb +++ b/lib/cv.rb @@ -192,9 +192,9 @@ class CV < Latex::Builder ############### EMPLOYMENT HISTORY ################ - def render_employment_history + def render_employment_history(elems = @data["employment"]) make_section("Employment History") - build_filtered_itemize(:employment, @data["employment"]) do |r| + build_filtered_itemize(:employment, elems) do |r| puts "#{r["title"]}, #{r["employer"]}" hfill puts duration(r)