diff options
-rw-r--r-- | index.html | 14 | ||||
-rw-r--r-- | publications.json | 61 | ||||
-rwxr-xr-x | webserver.js | 70 |
3 files changed, 135 insertions, 10 deletions
@@ -38,15 +38,11 @@ div.main-content{ <p> I've also <a href="/blog">written some notes</a> at some point. </p> - - <h2>Academic publications</h2> - <ul id="pubs-ul"> - <li>2022-07 Tom Smeding, Matthijs Vákár: “Efficient Dual-Numbers Reverse AD via Well-Known Program Transformations”. Preprint, submitted to POPL. [<a href="https://arxiv.org/abs/2207.03418" target="_blank">arxiv</a>, <a href="https://github.com/tomsmeding/ad-dualrev-th" target="_blank">code</a>]</li> - <li>2022-06 Matthijs Vákár, Tom Smeding: “CHAD: Combinatory Homomorphic Automatic Differentiation”. Preprint, to be published in TOPLAS. [<a href="https://arxiv.org/abs/2103.15776" target="_blank">arxiv</a>, <a href="https://github.com/VMatthijs/CHAD" target="_blank">code</a>]</li> - <li>2022-05 Tom Smeding, Matthijs Vákár: “Dual-Numbers Reverse AD, Efficiently”. Preprint. [<a href="https://arxiv.org/abs/2205.11368" target="_blank">arxiv</a>, <a href="https://github.com/tomsmeding/ad-dualrev-th" target="_blank">code</a>]</li> - <li>2021: “Reverse Automatic Differentiation for Accelerate”. Master thesis at Utrecht University. Supervisors: Trevor McDonell, Matthijs Vákár. [<a href="https://studenttheses.uu.nl/bitstream/handle/20.500.12932/38958/report.pdf?sequence=1&isAllowed=y" target="_blank">PDF</a>, <a href="https://github.com/tomsmeding/accelerate/tree/no-explode" target="_blank">code</a>]</li> - <li>2018: “Fast Large-Integer Matrix Multiplication”. Bachelor thesis at Leiden University. Supervisors: Peter Bruin, Kristian Rietveld. [<a href="https://www.universiteitleiden.nl/binaries/content/assets/science/mi/scripties/bachelor/2017-2018/smeding-bsc-scriptie.pdf" target="_blank">PDF</a>, <a href="https://github.com/tomsmeding/bachelor-thesis" target="_blank">code</a>]</li> - </ul> + <details><summary><u>For a list of my academic publications, click here.</u></summary> + <ul id="pubs-ul"> + <!--PUBS-REPLACE-START--> (Info missing, server misconfigured) <!--PUBS-REPLACE-END--> + </ul> + </details> </div> </body> </html> diff --git a/publications.json b/publications.json new file mode 100644 index 0000000..aa30f17 --- /dev/null +++ b/publications.json @@ -0,0 +1,61 @@ +{ + "authors": { + "tom": "Tom Smeding", + "matthijs": "Matthijs Vákár" + }, + "pubs": [ + { + "year": 2022, + "month": 7, + "authors": ["tom", "matthijs"], + "title": "Efficient Dual-Numbers Reverse AD via Well-Known Program Transformations", + "preprint": "submitted to POPL", + "links": [ + {"type": "arxiv", "id": "2207.03418"}, + {"type": "code", "url": "https://github.com/tomsmeding/ad-dualrev-th"} + ] + }, + { + "year": 2022, + "month": 6, + "authors": ["matthijs", "tom"], + "title": "CHAD: Combinatory Homomorphic Automatic Differentiation", + "preprint": "to be published in TOPLAS", + "links": [ + {"type": "arxiv", "id": "2103.15776"}, + {"type": "code", "url": "https://github.com/VMatthijs/CHAD"} + ] + }, + { + "year": 2022, + "month": 5, + "authors": ["tom", "matthijs"], + "title": "Dual-Numbers Reverse AD, Efficiently", + "preprint": true, + "links": [ + {"type": "arxiv", "id": "2205.11368"}, + {"type": "code", "url": "https://github.com/tomsmeding/ad-dualrev-th"} + ] + }, + { + "year": 2021, + "authors": ["tom"], + "title": "Reverse Automatic Differentiation for Accelerate", + "note": "Master thesis at Utrecht University. Supervisors: Trevor McDonell, Matthijs Vákár.", + "links": [ + {"type": "pdf", "url": "https://studenttheses.uu.nl/bitstream/handle/20.500.12932/38958/report.pdf?sequence=1&isAllowed=y"}, + {"type": "code", "url": "https://github.com/tomsmeding/accelerate/tree/no-explode"} + ] + }, + { + "year": 2018, + "authors": ["tom"], + "title": "Fast Large-Integer Matrix Multiplication", + "note": "Bachelor thesis at Leiden University. Supervisors: Peter Bruin, Kristian Rietveld.", + "links": [ + {"type": "pdf", "url": "https://www.universiteitleiden.nl/binaries/content/assets/science/mi/scripties/bachelor/2017-2018/smeding-bsc-scriptie.pdf"}, + {"type": "code", "url": "https://github.com/tomsmeding/bachelor-thesis"} + ] + } + ] +} diff --git a/webserver.js b/webserver.js index f867c74..6b3a172 100755 --- a/webserver.js +++ b/webserver.js @@ -92,6 +92,68 @@ for (let i = 0; i < module_list.length; i++) { } +function padLeft(s, len, fill) { + let prefix = ""; + const num = len - s.length; + for (let i = 0; i < num; i++) prefix += fill; + return prefix + s; +} + +function buildPublicationsHTML(info) { + let res = ""; + for (const obj of info.pubs) { + if (res.length != 0) res += "\n\t\t\t"; + + res += "<li>"; + res += obj.year; + if ("month" in obj) res += "-" + padLeft(obj.month + "", 2, "0") + res += " "; + res += obj.authors.map(key => key in info.authors ? info.authors[key] : key).join(", "); + res += ": “" + obj.title + "”."; + if ("preprint" in obj) { + res += " Preprint"; + if (typeof obj.preprint == "string") res += ", " + obj.preprint; + res += "."; + } + if ("note" in obj) res += " " + obj.note; + if ("links" in obj && obj.links.length > 0) { + res += " ["; + const anchors = []; + for (const link of obj.links) { + let name, url; + switch (link.type) { + case "arxiv": + name = "arxiv"; + url = "https://arxiv.org/abs/" + link.id; + break + + case "code": + name = "code"; + url = link.url; + break; + + case "pdf": + name = "PDF"; + url = link.url; + break; + + default: + throw new Error("Unknown publication link type " + link.type); + } + anchors.push("<a href=\"" + url + "\" target=\"_blank\">" + name + "</a>"); + } + res += anchors.join(", "); + res += "]" + } + res += "</li>"; + } + + return res; +} + +const publicationsHTML = buildPublicationsHTML(JSON.parse(fs.readFileSync(cmn.serverdir + "/publications.json"))); + + function anyComponentHidden(fname) { return fname[0] == "." || fname.indexOf("/.") != -1; } @@ -153,7 +215,11 @@ function makeUrlSafe(req, sliceLength) { app.get("/", function (req, res) { - res.sendFile(cmn.serverdir + "/index.html"); + // res.sendFile(cmn.serverdir + "/index.html"); + res.send( + String(fs.readFileSync(cmn.serverdir + "/index.html")) + .replace(/<!--PUBS-REPLACE-START-->.*<!--PUBS-REPLACE-END-->/, publicationsHTML) + ); // res.send( // String(fs.readFileSync(cmn.serverdir + "/index.html")) // .replace(/<!--<<PULSE-KEYS>>-->/, whatpulse["keys"]) @@ -244,3 +310,5 @@ const server = httpServer.listen(PORT, function () { const port = server.address().port; console.log("Server listening at http://" + host + ":" + port); }); + +// vim: set sw=4 ts=4 noet: |