Kind of silly that I'm already on the third iteration of the website. But the previous one was a bit over-engineered and hard to maintain. I actually can't even get it to compile anymore, it errors out while trying to build the wasm binary.
So it was either migrate from sapper (which is deprecated and broken) to svelte-kit (the successor to sapper), or to simplify. I simplified.
The new tech jenga tower is:
Soupault for building the website
AsciiDoctor for the pages
cmark-gfm for processing the markdown in the github releases
Several plugins and scripts copied from my personal website
Vite for compiling the javascript
wasm-pack for building the wasm binary
Rink's website will now be completely static, so operating it is easier. The javascript and wasm is quarantined to the index page where a rink repl is active, the other pages are plain html.
The currency fetching is now a totally separate piece of code from the website. It makes it simpler and requires less code to be loaded during the regular cron job.
The javascript is way simpler now. It only manipulates the part of the page that need to be dynamic. It also uses the token format machinery instead of directly converting rink's output AST to html.
Pros:
Way lighter, faster page load times.
Easier to maintain.
Site contains more information now. An about page, the manual, and a releases tab with DL links.
No more URL spam that makes search engines think the site is a content farm.
Actually acts as a REPL now so you can run multiple queries, use ans, up/down arrows to re-run previous queries.
Proper sandboxing - queries that timeout cause the worker to be killed and restarted.
Now has a progress indicator on downloading the wasm blob, which is good on slow connections.
Cons:
Even more of a custom setup than before.
It doesn't work offline anymore. At least not until I add a new service worker, which will be a real pain to debug.
The interactive parts (the rink REPL) require javascript to work now.
A lot of the old URLs like /query/abc and /units/meter are broken. I think this is fine though. I can add redirects in nginx that point them to /?q=abc and /?q=meter.
Todo:
[x] Finish extracting the currency updater from the old code and make sure it works.
[x] Updated documentation on how to setup/use/deploy this.
[x] Limit max history length to something like 200.
[x] Add a permalink on each query output for easy sharing.
Kind of silly that I'm already on the third iteration of the website. But the previous one was a bit over-engineered and hard to maintain. I actually can't even get it to compile anymore, it errors out while trying to build the wasm binary.
So it was either migrate from sapper (which is deprecated and broken) to svelte-kit (the successor to sapper), or to simplify. I simplified.
The new tech jenga tower is:
Rink's website will now be completely static, so operating it is easier. The javascript and wasm is quarantined to the index page where a rink repl is active, the other pages are plain html.
The currency fetching is now a totally separate piece of code from the website. It makes it simpler and requires less code to be loaded during the regular cron job.
The javascript is way simpler now. It only manipulates the part of the page that need to be dynamic. It also uses the token format machinery instead of directly converting rink's output AST to html.
Pros:
ans
, up/down arrows to re-run previous queries.Cons:
/query/abc
and/units/meter
are broken. I think this is fine though. I can add redirects in nginx that point them to/?q=abc
and/?q=meter
.Todo:
Screenshots
REPL
About page