summary refs log tree commit diff
path: root/posts/2023-01-04_advent-of-wasm.md
diff options
context:
space:
mode:
authorAshelyn Rose <git@tempest.dev>2023-05-08 19:25:46 -0600
committerAshelyn Rose <git@tempest.dev>2023-05-08 19:29:19 -0600
commitd89d92d3936683f4212186cef517c7930dd5b33a (patch)
treecba24caddd1dc5f950b5e42eb333261f0c13dca5 /posts/2023-01-04_advent-of-wasm.md
parent6cddfdf8fe9bccc291ee8625d42cb42fd4ce2134 (diff)
add markdown rendering, copy in old posts
Diffstat (limited to 'posts/2023-01-04_advent-of-wasm.md')
-rw-r--r--posts/2023-01-04_advent-of-wasm.md75
1 files changed, 75 insertions, 0 deletions
diff --git a/posts/2023-01-04_advent-of-wasm.md b/posts/2023-01-04_advent-of-wasm.md
new file mode 100644
index 0000000..12a48c8
--- /dev/null
+++ b/posts/2023-01-04_advent-of-wasm.md
@@ -0,0 +1,75 @@
+---
+title: Advent of Wasm
+subtitle: Now with 87% more pain
+author: rose
+---
+
+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.
+
+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.
+
+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?"
+
+<br/>
+
+Turns out I was definitely not ready for this.
+
+## So what was so hard about it?
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
+
+## Tips if you want to get into writing wasm by hand?
+
+Uhh ... maybe consider don't?
+
+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.
+
+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.
+
+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.
+