diff --git a/static/images/posts/2020-wrapup/buddy-auto.gif b/src/assets/blog/2020-wrapup/buddy-auto.gif similarity index 100% rename from static/images/posts/2020-wrapup/buddy-auto.gif rename to src/assets/blog/2020-wrapup/buddy-auto.gif diff --git a/static/images/posts/ampr-vultr-bgp/request-page.png b/src/assets/blog/ampr-vultr-bgp/request-page.png similarity index 100% rename from static/images/posts/ampr-vultr-bgp/request-page.png rename to src/assets/blog/ampr-vultr-bgp/request-page.png diff --git a/static/images/posts/amprnet-bgp-announce/internet_1.drawio b/src/assets/blog/amprnet-bgp-announce/internet_1.drawio similarity index 100% rename from static/images/posts/amprnet-bgp-announce/internet_1.drawio rename to src/assets/blog/amprnet-bgp-announce/internet_1.drawio diff --git a/static/images/posts/amprnet-bgp-announce/internet_1.svg b/src/assets/blog/amprnet-bgp-announce/internet_1.svg similarity index 100% rename from static/images/posts/amprnet-bgp-announce/internet_1.svg rename to src/assets/blog/amprnet-bgp-announce/internet_1.svg diff --git a/static/images/posts/angle-problem/drawing.svg b/src/assets/blog/angle-problem/drawing.svg similarity index 100% rename from static/images/posts/angle-problem/drawing.svg rename to src/assets/blog/angle-problem/drawing.svg diff --git a/static/images/posts/aprs-usage/aprs_version_numbers.png b/src/assets/blog/aprs-usage/aprs_version_numbers.png similarity index 100% rename from static/images/posts/aprs-usage/aprs_version_numbers.png rename to src/assets/blog/aprs-usage/aprs_version_numbers.png diff --git a/static/images/posts/aprs-usage/beacon_vs_non_beacon.png b/src/assets/blog/aprs-usage/beacon_vs_non_beacon.png similarity index 100% rename from static/images/posts/aprs-usage/beacon_vs_non_beacon.png rename to src/assets/blog/aprs-usage/beacon_vs_non_beacon.png diff --git a/static/images/posts/aprs-usage/beacon_vs_non_beacon_inet.png b/src/assets/blog/aprs-usage/beacon_vs_non_beacon_inet.png similarity index 100% rename from static/images/posts/aprs-usage/beacon_vs_non_beacon_inet.png rename to src/assets/blog/aprs-usage/beacon_vs_non_beacon_inet.png diff --git a/static/images/posts/aprs-usage/beacon_vs_non_beacon_rf.png b/src/assets/blog/aprs-usage/beacon_vs_non_beacon_rf.png similarity index 100% rename from static/images/posts/aprs-usage/beacon_vs_non_beacon_rf.png rename to src/assets/blog/aprs-usage/beacon_vs_non_beacon_rf.png diff --git a/static/images/posts/aprs-usage/igate_graphic.dot b/src/assets/blog/aprs-usage/igate_graphic.dot similarity index 100% rename from static/images/posts/aprs-usage/igate_graphic.dot rename to src/assets/blog/aprs-usage/igate_graphic.dot diff --git a/static/images/posts/aprs-usage/igate_graphic.svg b/src/assets/blog/aprs-usage/igate_graphic.svg similarity index 100% rename from static/images/posts/aprs-usage/igate_graphic.svg rename to src/assets/blog/aprs-usage/igate_graphic.svg diff --git a/static/images/posts/aprs-usage/internet_vs_rf.png b/src/assets/blog/aprs-usage/internet_vs_rf.png similarity index 100% rename from static/images/posts/aprs-usage/internet_vs_rf.png rename to src/assets/blog/aprs-usage/internet_vs_rf.png diff --git a/static/images/posts/aprs-usage/top_10_destinations.png b/src/assets/blog/aprs-usage/top_10_destinations.png similarity index 100% rename from static/images/posts/aprs-usage/top_10_destinations.png rename to src/assets/blog/aprs-usage/top_10_destinations.png diff --git a/static/images/posts/aprs-usage/top_10_sources.png b/src/assets/blog/aprs-usage/top_10_sources.png similarity index 100% rename from static/images/posts/aprs-usage/top_10_sources.png rename to src/assets/blog/aprs-usage/top_10_sources.png diff --git a/static/images/posts/bell-ipv6/hh4k.png b/src/assets/blog/bell-ipv6/hh4k.png similarity index 100% rename from static/images/posts/bell-ipv6/hh4k.png rename to src/assets/blog/bell-ipv6/hh4k.png diff --git a/static/images/posts/bell-ipv6/sit.png b/src/assets/blog/bell-ipv6/sit.png similarity index 100% rename from static/images/posts/bell-ipv6/sit.png rename to src/assets/blog/bell-ipv6/sit.png diff --git a/static/images/posts/bell-ipv6/udm-pro.png b/src/assets/blog/bell-ipv6/udm-pro.png similarity index 100% rename from static/images/posts/bell-ipv6/udm-pro.png rename to src/assets/blog/bell-ipv6/udm-pro.png diff --git a/static/images/posts/bin-images/dll.png b/src/assets/blog/bin-images/dll.png similarity index 100% rename from static/images/posts/bin-images/dll.png rename to src/assets/blog/bin-images/dll.png diff --git a/static/images/posts/bin-images/dll2.png b/src/assets/blog/bin-images/dll2.png similarity index 100% rename from static/images/posts/bin-images/dll2.png rename to src/assets/blog/bin-images/dll2.png diff --git a/static/images/posts/camping-radio/IMG_0218.jpg b/src/assets/blog/camping-radio/IMG_0218.jpg similarity index 100% rename from static/images/posts/camping-radio/IMG_0218.jpg rename to src/assets/blog/camping-radio/IMG_0218.jpg diff --git a/static/images/posts/camping-radio/PXL_20240713_194740810.jpg b/src/assets/blog/camping-radio/PXL_20240713_194740810.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240713_194740810.jpg rename to src/assets/blog/camping-radio/PXL_20240713_194740810.jpg diff --git a/static/images/posts/camping-radio/PXL_20240713_202756448.jpg b/src/assets/blog/camping-radio/PXL_20240713_202756448.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240713_202756448.jpg rename to src/assets/blog/camping-radio/PXL_20240713_202756448.jpg diff --git a/static/images/posts/camping-radio/PXL_20240714_151953924.jpg b/src/assets/blog/camping-radio/PXL_20240714_151953924.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240714_151953924.jpg rename to src/assets/blog/camping-radio/PXL_20240714_151953924.jpg diff --git a/static/images/posts/camping-radio/PXL_20240714_153600599.jpg b/src/assets/blog/camping-radio/PXL_20240714_153600599.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240714_153600599.jpg rename to src/assets/blog/camping-radio/PXL_20240714_153600599.jpg diff --git a/static/images/posts/camping-radio/PXL_20240714_153706887.jpg b/src/assets/blog/camping-radio/PXL_20240714_153706887.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240714_153706887.jpg rename to src/assets/blog/camping-radio/PXL_20240714_153706887.jpg diff --git a/static/images/posts/camping-radio/PXL_20240714_162523877.jpg b/src/assets/blog/camping-radio/PXL_20240714_162523877.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240714_162523877.jpg rename to src/assets/blog/camping-radio/PXL_20240714_162523877.jpg diff --git a/static/images/posts/camping-radio/PXL_20240719_200332311.jpg b/src/assets/blog/camping-radio/PXL_20240719_200332311.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240719_200332311.jpg rename to src/assets/blog/camping-radio/PXL_20240719_200332311.jpg diff --git a/static/images/posts/camping-radio/PXL_20240719_201852022.jpg b/src/assets/blog/camping-radio/PXL_20240719_201852022.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240719_201852022.jpg rename to src/assets/blog/camping-radio/PXL_20240719_201852022.jpg diff --git a/static/images/posts/camping-radio/PXL_20240720_200504715.jpg b/src/assets/blog/camping-radio/PXL_20240720_200504715.jpg similarity index 100% rename from static/images/posts/camping-radio/PXL_20240720_200504715.jpg rename to src/assets/blog/camping-radio/PXL_20240720_200504715.jpg diff --git a/static/images/posts/camping-radio/Screenshot_20240714-124916.png b/src/assets/blog/camping-radio/Screenshot_20240714-124916.png similarity index 100% rename from static/images/posts/camping-radio/Screenshot_20240714-124916.png rename to src/assets/blog/camping-radio/Screenshot_20240714-124916.png diff --git a/static/images/posts/camping-radio/original_3fd7fa07-f8fe-4dba-aeb1-aa1d689f300c_Screenshot_20240720-193018.png b/src/assets/blog/camping-radio/original_3fd7fa07-f8fe-4dba-aeb1-aa1d689f300c_Screenshot_20240720-193018.png similarity index 100% rename from static/images/posts/camping-radio/original_3fd7fa07-f8fe-4dba-aeb1-aa1d689f300c_Screenshot_20240720-193018.png rename to src/assets/blog/camping-radio/original_3fd7fa07-f8fe-4dba-aeb1-aa1d689f300c_Screenshot_20240720-193018.png diff --git a/static/images/posts/camping-radio/spkr-wire-efhw-lengths.png b/src/assets/blog/camping-radio/spkr-wire-efhw-lengths.png similarity index 100% rename from static/images/posts/camping-radio/spkr-wire-efhw-lengths.png rename to src/assets/blog/camping-radio/spkr-wire-efhw-lengths.png diff --git a/static/images/posts/commit-sync/commit_graph.png b/src/assets/blog/commit-sync/commit_graph.png similarity index 100% rename from static/images/posts/commit-sync/commit_graph.png rename to src/assets/blog/commit-sync/commit_graph.png diff --git a/static/images/posts/frc-codespaces/codespaces-code.png b/src/assets/blog/frc-codespaces/codespaces-code.png similarity index 100% rename from static/images/posts/frc-codespaces/codespaces-code.png rename to src/assets/blog/frc-codespaces/codespaces-code.png diff --git a/static/images/posts/frc-codespaces/codespaces-menu.png b/src/assets/blog/frc-codespaces/codespaces-menu.png similarity index 100% rename from static/images/posts/frc-codespaces/codespaces-menu.png rename to src/assets/blog/frc-codespaces/codespaces-menu.png diff --git a/static/images/posts/galliumos/arcer_r11_screw.jpg b/src/assets/blog/galliumos/arcer_r11_screw.jpg similarity index 100% rename from static/images/posts/galliumos/arcer_r11_screw.jpg rename to src/assets/blog/galliumos/arcer_r11_screw.jpg diff --git a/static/images/posts/galliumos/fwutil_cros_wp-on.png b/src/assets/blog/galliumos/fwutil_cros_wp-on.png similarity index 100% rename from static/images/posts/galliumos/fwutil_cros_wp-on.png rename to src/assets/blog/galliumos/fwutil_cros_wp-on.png diff --git a/static/images/posts/gamels/steam_app_ids.png b/src/assets/blog/gamels/steam_app_ids.png similarity index 100% rename from static/images/posts/gamels/steam_app_ids.png rename to src/assets/blog/gamels/steam_app_ids.png diff --git a/static/images/posts/gamels/steamdeck-screenshot.png b/src/assets/blog/gamels/steamdeck-screenshot.png similarity index 100% rename from static/images/posts/gamels/steamdeck-screenshot.png rename to src/assets/blog/gamels/steamdeck-screenshot.png diff --git a/static/images/posts/git-aliases/branches.png b/src/assets/blog/git-aliases/branches.png similarity index 100% rename from static/images/posts/git-aliases/branches.png rename to src/assets/blog/git-aliases/branches.png diff --git a/static/images/posts/git-aliases/lscommits.png b/src/assets/blog/git-aliases/lscommits.png similarity index 100% rename from static/images/posts/git-aliases/lscommits.png rename to src/assets/blog/git-aliases/lscommits.png diff --git a/static/images/posts/git-aliases/tree.png b/src/assets/blog/git-aliases/tree.png similarity index 100% rename from static/images/posts/git-aliases/tree.png rename to src/assets/blog/git-aliases/tree.png diff --git a/static/images/posts/intro-to-openscad/all-axis-translate.png b/src/assets/blog/intro-to-openscad/all-axis-translate.png similarity index 100% rename from static/images/posts/intro-to-openscad/all-axis-translate.png rename to src/assets/blog/intro-to-openscad/all-axis-translate.png diff --git a/static/images/posts/intro-to-openscad/axis-arguments.png b/src/assets/blog/intro-to-openscad/axis-arguments.png similarity index 100% rename from static/images/posts/intro-to-openscad/axis-arguments.png rename to src/assets/blog/intro-to-openscad/axis-arguments.png diff --git a/static/images/posts/intro-to-openscad/broken-union.png b/src/assets/blog/intro-to-openscad/broken-union.png similarity index 100% rename from static/images/posts/intro-to-openscad/broken-union.png rename to src/assets/blog/intro-to-openscad/broken-union.png diff --git a/static/images/posts/intro-to-openscad/cube-10mm.png b/src/assets/blog/intro-to-openscad/cube-10mm.png similarity index 100% rename from static/images/posts/intro-to-openscad/cube-10mm.png rename to src/assets/blog/intro-to-openscad/cube-10mm.png diff --git a/static/images/posts/intro-to-openscad/cube-distance.png b/src/assets/blog/intro-to-openscad/cube-distance.png similarity index 100% rename from static/images/posts/intro-to-openscad/cube-distance.png rename to src/assets/blog/intro-to-openscad/cube-distance.png diff --git a/static/images/posts/intro-to-openscad/cube-rotate-all.png b/src/assets/blog/intro-to-openscad/cube-rotate-all.png similarity index 100% rename from static/images/posts/intro-to-openscad/cube-rotate-all.png rename to src/assets/blog/intro-to-openscad/cube-rotate-all.png diff --git a/static/images/posts/intro-to-openscad/cube-rotate-x-45.png b/src/assets/blog/intro-to-openscad/cube-rotate-x-45.png similarity index 100% rename from static/images/posts/intro-to-openscad/cube-rotate-x-45.png rename to src/assets/blog/intro-to-openscad/cube-rotate-x-45.png diff --git a/static/images/posts/intro-to-openscad/cylinder.png b/src/assets/blog/intro-to-openscad/cylinder.png similarity index 100% rename from static/images/posts/intro-to-openscad/cylinder.png rename to src/assets/blog/intro-to-openscad/cylinder.png diff --git a/static/images/posts/intro-to-openscad/gadget.png b/src/assets/blog/intro-to-openscad/gadget.png similarity index 100% rename from static/images/posts/intro-to-openscad/gadget.png rename to src/assets/blog/intro-to-openscad/gadget.png diff --git a/static/images/posts/intro-to-openscad/overlapping.png b/src/assets/blog/intro-to-openscad/overlapping.png similarity index 100% rename from static/images/posts/intro-to-openscad/overlapping.png rename to src/assets/blog/intro-to-openscad/overlapping.png diff --git a/static/images/posts/intro-to-openscad/rectangle.png b/src/assets/blog/intro-to-openscad/rectangle.png similarity index 100% rename from static/images/posts/intro-to-openscad/rectangle.png rename to src/assets/blog/intro-to-openscad/rectangle.png diff --git a/static/images/posts/intro-to-openscad/scad-window.png b/src/assets/blog/intro-to-openscad/scad-window.png similarity index 100% rename from static/images/posts/intro-to-openscad/scad-window.png rename to src/assets/blog/intro-to-openscad/scad-window.png diff --git a/static/images/posts/intro-to-openscad/smooth-cylinder.png b/src/assets/blog/intro-to-openscad/smooth-cylinder.png similarity index 100% rename from static/images/posts/intro-to-openscad/smooth-cylinder.png rename to src/assets/blog/intro-to-openscad/smooth-cylinder.png diff --git a/static/images/posts/intro-to-openscad/smooth-sphere.png b/src/assets/blog/intro-to-openscad/smooth-sphere.png similarity index 100% rename from static/images/posts/intro-to-openscad/smooth-sphere.png rename to src/assets/blog/intro-to-openscad/smooth-sphere.png diff --git a/static/images/posts/intro-to-openscad/sphere-cube-cut.png b/src/assets/blog/intro-to-openscad/sphere-cube-cut.png similarity index 100% rename from static/images/posts/intro-to-openscad/sphere-cube-cut.png rename to src/assets/blog/intro-to-openscad/sphere-cube-cut.png diff --git a/static/images/posts/intro-to-openscad/sphere.png b/src/assets/blog/intro-to-openscad/sphere.png similarity index 100% rename from static/images/posts/intro-to-openscad/sphere.png rename to src/assets/blog/intro-to-openscad/sphere.png diff --git a/static/images/posts/intro-to-openscad/translated-cube-x.png b/src/assets/blog/intro-to-openscad/translated-cube-x.png similarity index 100% rename from static/images/posts/intro-to-openscad/translated-cube-x.png rename to src/assets/blog/intro-to-openscad/translated-cube-x.png diff --git a/static/images/posts/intro-to-openscad/translated-cubes.png b/src/assets/blog/intro-to-openscad/translated-cubes.png similarity index 100% rename from static/images/posts/intro-to-openscad/translated-cubes.png rename to src/assets/blog/intro-to-openscad/translated-cubes.png diff --git a/static/images/posts/intro-to-openscad/unequal-translated-cubes.png b/src/assets/blog/intro-to-openscad/unequal-translated-cubes.png similarity index 100% rename from static/images/posts/intro-to-openscad/unequal-translated-cubes.png rename to src/assets/blog/intro-to-openscad/unequal-translated-cubes.png diff --git a/static/images/posts/intro-to-openscad/union.png b/src/assets/blog/intro-to-openscad/union.png similarity index 100% rename from static/images/posts/intro-to-openscad/union.png rename to src/assets/blog/intro-to-openscad/union.png diff --git a/static/images/posts/intro-to-openscad/workspace.scad b/src/assets/blog/intro-to-openscad/workspace.scad similarity index 100% rename from static/images/posts/intro-to-openscad/workspace.scad rename to src/assets/blog/intro-to-openscad/workspace.scad diff --git a/static/images/posts/ipv6-canvas/v6_canvas_1.png b/src/assets/blog/ipv6-canvas/v6_canvas_1.png similarity index 100% rename from static/images/posts/ipv6-canvas/v6_canvas_1.png rename to src/assets/blog/ipv6-canvas/v6_canvas_1.png diff --git a/static/images/posts/ipv6-canvas/v6_canvas_2.png b/src/assets/blog/ipv6-canvas/v6_canvas_2.png similarity index 100% rename from static/images/posts/ipv6-canvas/v6_canvas_2.png rename to src/assets/blog/ipv6-canvas/v6_canvas_2.png diff --git a/static/images/posts/japanese-input/ibus-general.png b/src/assets/blog/japanese-input/ibus-general.png similarity index 100% rename from static/images/posts/japanese-input/ibus-general.png rename to src/assets/blog/japanese-input/ibus-general.png diff --git a/static/images/posts/japanese-input/ibus-input.png b/src/assets/blog/japanese-input/ibus-input.png similarity index 100% rename from static/images/posts/japanese-input/ibus-input.png rename to src/assets/blog/japanese-input/ibus-input.png diff --git a/static/images/posts/japanese-input/language-installation.png b/src/assets/blog/japanese-input/language-installation.png similarity index 100% rename from static/images/posts/japanese-input/language-installation.png rename to src/assets/blog/japanese-input/language-installation.png diff --git a/static/images/posts/japanese-input/language-settings.png b/src/assets/blog/japanese-input/language-settings.png similarity index 100% rename from static/images/posts/japanese-input/language-settings.png rename to src/assets/blog/japanese-input/language-settings.png diff --git a/static/images/posts/latex-notes/hs_notes_workflow.png b/src/assets/blog/latex-notes/hs_notes_workflow.png similarity index 100% rename from static/images/posts/latex-notes/hs_notes_workflow.png rename to src/assets/blog/latex-notes/hs_notes_workflow.png diff --git a/static/images/posts/leapmotion-photography/controller.jpg b/src/assets/blog/leapmotion-photography/controller.jpg similarity index 100% rename from static/images/posts/leapmotion-photography/controller.jpg rename to src/assets/blog/leapmotion-photography/controller.jpg diff --git a/static/images/posts/leapmotion-photography/leap-visualizer.png b/src/assets/blog/leapmotion-photography/leap-visualizer.png similarity index 100% rename from static/images/posts/leapmotion-photography/leap-visualizer.png rename to src/assets/blog/leapmotion-photography/leap-visualizer.png diff --git a/static/images/posts/ludum-dare-46/ld46-final.png b/src/assets/blog/ludum-dare-46/ld46-final.png similarity index 100% rename from static/images/posts/ludum-dare-46/ld46-final.png rename to src/assets/blog/ludum-dare-46/ld46-final.png diff --git a/static/images/posts/ludum-dare-46/ld46-heartrate.png b/src/assets/blog/ludum-dare-46/ld46-heartrate.png similarity index 100% rename from static/images/posts/ludum-dare-46/ld46-heartrate.png rename to src/assets/blog/ludum-dare-46/ld46-heartrate.png diff --git a/static/images/posts/ludum-dare-46/ld46-hud-v1.png b/src/assets/blog/ludum-dare-46/ld46-hud-v1.png similarity index 100% rename from static/images/posts/ludum-dare-46/ld46-hud-v1.png rename to src/assets/blog/ludum-dare-46/ld46-hud-v1.png diff --git a/static/images/posts/ludum-dare-46/ld46-hud-v2.png b/src/assets/blog/ludum-dare-46/ld46-hud-v2.png similarity index 100% rename from static/images/posts/ludum-dare-46/ld46-hud-v2.png rename to src/assets/blog/ludum-dare-46/ld46-hud-v2.png diff --git a/static/images/posts/ludum-dare-46/ld46-new-game-bg.png b/src/assets/blog/ludum-dare-46/ld46-new-game-bg.png similarity index 100% rename from static/images/posts/ludum-dare-46/ld46-new-game-bg.png rename to src/assets/blog/ludum-dare-46/ld46-new-game-bg.png diff --git a/static/images/posts/ludum-dare-46/ld46-settings-screen.png b/src/assets/blog/ludum-dare-46/ld46-settings-screen.png similarity index 100% rename from static/images/posts/ludum-dare-46/ld46-settings-screen.png rename to src/assets/blog/ludum-dare-46/ld46-settings-screen.png diff --git a/static/images/posts/ludum-dare-46/ld46-world-assets-v1.png b/src/assets/blog/ludum-dare-46/ld46-world-assets-v1.png similarity index 100% rename from static/images/posts/ludum-dare-46/ld46-world-assets-v1.png rename to src/assets/blog/ludum-dare-46/ld46-world-assets-v1.png diff --git a/static/images/posts/mindmap/mindmap-simple.png b/src/assets/blog/mindmap/mindmap-simple.png similarity index 100% rename from static/images/posts/mindmap/mindmap-simple.png rename to src/assets/blog/mindmap/mindmap-simple.png diff --git a/static/images/posts/monocular-blender/ayo_bro.png b/src/assets/blog/monocular-blender/ayo_bro.png similarity index 100% rename from static/images/posts/monocular-blender/ayo_bro.png rename to src/assets/blog/monocular-blender/ayo_bro.png diff --git a/static/images/posts/monocular-blender/ayo_displaced.png b/src/assets/blog/monocular-blender/ayo_displaced.png similarity index 100% rename from static/images/posts/monocular-blender/ayo_displaced.png rename to src/assets/blog/monocular-blender/ayo_displaced.png diff --git a/static/images/posts/monocular-blender/ayo_textured.png b/src/assets/blog/monocular-blender/ayo_textured.png similarity index 100% rename from static/images/posts/monocular-blender/ayo_textured.png rename to src/assets/blog/monocular-blender/ayo_textured.png diff --git a/static/images/posts/monocular-blender/blender-importer-window.png b/src/assets/blog/monocular-blender/blender-importer-window.png similarity index 100% rename from static/images/posts/monocular-blender/blender-importer-window.png rename to src/assets/blog/monocular-blender/blender-importer-window.png diff --git a/static/images/posts/monocular-blender/demo_render.mp4 b/src/assets/blog/monocular-blender/demo_render.mp4 similarity index 100% rename from static/images/posts/monocular-blender/demo_render.mp4 rename to src/assets/blog/monocular-blender/demo_render.mp4 diff --git a/static/images/posts/monocular-blender/exaggerated-depth.png b/src/assets/blog/monocular-blender/exaggerated-depth.png similarity index 100% rename from static/images/posts/monocular-blender/exaggerated-depth.png rename to src/assets/blog/monocular-blender/exaggerated-depth.png diff --git a/static/images/posts/mouse-button-swap/PXL_20230501_193330518.jpg b/src/assets/blog/mouse-button-swap/PXL_20230501_193330518.jpg similarity index 100% rename from static/images/posts/mouse-button-swap/PXL_20230501_193330518.jpg rename to src/assets/blog/mouse-button-swap/PXL_20230501_193330518.jpg diff --git a/static/images/posts/mouse-button-swap/PXL_20230501_193336150.jpg b/src/assets/blog/mouse-button-swap/PXL_20230501_193336150.jpg similarity index 100% rename from static/images/posts/mouse-button-swap/PXL_20230501_193336150.jpg rename to src/assets/blog/mouse-button-swap/PXL_20230501_193336150.jpg diff --git a/static/images/posts/mouse-button-swap/PXL_20230501_234325200.jpg b/src/assets/blog/mouse-button-swap/PXL_20230501_234325200.jpg similarity index 100% rename from static/images/posts/mouse-button-swap/PXL_20230501_234325200.jpg rename to src/assets/blog/mouse-button-swap/PXL_20230501_234325200.jpg diff --git a/static/images/posts/mouse-button-swap/PXL_20230501_234350942.jpg b/src/assets/blog/mouse-button-swap/PXL_20230501_234350942.jpg similarity index 100% rename from static/images/posts/mouse-button-swap/PXL_20230501_234350942.jpg rename to src/assets/blog/mouse-button-swap/PXL_20230501_234350942.jpg diff --git a/static/images/posts/mouse-button-swap/PXL_20230502_000502685.jpg b/src/assets/blog/mouse-button-swap/PXL_20230502_000502685.jpg similarity index 100% rename from static/images/posts/mouse-button-swap/PXL_20230502_000502685.jpg rename to src/assets/blog/mouse-button-swap/PXL_20230502_000502685.jpg diff --git a/static/images/posts/nanovna/area-2.jpg b/src/assets/blog/nanovna/area-2.jpg similarity index 100% rename from static/images/posts/nanovna/area-2.jpg rename to src/assets/blog/nanovna/area-2.jpg diff --git a/static/images/posts/nanovna/area.jpg b/src/assets/blog/nanovna/area.jpg similarity index 100% rename from static/images/posts/nanovna/area.jpg rename to src/assets/blog/nanovna/area.jpg diff --git a/static/images/posts/nanovna/nanovna-capture-20m.png b/src/assets/blog/nanovna/nanovna-capture-20m.png similarity index 100% rename from static/images/posts/nanovna/nanovna-capture-20m.png rename to src/assets/blog/nanovna/nanovna-capture-20m.png diff --git a/static/images/posts/nanovna/nanovna-capture-full.png b/src/assets/blog/nanovna/nanovna-capture-full.png similarity index 100% rename from static/images/posts/nanovna/nanovna-capture-full.png rename to src/assets/blog/nanovna/nanovna-capture-full.png diff --git a/static/images/posts/nanovna/nanovna.jpg b/src/assets/blog/nanovna/nanovna.jpg similarity index 100% rename from static/images/posts/nanovna/nanovna.jpg rename to src/assets/blog/nanovna/nanovna.jpg diff --git a/static/images/posts/nanovna/setup.jpg b/src/assets/blog/nanovna/setup.jpg similarity index 100% rename from static/images/posts/nanovna/setup.jpg rename to src/assets/blog/nanovna/setup.jpg diff --git a/static/images/posts/obsidian-blogging/Pasted image 20231021155654.png b/src/assets/blog/obsidian-blogging/Pasted image 20231021155654.png similarity index 100% rename from static/images/posts/obsidian-blogging/Pasted image 20231021155654.png rename to src/assets/blog/obsidian-blogging/Pasted image 20231021155654.png diff --git a/static/images/posts/obsidian-blogging/Pasted image.png b/src/assets/blog/obsidian-blogging/Pasted image.png similarity index 100% rename from static/images/posts/obsidian-blogging/Pasted image.png rename to src/assets/blog/obsidian-blogging/Pasted image.png diff --git a/static/images/posts/out-of-tree-qmk/file-tree.png b/src/assets/blog/out-of-tree-qmk/file-tree.png similarity index 100% rename from static/images/posts/out-of-tree-qmk/file-tree.png rename to src/assets/blog/out-of-tree-qmk/file-tree.png diff --git a/static/images/posts/personal-ases/ip_stack.png b/src/assets/blog/personal-ases/ip_stack.png similarity index 100% rename from static/images/posts/personal-ases/ip_stack.png rename to src/assets/blog/personal-ases/ip_stack.png diff --git a/static/images/posts/personal-ases/rirs.png b/src/assets/blog/personal-ases/rirs.png similarity index 100% rename from static/images/posts/personal-ases/rirs.png rename to src/assets/blog/personal-ases/rirs.png diff --git a/static/images/posts/personal-pbx/magic_phones.dot b/src/assets/blog/personal-pbx/magic_phones.dot similarity index 100% rename from static/images/posts/personal-pbx/magic_phones.dot rename to src/assets/blog/personal-pbx/magic_phones.dot diff --git a/static/images/posts/personal-pbx/magic_phones.png b/src/assets/blog/personal-pbx/magic_phones.png similarity index 100% rename from static/images/posts/personal-pbx/magic_phones.png rename to src/assets/blog/personal-pbx/magic_phones.png diff --git a/static/images/posts/personal-pbx/my_trunks.dot b/src/assets/blog/personal-pbx/my_trunks.dot similarity index 100% rename from static/images/posts/personal-pbx/my_trunks.dot rename to src/assets/blog/personal-pbx/my_trunks.dot diff --git a/static/images/posts/personal-pbx/my_trunks.png b/src/assets/blog/personal-pbx/my_trunks.png similarity index 100% rename from static/images/posts/personal-pbx/my_trunks.png rename to src/assets/blog/personal-pbx/my_trunks.png diff --git a/static/images/posts/personal-pbx/phone_internet.dot b/src/assets/blog/personal-pbx/phone_internet.dot similarity index 100% rename from static/images/posts/personal-pbx/phone_internet.dot rename to src/assets/blog/personal-pbx/phone_internet.dot diff --git a/static/images/posts/personal-pbx/phone_internet.png b/src/assets/blog/personal-pbx/phone_internet.png similarity index 100% rename from static/images/posts/personal-pbx/phone_internet.png rename to src/assets/blog/personal-pbx/phone_internet.png diff --git a/static/images/posts/pid/are_we_there.svg b/src/assets/blog/pid/are_we_there.svg similarity index 100% rename from static/images/posts/pid/are_we_there.svg rename to src/assets/blog/pid/are_we_there.svg diff --git a/static/images/posts/pid/here.svg b/src/assets/blog/pid/here.svg similarity index 100% rename from static/images/posts/pid/here.svg rename to src/assets/blog/pid/here.svg diff --git a/static/images/posts/pid/here_there.svg b/src/assets/blog/pid/here_there.svg similarity index 100% rename from static/images/posts/pid/here_there.svg rename to src/assets/blog/pid/here_there.svg diff --git a/static/images/posts/pid/how_far.svg b/src/assets/blog/pid/how_far.svg similarity index 100% rename from static/images/posts/pid/how_far.svg rename to src/assets/blog/pid/how_far.svg diff --git a/static/images/posts/pid/this_way.svg b/src/assets/blog/pid/this_way.svg similarity index 100% rename from static/images/posts/pid/this_way.svg rename to src/assets/blog/pid/this_way.svg diff --git a/static/images/posts/quaternions/dual_quats.jpg b/src/assets/blog/quaternions/dual_quats.jpg similarity index 100% rename from static/images/posts/quaternions/dual_quats.jpg rename to src/assets/blog/quaternions/dual_quats.jpg diff --git a/static/images/posts/quaternions/quat_mul.jpg b/src/assets/blog/quaternions/quat_mul.jpg similarity index 100% rename from static/images/posts/quaternions/quat_mul.jpg rename to src/assets/blog/quaternions/quat_mul.jpg diff --git a/static/images/posts/quaternions/quat_vec3.png b/src/assets/blog/quaternions/quat_vec3.png similarity index 100% rename from static/images/posts/quaternions/quat_vec3.png rename to src/assets/blog/quaternions/quat_vec3.png diff --git a/static/images/posts/quaternions/quaternion_meme.png b/src/assets/blog/quaternions/quaternion_meme.png similarity index 100% rename from static/images/posts/quaternions/quaternion_meme.png rename to src/assets/blog/quaternions/quaternion_meme.png diff --git a/static/images/posts/rainbow-keyboard/action_layout.png b/src/assets/blog/rainbow-keyboard/action_layout.png similarity index 100% rename from static/images/posts/rainbow-keyboard/action_layout.png rename to src/assets/blog/rainbow-keyboard/action_layout.png diff --git a/static/images/posts/rainbow-keyboard/kayboard.xcf b/src/assets/blog/rainbow-keyboard/kayboard.xcf similarity index 100% rename from static/images/posts/rainbow-keyboard/kayboard.xcf rename to src/assets/blog/rainbow-keyboard/kayboard.xcf diff --git a/static/images/posts/rainbow-keyboard/movement_layout.png b/src/assets/blog/rainbow-keyboard/movement_layout.png similarity index 100% rename from static/images/posts/rainbow-keyboard/movement_layout.png rename to src/assets/blog/rainbow-keyboard/movement_layout.png diff --git a/static/images/posts/rfc6052-bitmasks/NAT64-setup.png b/src/assets/blog/rfc6052-bitmasks/NAT64-setup.png similarity index 100% rename from static/images/posts/rfc6052-bitmasks/NAT64-setup.png rename to src/assets/blog/rfc6052-bitmasks/NAT64-setup.png diff --git a/static/images/posts/rfc6052-bitmasks/NAT64-setup.xcf b/src/assets/blog/rfc6052-bitmasks/NAT64-setup.xcf similarity index 100% rename from static/images/posts/rfc6052-bitmasks/NAT64-setup.xcf rename to src/assets/blog/rfc6052-bitmasks/NAT64-setup.xcf diff --git a/static/images/posts/rfc6052-bitmasks/ipv4-embed.png b/src/assets/blog/rfc6052-bitmasks/ipv4-embed.png similarity index 100% rename from static/images/posts/rfc6052-bitmasks/ipv4-embed.png rename to src/assets/blog/rfc6052-bitmasks/ipv4-embed.png diff --git a/static/images/posts/rfc6052-bitmasks/ipv4-embed.xcf b/src/assets/blog/rfc6052-bitmasks/ipv4-embed.xcf similarity index 100% rename from static/images/posts/rfc6052-bitmasks/ipv4-embed.xcf rename to src/assets/blog/rfc6052-bitmasks/ipv4-embed.xcf diff --git a/static/images/posts/rfc6052-bitmasks/ipv4-extract.png b/src/assets/blog/rfc6052-bitmasks/ipv4-extract.png similarity index 100% rename from static/images/posts/rfc6052-bitmasks/ipv4-extract.png rename to src/assets/blog/rfc6052-bitmasks/ipv4-extract.png diff --git a/static/images/posts/rfc6052-bitmasks/ipv4-extract.xcf b/src/assets/blog/rfc6052-bitmasks/ipv4-extract.xcf similarity index 100% rename from static/images/posts/rfc6052-bitmasks/ipv4-extract.xcf rename to src/assets/blog/rfc6052-bitmasks/ipv4-extract.xcf diff --git a/static/images/posts/rickroll-ipv6/400px-Tun-tap-osilayers-diagram.png b/src/assets/blog/rickroll-ipv6/400px-Tun-tap-osilayers-diagram.png similarity index 100% rename from static/images/posts/rickroll-ipv6/400px-Tun-tap-osilayers-diagram.png rename to src/assets/blog/rickroll-ipv6/400px-Tun-tap-osilayers-diagram.png diff --git a/static/images/posts/rickroll-ipv6/he-dns-fields.png b/src/assets/blog/rickroll-ipv6/he-dns-fields.png similarity index 100% rename from static/images/posts/rickroll-ipv6/he-dns-fields.png rename to src/assets/blog/rickroll-ipv6/he-dns-fields.png diff --git a/static/images/posts/rickroll-ipv6/he-mtr.png b/src/assets/blog/rickroll-ipv6/he-mtr.png similarity index 100% rename from static/images/posts/rickroll-ipv6/he-mtr.png rename to src/assets/blog/rickroll-ipv6/he-mtr.png diff --git a/static/images/posts/rickroll-ipv6/ptr-records.png b/src/assets/blog/rickroll-ipv6/ptr-records.png similarity index 100% rename from static/images/posts/rickroll-ipv6/ptr-records.png rename to src/assets/blog/rickroll-ipv6/ptr-records.png diff --git a/static/images/posts/rickroll-ipv6/result.png b/src/assets/blog/rickroll-ipv6/result.png similarity index 100% rename from static/images/posts/rickroll-ipv6/result.png rename to src/assets/blog/rickroll-ipv6/result.png diff --git a/static/images/posts/robotics-journey/testbed.jpg b/src/assets/blog/robotics-journey/testbed.jpg similarity index 100% rename from static/images/posts/robotics-journey/testbed.jpg rename to src/assets/blog/robotics-journey/testbed.jpg diff --git a/static/images/posts/shelf-lights/desk-lights.jpg b/src/assets/blog/shelf-lights/desk-lights.jpg similarity index 100% rename from static/images/posts/shelf-lights/desk-lights.jpg rename to src/assets/blog/shelf-lights/desk-lights.jpg diff --git a/static/images/posts/shelf-lights/led-controller.jpg b/src/assets/blog/shelf-lights/led-controller.jpg similarity index 100% rename from static/images/posts/shelf-lights/led-controller.jpg rename to src/assets/blog/shelf-lights/led-controller.jpg diff --git a/static/images/posts/shelf-lights/office-layout.png b/src/assets/blog/shelf-lights/office-layout.png similarity index 100% rename from static/images/posts/shelf-lights/office-layout.png rename to src/assets/blog/shelf-lights/office-layout.png diff --git a/static/images/posts/shelf-lights/shelf-layout-side.png b/src/assets/blog/shelf-lights/shelf-layout-side.png similarity index 100% rename from static/images/posts/shelf-lights/shelf-layout-side.png rename to src/assets/blog/shelf-lights/shelf-layout-side.png diff --git a/static/images/posts/shelf-lights/shelf-layout-top.jpg b/src/assets/blog/shelf-lights/shelf-layout-top.jpg similarity index 100% rename from static/images/posts/shelf-lights/shelf-layout-top.jpg rename to src/assets/blog/shelf-lights/shelf-layout-top.jpg diff --git a/static/images/posts/shelf-lights/shelf-lights-left.jpg b/src/assets/blog/shelf-lights/shelf-lights-left.jpg similarity index 100% rename from static/images/posts/shelf-lights/shelf-lights-left.jpg rename to src/assets/blog/shelf-lights/shelf-lights-left.jpg diff --git a/static/images/posts/shelf-lights/shelf-lights.jpg b/src/assets/blog/shelf-lights/shelf-lights.jpg similarity index 100% rename from static/images/posts/shelf-lights/shelf-lights.jpg rename to src/assets/blog/shelf-lights/shelf-lights.jpg diff --git a/static/images/posts/steam-switch/sc-switch.jpg b/src/assets/blog/steam-switch/sc-switch.jpg similarity index 100% rename from static/images/posts/steam-switch/sc-switch.jpg rename to src/assets/blog/steam-switch/sc-switch.jpg diff --git a/static/images/posts/steam-switch/sc.png b/src/assets/blog/steam-switch/sc.png similarity index 100% rename from static/images/posts/steam-switch/sc.png rename to src/assets/blog/steam-switch/sc.png diff --git a/static/images/posts/the-project-i-wil-never-finish/evan-2018.png b/src/assets/blog/the-project-i-wil-never-finish/evan-2018.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/evan-2018.png rename to src/assets/blog/the-project-i-wil-never-finish/evan-2018.png diff --git a/static/images/posts/the-project-i-wil-never-finish/evan-2019-2.png b/src/assets/blog/the-project-i-wil-never-finish/evan-2019-2.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/evan-2019-2.png rename to src/assets/blog/the-project-i-wil-never-finish/evan-2019-2.png diff --git a/static/images/posts/the-project-i-wil-never-finish/evan-2019.png b/src/assets/blog/the-project-i-wil-never-finish/evan-2019.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/evan-2019.png rename to src/assets/blog/the-project-i-wil-never-finish/evan-2019.png diff --git a/static/images/posts/the-project-i-wil-never-finish/evan-2020-2.png b/src/assets/blog/the-project-i-wil-never-finish/evan-2020-2.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/evan-2020-2.png rename to src/assets/blog/the-project-i-wil-never-finish/evan-2020-2.png diff --git a/static/images/posts/the-project-i-wil-never-finish/evan-2020-body.png b/src/assets/blog/the-project-i-wil-never-finish/evan-2020-body.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/evan-2020-body.png rename to src/assets/blog/the-project-i-wil-never-finish/evan-2020-body.png diff --git a/static/images/posts/the-project-i-wil-never-finish/evan-2020-head.png b/src/assets/blog/the-project-i-wil-never-finish/evan-2020-head.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/evan-2020-head.png rename to src/assets/blog/the-project-i-wil-never-finish/evan-2020-head.png diff --git a/static/images/posts/the-project-i-wil-never-finish/evan-2021.png b/src/assets/blog/the-project-i-wil-never-finish/evan-2021.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/evan-2021.png rename to src/assets/blog/the-project-i-wil-never-finish/evan-2021.png diff --git a/static/images/posts/the-project-i-wil-never-finish/retrylife-2018.png b/src/assets/blog/the-project-i-wil-never-finish/retrylife-2018.png similarity index 100% rename from static/images/posts/the-project-i-wil-never-finish/retrylife-2018.png rename to src/assets/blog/the-project-i-wil-never-finish/retrylife-2018.png diff --git a/static/images/posts/unfinished-projects/commit_history.png b/src/assets/blog/unfinished-projects/commit_history.png similarity index 100% rename from static/images/posts/unfinished-projects/commit_history.png rename to src/assets/blog/unfinished-projects/commit_history.png diff --git a/static/images/posts/unfinished-projects/lang_stats.svg b/src/assets/blog/unfinished-projects/lang_stats.svg similarity index 100% rename from static/images/posts/unfinished-projects/lang_stats.svg rename to src/assets/blog/unfinished-projects/lang_stats.svg diff --git a/static/images/posts/unfinished-projects/private_to_md.py b/src/assets/blog/unfinished-projects/private_to_md.py similarity index 100% rename from static/images/posts/unfinished-projects/private_to_md.py rename to src/assets/blog/unfinished-projects/private_to_md.py diff --git a/static/images/posts/unfinished-projects/privates.json b/src/assets/blog/unfinished-projects/privates.json similarity index 100% rename from static/images/posts/unfinished-projects/privates.json rename to src/assets/blog/unfinished-projects/privates.json diff --git a/static/images/posts/vanilla-plus/minimap_2020.png b/src/assets/blog/vanilla-plus/minimap_2020.png similarity index 100% rename from static/images/posts/vanilla-plus/minimap_2020.png rename to src/assets/blog/vanilla-plus/minimap_2020.png diff --git a/static/images/posts/vanilla-plus/rei.png b/src/assets/blog/vanilla-plus/rei.png similarity index 100% rename from static/images/posts/vanilla-plus/rei.png rename to src/assets/blog/vanilla-plus/rei.png diff --git a/static/images/posts/vanilla-plus/sodium_settings.jpeg b/src/assets/blog/vanilla-plus/sodium_settings.jpeg similarity index 100% rename from static/images/posts/vanilla-plus/sodium_settings.jpeg rename to src/assets/blog/vanilla-plus/sodium_settings.jpeg diff --git a/static/images/posts/vortex-core/core-mpc-tool.png b/src/assets/blog/vortex-core/core-mpc-tool.png similarity index 100% rename from static/images/posts/vortex-core/core-mpc-tool.png rename to src/assets/blog/vortex-core/core-mpc-tool.png diff --git a/static/images/posts/vortex-core/core-mpc-webapp.png b/src/assets/blog/vortex-core/core-mpc-webapp.png similarity index 100% rename from static/images/posts/vortex-core/core-mpc-webapp.png rename to src/assets/blog/vortex-core/core-mpc-webapp.png diff --git a/static/images/posts/vortex-core/core.jpg b/src/assets/blog/vortex-core/core.jpg similarity index 100% rename from static/images/posts/vortex-core/core.jpg rename to src/assets/blog/vortex-core/core.jpg diff --git a/static/images/posts/weatherballoon/5a1826bd8b199.webp b/src/assets/blog/weatherballoon/5a1826bd8b199.webp similarity index 100% rename from static/images/posts/weatherballoon/5a1826bd8b199.webp rename to src/assets/blog/weatherballoon/5a1826bd8b199.webp diff --git a/static/images/posts/weatherballoon/927939789311107072-DOC0OKwVQAAYH6R.jpg b/src/assets/blog/weatherballoon/927939789311107072-DOC0OKwVQAAYH6R.jpg similarity index 100% rename from static/images/posts/weatherballoon/927939789311107072-DOC0OKwVQAAYH6R.jpg rename to src/assets/blog/weatherballoon/927939789311107072-DOC0OKwVQAAYH6R.jpg diff --git a/static/images/posts/weatherballoon/927942227749416960-DOC2hmHVwAI8aXW.jpg b/src/assets/blog/weatherballoon/927942227749416960-DOC2hmHVwAI8aXW.jpg similarity index 100% rename from static/images/posts/weatherballoon/927942227749416960-DOC2hmHVwAI8aXW.jpg rename to src/assets/blog/weatherballoon/927942227749416960-DOC2hmHVwAI8aXW.jpg diff --git a/static/images/posts/wheels-to-awards/w2a.png b/src/assets/blog/wheels-to-awards/w2a.png similarity index 100% rename from static/images/posts/wheels-to-awards/w2a.png rename to src/assets/blog/wheels-to-awards/w2a.png diff --git a/static/images/posts/wheels-to-awards/w2ainspo.jpg b/src/assets/blog/wheels-to-awards/w2ainspo.jpg similarity index 100% rename from static/images/posts/wheels-to-awards/w2ainspo.jpg rename to src/assets/blog/wheels-to-awards/w2ainspo.jpg