Add advent of wasm page
parent
a4ab17b00d
commit
5bb87b6733
@ -0,0 +1,119 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Advent of Wasm</title>
|
||||
<link rel="stylesheet" href="/resources/style.css"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<a href="/">Home</a>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/posts/">Posts</a>
|
||||
</nav>
|
||||
<h1>
|
||||
Advent of Wasm
|
||||
<span class="subtitle">Now with 87% more pain</span>
|
||||
</h1>
|
||||
|
||||
<p>
|
||||
So the last few years I have done Advent of Code off and on. Sometimes
|
||||
I have tried to learn a new language, other times I was just trying to
|
||||
beat my dad each evening. This year though, this year I don't know what
|
||||
I was thinking.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It was several weeks after everyone else had started, I had largely written
|
||||
it off for the year - I was not up for it. Until a terrible idea crossed
|
||||
my mind.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Like an intrusive thought, my mind asked: "Well you've been wanting to do
|
||||
something in web assembly for a while right? How bad could it be?"
|
||||
</p>
|
||||
|
||||
<br/>
|
||||
|
||||
<p>
|
||||
Turns out I was definitely not ready for this.
|
||||
</p>
|
||||
|
||||
<h2>So what was so hard about it?</h2>
|
||||
|
||||
<p>
|
||||
More than anything else, I forgot how much you need to do by hand to do
|
||||
any sort of assembly. The first day saw me spending several hours just
|
||||
on some loader code to pass the puzzle input in from JS, call a wasm
|
||||
function, and then read back the result.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Next was a few functions for reading numbers out of the wasm memory buffer,
|
||||
parsing them from ascii, etc. The core read loop was not too tricky, but
|
||||
the bit that took far longer than it had any reason to was converting my
|
||||
answer back to ascii and shoving it into an output area.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Really none of it was surprising, and none of it <em><strong>*should*</strong></em>
|
||||
have been that hard ... it's just been a while since this Javascript girl
|
||||
has written truly low-level code.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To make matters worse I got hard-core distracted by the non-wasm part of
|
||||
my wasm project. After the first day I returned to my stub JS loader and
|
||||
expanded it into a little wasm explorer.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I added a code view, syntax highlighting, auto-loaded my puzzle inputs,
|
||||
even made a janky little dynamic list that would automatically pick up
|
||||
new days' solutions as I added them to the repo without needing me to
|
||||
touch the loader page each day.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the end I'm really quite proud of it, I will absolutely be reusing
|
||||
this setup for future years, and you should
|
||||
<a href="https://aoc2022.tempest.dev/" target="_blank">check it out</a>
|
||||
if you haven't already ... but for wanting to challenge myself with
|
||||
something new I was doing a lot of the same-old.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Ultimately I got through 3 days before giving up jusst because every
|
||||
step along the way involved <em><strong>*so much*</strong></em> extra
|
||||
code. I may come back to some of the puzzles later, but for now I'm
|
||||
kind of happy with what I did, and I don't feel like I need to prove
|
||||
myself by doing more. I was doing it for fun, and so I stopped when
|
||||
it stopped being fun.
|
||||
</p>
|
||||
|
||||
<h2>Tips if you want to get into writing wasm by hand?</h2>
|
||||
|
||||
<p>
|
||||
Uhh ... maybe consider don't?
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Jokes aside: do a throwaway project or two so you get used to passing
|
||||
data into and out of wasm, whatever parsing you're going to do, etc.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Do everything in your power to make sure you can focus on the actual
|
||||
wasm part of your project, because (at least if you're anything like
|
||||
me) it's easy to get sidetracked with all that.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With that said: I had fun. Doing new things is always a treat, so if
|
||||
you're looking for something new to try definitely consider giving
|
||||
webassembly a look.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue