Implement Web Button technology
BIN
assets/images/button_accursed_js.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
assets/images/button_arch_btw.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/images/button_bee.png
Normal file
After Width: | Height: | Size: 967 B |
BIN
assets/images/button_camtime.png
Normal file
After Width: | Height: | Size: 462 B |
BIN
assets/images/button_dyson_sphere.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
assets/images/button_factorio.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
assets/images/button_firefox.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/images/button_ftl.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
assets/images/button_irc.gif
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
assets/images/button_lift.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
assets/images/button_linuxusedhere.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/images/button_mastodon.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
assets/images/button_minecraft.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
assets/images/button_nginx.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/images/button_novelai.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/images/button_nvidia.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/images/button_openai.gif
Normal file
After Width: | Height: | Size: 129 KiB |
BIN
assets/images/button_perceptron.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
assets/images/button_potatos.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/images/button_prometheus_labs.png
Normal file
After Width: | Height: | Size: 509 B |
BIN
assets/images/button_rhombic_dodecahedron.gif
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
assets/images/button_rss.png
Normal file
After Width: | Height: | Size: 517 B |
BIN
assets/images/button_rust.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
assets/images/button_time.gif
Normal file
After Width: | Height: | Size: 157 KiB |
BIN
assets/images/button_webpassion.gif
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
assets/images/button_www.gif
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
assets/images/button_x86.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
@ -41,3 +41,7 @@ You can contact me through [email](mailto:me@osmarks.net), <span class="hoverdef
|
|||||||
* Causing inscrutable networking problems.
|
* Causing inscrutable networking problems.
|
||||||
* Bench press: 77.5kg (5RM).
|
* Bench press: 77.5kg (5RM).
|
||||||
* Nigh-omniscient knowledge of and concern for English grammar.
|
* Nigh-omniscient knowledge of and concern for English grammar.
|
||||||
|
|
||||||
|
::: buttons
|
||||||
|
|
||||||
|
:::
|
@ -24,7 +24,8 @@
|
|||||||
"If at first you don't succeed, destroy all evidence that you tried.",
|
"If at first you don't succeed, destroy all evidence that you tried.",
|
||||||
"One man’s constant is another man’s variable.",
|
"One man’s constant is another man’s variable.",
|
||||||
"All processes that are stable we shall predict. All processes that are unstable we shall control.",
|
"All processes that are stable we shall predict. All processes that are unstable we shall control.",
|
||||||
"This website doesn't exist. This is a Boltzmann website."
|
"This website doesn't exist. This is a Boltzmann website.",
|
||||||
|
"Paperclip rights are human rights."
|
||||||
],
|
],
|
||||||
"feeds": [
|
"feeds": [
|
||||||
"https://www.science.org/blogs/pipeline/feed",
|
"https://www.science.org/blogs/pipeline/feed",
|
||||||
@ -37,5 +38,34 @@
|
|||||||
"https://os.phil-opp.com/rss.xml"
|
"https://os.phil-opp.com/rss.xml"
|
||||||
],
|
],
|
||||||
"dateFormat": "YYYY-MM-DD",
|
"dateFormat": "YYYY-MM-DD",
|
||||||
"microblogSource": "https://b.osmarks.net/outbox"
|
"microblogSource": "https://b.osmarks.net/outbox",
|
||||||
|
"buttons": [
|
||||||
|
["arch_btw.png", "https://archlinux.org/"],
|
||||||
|
["nginx.png", "https://nginx.org/"],
|
||||||
|
["dyson_sphere.png", "https://www.schlockmercenary.com/2001-07-02"],
|
||||||
|
["accursed_js.png", "https://github.com/osmarks/website/blob/master/src/index.js"],
|
||||||
|
["nvidia.png", "/mlrig/"],
|
||||||
|
["firefox.png", "https://www.mozilla.org/en-US/firefox/new/"],
|
||||||
|
["linuxusedhere.png", "/stack/"],
|
||||||
|
["www.gif", "/"],
|
||||||
|
["webpassion.gif", "/"],
|
||||||
|
["prometheus_labs.png", "https://scp-wiki.wikidot.com/prometheus-labs-hub"],
|
||||||
|
["camtime.png", "https://qntm.org/camtime"],
|
||||||
|
["lift.gif", "https://www.reddit.com/r/slatestarcodex/comments/9h2jbi/you_should_probably_lift_weights/"],
|
||||||
|
["minecraft.png", "https://www.minecraft.net/"],
|
||||||
|
["openai.gif", "https://www.youtube.com/watch?v=gA1sNLL6yg4"],
|
||||||
|
["time.gif", "/incdec/"],
|
||||||
|
["mastodon.png", "https://b.osmarks.net/"],
|
||||||
|
["irc.gif", "https://apionet.gh0.pw/"],
|
||||||
|
["novelai.png", "https://novelai.net/"],
|
||||||
|
["ftl.png", "https://subsetgames.com/ftl.html"],
|
||||||
|
["potatos.png", "https://potatos.madefor.cc/"],
|
||||||
|
["factorio.png", "https://factorio.com/"],
|
||||||
|
["rust.png", "https://www.rust-lang.org/"],
|
||||||
|
["x86.png", "https://en.wikipedia.org/wiki/X86"],
|
||||||
|
["rss.png", "/rss.xml"],
|
||||||
|
["bee.png", "https://citrons.xyz/a/memetic-apioform-page.html"],
|
||||||
|
["perceptron.png", "https://en.wikipedia.org/wiki/Perceptron"],
|
||||||
|
["rhombic_dodecahedron.gif", "https://en.wikipedia.org/wiki/Rhombic_dodecahedron"]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
@ -115,6 +115,12 @@ const renderContainer = (tokens, idx) => {
|
|||||||
return `<div class="${options.wide ? "caption wider" : "caption"}">${options.link ? link : ""}<img src="${md.utils.escapeHtml(options.src)}">${options.link ? "</a>" : ""}`
|
return `<div class="${options.wide ? "caption wider" : "caption"}">${options.link ? link : ""}<img src="${md.utils.escapeHtml(options.src)}">${options.link ? "</a>" : ""}`
|
||||||
} else if (blockType === "epigraph") {
|
} else if (blockType === "epigraph") {
|
||||||
return `<div class="epigraph"><div>`
|
return `<div class="epigraph"><div>`
|
||||||
|
} else if (blockType === "buttons") {
|
||||||
|
let out = `<div class="buttons">`
|
||||||
|
for (const button of R.sortBy(x => Math.random(), globalData.buttons)) {
|
||||||
|
out += `<a class="button" href="${md.utils.escapeHtml(button[1])}"><img src="/assets/images/button_${md.utils.escapeHtml(button[0])}" alt="${md.utils.escapeHtml(button[0])}"></a>`
|
||||||
|
}
|
||||||
|
return out
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (blockType === "captioned") {
|
if (blockType === "captioned") {
|
||||||
@ -129,6 +135,8 @@ const renderContainer = (tokens, idx) => {
|
|||||||
ret = `<div class="attribution">${md.utils.escapeHtml("— ") + inner}</div>` + ret
|
ret = `<div class="attribution">${md.utils.escapeHtml("— ") + inner}</div>` + ret
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
|
} else if (blockType === "buttons") {
|
||||||
|
return `</div>`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new Error(`unrecognized blockType ${blockType}`)
|
throw new Error(`unrecognized blockType ${blockType}`)
|
||||||
|
@ -37,7 +37,7 @@ $navbar-width: 20rem
|
|||||||
body
|
body
|
||||||
margin: 0
|
margin: 0
|
||||||
font-family: 'Titillium Web', 'Fira Sans', sans-serif
|
font-family: 'Titillium Web', 'Fira Sans', sans-serif
|
||||||
line-height: 1.3
|
line-height: 1.4
|
||||||
|
|
||||||
pre, code, .deemph
|
pre, code, .deemph
|
||||||
font-family: 'Miracode', monospace
|
font-family: 'Miracode', monospace
|
||||||
@ -359,3 +359,6 @@ table
|
|||||||
|
|
||||||
.next
|
.next
|
||||||
text-align: right
|
text-align: right
|
||||||
|
|
||||||
|
.buttons .button
|
||||||
|
margin: 0.2em
|