summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2022-08-07 21:34:20 +0200
committerTom Smeding <tom@tomsmeding.com>2022-08-07 21:34:20 +0200
commitf133be72b65c2f685fac8574bf38c2549343214a (patch)
tree0534b6cc28b782f5fe9d64d1098cbd78e5de7ca8
parent6082f4ca1060bdf1873a71cfc7b8b2df289e71f7 (diff)
Load publications from publications.json
-rw-r--r--index.html14
-rw-r--r--publications.json61
-rwxr-xr-xwebserver.js70
3 files changed, 135 insertions, 10 deletions
diff --git a/index.html b/index.html
index bc52009..fe0e403 100644
--- a/index.html
+++ b/index.html
@@ -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&aacute;k&aacute;r: &ldquo;Efficient Dual-Numbers Reverse AD via Well-Known Program Transformations&rdquo;. 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&aacute;k&aacute;r, Tom Smeding: &ldquo;CHAD: Combinatory Homomorphic Automatic Differentiation&rdquo;. 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&aacute;k&aacute;r: &ldquo;Dual-Numbers Reverse AD, Efficiently&rdquo;. 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: &ldquo;Reverse Automatic Differentiation for Accelerate&rdquo;. Master thesis at Utrecht University. Supervisors: Trevor McDonell, Matthijs V&aacute;k&aacute;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: &ldquo;Fast Large-Integer Matrix Multiplication&rdquo;. 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&aacute;k&aacute;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&aacute;k&aacute;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 += ": &ldquo;" + obj.title + "&rdquo;.";
+ 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: