From d4d074894d071e373823516d1c70ade542492fb5 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 7 Nov 2023 12:03:47 +0000 Subject: [PATCH 1/8] refactor: move files into lib/bin/public folders --- .eleventy.js | 33 ++++++----- .eleventyignore | 4 +- .gitignore | 5 +- 404.njk | 2 +- _data/bookwyrm.js | 2 +- _data/lists-meta.js | 4 +- _includes/layouts/base.njk | 55 +----------------- _includes/layouts/page-post.njk | 4 +- about.njk | 2 +- antilibrary.njk | 2 +- bin/add-bookmark.js | 2 +- {functions => bin}/create-og-images.js | 4 +- blank.njk | 2 +- books.njk | 2 +- button-board.njk | 2 +- colophon.njk | 4 +- content/content.11tydata.js | 2 +- dad-jokes.njk | 2 +- feeds.njk | 2 +- glossary.njk | 2 +- index.njk | 6 +- {utils => lib}/collections.js | 0 {utils => lib}/filters.js | 0 {utils => lib}/helpers/cache.js | 0 {utils => lib}/helpers/chunk.js | 0 {utils => lib}/helpers/hashtags.js | 0 {utils => lib}/helpers/index.js | 0 {utils => lib}/helpers/map.js | 0 {utils => lib}/helpers/markdown.js | 0 {utils => lib}/helpers/screenshot.js | 2 +- {utils => lib}/helpers/strToSlug.js | 0 {utils => lib}/helpers/toTitleCase.js | 0 {utils => lib}/shortcodes.js | 0 {utils => lib}/transforms.js | 0 links.njk | 2 +- lists/film-and-tv.njk | 2 +- lists/index.njk | 2 +- lists/list.njk | 4 +- lists/listened-to.njk | 2 +- newsletter.njk | 2 +- now.njk | 2 +- now/now.11tydata.js | 2 +- og/og-image.njk | 2 +- og/og-posts.njk | 4 +- package-lock.json | 18 +++--- package.json | 5 +- projects.njk | 2 +- .../favicon/android-chrome-192x192.png | Bin .../favicon/android-chrome-512x512.png | Bin .../favicon/apple-touch-icon.png | Bin {_assets => public}/favicon/browserconfig.xml | 0 {_assets => public}/favicon/favicon-16x16.png | Bin {_assets => public}/favicon/favicon-32x32.png | Bin {_assets => public}/favicon/favicon.ico | Bin .../favicon/mstile-150x150.png | Bin .../favicon/safari-pinned-tab.svg | 0 {_assets => public}/favicon/site.webmanifest | 0 {_assets => public}/files/1.2_blogtimes.zip | Bin {_assets => public}/files/64x_hilly.scn | Bin {_assets => public}/files/TURBOCAPP.zip | Bin .../files/kareltima3-10-dos.zip | Bin .../files/mission-mainframe-dos.zip | Bin {_assets => public}/files/mtblogtimes-1.0.zip | Bin {_assets => public}/files/tc201.zip | Bin .../fonts/iosevka-etoile-bold.woff2 | Bin .../fonts/iosevka-etoile-bolditalic.woff2 | Bin .../fonts/iosevka-etoile-italic.woff2 | Bin .../fonts/iosevka-etoile-regular.woff2 | Bin {img => public/img}/11ty-blogtimes.png | Bin .../img}/88x31/articexploit.xyz.png | Bin {img => public/img}/88x31/corru.observer.gif | Bin {img => public/img}/88x31/emreed.net.png | Bin {img => public/img}/88x31/melonking.net.gif | Bin {img => public/img}/88x31/oekaki.cinni.gif | Bin {img => public/img}/88x31/sinewave.cyou.gif | Bin ...-rimworld-a16-after-100-hours-ingame-1.jpg | Bin ...-rimworld-a16-after-100-hours-ingame-2.jpg | Bin ...-rimworld-a16-after-100-hours-ingame-3.jpg | Bin ...-rimworld-a16-after-100-hours-ingame-4.jpg | Bin .../img}/a-review-of-the-godville-game-1.png | Bin .../img}/a-review-of-the-godville-game-2.png | Bin .../img}/adding-wiki-links-to-11ty-1.png | Bin .../img}/alice-down-the-rabbit-hole.png | Bin {img => public/img}/ansicon-install-cmd.png | Bin {img => public/img}/ansicon-install.png | Bin {img => public/img}/azure-cli-1.png | Bin .../img}/azure-peformance-test-01.png | Bin .../img}/azure-peformance-test-02.png | Bin .../basic-space-mines-port-to-golang-1.png | Bin {img => public/img}/berthub-eu-screenshot.png | Bin {img => public/img}/blogging-is-hard-1.png | Bin {img => public/img}/blogtimes.png | Bin .../10nes.3d6f39046470c39c10c3954f.jpeg | Bin ...n-1-kilobyte.44c399c28a42616c4dc2ab00.jpeg | Bin ...ess-than-1mb.3ec3bbc2b45ec38f64c38000.jpeg | Bin ...ge-computers.45043d7f7c2f362742082f49.jpeg | Bin .../2moons.28464a0fc392527e2fc2a21d.jpeg | Bin ...re-than-ever.043749c2b2c2a3c38438c39c.jpeg | Bin ...g-like-a-386.17c3a0c3bbc3923152390a2b.jpeg | Bin ...gital-garden.53c39dc2be33155ac2a64a00.jpeg | Bin ...atial-topics.2ac398c38046c3be6dc2ac00.jpeg | Bin ...-for-neopets.c2a30f0fc3b759c292c39b42.jpeg | Bin ...2023-bristol.4c523dc2a33b0b355fc3b800.jpeg | Bin ...b-frameworks.c3b6c28571c3aa46522fc3ad.jpeg | Bin ...-for-laravel.20427fc2a4c2950cc3adc2be.jpeg | Bin ...ring-society.c3ad4bc2ad5643c283c39e00.jpeg | Bin ...odule-for-js.5ac29c63c3ac6e5f10c39154.jpeg | Bin ...c-facing-api.4d540ac386c2a6476c6c1732.jpeg | Bin ...rby-aircraft.c3a0c289c29f6ac38cc38900.jpeg | Bin ...dros-website.c2a3c3abc3bbc3877755c3b7.jpeg | Bin ...ur-pal-melon.6f366bc2acc2bbc3a75c1800.jpeg | Bin ...ess-internet.48c295601bc3af511909c2a3.jpeg | Bin ...r-games-book.c38ec3a4092dc389c28b4711.jpeg | Bin ...y-bells-blog.c2a5c2a6c39d214dc39cc29f.jpeg | Bin ...anton-petrov.52c3b8c28841010bc398c285.jpeg | Bin ...bda-too-hard.c28a250ac3ab37c381c3b97e.jpeg | Bin ...thub-actions.5ec39821c2bbc388c2985070.jpeg | Bin ...ons-and-11ty.c2b51279c3a811c3a14ac390.jpeg | Bin ...ing-websites.c3adc2a1c2bbc39d4bc38f69.jpeg | Bin ...ang-bang-con.044660c385c2b2c382c2b10d.jpeg | Bin ...enjojos-blog.c291c286c2a16443c29d7d00.jpeg | Bin ...erks-website.c28764c393c3a132c38d6076.jpeg | Bin ...nova-traders.572c0ec2b45bc3a2c39f5b44.jpeg | Bin ...ky-is-a-scam.4ec3a1c2a1c29273c3b9c2a1.jpeg | Bin ...ng-directory.c3b4c386c2ab281277c38a00.jpeg | Bin ...amazon-world.c2b9c39110c3b6c293c28910.jpeg | Bin ...n-intel-cpus.53294d173ec29cc2a0c2ab00.jpeg | Bin ...s-brain-dump.2433c2b97ec3a554c38dc386.jpeg | Bin ...each-website.6bc29f161fc2846bc38c7604.jpeg | Bin .../brents-blog.c3b5c2adc381c39dc2abc290.jpeg | Bin ...nd-leafletjs.c29b7ac3b7c2bcc284c2b900.jpeg | Bin ...just-5-chips.15c3a6c2bbc38a0cc3af7e00.jpeg | Bin ...wn-the-house.716b6f35664ac3adc3a3c288.jpeg | Bin .../c-dogs-sdl.c3b2c294684fc29cc2af7f00.jpeg | Bin ...sr-responses.5bc3a5614dc2814b48c38800.jpeg | Bin ...hearths-blog.c2a62b011905c3af6a75307f.jpeg | Bin ...merons-world.47c2825c78c2921b5cc28854.jpeg | Bin ...r-our-brains.c3b43a58c3813f73c39ac384.jpeg | Bin ...ight-capital.c2b0c2b1c383c3bcc3ae4b77.jpeg | Bin ...html-and-xml.c3bdc2af47c38e5116c3bf00.jpeg | Bin ...em-for-linux.2328c38ec38ec38f5cc28500.jpeg | Bin ...ptune-player.78c3acc3ba632bc2a0c3b41b.jpeg | Bin ...-refactoring.c2ae5c7940c280c2b8c29d30.jpeg | Bin ...innis-oekaki.1779c395c2941d33c38cc394.jpeg | Bin ...output-stops.c3ba46213b521e482bc3b432.jpeg | Bin ...ed-spaceship.c3b5c299c39106c2b8c28000.jpeg | Bin ...adewars-2002.1d60c2bd13c3b0c3ba563600.jpeg | Bin ...og-on-screen.5ac29c63c3ac6e5f10c39154.jpeg | Bin ...og-on-screen.c3bac2abc3aa66c3b0c28f00.jpeg | Bin ...dont-conform.0fc3a16a63c3b9c3bc054f66.jpeg | Bin ...ion-on-steam.3ac391c3a5c3b5c3b0c3a855.jpeg | Bin ...ctor-of-urls.4fc3b37d09375bc29dc39500.jpeg | Bin ...en-99percent.c2b974c3bec295c2a0793309.jpeg | Bin ...st-averaging.c29dc3be2ac286c2b375c3b9.jpeg | Bin ...t-serverless.26c2b4c2a4c29f3527c3bc00.jpeg | Bin ...ramming-game.c38761c2b67ac3a4c3ae754f.jpeg | Bin ...ource-images.c3bec38fc29542c2bb093b00.jpeg | Bin ...-interfaces.c2b6c3b2c3a2c2a427c2b000.jpeg" | Bin ...age-on-steam.c29614c29fc2bec393727600.jpeg | Bin .../dreamm.c2b6c2ae2b427dc28ac3af56.jpeg | Bin ...-50s-and-60s.c39315c3b8c2b0c2bdc2b673.jpeg | Bin ...uman-of-2023.12c2abc3b2c3bf6ec3984d00.jpeg | Bin ...eeds-website.1d07c290c283c3a5c3a3c291.jpeg | Bin ...3-d-on-steam.42214054c2bfc289c3b5c28e.jpeg | Bin ...o-javascript.5fc2aac2bd3058c391c2ad00.jpeg | Bin ...-file-system.70c280c2bf17294ac2bbc3a0.jpeg | Bin ...oehs-website.c3b863c2ad09c2bec2841400.jpeg | Bin ...read-inducer.6a61c390c29ec2ab275c1100.jpeg | Bin ...ique-library.c3a5c3acc2ae70c29d2ac3a7.jpeg | Bin ...ards-website.17c3b4c38e28c3801f096a00.jpeg | Bin ...hogun-gaming.7954c2bc4e2035c29a21305f.jpeg | Bin ...k-statistics.c28ec38d7fc3952bc38ec381.jpeg | Bin ...arch-engines.656dc2a1c3b42c1fc2a9287a.jpeg | Bin ...om-shadowing.c3af3fc3bfc389c2b9c3bd00.jpeg | Bin ...pans-website.73c2901329c2aac38f6bc3a3.jpeg | Bin ...rtualization.75c3a9c3922021077ac29800.jpeg | Bin ...e-boy-camera.c386c2a405c3b3c3b5646900.jpeg | Bin ...ds-ramblings.c3bfc2aa425739c3b17dc2bb.jpeg | Bin ...th-dos-conio.0a6fc2b06dc2b0c38f56c2be.jpeg | Bin ...per-on-steam.c39cc3a03fc2adc2a3190c00.jpeg | Bin ...-activitypub.3065c2bcc386c38b6d23c38b.jpeg | Bin ...de-generator.c3b7742e64c2a93a1c34c39c.jpeg | Bin ...mode-support.c28d700a7ac3bec28f43c396.jpeg | Bin ...to-the-cloud.c291c29dc381c3a2c382c292.jpeg | Bin ...s-color-back.63c3bac2ac691a39c3a61410.jpeg | Bin ...exploitation.152412c3b0c28e434dc29700.jpeg | Bin ...n-my-servers.5806c287c2bdc388c38fc3ad.jpeg | Bin ...t-elite-page.29c29e222b02c38036384435.jpeg | Bin ...-open-source.48c2b6c2afc2afc2afc2a020.jpeg | Bin .../idle-dr-dos.69c2a0c3a1c29f5d06c39900.jpeg | Bin ...slow-thinker.c2a76bc2a5c2a1c3a5c39f14.jpeg | Bin ...bable-island.c2bc6b14c2bb1ec3bd776900.jpeg | Bin ...plex-queries.c3852b05c38b67c3b9c29e0c.jpeg | Bin ...tten-by-rbot.61c3a23254c2bfc384175225.jpeg | Bin ...ter-encoding.c2bc25c2a8c2a61ac3a7770b.jpeg | Bin ...rins-website.0935c39cc3ae5f43601f2417.jpeg | Bin ...-dogans-blog.57c2b5c3aa39c2a94855c39a.jpeg | Bin ...uech-website.02c3892c742b46c29a28c38d.jpeg | Bin ...ards-website.c28518c3bf1cc284c2a46d00.jpeg | Bin ...offs-website.27c2bdc38ec2817c4cc2b500.jpeg | Bin .../jakemuseum.c38268c2b5c3b3c3bac28a00.jpeg | Bin ...mathews-blog.c2a24d7f7205c3b1c388c2bd.jpeg | Bin ...ered-harmful.2837c2b64a24162ec3a7c3b3.jpeg | Bin ...ndow-manager.2c1b31c2bac2b030c3945562.jpeg | Bin ...ween-neurons.c2a0c38647c2a73263067441.jpeg | Bin ...ijns-website.c283c3b94063c382c388c39e.jpeg | Bin ...ooks-website.5d127dc397c38cc28f43c383.jpeg | Bin ...laravel-pint.c395c28c586517c2afc2b800.jpeg | Bin ...en-tans-blog.c3a5c29fc3b247c2bd11c2a5.jpeg | Bin ...ook-with-css.30c3b86244c2be4dc28bc284.jpeg | Bin ...thing-docker.091bc384604e0ec38b302311.jpeg | Bin ...on-functions.c2a6c396592e11c3ac61c29a.jpeg | Bin ...ods-on-steam.c3bac2b9072f6f1c7365c3aa.jpeg | Bin ...ent-is-a-lie.31c2877dc391c39718c38c00.jpeg | Bin ...ng-directory.c388c289c3a5c2afc2bac281.jpeg | Bin ...gital-garden.c2afc3b4c3a4c2a9c2b9c380.jpeg | Bin ...obreras-blog.c2915ec3ba11c39011c3b400.jpeg | Bin ...ite-and-blog.63c384c2bac389c2825a3000.jpeg | Bin ...log-comments.c2adc2bdc3a1c2ae60c2ba6c.jpeg | Bin ...lles-webring.c391c2bfc39ec2b95ac3832e.jpeg | Bin .../mindspike.c39922c3973d192640c2af00.jpeg | Bin ...inigpt4-in-c.6627382c5130c39435c3a834.jpeg | Bin ...osaic-tetris.67c2adc39378c2b3c2a72c75.jpeg | Bin ...the-jamstack.c3ae05c2a4c385c3a5206000.jpeg | Bin ...orwave-radio.c288530034c29bc3a7c3b800.jpeg | Bin ...oat-required.c39347c3bcc39d65c38c6100.jpeg | Bin ...er-tool-show.c284c38523c2acc386402a23.jpeg | Bin ...ile-browsers.c3a325c2b157c395c2aa7b00.jpeg | Bin ...reme-latency.52c2ae2138c2973463022425.jpeg | Bin .../openworm.c28c29122d79c28047c3b20b.jpeg | Bin ...ned-politics.c3ad495cc3894c4fc3900507.jpeg | Bin ...set-in-space.461dc2a833c398c297762c6e.jpeg | Bin ...perlin-noise.c283046222c2b90924c38800.jpeg | Bin ...e-chicago-il.c387c3a464c39001c38dc2a1.jpeg | Bin ...ile-of-hrefs.0bc2a855c2a8c3b2c29bc284.jpeg | Bin ...p-calculator.c2b6095d0dc3860cc3b22d57.jpeg | Bin ...ect-on-steam.c38c2dc38ac2b4c2b3c29034.jpeg | Bin ...ural-planets.2bc3a534c2b530c287c2a031.jpeg | Bin ...-known-as-cv.c3a4c397c29447c2adc38900.jpeg | Bin ...le-diffusion.c2b86e2e4210c2a15a670c2d.jpeg | Bin ...quic-to-mars.c39bc2bb5dc282c293c3a972.jpeg | Bin ...gital-garden.c38d731e4ec3a10ec386c2ba.jpeg | Bin ...-with-svelte.c291c38052c3bd24c2b6c2bd.jpeg | Bin ...-scatterplot.015117c281432b1541621e00.jpeg | Bin ...um-directory.3a4368c281c3806cc382c2a8.jpeg | Bin ...etrotechnews.056fc3b80cc382c39ec28d29.jpeg | Bin ...rld-on-steam.c2b13e5dc2b8c3a658c2b515.jpeg | Bin ...en-in-ansi-c.48c38dc388c38ec2af34c3a9.jpeg | Bin ...obot-cantina.c2a4c2a0c2b5c3ab7821c28a.jpeg | Bin ...ke-simulator.c3a4c39ec295c38005633a00.jpeg | Bin ...d-techniques.59c2805ac396c3b5c295c2b5.jpeg | Bin ...tising-grift.c29c59c2b458c398c39b6e00.jpeg | Bin ...b-dev-skills.c289c2bcc39640c3b323c398.jpeg | Bin ...commodore-64.c29c53c28b5ec28f20c3bb00.jpeg | Bin ...and-on-steam.c38bc38061c38c56c386c398.jpeg | Bin ...b-components.c38bc28fc289c3b900c39e00.jpeg | Bin ...ebar-webring.24c2a4c29643c3a77c1fc295.jpeg | Bin ...isons-weblog.7d5835397b630d3c1c411800.jpeg | Bin ...le-icons-org.3fc3a041c285c2902cc29900.jpeg | Bin ...-source-code.394945c28f7734623f66c2aa.jpeg | Bin ...y-parse-in-c.14c3974c6548c2a5c3924c6b.jpeg | Bin .../sinewave.0ec292c2b0c3b00e30c2a74d.jpeg | Bin ...-on-the-edge.053a3b76c39fc284c2b8c2a6.jpeg | Bin ...nberg-moment.77c3b513c2afc2a4085bc29d.jpeg | Bin ...eck-on-steam.31c3b20c04c3a4c281257831.jpeg | Bin ...etraders-api.c3851373c29028c2a3c2b600.jpeg | Bin ...s-whats-next.087010c396c397c3a8c28300.jpeg | Bin ...nyone-thinks.c38dc3ac2ac28e4c67276c00.jpeg | Bin ...ire-response.61016b40c3965943c38fc384.jpeg | Bin ...tercatgaming.c3b351c2abc3b83b13c3be2a.jpeg | Bin ...k-audioclips.c3aac39552c29fc293c2b46a.jpeg | Bin ...ley-on-steam.30c294c2b0c280c2bdc3bb5a.jpeg | Bin .../steem-nova.c2ba41c298c2a6c285c3a700.jpeg | Bin ...dom-on-steam.c2aac2901e3e3fc2b0185d77.jpeg | Bin .../susams-blog.c38246c28ec389c297497b61.jpeg | Bin ...rt-on-itchio.c2b1c288c2acc397c3b7c293.jpeg | Bin ...-and-the-meh.0c3ac2ba1ac3a3c38268c2b3.jpeg | Bin ...gital-garden.7bc28ac284c3a2740ac28540.jpeg | Bin ...our-terminal.c3936ec3ad49c28431205300.jpeg | Bin .../the-arcade.58220c16c38121c2aa19c3b5.jpeg | Bin ...d-fast-cheap.c2a00d0430c2981821c2be00.jpeg | Bin ...rew-stephens.27c2825b6e50c3a2c3865100.jpeg | Bin ...nical-marvel.0754c3acc2acc2b90742c3bf.jpeg | Bin ...-of-ethiopia.c3bb26c294c28d7c3008211b.jpeg | Bin ...claw-webring.5a7a22c290c293c399687d00.jpeg | Bin ...d-newsletter.2c05c2b637c299c3a1c3a400.jpeg | Bin ...osec-twitter.72c3a07ac2b2c3b127c2a100.jpeg | Bin ...d-programmer.c3a6c386c2adc397c383c3ac.jpeg | Bin ...-grind-a-day.472c7d4cc3881d25c29e7800.jpeg | Bin ...-html-review.c2b408c3ad3761c29626c385.jpeg | Bin ...bal-invasion.c38ec3a7382bc3a454c28c00.jpeg | Bin ...-of-loathing.3c6546c3be76c28bc3b24500.jpeg | Bin ...wser-project.435741466169c2bc0a752056.jpeg | Bin ...e-in-seconds.c3ae26c2af02041bc3bd7600.jpeg | Bin ...-http-router.2f511963c3bbc2987543c2a5.jpeg | Bin ...-media-depot.c392c2bac384c2a367c2b900.jpeg | Bin ...tic-websites.c381260a4f7c4072c2ac6e4b.jpeg | Bin ...-same-as-any.c2b7c2a96d05c38f4811c381.jpeg | Bin ...reks-website.c2a9556f23c2a1c3b879c39b.jpeg | Bin ...e-far-future.402bc395c38d3ac39226c391.jpeg | Bin ...airs-website.01c3bd17291a23c2b4c2ba00.jpeg | Bin ...gital-garden.1c253e363315c28ec2b22300.jpeg | Bin ...-for-firefox.c28a18c292c28bc2ab3ac290.jpeg | Bin .../town-of-zzt.6ec2ad77c28bc2bcc2a8c280.jpeg | Bin ...est-on-steam.c3b1c280c3a52dc296c2a41c.jpeg | Bin ...ersonal-site.5b5820c3bac3b1c3a1c3ae36.jpeg | Bin ...with-chatgpt.c28ac2abc381c3a113c3ac7d.jpeg | Bin ...-js-projects.c2aec3b1c28cc3803ec3b200.jpeg | Bin ...ercel-markup.43c28bc2b211c28cc2a24100.jpeg | Bin ...-20-listings.c3bcc38347c289c289c38f00.jpeg | Bin ...preservation.c2917202c3b957c28bc38d00.jpeg | Bin ...-basic-games.c29cc28ec3a5c2bd7dc2b864.jpeg | Bin ...bi-the-parts.c2910d1a7e2ec380c29fc390.jpeg | Bin .../webgbcam.61456ac28ec287c3b804c2a0.jpeg | Bin ...rd-web-pages.7317342964c2bbc299c3a600.jpeg | Bin ...ess-possible.01c38dc2acc3af66c28b7846.jpeg | Bin ...ate-machines.4e1a63c3a81dc28fc280037a.jpeg | Bin ...hard-in-2023.c28e21c3bdc3b0c3a0550100.jpeg | Bin ...ull-estrella.543dc38e765bc2a71ac2b700.jpeg | Bin ...-game-server.c296c387c3985dc3b3c3b349.jpeg | Bin ...wind-turbine.5fc389c3bdc2ab6372c2865d.jpeg | Bin ...on-your-palm.36c3ad3e06c3a9c295c3a600.jpeg | Bin ...-2002-server.c3bcc2acc28861c2b319c2ae.jpeg | Bin ...ong-live-x86.682b193725c2b7c2a9487800.jpeg | Bin ...dodrill-blog.1a12c2926243334fc2952600.jpeg | Bin .../xhtml-club.c3ab0d2738c384c290030b00.jpeg | Bin ...s-the-future.c382c2b2c39a43c3bd5cc3a9.jpeg | Bin .../xstate-docs.c2a97d3a7137c38f4d0ec3a4.jpeg | Bin ...-that-heroku.c29348c3b3c2a4c28f32c3af.jpeg | Bin ...skys-website.1b27c39b2bc38062c3a1c299.jpeg | Bin ...ation-viewer.c2af7f61c398595dc2807700.jpeg | Bin ...343\200\221.0ec292c2b0c3b00e30c2a74d.jpeg" | Bin .../bill-turnbull-the-bad-beekeepers-club.jpg | Bin ...el-how-to-teach-relativity-to-your-dog.jpg | Bin ...ng-sandahl-the-danish-way-of-parenting.jpg | Bin .../michio-kaku-physics-of-the-impossible.jpg | Bin ...-from-absolute-zero-to-cosmic-oblivion.jpg | Bin .../ray-bradbury-the-martian-chronicles.jpg | Bin ...he-particle-at-the-end-of-the-universe.jpg | Bin {img => public/img}/bounce-in-qb64-1.png | Bin {img => public/img}/bounce-in-qb64-2.png | Bin {img => public/img}/bounce-in-qb64-3.png | Bin {img => public/img}/bounce-in-qb64-4.png | Bin ...-an-incremental-web-game-with-vue-js-1.png | Bin ...-an-incremental-web-game-with-vue-js-2.png | Bin ...-an-incremental-web-game-with-vue-js-3.png | Bin ...-incremental-web-game-with-vue-js-p2-1.png | Bin ...-incremental-web-game-with-vue-js-p2-2.png | Bin .../building-your-own-social-media-feed-1.png | Bin {img => public/img}/camera-3-24.png | Bin {img => public/img}/carrot.png | Bin ...chickenstreet-iampixeltier-mainframe-1.png | Bin .../chickenstreet-iampixeltier-mainframe.png | Bin .../img}/composited-mainframe-computers.png | Bin .../creating-a-city-sim-with-golang-1.png | Bin .../creating-a-city-sim-with-golang-2.png | Bin .../creating-a-city-sim-with-golang-3.png | Bin .../creating-a-city-sim-with-golang-4.png | Bin .../creating-a-city-sim-with-golang-5.png | Bin ...ng-a-city-sim-with-golang-p4-animation.gif | Bin .../img}/defrag-like-its-1992-1.png | Bin .../img}/defrag-like-its-1992-2.png | Bin .../img}/defrag-like-its-1992-3.png | Bin .../img}/dependency-resolving-algorithm-1.png | Bin .../img}/dependency-resolving-algorithm-2.png | Bin .../img}/dependency-resolving-algorithm-3.png | Bin .../eleventyjs-font-subsetting-plugin-1.png | Bin {img => public/img}/emoji.png | Bin {img => public/img}/escapists.jpg | Bin {img => public/img}/fail2ban-regex.png | Bin .../a-review-of-rimworld-a16.png | Bin .../a-review-of-the-godville-game.png | Bin ...pace-mines-port-to-golang-featured-img.png | Bin .../img}/featured-images/bounce-in-qb64.png | Bin ...ld-an-incremental-web-game-with-vue-js.png | Bin ...ilding-tuppence-the-pico-php-framework.png | Bin .../building-your-own-social-media-feed.png | Bin .../creating-a-city-sim-with-golang-p1.png | Bin .../creating-a-city-sim-with-golang-p2.png | Bin .../dependency-resolving-algorithm.png | Bin .../free-open-source-games.png | Bin .../installing-turbo-c-on-dosbox.png | Bin ...roducing-the-qb64-programming-language.png | Bin ...kareltima-iii-the-self-beating-machine.png | Bin .../featured-images/mission-mainframe.png | Bin .../porting-basic-bounce-game-to-go.png | Bin .../revisiting-google-page-speed-tool.png | Bin .../img}/featured-images/scaleway-gogs.png | Bin .../img}/featured-images/the-escapists.png | Bin .../featured-images/thoughts-on-goaccess.png | Bin .../featured-images/ufo-enemy-unknown.png | Bin ...-config-vue-development-with-parcel-js.png | Bin .../font-subsetting-with-eleventyjs-1.png | Bin .../font-subsetting-with-eleventyjs-2.png | Bin .../img}/free-open-source-games-automanic.jpg | Bin .../img}/free-open-source-games-cytadela.jpg | Bin .../img}/free-open-source-games-eduke32.jpg | Bin .../img}/free-open-source-games-irrlicht.jpg | Bin .../free-open-source-games-scorched3d.jpg | Bin .../img}/free-open-source-games-smclone.jpg | Bin .../img}/free-open-source-games-ufo2000.jpg | Bin .../img}/freezetime-featured-img.png | Bin .../img}/freezetime-gameplay-img-1.png | Bin .../img}/github-contributions-example.png | Bin {img => public/img}/github.png | Bin {img => public/img}/go-rogue-example-gui.png | Bin {img => public/img}/google-docs-scam-1.png | Bin ...le-mobile-website-speed-testing-tool-1.png | Bin ...le-mobile-website-speed-testing-tool-2.png | Bin ...le-mobile-website-speed-testing-tool-3.png | Bin ...le-mobile-website-speed-testing-tool-4.png | Bin ...ebsite-speed-testing-tool-featured-img.png | Bin .../img}/gping-application-error.png | Bin .../img}/gping-graphical-ping-for-windows.png | Bin {img => public/img}/growth.png | Bin .../img}/happy-fiftyth-birthday-basic-1.png | Bin .../img}/happy-fiftyth-birthday-basic-2.png | Bin .../img}/happy-fiftyth-birthday-basic-3.png | Bin .../img}/happy-fiftyth-birthday-basic-4.png | Bin ...py-fiftyth-birthday-basic-featured-img.png | Bin {img => public/img}/headshot.jpg | Bin .../img}/installing-turbo-c-on-dosbox-1.png | Bin .../img}/installing-turbo-c-on-dosbox-2.png | Bin .../img}/installing-turbo-c-on-dosbox-3.png | Bin .../img}/installing-turbo-c-on-dosbox-4.png | Bin .../img}/installing-turbo-c-on-dosbox-5.png | Bin .../img}/installing-turbo-c-on-dosbox-6.png | Bin .../img}/interroban-gg-screenshot.png | Bin ...ducing-the-qb64-programming-language-1.png | Bin ...ducing-the-qb64-programming-language-2.png | Bin ...ducing-the-qb64-programming-language-3.png | Bin ...ducing-the-qb64-programming-language-4.png | Bin ...ducing-the-qb64-programming-language-5.png | Bin .../img}/javascript-pixel-paint-10.png | Bin .../img}/javascript-pixel-paint-11.png | Bin .../img}/javascript-pixel-paint-12.png | Bin .../img}/javascript-pixel-paint-2.png | Bin .../img}/javascript-pixel-paint-3.png | Bin .../img}/javascript-pixel-paint-4.png | Bin .../img}/javascript-pixel-paint-5.png | Bin .../img}/javascript-pixel-paint-6.png | Bin .../img}/javascript-pixel-paint-7.png | Bin .../img}/javascript-pixel-paint-8.png | Bin .../img}/javascript-pixel-paint-9.png | Bin .../img}/javascript-pixel-paint.png | Bin {img => public/img}/jzz-game-1.png | Bin {img => public/img}/jzz-game-2.png | Bin {img => public/img}/jzz-twitter.png | Bin ...reltima-iii-the-self-beating-machine-1.png | Bin ...reltima-iii-the-self-beating-machine-2.png | Bin {img => public/img}/laravel-io-1.png | Bin {img => public/img}/lessc-version.png | Bin {img => public/img}/lessc-where.png | Bin {img => public/img}/logo.png | Bin .../img}/marking-external-links-wikipedia.png | Bin {img => public/img}/mission-mainframe-1.png | Bin {img => public/img}/mission-mainframe-2.png | Bin .../nested-queries-in-laravel-eloquent.png | Bin {img => public/img}/open-graph.png | Bin {img => public/img}/overlay.png | Bin .../img}/photogabble_page_mockups.png | Bin .../img}/php-fpm-cluster-image-preview.gif | Bin {img => public/img}/php-fpm-cluster-image.gif | Bin .../img}/php-multiversion-with-homebrew-1.png | Bin .../img}/pixel-paint-stage-1-conclusion.png | Bin {img => public/img}/pixel-people-showcase.png | Bin {img => public/img}/placeholder.jpg | Bin {img => public/img}/psd/logo.png | Bin .../img}/ramen-roguelike-tutorial.png | Bin ...free-stock-photography-archives-pexels.png | Bin ...ee-stock-photography-archives-stockpic.png | Bin ...ee-stock-photography-archives-unsplash.png | Bin .../revisiting-google-page-speed-tool-1.png | Bin .../revisiting-google-page-speed-tool-2.png | Bin .../revisiting-google-page-speed-tool-3.png | Bin .../revisiting-google-page-speed-tool-4.png | Bin .../revisiting-google-page-speed-tool-5.png | Bin .../revisiting-google-page-speed-tool-6.png | Bin {img => public/img}/romvlvs-screenshot.png | Bin .../img}/rubber-duck-programming.png | Bin .../img}/space-mines-april-devlog-001.jpg | Bin .../img}/space-mines-design-language-001.png | Bin .../img}/space-mines-design-language-002.jpg | Bin {img => public/img}/stardust.png | Bin {img => public/img}/stardust_blue.png | Bin .../img}/static-site-search-providers-1.png | Bin .../img}/static-site-search-providers-2.png | Bin .../img}/static-site-search-providers-3.png | Bin .../img}/thoughts-on-goaccess-1.png | Bin .../img}/thoughts-on-goaccess-2.png | Bin .../img}/thoughts-on-goaccess-3.png | Bin .../img}/thoughts-on-goaccess-4.png | Bin ...e-pagespeed-testing-tools-featured-img.png | Bin .../ts-city-simulator-spritesheet-editor.png | Bin .../img}/typescript-roguelike-game.png | Bin {img => public/img}/ufo-enemy-unknown-1.png | Bin {img => public/img}/ufo-enemy-unknown-2.png | Bin {img => public/img}/ufo-enemy-unknown-3.png | Bin {img => public/img}/ufo-enemy-unknown-4.png | Bin {img => public/img}/ufo-enemy-unknown-5.png | Bin {img => public/img}/ufo-enemy-unknown-6.png | Bin .../img}/updated-content-list-layouts.png | Bin .../img}/weighted-random-number-picking-1.png | Bin ...d-random-number-picking-featured-image.png | Bin .../why-i-dont-visit-reddit-anymore-01.png | Bin .../img}/wincache-laravel-lumen-01.gif | Bin .../img}/windows-environment-variables.png | Bin ...press-jetpack-malicious-login-attempts.png | Bin .../writing-a-static-site-generator-1.png | Bin .../writing-a-static-site-generator-2.png | Bin {img => public/img}/xxiivv.black.svg | 0 {img => public/img}/zzt-featured-img.png | Bin public/main.js | 51 ++++++++++++++++ .../og-image/2022-week-24-in-review.jpg | Bin .../og-image/2022-week-25-in-review.jpg | Bin .../og-image/2022-week-26-in-review.jpg | Bin .../og-image/2022-week-27-in-review.jpg | Bin .../2022-week-28-and-29-in-review.jpg | Bin .../og-image/2022-week-30-in-review.jpg | Bin .../og-image/2022-week-31-in-review.jpg | Bin .../og-image/2022-week-32-in-review.jpg | Bin .../2022-week-33-and-34-in-review.jpg | Bin .../og-image/2022-week-35-in-review.jpg | Bin .../og-image/2022-week-36-in-review.jpg | Bin .../og-image/2022-week-37-in-review.jpg | Bin .../2022-week-38-and-39-in-review.jpg | Bin .../og-image/2023-week-1-in-review.jpg | Bin .../og-image/2023-week-2-in-review.jpg | Bin .../a-11ty-reading-time-plugin-quest.jpg | Bin ...site-drama-and-social-media-in-general.jpg | Bin ...f-rimworld-a16-after-100-hours-in-game.jpg | Bin .../a-review-of-the-godville-game.jpg | Bin ...revival-of-photogabble-the-post-mortem.jpg | Bin .../og-image/a-revival-of-sorts.jpg | Bin .../a-time_since-function-for-php.jpg | Bin ...e-and-privileged-members-in-javascript.jpg | Bin ...oji-support-to-your-website-or-project.jpg | Bin .../adding-enhanced-opengraph-meta.jpg | Bin .../og-image/adding-favicon.jpg | Bin ...nes-to-your-eleventyjs-powered-website.jpg | Bin ...ansi-command-line-colors-under-windows.jpg | Bin ...rver-monitoring-using-php-and-rrdtools.jpg | Bin .../blogtimes-a-trip-down-memory-lane.jpg | Bin .../og-image/bounce-in-qb64.jpg | Bin ...l-clicker-web-game-with-vuejs-part-one.jpg | Bin .../og-image/clover-coverage-cli.jpg | Bin .../og-image/code-coverage-info.jpg | Bin {_assets => public}/og-image/colour.jpg | Bin .../og-image/confusable-homoglyphs.jpg | Bin .../og-image/cool-urls-dont-change.jpg | Bin ...eating-a-less-file-watcher-in-phpstorm.jpg | Bin .../creating-a-now-page-archive-with-11ty.jpg | Bin ...alicious-login-attempts-using-fail2ban.jpg | Bin .../og-image/defrag-like-its-1992.jpg | Bin .../dependency-resolving-algorithm.jpg | Bin {_assets => public}/og-image/draughts.jpg | Bin {_assets => public}/og-image/floppybox.jpg | Bin .../freezetime-browser-based-roguelike.jpg | Bin ...ting-random-numbers-over-a-range-in-go.jpg | Bin .../og-image/go-git-archive.jpg | Bin .../og-image/go-pixels-fight.jpg | Bin .../og-image/go-space-mines.jpg | Bin ...g-response-times-in-windows-with-gping.jpg | Bin .../og-image/happy-53rd-birthday-basic.jpg | Bin .../og-image/happy-new-year.jpg | Bin ...e-cli-via-node-on-windowslinux-and-osx.jpg | Bin ...to-return-a-random-list-item-by-weight.jpg | Bin ...et-composer-global-bin-path-in-windows.jpg | Bin ...ev-is-a-rabbit-hole-then-call-me-alice.jpg | Bin .../og-image/installing-turbo-c-on-dosbox.jpg | Bin ...er-is-dead-long-live-internet-explorer.jpg | Bin ...ing-using-sods-law-as-a-debugging-tool.jpg | Bin ...mage-to-the-dos-era-adventure-game-zzt.jpg | Bin ...kareltima-iii-the-self-beating-machine.jpg | Bin .../og-image/keep-blogging-fun.jpg | Bin .../laravel-registration-validator.jpg | Bin .../og-image/laravel-remember-uploads.jpg | Bin .../og-image/ldpl-space-mines.jpg | Bin {_assets => public}/og-image/ldpl-spark.jpg | Bin {_assets => public}/og-image/like-pie.jpg | Bin ...irror-of-b2blogtimephp-by-sanjay-sheth.jpg | Bin ...rror-of-blogtimesphp-by-matt-mullenweg.jpg | Bin .../og-image/mission-mainframe.jpg | Bin ...sted-queries-in-laravels-query-builder.jpg | Bin .../on-quitting-programming-for-carpentry.jpg | Bin .../og-image/php-rrdtool-helpers.jpg | Bin .../php-space-mines-an-api-is-born.jpg | Bin .../og-image/php-space-mines-introduction.jpg | Bin {_assets => public}/og-image/phpurls.jpg | Bin .../og-image/pixel-mainframe.jpg | Bin {_assets => public}/og-image/portcullis.jpg | Bin .../porting-basic-space-mines-game-to-go.jpg | Bin {_assets => public}/og-image/t-irc.jpg | Bin .../og-image/the-command-pattern.jpg | Bin .../the-qb64-programming-language.jpg | Bin .../og-image/the-robo-car-uprising.jpg | Bin ...ing-googles-website-speed-testing-tool.jpg | Bin ...with-google-website-speed-testing-tool.jpg | Bin .../thinking-about-doscember-2022.jpg | Bin .../og-image/thoughts-on-goaccess.jpg | Bin {_assets => public}/og-image/todoci.jpg | Bin .../og-image/toshiba-t5100.jpg | Bin .../og-image/tuppence-boilerplate.jpg | Bin {_assets => public}/og-image/tuppence.jpg | Bin .../og-image/updated-content-list-layouts.jpg | Bin ...seful-free-stock-photography-libraries.jpg | Bin ...utomate-generating-social-share-images.jpg | Bin .../og-image/week-24-in-review.jpg | Bin .../og-image/week-25-in-review.jpg | Bin .../og-image/week-26-in-review.jpg | Bin .../og-image/week-27-in-review.jpg | Bin .../og-image/week-28-and-29-in-review.jpg | Bin .../og-image/week-30-in-review.jpg | Bin .../og-image/week-31-in-review.jpg | Bin .../og-image/week-32-in-review.jpg | Bin .../og-image/week-33-and-34-in-review.jpg | Bin .../og-image/week-35-in-review.jpg | Bin ...t-a-tiny-php-framework-called-tuppence.jpg | Bin .../word-stats-plugin-for-eleventy.jpg | Bin ...a-pixel-editor-in-javascript-part-five.jpg | Bin ...a-pixel-editor-in-javascript-part-four.jpg | Bin ...-a-pixel-editor-in-javascript-part-one.jpg | Bin ...-a-pixel-editor-in-javascript-part-six.jpg | Bin ...-pixel-editor-in-javascript-part-three.jpg | Bin ...-a-pixel-editor-in-javascript-part-two.jpg | Bin .../writing-documentation-is-hard.jpg | Bin ...ig-rapid-vuejs-development-with-parcel.jpg | Bin quotes.njk | 2 +- resources/index.njk | 4 +- resources/types.njk | 4 +- stats.njk | 4 +- topic.njk | 2 +- topics.njk | 6 +- types.njk | 6 +- writing/archive.njk | 6 +- writing/index.njk | 8 +-- 636 files changed, 143 insertions(+), 144 deletions(-) rename {functions => bin}/create-og-images.js (91%) rename {utils => lib}/collections.js (100%) rename {utils => lib}/filters.js (100%) rename {utils => lib}/helpers/cache.js (100%) rename {utils => lib}/helpers/chunk.js (100%) rename {utils => lib}/helpers/hashtags.js (100%) rename {utils => lib}/helpers/index.js (100%) rename {utils => lib}/helpers/map.js (100%) rename {utils => lib}/helpers/markdown.js (100%) rename {utils => lib}/helpers/screenshot.js (97%) rename {utils => lib}/helpers/strToSlug.js (100%) rename {utils => lib}/helpers/toTitleCase.js (100%) rename {utils => lib}/shortcodes.js (100%) rename {utils => lib}/transforms.js (100%) rename {_assets => public}/favicon/android-chrome-192x192.png (100%) rename {_assets => public}/favicon/android-chrome-512x512.png (100%) rename {_assets => public}/favicon/apple-touch-icon.png (100%) rename {_assets => public}/favicon/browserconfig.xml (100%) rename {_assets => public}/favicon/favicon-16x16.png (100%) rename {_assets => public}/favicon/favicon-32x32.png (100%) rename {_assets => public}/favicon/favicon.ico (100%) rename {_assets => public}/favicon/mstile-150x150.png (100%) rename {_assets => public}/favicon/safari-pinned-tab.svg (100%) rename {_assets => public}/favicon/site.webmanifest (100%) rename {_assets => public}/files/1.2_blogtimes.zip (100%) rename {_assets => public}/files/64x_hilly.scn (100%) rename {_assets => public}/files/TURBOCAPP.zip (100%) rename {_assets => public}/files/kareltima3-10-dos.zip (100%) rename {_assets => public}/files/mission-mainframe-dos.zip (100%) rename {_assets => public}/files/mtblogtimes-1.0.zip (100%) rename {_assets => public}/files/tc201.zip (100%) rename {_assets => public}/fonts/iosevka-etoile-bold.woff2 (100%) rename {_assets => public}/fonts/iosevka-etoile-bolditalic.woff2 (100%) rename {_assets => public}/fonts/iosevka-etoile-italic.woff2 (100%) rename {_assets => public}/fonts/iosevka-etoile-regular.woff2 (100%) rename {img => public/img}/11ty-blogtimes.png (100%) rename {img => public/img}/88x31/articexploit.xyz.png (100%) rename {img => public/img}/88x31/corru.observer.gif (100%) rename {img => public/img}/88x31/emreed.net.png (100%) rename {img => public/img}/88x31/melonking.net.gif (100%) rename {img => public/img}/88x31/oekaki.cinni.gif (100%) rename {img => public/img}/88x31/sinewave.cyou.gif (100%) rename {img => public/img}/a-review-of-rimworld-a16-after-100-hours-ingame-1.jpg (100%) rename {img => public/img}/a-review-of-rimworld-a16-after-100-hours-ingame-2.jpg (100%) rename {img => public/img}/a-review-of-rimworld-a16-after-100-hours-ingame-3.jpg (100%) rename {img => public/img}/a-review-of-rimworld-a16-after-100-hours-ingame-4.jpg (100%) rename {img => public/img}/a-review-of-the-godville-game-1.png (100%) rename {img => public/img}/a-review-of-the-godville-game-2.png (100%) rename {img => public/img}/adding-wiki-links-to-11ty-1.png (100%) rename {img => public/img}/alice-down-the-rabbit-hole.png (100%) rename {img => public/img}/ansicon-install-cmd.png (100%) rename {img => public/img}/ansicon-install.png (100%) rename {img => public/img}/azure-cli-1.png (100%) rename {img => public/img}/azure-peformance-test-01.png (100%) rename {img => public/img}/azure-peformance-test-02.png (100%) rename {img => public/img}/basic-space-mines-port-to-golang-1.png (100%) rename {img => public/img}/berthub-eu-screenshot.png (100%) rename {img => public/img}/blogging-is-hard-1.png (100%) rename {img => public/img}/blogtimes.png (100%) rename {img => public/img}/bookmarks/10nes.3d6f39046470c39c10c3954f.jpeg (100%) rename {img => public/img}/bookmarks/1kb-club-a-collection-of-web-pages-weighing-less-than-1-kilobyte.44c399c28a42616c4dc2ab00.jpeg (100%) rename {img => public/img}/bookmarks/1mb-club-a-collection-of-web-pages-weighing-in-less-than-1mb.3ec3bbc2b45ec38f64c38000.jpeg (100%) rename {img => public/img}/bookmarks/2200-forgotten-vintage-computers.45043d7f7c2f362742082f49.jpeg (100%) rename {img => public/img}/bookmarks/2moons.28464a0fc392527e2fc2a21d.jpeg (100%) rename {img => public/img}/bookmarks/3d-printing-needs-open-source-more-than-ever.043749c2b2c2a3c38438c39c.jpeg (100%) rename {img => public/img}/bookmarks/a-286-running-like-a-386.17c3a0c3bbc3923152390a2b.jpeg (100%) rename {img => public/img}/bookmarks/a-brief-history-and-ethos-of-the-digital-garden.53c39dc2be33155ac2a64a00.jpeg (100%) rename {img => public/img}/bookmarks/a-list-of-fediverse-accounts-about-geospatial-topics.2ac398c38046c3be6dc2ac00.jpeg (100%) rename {img => public/img}/bookmarks/a-new-era-for-neopets.c2a30f0fc3b759c292c39b42.jpeg (100%) rename {img => public/img}/bookmarks/accu-conference-2023-bristol.4c523dc2a33b0b355fc3b800.jpeg (100%) rename {img => public/img}/bookmarks/activity-pub-vs-web-frameworks.c3b6c28571c3aa46522fc3ad.jpeg (100%) rename {img => public/img}/bookmarks/ad-manager-for-laravel.20427fc2a4c2950cc3adc2be.jpeg (100%) rename {img => public/img}/bookmarks/admes-andover-and-district-model-engineering-society.c3ad4bc2ad5643c283c39e00.jpeg (100%) rename {img => public/img}/bookmarks/advanced-in-memory-caching-module-for-js.5ac29c63c3ac6e5f10c39154.jpeg (100%) rename {img => public/img}/bookmarks/advice-for-operating-a-public-facing-api.4d540ac386c2a6476c6c1732.jpeg (100%) rename {img => public/img}/bookmarks/aeronear-an-ambient-device-showing-nearby-aircraft.c3a0c289c29f6ac38cc38900.jpeg (100%) rename {img => public/img}/bookmarks/alejandros-website.c2a3c3abc3bbc3877755c3b7.jpeg (100%) rename {img => public/img}/bookmarks/always-your-pal-melon.6f366bc2acc2bbc3a75c1800.jpeg (100%) rename {img => public/img}/bookmarks/an-america-less-internet.48c295601bc3af511909c2a3.jpeg (100%) rename {img => public/img}/bookmarks/an-updated-version-of-the-classic-basic-computer-games-book.c38ec3a4092dc389c28b4711.jpeg (100%) rename {img => public/img}/bookmarks/andy-bells-blog.c2a5c2a6c39d214dc39cc29f.jpeg (100%) rename {img => public/img}/bookmarks/anton-petrov.52c3b8c28841010bc398c285.jpeg (100%) rename {img => public/img}/bookmarks/are-we-making-lambda-too-hard.c28a250ac3ab37c381c3b97e.jpeg (100%) rename {img => public/img}/bookmarks/automate-syndication-of-your-content-with-eleventy-devto-and-github-actions.5ec39821c2bbc388c2985070.jpeg (100%) rename {img => public/img}/bookmarks/automating-advent-calendar-with-github-actions-and-11ty.c2b51279c3a811c3a14ac390.jpeg (100%) rename {img => public/img}/bookmarks/awesome-looking-websites.c3adc2a1c2bbc39d4bc38f69.jpeg (100%) rename {img => public/img}/bookmarks/bang-bang-con.044660c385c2b2c382c2b10d.jpeg (100%) rename {img => public/img}/bookmarks/benjojos-blog.c291c286c2a16443c29d7d00.jpeg (100%) rename {img => public/img}/bookmarks/bjorn-staerks-website.c28764c393c3a132c38d6076.jpeg (100%) rename {img => public/img}/bookmarks/blacknova-traders.572c0ec2b45bc3a2c39f5b44.jpeg (100%) rename {img => public/img}/bookmarks/bluesky-is-a-scam.4ec3a1c2a1c29273c3b9c2a1.jpeg (100%) rename {img => public/img}/bookmarks/boing-directory.c3b4c386c2ab281277c38a00.jpeg (100%) rename {img => public/img}/bookmarks/books-bookshop-org-thrives-amazon-world.c2b9c39110c3b6c293c28910.jpeg (100%) rename {img => public/img}/bookmarks/booting-modern-intel-cpus.53294d173ec29cc2a0c2ab00.jpeg (100%) rename {img => public/img}/bookmarks/brad-taunts-brain-dump.2433c2b97ec3a554c38dc386.jpeg (100%) rename {img => public/img}/bookmarks/brandur-leach-website.6bc29f161fc2846bc38c7604.jpeg (100%) rename {img => public/img}/bookmarks/brents-blog.c3b5c2adc381c39dc2abc290.jpeg (100%) rename {img => public/img}/bookmarks/build-a-routing-web-app-with-neo4j-openstreetmap-and-leafletjs.c29b7ac3b7c2bcc284c2b900.jpeg (100%) rename {img => public/img}/bookmarks/build-this-8-bit-home-computer-with-just-5-chips.15c3a6c2bbc38a0cc3af7e00.jpeg (100%) rename {img => public/img}/bookmarks/burning-down-the-house.716b6f35664ac3adc3a3c288.jpeg (100%) rename {img => public/img}/bookmarks/c-dogs-sdl.c3b2c294684fc29cc2af7f00.jpeg (100%) rename {img => public/img}/bookmarks/caching-inertias-ssr-responses.5bc3a5614dc2814b48c38800.jpeg (100%) rename {img => public/img}/bookmarks/caleb-hearths-blog.c2a62b011905c3af6a75307f.jpeg (100%) rename {img => public/img}/bookmarks/camerons-world.47c2825c78c2921b5cc28854.jpeg (100%) rename {img => public/img}/bookmarks/can-a-fungus-really-take-over-our-brains.c3b43a58c3813f73c39ac384.jpeg (100%) rename {img => public/img}/bookmarks/case-study-4-the-dollar440-million-software-error-at-knight-capital.c2b0c2b1c383c3bcc3ae4b77.jpeg (100%) rename {img => public/img}/bookmarks/cheeriojs-fast-flexible-and-elegant-library-for-parsing-and-manipulating-html-and-xml.c3bdc2af47c38e5116c3bf00.jpeg (100%) rename {img => public/img}/bookmarks/chicago95-a-rendition-of-everyones-favorite-1995-microsoft-operating-system-for-linux.2328c38ec38ec38f5cc28500.jpeg (100%) rename {img => public/img}/bookmarks/chiptune-player.78c3acc3ba632bc2a0c3b41b.jpeg (100%) rename {img => public/img}/bookmarks/churn-php-discover-files-in-need-of-refactoring.c2ae5c7940c280c2b8c29d30.jpeg (100%) rename {img => public/img}/bookmarks/cinnis-oekaki.1779c395c2941d33c38cc394.jpeg (100%) rename {img => public/img}/bookmarks/cli-tool-to-insert-spacers-when-command-output-stops.c3ba46213b521e482bc3b432.jpeg (100%) rename {img => public/img}/bookmarks/clotilde-soffritti-in-never-buy-a-used-spaceship.c3b5c299c39106c2b8c28000.jpeg (100%) rename {img => public/img}/bookmarks/conquest-4000-a-game-based-on-tradewars-2002.1d60c2bd13c3b0c3ba563600.jpeg (100%) rename {img => public/img}/bookmarks/console-log-on-screen.5ac29c63c3ac6e5f10c39154.jpeg (100%) rename {img => public/img}/bookmarks/console-log-on-screen.c3bac2abc3aa66c3b0c28f00.jpeg (100%) rename {img => public/img}/bookmarks/creatures-that-dont-conform.0fc3a16a63c3b9c3bc054f66.jpeg (100%) rename {img => public/img}/bookmarks/crop-rotation-on-steam.3ac391c3a5c3b5c3b0c3a855.jpeg (100%) rename {img => public/img}/bookmarks/curlie-the-collector-of-urls.4fc3b37d09375bc29dc39500.jpeg (100%) rename {img => public/img}/bookmarks/dark-matter-developers-the-unseen-99percent.c2b974c3bec295c2a0793309.jpeg (100%) rename {img => public/img}/bookmarks/debunking-the-myth-of-dollar-cost-averaging.c29dc3be2ac286c2b375c3b9.jpeg (100%) rename {img => public/img}/bookmarks/deploy-a-nuxt-3-application-on-aws-using-sst-serverless.26c2b4c2a4c29f3527c3bc00.jpeg (100%) rename {img => public/img}/bookmarks/designing-and-building-stockfighter-our-programming-game.c38761c2b67ac3a4c3ae754f.jpeg (100%) rename {img => public/img}/bookmarks/docker-is-deleting-open-source-images.c3bec38fc29542c2bb093b00.jpeg (100%) rename "img/bookmarks/docopt\342\200\224language-for-description-of-command-line-interfaces.c2b6c3b2c3a2c2a427c2b000.jpeg" => "public/img/bookmarks/docopt\342\200\224language-for-description-of-command-line-interfaces.c2b6c3b2c3a2c2a427c2b000.jpeg" (100%) rename {img => public/img}/bookmarks/dotage-on-steam.c29614c29fc2bec393727600.jpeg (100%) rename {img => public/img}/bookmarks/dreamm.c2b6c2ae2b427dc28ac3af56.jpeg (100%) rename {img => public/img}/bookmarks/early-computer-art-in-the-50s-and-60s.c39315c3b8c2b0c2bdc2b673.jpeg (100%) rename {img => public/img}/bookmarks/elon-musks-compelling-case-for-worst-human-of-2023.12c2abc3b2c3bf6ec3984d00.jpeg (100%) rename {img => public/img}/bookmarks/em-reeds-website.1d07c290c283c3a5c3a3c291.jpeg (100%) rename {img => public/img}/bookmarks/enclosure-3-d-on-steam.42214054c2bfc289c3b5c28e.jpeg (100%) rename {img => public/img}/bookmarks/es2023-introduces-new-array-copying-methods-to-javascript.5fc2aac2bd3058c391c2ad00.jpeg (100%) rename {img => public/img}/bookmarks/etherdfs-the-ethernet-dos-file-system.70c280c2bf17294ac2bbc3a0.jpeg (100%) rename {img => public/img}/bookmarks/evan-boehs-website.c3b863c2ad09c2bec2841400.jpeg (100%) rename {img => public/img}/bookmarks/existential-dread-inducer.6a61c390c29ec2ab275c1100.jpeg (100%) rename {img => public/img}/bookmarks/eyecandy-visual-technique-library.c3a5c3acc2ae70c29d2ac3a7.jpeg (100%) rename {img => public/img}/bookmarks/fabien-sanglards-website.17c3b4c38e28c3801f096a00.jpeg (100%) rename {img => public/img}/bookmarks/fallenshogun-gaming.7954c2bc4e2035c29a21305f.jpeg (100%) rename {img => public/img}/bookmarks/fediverse-network-statistics.c28ec38d7fc3952bc38ec381.jpeg (100%) rename {img => public/img}/bookmarks/finding-stuff-online-20-years-of-innovative-search-engines.656dc2a1c3b42c1fc2a9287a.jpeg (100%) rename {img => public/img}/bookmarks/first-rom-shadowing.c3af3fc3bfc389c2b9c3bd00.jpeg (100%) rename {img => public/img}/bookmarks/florin-lipans-website.73c2901329c2aac38f6bc3a3.jpeg (100%) rename {img => public/img}/bookmarks/fun-with-virtualization.75c3a9c3922021077ac29800.jpeg (100%) rename {img => public/img}/bookmarks/game-boy-camera.c386c2a405c3b3c3b5646900.jpeg (100%) rename {img => public/img}/bookmarks/gereds-ramblings.c3bfc2aa425739c3b17dc2bb.jpeg (100%) rename {img => public/img}/bookmarks/get-started-programming-with-dos-conio.0a6fc2b06dc2b0c38f56c2be.jpeg (100%) rename {img => public/img}/bookmarks/graveyard-keeper-on-steam.c39cc3a03fc2adc2a3190c00.jpeg (100%) rename {img => public/img}/bookmarks/guppe-federated-social-groups-with-activitypub.3065c2bcc386c38b6d23c38b.jpeg (100%) rename {img => public/img}/bookmarks/halftone-qr-code-generator.c3b7742e64c2a93a1c34c39c.jpeg (100%) rename {img => public/img}/bookmarks/holidaycss-minimalist-classless-css-theme-with-dark-mode-support.c28d700a7ac3bec28f43c396.jpeg (100%) rename {img => public/img}/bookmarks/how-ahrefs-saved-usdollar400m-in-3-years-by-not-going-to-the-cloud.c291c29dc381c3a2c382c292.jpeg (100%) rename {img => public/img}/bookmarks/how-hypercard-got-its-color-back.63c3bac2ac691a39c3a61410.jpeg (100%) rename {img => public/img}/bookmarks/how-i-discovered-the-underground-world-of-credit-card-network-exploitation.152412c3b0c28e434dc29700.jpeg (100%) rename {img => public/img}/bookmarks/how-i-run-my-servers.5806c287c2bdc388c38fc3ad.jpeg (100%) rename {img => public/img}/bookmarks/ian-bells-text-elite-page.29c29e222b02c38036384435.jpeg (100%) rename {img => public/img}/bookmarks/id-software-open-source.48c2b6c2afc2afc2afc2a020.jpeg (100%) rename {img => public/img}/bookmarks/idle-dr-dos.69c2a0c3a1c29f5d06c39900.jpeg (100%) rename {img => public/img}/bookmarks/im-a-very-slow-thinker.c2a76bc2a5c2a1c3a5c39f14.jpeg (100%) rename {img => public/img}/bookmarks/improbable-island.c2bc6b14c2bb1ec3bd776900.jpeg (100%) rename {img => public/img}/bookmarks/improve-performance-of-laravels-pagination-with-complex-queries.c3852b05c38b67c3b9c29e0c.jpeg (100%) rename {img => public/img}/bookmarks/introducing-rbot-a-personalized-ai-assistant-written-by-rbot.61c3a23254c2bfc384175225.jpeg (100%) rename {img => public/img}/bookmarks/introducing-utf-21-a-toy-character-encoding.c2bc25c2a8c2a61ac3a7770b.jpeg (100%) rename {img => public/img}/bookmarks/ivan-safrins-website.0935c39cc3ae5f43601f2417.jpeg (100%) rename {img => public/img}/bookmarks/jaana-dogans-blog.57c2b5c3aa39c2a94855c39a.jpeg (100%) rename {img => public/img}/bookmarks/jacques-corby-tuech-website.02c3892c742b46c29a28c38d.jpeg (100%) rename {img => public/img}/bookmarks/jake-howards-website.c28518c3bf1cc284c2a46d00.jpeg (100%) rename {img => public/img}/bookmarks/jake-lazaroffs-website.27c2bdc38ec2817c4cc2b500.jpeg (100%) rename {img => public/img}/bookmarks/jakemuseum.c38268c2b5c3b3c3bac28a00.jpeg (100%) rename {img => public/img}/bookmarks/john-mathews-blog.c2a24d7f7205c3b1c388c2bd.jpeg (100%) rename {img => public/img}/bookmarks/js-private-class-fields-considered-harmful.2837c2b64a24162ec3a7c3b3.jpeg (100%) rename {img => public/img}/bookmarks/jswm-javascript-window-manager.2c1b31c2bac2b030c3945562.jpeg (100%) rename {img => public/img}/bookmarks/just-update-rules-between-neurons.c2a0c38647c2a73263067441.jpeg (100%) rename {img => public/img}/bookmarks/koos-looijesteijns-website.c283c3b94063c382c388c39e.jpeg (100%) rename {img => public/img}/bookmarks/kyle-shooks-website.5d127dc397c38cc28f43c383.jpeg (100%) rename {img => public/img}/bookmarks/laravel-pint.c395c28c586517c2afc2b800.jpeg (100%) rename {img => public/img}/bookmarks/lauren-tans-blog.c3a5c29fc3b247c2bd11c2a5.jpeg (100%) rename {img => public/img}/bookmarks/laying-out-a-book-with-css.30c3b86244c2be4dc28bc284.jpeg (100%) rename {img => public/img}/bookmarks/lazydocker-the-lazier-way-to-manage-everything-docker.091bc384604e0ec38b302311.jpeg (100%) rename {img => public/img}/bookmarks/linear-interpolation-functions.c2a6c396592e11c3ac61c29a.jpeg (100%) rename {img => public/img}/bookmarks/little-witch-in-the-woods-on-steam.c3bac2b9072f6f1c7365c3aa.jpeg (100%) rename {img => public/img}/bookmarks/low-code-software-development-is-a-lie.31c2877dc391c39718c38c00.jpeg (100%) rename {img => public/img}/bookmarks/low-tech-webring-directory.c388c289c3a5c2afc2bac281.jpeg (100%) rename {img => public/img}/bookmarks/maggie-appletons-digital-garden.c2afc3b4c3a4c2a9c2b9c380.jpeg (100%) rename {img => public/img}/bookmarks/mark-llobreras-blog.c2915ec3ba11c39011c3b400.jpeg (100%) rename {img => public/img}/bookmarks/martin-heinzs-personal-website-and-blog.63c384c2bac389c2825a3000.jpeg (100%) rename {img => public/img}/bookmarks/mastodon-powered-blog-comments.c2adc2bdc3a1c2ae60c2ba6c.jpeg (100%) rename {img => public/img}/bookmarks/merveilles-webring.c391c2bfc39ec2b95ac3832e.jpeg (100%) rename {img => public/img}/bookmarks/mindspike.c39922c3973d192640c2af00.jpeg (100%) rename {img => public/img}/bookmarks/minigpt4cpp-a-port-of-minigpt4-in-c.6627382c5130c39435c3a834.jpeg (100%) rename {img => public/img}/bookmarks/mosaic-tetris.67c2adc39378c2b3c2a72c75.jpeg (100%) rename {img => public/img}/bookmarks/my-journey-away-from-the-jamstack.c3ae05c2a4c385c3a5206000.jpeg (100%) rename {img => public/img}/bookmarks/nightwave-plaza-online-vaporwave-radio.c288530034c29bc3a7c3b800.jpeg (100%) rename {img => public/img}/bookmarks/no-lab-coat-required.c39347c3bcc39d65c38c6100.jpeg (100%) rename {img => public/img}/bookmarks/north-of-england-woodworking-and-power-tool-show.c284c38523c2acc386402a23.jpeg (100%) rename {img => public/img}/bookmarks/obsidian-web-clipper-bookmarklet-to-save-articles-and-pages-from-the-web-for-safari-chrome-firefox-and-mobile-browsers.c3a325c2b157c395c2aa7b00.jpeg (100%) rename {img => public/img}/bookmarks/offline-is-just-online-with-extreme-latency.52c2ae2138c2973463022425.jpeg (100%) rename {img => public/img}/bookmarks/openworm.c28c29122d79c28047c3b20b.jpeg (100%) rename {img => public/img}/bookmarks/over-powerful-party-leaders-have-undermined-politics.c3ad495cc3894c4fc3900507.jpeg (100%) rename {img => public/img}/bookmarks/pardus-free-browser-game-set-in-space.461dc2a833c398c297762c6e.jpeg (100%) rename {img => public/img}/bookmarks/php-perlin-noise.c283046222c2b90924c38800.jpeg (100%) rename {img => public/img}/bookmarks/php[tek]-2023-web-development-conference-chicago-il.c387c3a464c39001c38dc2a1.jpeg (100%) rename {img => public/img}/bookmarks/pile-of-hrefs.0bc2a855c2a8c3b2c29bc284.jpeg (100%) rename {img => public/img}/bookmarks/pop-calculator.c2b6095d0dc3860cc3b22d57.jpeg (100%) rename {img => public/img}/bookmarks/prison-architect-on-steam.c38c2dc38ac2b4c2b3c29034.jpeg (100%) rename {img => public/img}/bookmarks/procedural-planets.2bc3a534c2b530c287c2a031.jpeg (100%) rename {img => public/img}/bookmarks/progress-linux-tool-to-show-progress-for-cp-mv-dd-formerly-known-as-cv.c3a4c397c29447c2adc38900.jpeg (100%) rename {img => public/img}/bookmarks/qr-code-generation-from-image-with-stable-diffusion.c2b86e2e4210c2a15a670c2d.jpeg (100%) rename {img => public/img}/bookmarks/quic-to-mars.c39bc2bb5dc282c293c3a972.jpeg (100%) rename {img => public/img}/bookmarks/rach-smiths-digital-garden.c38d731e4ec3a10ec386c2ba.jpeg (100%) rename {img => public/img}/bookmarks/recreating-windows-11-with-svelte.c291c38052c3bd24c2b6c2bd.jpeg (100%) rename {img => public/img}/bookmarks/regl-scatterplot.015117c281432b1541621e00.jpeg (100%) rename {img => public/img}/bookmarks/retro-forum-directory.3a4368c281c3806cc382c2a8.jpeg (100%) rename {img => public/img}/bookmarks/retrotechnews.056fc3b80cc382c39ec28d29.jpeg (100%) rename {img => public/img}/bookmarks/rimworld-on-steam.c2b13e5dc2b8c3a658c2b515.jpeg (100%) rename {img => public/img}/bookmarks/risc-v-cpu-core-written-in-ansi-c.48c38dc388c38ec2af34c3a9.jpeg (100%) rename {img => public/img}/bookmarks/robot-cantina.c2a4c2a0c2b5c3ab7821c28a.jpeg (100%) rename {img => public/img}/bookmarks/roguelike-simulator.c3a4c39ec295c38005633a00.jpeg (100%) rename {img => public/img}/bookmarks/running-long-running-tasks-in-php-best-practices-and-techniques.59c2805ac396c3b5c295c2b5.jpeg (100%) rename {img => public/img}/bookmarks/scams-upon-scams-the-data-driven-advertising-grift.c29c59c2b458c398c39b6e00.jpeg (100%) rename {img => public/img}/bookmarks/schnitzeljagddev-scavenger-hunt-on-the-internet-to-test-your-web-dev-skills.c289c2bcc39640c3b323c398.jpeg (100%) rename {img => public/img}/bookmarks/secret-colours-of-the-commodore-64.c29c53c28b5ec28f20c3bb00.jpeg (100%) rename {img => public/img}/bookmarks/shadows-of-the-afterland-on-steam.c38bc38061c38c56c386c398.jpeg (100%) rename {img => public/img}/bookmarks/shoelace-a-forward-thinking-library-of-web-components.c38bc28fc289c3b900c39e00.jpeg (100%) rename {img => public/img}/bookmarks/sidebar-webring.24c2a4c29643c3a77c1fc295.jpeg (100%) rename {img => public/img}/bookmarks/simon-willisons-weblog.7d5835397b630d3c1c411800.jpeg (100%) rename {img => public/img}/bookmarks/simple-icons-org.3fc3a041c285c2902cc29900.jpeg (100%) rename {img => public/img}/bookmarks/simple-php-game-in-php-using-raylib-snake-with-source-code.394945c28f7734623f66c2aa.jpeg (100%) rename {img => public/img}/bookmarks/simply-parse-in-c.14c3974c6548c2a5c3924c6b.jpeg (100%) rename {img => public/img}/bookmarks/sinewave.0ec292c2b0c3b00e30c2a74d.jpeg (100%) rename {img => public/img}/bookmarks/so-you-want-to-deploy-on-the-edge.053a3b76c39fc284c2b8c2a6.jpeg (100%) rename {img => public/img}/bookmarks/societys-technical-debt-and-softwares-gutenberg-moment.77c3b513c2afc2a4085bc29d.jpeg (100%) rename {img => public/img}/bookmarks/space-wreck-on-steam.31c3b20c04c3a4c281257831.jpeg (100%) rename {img => public/img}/bookmarks/spacetraders-api.c3851373c29028c2a3c2b600.jpeg (100%) rename {img => public/img}/bookmarks/spacexs-texas-rocket-caused-a-big-mess-whats-next.087010c396c397c3a8c28300.jpeg (100%) rename {img => public/img}/bookmarks/spacexs-texas-rocket-is-going-to-cause-a-lot-more-damage-than-anyone-thinks.c38dc3ac2ac28e4c67276c00.jpeg (100%) rename {img => public/img}/bookmarks/speed-up-your-laravel-app-by-caching-the-entire-response.61016b40c3965943c38fc384.jpeg (100%) rename {img => public/img}/bookmarks/splattercatgaming.c3b351c2abc3b83b13c3be2a.jpeg (100%) rename {img => public/img}/bookmarks/star-trek-audioclips.c3aac39552c29fc293c2b46a.jpeg (100%) rename {img => public/img}/bookmarks/stardew-valley-on-steam.30c294c2b0c280c2bdc3bb5a.jpeg (100%) rename {img => public/img}/bookmarks/steem-nova.c2ba41c298c2a6c285c3a700.jpeg (100%) rename {img => public/img}/bookmarks/super-fantasy-kingdom-on-steam.c2aac2901e3e3fc2b0185d77.jpeg (100%) rename {img => public/img}/bookmarks/susams-blog.c38246c28ec389c297497b61.jpeg (100%) rename {img => public/img}/bookmarks/swords-of-freeport-on-itchio.c2b1c288c2acc397c3b7c293.jpeg (100%) rename {img => public/img}/bookmarks/ten-years-of-go-the-good-the-bad-and-the-meh.0c3ac2ba1ac3a3c38268c2b3.jpeg (100%) rename {img => public/img}/bookmarks/tendigits-digital-garden.7bc28ac284c3a2740ac28540.jpeg (100%) rename {img => public/img}/bookmarks/textual-paint-ms-paint-in-your-terminal.c3936ec3ad49c28431205300.jpeg (100%) rename {img => public/img}/bookmarks/the-arcade.58220c16c38121c2aa19c3b5.jpeg (100%) rename {img => public/img}/bookmarks/the-big-lie-of-good-fast-cheap.c2a00d0430c2981821c2be00.jpeg (100%) rename {img => public/img}/bookmarks/the-blog-of-andrew-stephens.27c2825b6e50c3a2c3865100.jpeg (100%) rename {img => public/img}/bookmarks/the-buttons-on-zeniths-original-clicker-remote-were-a-mechanical-marvel.0754c3acc2acc2b90742c3bf.jpeg (100%) rename {img => public/img}/bookmarks/the-church-forests-of-ethiopia.c3bb26c294c28d7c3008211b.jpeg (100%) rename {img => public/img}/bookmarks/the-claw-webring.5a7a22c290c293c399687d00.jpeg (100%) rename {img => public/img}/bookmarks/the-computers-are-bad-newsletter.2c05c2b637c299c3a1c3a400.jpeg (100%) rename {img => public/img}/bookmarks/the-death-of-infosec-twitter.72c3a07ac2b2c3b127c2a100.jpeg (100%) rename {img => public/img}/bookmarks/the-ethically-trained-programmer.c3a6c386c2adc397c383c3ac.jpeg (100%) rename {img => public/img}/bookmarks/the-grind-a-day.472c7d4cc3881d25c29e7800.jpeg (100%) rename {img => public/img}/bookmarks/the-html-review.c2b408c3ad3761c29626c385.jpeg (100%) rename {img => public/img}/bookmarks/the-kabal-invasion.c38ec3a7382bc3a454c28c00.jpeg (100%) rename {img => public/img}/bookmarks/the-kingdom-of-loathing.3c6546c3be76c28bc3b24500.jpeg (100%) rename {img => public/img}/bookmarks/the-ladybird-browser-project.435741466169c2bc0a752056.jpeg (100%) rename {img => public/img}/bookmarks/the-para-method-the-simple-system-for-organizing-your-digital-life-in-seconds.c3ae26c2af02041bc3bd7600.jpeg (100%) rename {img => public/img}/bookmarks/the-proposal-to-enhance-gos-http-router.2f511963c3bbc2987543c2a5.jpeg (100%) rename {img => public/img}/bookmarks/the-residual-media-depot.c392c2bac384c2a367c2b900.jpeg (100%) rename {img => public/img}/bookmarks/the-smallest-docker-image-to-serve-static-websites.c381260a4f7c4072c2ac6e4b.jpeg (100%) rename {img => public/img}/bookmarks/til-in-is-not-the-same-as-any.c2b7c2a96d05c38f4811c381.jpeg (100%) rename {img => public/img}/bookmarks/tim-hareks-website.c2a9556f23c2a1c3b879c39b.jpeg (100%) rename {img => public/img}/bookmarks/timeline-of-the-far-future.402bc395c38d3ac39226c391.jpeg (100%) rename {img => public/img}/bookmarks/tobias-girstmairs-website.01c3bd17291a23c2b4c2ba00.jpeg (100%) rename {img => public/img}/bookmarks/tom-critchlows-digital-garden.1c253e363315c28ec2b22300.jpeg (100%) rename {img => public/img}/bookmarks/toot-that-browser-extension-for-firefox.c28a18c292c28bc2ab3ac290.jpeg (100%) rename {img => public/img}/bookmarks/town-of-zzt.6ec2ad77c28bc2bcc2a8c280.jpeg (100%) rename {img => public/img}/bookmarks/travellers-rest-on-steam.c3b1c280c3a52dc296c2a41c.jpeg (100%) rename {img => public/img}/bookmarks/travis-shears-personal-site.5b5820c3bac3b1c3a1c3ae36.jpeg (100%) rename {img => public/img}/bookmarks/twitters-bot-problem-is-getting-weird-with-chatgpt.c28ac2abc381c3a113c3ac7d.jpeg (100%) rename {img => public/img}/bookmarks/unimported-find-and-fix-dangling-files-in-js-projects.c2aec3b1c28cc3803ec3b200.jpeg (100%) rename {img => public/img}/bookmarks/vercel-markup.43c28bc2b211c28cc2a24100.jpeg (100%) rename {img => public/img}/bookmarks/vic-20-listings.c3bcc38347c289c289c38f00.jpeg (100%) rename {img => public/img}/bookmarks/video-game-preservation.c2917202c3b957c28bc38d00.jpeg (100%) rename {img => public/img}/bookmarks/vintage-basic-games.c29cc28ec3a5c2bd7dc2b864.jpeg (100%) rename {img => public/img}/bookmarks/wasabi-the-parts.c2910d1a7e2ec380c29fc390.jpeg (100%) rename {img => public/img}/bookmarks/webgbcam.61456ac28ec287c3b804c2a0.jpeg (100%) rename {img => public/img}/bookmarks/weird-web-pages.7317342964c2bbc299c3a600.jpeg (100%) rename {img => public/img}/bookmarks/what-is-the-most-minimal-uk-address-possible.01c38dc2acc3af66c28b7846.jpeg (100%) rename {img => public/img}/bookmarks/why-developers-never-use-state-machines.4e1a63c3a81dc28fc280037a.jpeg (100%) rename {img => public/img}/bookmarks/why-is-oauth-still-hard-in-2023.c28e21c3bdc3b0c3a0550100.jpeg (100%) rename {img => public/img}/bookmarks/windows-nt-on-bull-estrella.543dc38e765bc2a71ac2b700.jpeg (100%) rename {img => public/img}/bookmarks/worlds-apart-trade-wars-2002-game-server.c296c387c3985dc3b3c3b349.jpeg (100%) rename {img => public/img}/bookmarks/worlds-tallest-wooden-wind-turbine.5fc389c3bdc2ab6372c2865d.jpeg (100%) rename {img => public/img}/bookmarks/writing-on-your-palm.36c3ad3e06c3a9c295c3a600.jpeg (100%) rename {img => public/img}/bookmarks/wyesoft-tradewars-2002-server.c3bcc2acc28861c2b319c2ae.jpeg (100%) rename {img => public/img}/bookmarks/x86-is-dead-long-live-x86.682b193725c2b7c2a9487800.jpeg (100%) rename {img => public/img}/bookmarks/xe-christine-dodrill-blog.1a12c2926243334fc2952600.jpeg (100%) rename {img => public/img}/bookmarks/xhtml-club.c3ab0d2738c384c290030b00.jpeg (100%) rename {img => public/img}/bookmarks/xml-is-the-future.c382c2b2c39a43c3bd5cc3a9.jpeg (100%) rename {img => public/img}/bookmarks/xstate-docs.c2a97d3a7137c38f4d0ec3a4.jpeg (100%) rename {img => public/img}/bookmarks/you-didnt-just-do-that-heroku.c29348c3b3c2a4c28f32c3af.jpeg (100%) rename {img => public/img}/bookmarks/yuri-vishnevskys-website.1b27c39b2bc38062c3a1c299.jpeg (100%) rename {img => public/img}/bookmarks/zeal-offline-documentation-viewer.c2af7f61c398595dc2807700.jpeg (100%) rename "img/bookmarks/\343\200\220-s-i-n-e-w-a-v-e-\343\200\221.0ec292c2b0c3b00e30c2a74d.jpeg" => "public/img/bookmarks/\343\200\220-s-i-n-e-w-a-v-e-\343\200\221.0ec292c2b0c3b00e30c2a74d.jpeg" (100%) rename {img => public/img}/books/bill-turnbull-the-bad-beekeepers-club.jpg (100%) rename {img => public/img}/books/chad-orzel-how-to-teach-relativity-to-your-dog.jpg (100%) rename {img => public/img}/books/jessica-joelle-alexander-and-iben-dissing-sandahl-the-danish-way-of-parenting.jpg (100%) rename {img => public/img}/books/michio-kaku-physics-of-the-impossible.jpg (100%) rename {img => public/img}/books/new-scientist-nothing-from-absolute-zero-to-cosmic-oblivion.jpg (100%) rename {img => public/img}/books/ray-bradbury-the-martian-chronicles.jpg (100%) rename {img => public/img}/books/sean-carrol-the-particle-at-the-end-of-the-universe.jpg (100%) rename {img => public/img}/bounce-in-qb64-1.png (100%) rename {img => public/img}/bounce-in-qb64-2.png (100%) rename {img => public/img}/bounce-in-qb64-3.png (100%) rename {img => public/img}/bounce-in-qb64-4.png (100%) rename {img => public/img}/build-an-incremental-web-game-with-vue-js-1.png (100%) rename {img => public/img}/build-an-incremental-web-game-with-vue-js-2.png (100%) rename {img => public/img}/build-an-incremental-web-game-with-vue-js-3.png (100%) rename {img => public/img}/build-an-incremental-web-game-with-vue-js-p2-1.png (100%) rename {img => public/img}/build-an-incremental-web-game-with-vue-js-p2-2.png (100%) rename {img => public/img}/building-your-own-social-media-feed-1.png (100%) rename {img => public/img}/camera-3-24.png (100%) rename {img => public/img}/carrot.png (100%) rename {img => public/img}/chickenstreet-iampixeltier-mainframe-1.png (100%) rename {img => public/img}/chickenstreet-iampixeltier-mainframe.png (100%) rename {img => public/img}/composited-mainframe-computers.png (100%) rename {img => public/img}/creating-a-city-sim-with-golang-1.png (100%) rename {img => public/img}/creating-a-city-sim-with-golang-2.png (100%) rename {img => public/img}/creating-a-city-sim-with-golang-3.png (100%) rename {img => public/img}/creating-a-city-sim-with-golang-4.png (100%) rename {img => public/img}/creating-a-city-sim-with-golang-5.png (100%) rename {img => public/img}/creating-a-city-sim-with-golang-p4-animation.gif (100%) rename {img => public/img}/defrag-like-its-1992-1.png (100%) rename {img => public/img}/defrag-like-its-1992-2.png (100%) rename {img => public/img}/defrag-like-its-1992-3.png (100%) rename {img => public/img}/dependency-resolving-algorithm-1.png (100%) rename {img => public/img}/dependency-resolving-algorithm-2.png (100%) rename {img => public/img}/dependency-resolving-algorithm-3.png (100%) rename {img => public/img}/eleventyjs-font-subsetting-plugin-1.png (100%) rename {img => public/img}/emoji.png (100%) rename {img => public/img}/escapists.jpg (100%) rename {img => public/img}/fail2ban-regex.png (100%) rename {img => public/img}/featured-images/a-review-of-rimworld-a16.png (100%) rename {img => public/img}/featured-images/a-review-of-the-godville-game.png (100%) rename {img => public/img}/featured-images/basic-space-mines-port-to-golang-featured-img.png (100%) rename {img => public/img}/featured-images/bounce-in-qb64.png (100%) rename {img => public/img}/featured-images/build-an-incremental-web-game-with-vue-js.png (100%) rename {img => public/img}/featured-images/building-tuppence-the-pico-php-framework.png (100%) rename {img => public/img}/featured-images/building-your-own-social-media-feed.png (100%) rename {img => public/img}/featured-images/creating-a-city-sim-with-golang-p1.png (100%) rename {img => public/img}/featured-images/creating-a-city-sim-with-golang-p2.png (100%) rename {img => public/img}/featured-images/dependency-resolving-algorithm.png (100%) rename {img => public/img}/featured-images/free-open-source-games.png (100%) rename {img => public/img}/featured-images/installing-turbo-c-on-dosbox.png (100%) rename {img => public/img}/featured-images/introducing-the-qb64-programming-language.png (100%) rename {img => public/img}/featured-images/kareltima-iii-the-self-beating-machine.png (100%) rename {img => public/img}/featured-images/mission-mainframe.png (100%) rename {img => public/img}/featured-images/porting-basic-bounce-game-to-go.png (100%) rename {img => public/img}/featured-images/revisiting-google-page-speed-tool.png (100%) rename {img => public/img}/featured-images/scaleway-gogs.png (100%) rename {img => public/img}/featured-images/the-escapists.png (100%) rename {img => public/img}/featured-images/thoughts-on-goaccess.png (100%) rename {img => public/img}/featured-images/ufo-enemy-unknown.png (100%) rename {img => public/img}/featured-images/zero-config-vue-development-with-parcel-js.png (100%) rename {img => public/img}/font-subsetting-with-eleventyjs-1.png (100%) rename {img => public/img}/font-subsetting-with-eleventyjs-2.png (100%) rename {img => public/img}/free-open-source-games-automanic.jpg (100%) rename {img => public/img}/free-open-source-games-cytadela.jpg (100%) rename {img => public/img}/free-open-source-games-eduke32.jpg (100%) rename {img => public/img}/free-open-source-games-irrlicht.jpg (100%) rename {img => public/img}/free-open-source-games-scorched3d.jpg (100%) rename {img => public/img}/free-open-source-games-smclone.jpg (100%) rename {img => public/img}/free-open-source-games-ufo2000.jpg (100%) rename {img => public/img}/freezetime-featured-img.png (100%) rename {img => public/img}/freezetime-gameplay-img-1.png (100%) rename {img => public/img}/github-contributions-example.png (100%) rename {img => public/img}/github.png (100%) rename {img => public/img}/go-rogue-example-gui.png (100%) rename {img => public/img}/google-docs-scam-1.png (100%) rename {img => public/img}/google-mobile-website-speed-testing-tool-1.png (100%) rename {img => public/img}/google-mobile-website-speed-testing-tool-2.png (100%) rename {img => public/img}/google-mobile-website-speed-testing-tool-3.png (100%) rename {img => public/img}/google-mobile-website-speed-testing-tool-4.png (100%) rename {img => public/img}/google-mobile-website-speed-testing-tool-featured-img.png (100%) rename {img => public/img}/gping-application-error.png (100%) rename {img => public/img}/gping-graphical-ping-for-windows.png (100%) rename {img => public/img}/growth.png (100%) rename {img => public/img}/happy-fiftyth-birthday-basic-1.png (100%) rename {img => public/img}/happy-fiftyth-birthday-basic-2.png (100%) rename {img => public/img}/happy-fiftyth-birthday-basic-3.png (100%) rename {img => public/img}/happy-fiftyth-birthday-basic-4.png (100%) rename {img => public/img}/happy-fiftyth-birthday-basic-featured-img.png (100%) rename {img => public/img}/headshot.jpg (100%) rename {img => public/img}/installing-turbo-c-on-dosbox-1.png (100%) rename {img => public/img}/installing-turbo-c-on-dosbox-2.png (100%) rename {img => public/img}/installing-turbo-c-on-dosbox-3.png (100%) rename {img => public/img}/installing-turbo-c-on-dosbox-4.png (100%) rename {img => public/img}/installing-turbo-c-on-dosbox-5.png (100%) rename {img => public/img}/installing-turbo-c-on-dosbox-6.png (100%) rename {img => public/img}/interroban-gg-screenshot.png (100%) rename {img => public/img}/introducing-the-qb64-programming-language-1.png (100%) rename {img => public/img}/introducing-the-qb64-programming-language-2.png (100%) rename {img => public/img}/introducing-the-qb64-programming-language-3.png (100%) rename {img => public/img}/introducing-the-qb64-programming-language-4.png (100%) rename {img => public/img}/introducing-the-qb64-programming-language-5.png (100%) rename {img => public/img}/javascript-pixel-paint-10.png (100%) rename {img => public/img}/javascript-pixel-paint-11.png (100%) rename {img => public/img}/javascript-pixel-paint-12.png (100%) rename {img => public/img}/javascript-pixel-paint-2.png (100%) rename {img => public/img}/javascript-pixel-paint-3.png (100%) rename {img => public/img}/javascript-pixel-paint-4.png (100%) rename {img => public/img}/javascript-pixel-paint-5.png (100%) rename {img => public/img}/javascript-pixel-paint-6.png (100%) rename {img => public/img}/javascript-pixel-paint-7.png (100%) rename {img => public/img}/javascript-pixel-paint-8.png (100%) rename {img => public/img}/javascript-pixel-paint-9.png (100%) rename {img => public/img}/javascript-pixel-paint.png (100%) rename {img => public/img}/jzz-game-1.png (100%) rename {img => public/img}/jzz-game-2.png (100%) rename {img => public/img}/jzz-twitter.png (100%) rename {img => public/img}/kareltima-iii-the-self-beating-machine-1.png (100%) rename {img => public/img}/kareltima-iii-the-self-beating-machine-2.png (100%) rename {img => public/img}/laravel-io-1.png (100%) rename {img => public/img}/lessc-version.png (100%) rename {img => public/img}/lessc-where.png (100%) rename {img => public/img}/logo.png (100%) rename {img => public/img}/marking-external-links-wikipedia.png (100%) rename {img => public/img}/mission-mainframe-1.png (100%) rename {img => public/img}/mission-mainframe-2.png (100%) rename {img => public/img}/nested-queries-in-laravel-eloquent.png (100%) rename {img => public/img}/open-graph.png (100%) rename {img => public/img}/overlay.png (100%) rename {img => public/img}/photogabble_page_mockups.png (100%) rename {img => public/img}/php-fpm-cluster-image-preview.gif (100%) rename {img => public/img}/php-fpm-cluster-image.gif (100%) rename {img => public/img}/php-multiversion-with-homebrew-1.png (100%) rename {img => public/img}/pixel-paint-stage-1-conclusion.png (100%) rename {img => public/img}/pixel-people-showcase.png (100%) rename {img => public/img}/placeholder.jpg (100%) rename {img => public/img}/psd/logo.png (100%) rename {img => public/img}/ramen-roguelike-tutorial.png (100%) rename {img => public/img}/really-useful-free-stock-photography-archives-pexels.png (100%) rename {img => public/img}/really-useful-free-stock-photography-archives-stockpic.png (100%) rename {img => public/img}/really-useful-free-stock-photography-archives-unsplash.png (100%) rename {img => public/img}/revisiting-google-page-speed-tool-1.png (100%) rename {img => public/img}/revisiting-google-page-speed-tool-2.png (100%) rename {img => public/img}/revisiting-google-page-speed-tool-3.png (100%) rename {img => public/img}/revisiting-google-page-speed-tool-4.png (100%) rename {img => public/img}/revisiting-google-page-speed-tool-5.png (100%) rename {img => public/img}/revisiting-google-page-speed-tool-6.png (100%) rename {img => public/img}/romvlvs-screenshot.png (100%) rename {img => public/img}/rubber-duck-programming.png (100%) rename {img => public/img}/space-mines-april-devlog-001.jpg (100%) rename {img => public/img}/space-mines-design-language-001.png (100%) rename {img => public/img}/space-mines-design-language-002.jpg (100%) rename {img => public/img}/stardust.png (100%) rename {img => public/img}/stardust_blue.png (100%) rename {img => public/img}/static-site-search-providers-1.png (100%) rename {img => public/img}/static-site-search-providers-2.png (100%) rename {img => public/img}/static-site-search-providers-3.png (100%) rename {img => public/img}/thoughts-on-goaccess-1.png (100%) rename {img => public/img}/thoughts-on-goaccess-2.png (100%) rename {img => public/img}/thoughts-on-goaccess-3.png (100%) rename {img => public/img}/thoughts-on-goaccess-4.png (100%) rename {img => public/img}/three-informative-pagespeed-testing-tools-featured-img.png (100%) rename {img => public/img}/ts-city-simulator-spritesheet-editor.png (100%) rename {img => public/img}/typescript-roguelike-game.png (100%) rename {img => public/img}/ufo-enemy-unknown-1.png (100%) rename {img => public/img}/ufo-enemy-unknown-2.png (100%) rename {img => public/img}/ufo-enemy-unknown-3.png (100%) rename {img => public/img}/ufo-enemy-unknown-4.png (100%) rename {img => public/img}/ufo-enemy-unknown-5.png (100%) rename {img => public/img}/ufo-enemy-unknown-6.png (100%) rename {img => public/img}/updated-content-list-layouts.png (100%) rename {img => public/img}/weighted-random-number-picking-1.png (100%) rename {img => public/img}/weighted-random-number-picking-featured-image.png (100%) rename {img => public/img}/why-i-dont-visit-reddit-anymore-01.png (100%) rename {img => public/img}/wincache-laravel-lumen-01.gif (100%) rename {img => public/img}/windows-environment-variables.png (100%) rename {img => public/img}/wordpress-jetpack-malicious-login-attempts.png (100%) rename {img => public/img}/writing-a-static-site-generator-1.png (100%) rename {img => public/img}/writing-a-static-site-generator-2.png (100%) rename {img => public/img}/xxiivv.black.svg (100%) rename {img => public/img}/zzt-featured-img.png (100%) create mode 100644 public/main.js rename {_assets => public}/og-image/2022-week-24-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-25-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-26-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-27-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-28-and-29-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-30-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-31-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-32-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-33-and-34-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-35-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-36-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-37-in-review.jpg (100%) rename {_assets => public}/og-image/2022-week-38-and-39-in-review.jpg (100%) rename {_assets => public}/og-image/2023-week-1-in-review.jpg (100%) rename {_assets => public}/og-image/2023-week-2-in-review.jpg (100%) rename {_assets => public}/og-image/a-11ty-reading-time-plugin-quest.jpg (100%) rename {_assets => public}/og-image/a-focus-on-birdsite-drama-and-social-media-in-general.jpg (100%) rename {_assets => public}/og-image/a-review-of-rimworld-a16-after-100-hours-in-game.jpg (100%) rename {_assets => public}/og-image/a-review-of-the-godville-game.jpg (100%) rename {_assets => public}/og-image/a-revival-of-photogabble-the-post-mortem.jpg (100%) rename {_assets => public}/og-image/a-revival-of-sorts.jpg (100%) rename {_assets => public}/og-image/a-time_since-function-for-php.jpg (100%) rename {_assets => public}/og-image/achieving-public-private-and-privileged-members-in-javascript.jpg (100%) rename {_assets => public}/og-image/adding-emoji-support-to-your-website-or-project.jpg (100%) rename {_assets => public}/og-image/adding-enhanced-opengraph-meta.jpg (100%) rename {_assets => public}/og-image/adding-favicon.jpg (100%) rename {_assets => public}/og-image/adding-sparklines-to-your-eleventyjs-powered-website.jpg (100%) rename {_assets => public}/og-image/ansi-command-line-colors-under-windows.jpg (100%) rename {_assets => public}/og-image/basic-server-monitoring-using-php-and-rrdtools.jpg (100%) rename {_assets => public}/og-image/blogtimes-a-trip-down-memory-lane.jpg (100%) rename {_assets => public}/og-image/bounce-in-qb64.jpg (100%) rename {_assets => public}/og-image/build-an-incremental-clicker-web-game-with-vuejs-part-one.jpg (100%) rename {_assets => public}/og-image/clover-coverage-cli.jpg (100%) rename {_assets => public}/og-image/code-coverage-info.jpg (100%) rename {_assets => public}/og-image/colour.jpg (100%) rename {_assets => public}/og-image/confusable-homoglyphs.jpg (100%) rename {_assets => public}/og-image/cool-urls-dont-change.jpg (100%) rename {_assets => public}/og-image/creating-a-less-file-watcher-in-phpstorm.jpg (100%) rename {_assets => public}/og-image/creating-a-now-page-archive-with-11ty.jpg (100%) rename {_assets => public}/og-image/defending-wordpress-against-malicious-login-attempts-using-fail2ban.jpg (100%) rename {_assets => public}/og-image/defrag-like-its-1992.jpg (100%) rename {_assets => public}/og-image/dependency-resolving-algorithm.jpg (100%) rename {_assets => public}/og-image/draughts.jpg (100%) rename {_assets => public}/og-image/floppybox.jpg (100%) rename {_assets => public}/og-image/freezetime-browser-based-roguelike.jpg (100%) rename {_assets => public}/og-image/generating-random-numbers-over-a-range-in-go.jpg (100%) rename {_assets => public}/og-image/go-git-archive.jpg (100%) rename {_assets => public}/og-image/go-pixels-fight.jpg (100%) rename {_assets => public}/og-image/go-space-mines.jpg (100%) rename {_assets => public}/og-image/graphing-ping-response-times-in-windows-with-gping.jpg (100%) rename {_assets => public}/og-image/happy-53rd-birthday-basic.jpg (100%) rename {_assets => public}/og-image/happy-new-year.jpg (100%) rename {_assets => public}/og-image/how-to-install-azure-cli-via-node-on-windowslinux-and-osx.jpg (100%) rename {_assets => public}/og-image/how-to-return-a-random-list-item-by-weight.jpg (100%) rename {_assets => public}/og-image/how-to-set-composer-global-bin-path-in-windows.jpg (100%) rename {_assets => public}/og-image/if-dos-game-dev-is-a-rabbit-hole-then-call-me-alice.jpg (100%) rename {_assets => public}/og-image/installing-turbo-c-on-dosbox.jpg (100%) rename {_assets => public}/og-image/internet-explorer-is-dead-long-live-internet-explorer.jpg (100%) rename {_assets => public}/og-image/is-rubber-ducky-debugging-using-sods-law-as-a-debugging-tool.jpg (100%) rename {_assets => public}/og-image/jzt-an-awesome-homage-to-the-dos-era-adventure-game-zzt.jpg (100%) rename {_assets => public}/og-image/kareltima-iii-the-self-beating-machine.jpg (100%) rename {_assets => public}/og-image/keep-blogging-fun.jpg (100%) rename {_assets => public}/og-image/laravel-registration-validator.jpg (100%) rename {_assets => public}/og-image/laravel-remember-uploads.jpg (100%) rename {_assets => public}/og-image/ldpl-space-mines.jpg (100%) rename {_assets => public}/og-image/ldpl-spark.jpg (100%) rename {_assets => public}/og-image/like-pie.jpg (100%) rename {_assets => public}/og-image/mirror-of-b2blogtimephp-by-sanjay-sheth.jpg (100%) rename {_assets => public}/og-image/mirror-of-blogtimesphp-by-matt-mullenweg.jpg (100%) rename {_assets => public}/og-image/mission-mainframe.jpg (100%) rename {_assets => public}/og-image/nested-queries-in-laravels-query-builder.jpg (100%) rename {_assets => public}/og-image/on-quitting-programming-for-carpentry.jpg (100%) rename {_assets => public}/og-image/php-rrdtool-helpers.jpg (100%) rename {_assets => public}/og-image/php-space-mines-an-api-is-born.jpg (100%) rename {_assets => public}/og-image/php-space-mines-introduction.jpg (100%) rename {_assets => public}/og-image/phpurls.jpg (100%) rename {_assets => public}/og-image/pixel-mainframe.jpg (100%) rename {_assets => public}/og-image/portcullis.jpg (100%) rename {_assets => public}/og-image/porting-basic-space-mines-game-to-go.jpg (100%) rename {_assets => public}/og-image/t-irc.jpg (100%) rename {_assets => public}/og-image/the-command-pattern.jpg (100%) rename {_assets => public}/og-image/the-qb64-programming-language.jpg (100%) rename {_assets => public}/og-image/the-robo-car-uprising.jpg (100%) rename {_assets => public}/og-image/think-with-google-revisiting-googles-website-speed-testing-tool.jpg (100%) rename {_assets => public}/og-image/think-with-google-website-speed-testing-tool.jpg (100%) rename {_assets => public}/og-image/thinking-about-doscember-2022.jpg (100%) rename {_assets => public}/og-image/thoughts-on-goaccess.jpg (100%) rename {_assets => public}/og-image/todoci.jpg (100%) rename {_assets => public}/og-image/toshiba-t5100.jpg (100%) rename {_assets => public}/og-image/tuppence-boilerplate.jpg (100%) rename {_assets => public}/og-image/tuppence.jpg (100%) rename {_assets => public}/og-image/updated-content-list-layouts.jpg (100%) rename {_assets => public}/og-image/useful-free-stock-photography-libraries.jpg (100%) rename {_assets => public}/og-image/using-puppeteer-with-11ty-to-automate-generating-social-share-images.jpg (100%) rename {_assets => public}/og-image/week-24-in-review.jpg (100%) rename {_assets => public}/og-image/week-25-in-review.jpg (100%) rename {_assets => public}/og-image/week-26-in-review.jpg (100%) rename {_assets => public}/og-image/week-27-in-review.jpg (100%) rename {_assets => public}/og-image/week-28-and-29-in-review.jpg (100%) rename {_assets => public}/og-image/week-30-in-review.jpg (100%) rename {_assets => public}/og-image/week-31-in-review.jpg (100%) rename {_assets => public}/og-image/week-32-in-review.jpg (100%) rename {_assets => public}/og-image/week-33-and-34-in-review.jpg (100%) rename {_assets => public}/og-image/week-35-in-review.jpg (100%) rename {_assets => public}/og-image/why-i-built-a-tiny-php-framework-called-tuppence.jpg (100%) rename {_assets => public}/og-image/word-stats-plugin-for-eleventy.jpg (100%) rename {_assets => public}/og-image/writing-a-pixel-editor-in-javascript-part-five.jpg (100%) rename {_assets => public}/og-image/writing-a-pixel-editor-in-javascript-part-four.jpg (100%) rename {_assets => public}/og-image/writing-a-pixel-editor-in-javascript-part-one.jpg (100%) rename {_assets => public}/og-image/writing-a-pixel-editor-in-javascript-part-six.jpg (100%) rename {_assets => public}/og-image/writing-a-pixel-editor-in-javascript-part-three.jpg (100%) rename {_assets => public}/og-image/writing-a-pixel-editor-in-javascript-part-two.jpg (100%) rename {_assets => public}/og-image/writing-documentation-is-hard.jpg (100%) rename {_assets => public}/og-image/zero-config-rapid-vuejs-development-with-parcel.jpg (100%) diff --git a/.eleventy.js b/.eleventy.js index 1024033c..2c5f92af 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,9 +1,9 @@ -const filters = require('./utils/filters') -const collections = require('./utils/collections'); -const {slugify} = require('./utils/filters'); -const shortcodes = require('./utils/shortcodes'); -const transforms = require('./utils/transforms'); -const ObjectCache = require("./utils/helpers/cache"); +const filters = require('./lib/filters') +const collections = require('./lib/collections'); +const {slugify} = require('./lib/filters'); +const shortcodes = require('./lib/shortcodes'); +const transforms = require('./lib/transforms'); +const ObjectCache = require("./lib/helpers/cache"); module.exports = function (eleventyConfig) { eleventyConfig.setUseGitIgnore(false); @@ -12,7 +12,7 @@ module.exports = function (eleventyConfig) { // Install Plugins // - eleventyConfig.addPlugin(require('./utils/helpers/screenshot')); + eleventyConfig.addPlugin(require('./lib/helpers/screenshot')); eleventyConfig.addPlugin(require('@photogabble/eleventy-plugin-interlinker'), { defaultLayout: 'layouts/embed.liquid', @@ -20,10 +20,10 @@ module.exports = function (eleventyConfig) { eleventyConfig.addPlugin(require('@photogabble/eleventy-plugin-font-subsetting'), { srcFiles: [ - `./_assets/fonts/iosevka-etoile-regular.woff2`, - `./_assets/fonts/iosevka-etoile-italic.woff2`, - `./_assets/fonts/iosevka-etoile-bold.woff2`, - `./_assets/fonts/iosevka-etoile-bolditalic.woff2`, + `./public/fonts/iosevka-etoile-regular.woff2`, + `./public/fonts/iosevka-etoile-italic.woff2`, + `./public/fonts/iosevka-etoile-bold.woff2`, + `./public/fonts/iosevka-etoile-bolditalic.woff2`, ], dist: './fonts', enabled: process.env.ELEVENTY_ENV !== 'production', @@ -110,17 +110,18 @@ module.exports = function (eleventyConfig) { // eleventyConfig.addPassthroughCopy({ - '_assets/favicon': '/', - '_assets/files': 'files', - 'img': './img', + 'public/favicon': '/', + 'public/files': 'files', + 'public/img': 'img', '_redirects': '_redirects', - '_assets/og-image': 'img/og-image', + 'public/og-image': 'img/og-image', + 'public/main.js': 'main.js', }); // // Markdown-It && Plugins // - eleventyConfig.setLibrary('md', require('./utils/helpers/markdown')); + eleventyConfig.setLibrary('md', require('./lib/helpers/markdown')); }; diff --git a/.eleventyignore b/.eleventyignore index 0901a535..fec375ff 100644 --- a/.eleventyignore +++ b/.eleventyignore @@ -1,4 +1,4 @@ node_modules styles/components -functions/_posts -functions/_posts.json \ No newline at end of file +public +.cache \ No newline at end of file diff --git a/.gitignore b/.gitignore index 13d4c580..99d6f811 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ _site/ +dist/ _tmp/ .DS_Store node_modules/ .idea -.cache -functions/_posts.json -functions/_posts \ No newline at end of file +.cache \ No newline at end of file diff --git a/404.njk b/404.njk index 4e7ee658..e995d1bf 100644 --- a/404.njk +++ b/404.njk @@ -2,7 +2,7 @@ permalink: "404.html" --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = '404 Not Found' %} {% block content %} diff --git a/_data/bookwyrm.js b/_data/bookwyrm.js index 4b444b1f..baa084af 100644 --- a/_data/bookwyrm.js +++ b/_data/bookwyrm.js @@ -1,4 +1,4 @@ -const ObjectCache = require("../utils/helpers/cache"); +const ObjectCache = require("../lib/helpers/cache"); const fetch = require("node-fetch"); const chalk = require("chalk"); diff --git a/_data/lists-meta.js b/_data/lists-meta.js index df99e7ff..cbb3bad4 100644 --- a/_data/lists-meta.js +++ b/_data/lists-meta.js @@ -27,7 +27,7 @@ module.exports = { title: 'Button Board', prefix: 'Community', description: 'Like a blogroll but via the medium of 88x21 gifs', - layout: '_includes/layouts/list-button-board.njk', + layout: 'layouts/list-button-board.njk', }, 'list/digital-garden': { @@ -60,6 +60,6 @@ module.exports = { 'list/365-writing': { title: '365 day writing project', description: 'My attempt at writing a thought a day for a year', - layout: '_includes/layouts/list-posts.njk', + layout: 'layouts/list-posts.njk', }, }; \ No newline at end of file diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 0fd0a7df..6d9b8f7d 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -74,60 +74,7 @@ - + diff --git a/_includes/layouts/page-post.njk b/_includes/layouts/page-post.njk index f8faa3a8..d22cd130 100644 --- a/_includes/layouts/page-post.njk +++ b/_includes/layouts/page-post.njk @@ -3,7 +3,7 @@ {% set readingTime = content | wordStats %} {% set headingClass = 'note' %} {% set titlePrefix %} - {% include "../components/growth.njk" %} {{ contentType }} + {% include "components/growth.njk" %} {{ contentType }} {% endset %} {% set subTitle %} @@ -25,7 +25,7 @@
Series Listing (click to open) - {% include "_includes/components/series-list.njk" %} + {% include "components/series-list.njk" %}
{% endif %} diff --git a/about.njk b/about.njk index 6e9d0b1d..47dd43d9 100644 --- a/about.njk +++ b/about.njk @@ -1,7 +1,7 @@ --- title: 'About' --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% block content %}
diff --git a/antilibrary.njk b/antilibrary.njk index 53952cc0..3e39137d 100644 --- a/antilibrary.njk +++ b/antilibrary.njk @@ -1,7 +1,7 @@ --- folder: lists --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Antilibrary' %} {% set titlePrefix = 'Reading' %} diff --git a/bin/add-bookmark.js b/bin/add-bookmark.js index b46e98a6..4d9f69e4 100644 --- a/bin/add-bookmark.js +++ b/bin/add-bookmark.js @@ -1,7 +1,7 @@ #!/usr/bin/env node const {Select, Input, Confirm} = require('enquirer'); -const {slugify} = require("../utils/filters"); +const {slugify} = require("../lib/filters"); const {DateTime} = require('luxon'); const fetch = require("node-fetch"); const cheerio = require('cheerio'); diff --git a/functions/create-og-images.js b/bin/create-og-images.js similarity index 91% rename from functions/create-og-images.js rename to bin/create-og-images.js index 3b842277..8037e8a3 100644 --- a/functions/create-og-images.js +++ b/bin/create-og-images.js @@ -27,14 +27,14 @@ const fileReadable = (path) => { (async () => { try { - let posts = require("./_posts.json"); + let posts = require("../.cache/_posts.json"); const promises = []; posts = posts.map((post) => { return { ...post, src: path.join(process.cwd(), post.template), - dist: path.join(process.cwd(), `_assets/og-image/${post.slug}.jpg`), + dist: path.join(process.cwd(), `public/og-image/${post.slug}.jpg`), }; }).filter((post) => !(fileReadable(post.dist) === true || fileReadable(post.src) === false)) diff --git a/blank.njk b/blank.njk index 35239b28..fab6196c 100644 --- a/blank.njk +++ b/blank.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/blank-base.njk" %} +{% extends "layouts/blank-base.njk" %} {% set title = 'This page intentionally left blank' %} diff --git a/books.njk b/books.njk index b6b96f82..cce3045d 100644 --- a/books.njk +++ b/books.njk @@ -1,7 +1,7 @@ --- folder: lists --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Bookshelf' %} {% set titlePrefix = 'Reading' %} diff --git a/button-board.njk b/button-board.njk index 0abc4eb5..59cd7e6c 100644 --- a/button-board.njk +++ b/button-board.njk @@ -3,7 +3,7 @@ title: Button Board titlePrefix: Community folder: lists --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% block pageContent %}
diff --git a/colophon.njk b/colophon.njk index 4af882e6..955185c1 100644 --- a/colophon.njk +++ b/colophon.njk @@ -1,7 +1,7 @@ --- folder: 'about' --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Colophon' %} {% set titlePrefix = 'Info' %} @@ -15,7 +15,7 @@ folder: 'about'

Changelog

This is a development blog listing key updates to PhotoGabble as and when I find the time.

- {% include "_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}
diff --git a/content/content.11tydata.js b/content/content.11tydata.js index 01caf7b6..89282ea6 100644 --- a/content/content.11tydata.js +++ b/content/content.11tydata.js @@ -1,4 +1,4 @@ -const {slugify, ogImageFromSlug} = require('../utils/filters'); +const {slugify, ogImageFromSlug} = require('../lib/filters'); module.exports = { featured: false, diff --git a/dad-jokes.njk b/dad-jokes.njk index b7e715b7..a3b39bc9 100644 --- a/dad-jokes.njk +++ b/dad-jokes.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Dad Jokes' %} diff --git a/feeds.njk b/feeds.njk index 68945401..a403d587 100644 --- a/feeds.njk +++ b/feeds.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'RSS Feeds' %} diff --git a/glossary.njk b/glossary.njk index bbba1fc0..4604f714 100644 --- a/glossary.njk +++ b/glossary.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Glossary' %} {% set titlePrefix = 'Writing' %} diff --git a/index.njk b/index.njk index 5813443f..feddafa8 100644 --- a/index.njk +++ b/index.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/base.njk" %} +{% extends "layouts/base.njk" %} {% set articlesList = collections.post | excludeStubs %} @@ -16,7 +16,7 @@

Recent Writing

{% set postsList = articlesList | excludeTypes(['thought', 'project', 'mirror', 'resource']) | reverse | limit(6) %} - {% include "_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}

Subscribe to the RSS Feed or view the entire archive for more.

@@ -28,7 +28,7 @@

Recent Thoughts

{% set postsList = thoughts | reverse | limit(3) %} - {% include "_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}

View more thoughts...

diff --git a/utils/collections.js b/lib/collections.js similarity index 100% rename from utils/collections.js rename to lib/collections.js diff --git a/utils/filters.js b/lib/filters.js similarity index 100% rename from utils/filters.js rename to lib/filters.js diff --git a/utils/helpers/cache.js b/lib/helpers/cache.js similarity index 100% rename from utils/helpers/cache.js rename to lib/helpers/cache.js diff --git a/utils/helpers/chunk.js b/lib/helpers/chunk.js similarity index 100% rename from utils/helpers/chunk.js rename to lib/helpers/chunk.js diff --git a/utils/helpers/hashtags.js b/lib/helpers/hashtags.js similarity index 100% rename from utils/helpers/hashtags.js rename to lib/helpers/hashtags.js diff --git a/utils/helpers/index.js b/lib/helpers/index.js similarity index 100% rename from utils/helpers/index.js rename to lib/helpers/index.js diff --git a/utils/helpers/map.js b/lib/helpers/map.js similarity index 100% rename from utils/helpers/map.js rename to lib/helpers/map.js diff --git a/utils/helpers/markdown.js b/lib/helpers/markdown.js similarity index 100% rename from utils/helpers/markdown.js rename to lib/helpers/markdown.js diff --git a/utils/helpers/screenshot.js b/lib/helpers/screenshot.js similarity index 97% rename from utils/helpers/screenshot.js rename to lib/helpers/screenshot.js index c5d8f838..9e0eea08 100644 --- a/utils/helpers/screenshot.js +++ b/lib/helpers/screenshot.js @@ -28,7 +28,7 @@ const variableHash = (data, size = 5, encoding = 'hex') => { * @param { * } customOptions */ module.exports = function (eleventyConfig, customOptions = {}) { - const distFolder = path.join(process.cwd(), `img/bookmarks`); + const distFolder = path.join(process.cwd(), `public/img/bookmarks`); const viewport = [1200, 630]; const timeout = 8500; diff --git a/utils/helpers/strToSlug.js b/lib/helpers/strToSlug.js similarity index 100% rename from utils/helpers/strToSlug.js rename to lib/helpers/strToSlug.js diff --git a/utils/helpers/toTitleCase.js b/lib/helpers/toTitleCase.js similarity index 100% rename from utils/helpers/toTitleCase.js rename to lib/helpers/toTitleCase.js diff --git a/utils/shortcodes.js b/lib/shortcodes.js similarity index 100% rename from utils/shortcodes.js rename to lib/shortcodes.js diff --git a/utils/transforms.js b/lib/transforms.js similarity index 100% rename from utils/transforms.js rename to lib/transforms.js diff --git a/links.njk b/links.njk index 44640b89..6885d05b 100644 --- a/links.njk +++ b/links.njk @@ -2,7 +2,7 @@ folder: lists --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Links' %} {% set titlePrefix = 'Community' %} diff --git a/lists/film-and-tv.njk b/lists/film-and-tv.njk index efc3c11e..c79d32ae 100644 --- a/lists/film-and-tv.njk +++ b/lists/film-and-tv.njk @@ -4,7 +4,7 @@ titlePrefix: List folder: lists subTitle: What I have been watching lately --- -{% extends "../_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% block pageContent %}
diff --git a/lists/index.njk b/lists/index.njk index d0979c30..a3732279 100644 --- a/lists/index.njk +++ b/lists/index.njk @@ -2,7 +2,7 @@ title: All Lists titlePrefix: Index --- -{% extends "../_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set allLists = collections.lists %} diff --git a/lists/list.njk b/lists/list.njk index c534ae76..df958b2d 100644 --- a/lists/list.njk +++ b/lists/list.njk @@ -7,7 +7,7 @@ permalink: /lists/{{ list.slug }}/index.html folder: lists --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = list.title %} {% set titlePrefix = list.prefix or 'List' %} @@ -17,6 +17,6 @@ folder: lists {% if list.layout %} {% include list.layout %} {% else %} - {% include "_includes/layouts/list-default.njk" %} + {% include "layouts/list-default.njk" %} {% endif %} {% endblock %} \ No newline at end of file diff --git a/lists/listened-to.njk b/lists/listened-to.njk index cecdc27e..0a0452c3 100644 --- a/lists/listened-to.njk +++ b/lists/listened-to.njk @@ -4,7 +4,7 @@ titlePrefix: List folder: lists subTitle: What I have been listening to recently --- -{% extends "../_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% block pageContent %}
diff --git a/newsletter.njk b/newsletter.njk index b1bc82dc..58d297c1 100644 --- a/newsletter.njk +++ b/newsletter.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Newsletter' %} diff --git a/now.njk b/now.njk index d9111e7e..cb6a2ff8 100644 --- a/now.njk +++ b/now.njk @@ -1,7 +1,7 @@ --- folder: 'about' --- -{% extends "_includes/layouts/now.njk" %} +{% extends "layouts/now.njk" %} {% set title = '/now' %} {% set isNow = true %} diff --git a/now/now.11tydata.js b/now/now.11tydata.js index bef53cc9..9eafb060 100644 --- a/now/now.11tydata.js +++ b/now/now.11tydata.js @@ -1,4 +1,4 @@ -const {dateToFormat} = require("../utils/filters"); +const {dateToFormat} = require("../lib/filters"); module.exports = { "draft": false, diff --git a/og/og-image.njk b/og/og-image.njk index c485b8db..764394f5 100644 --- a/og/og-image.njk +++ b/og/og-image.njk @@ -3,7 +3,7 @@ pagination: data: collections.post size: 1 alias: article -permalink: functions/_posts/{{ article.data.title | slugify }}/og-image.html +permalink: .cache/_posts/{{ article.data.title | slugify }}/og-image.html permalinkBypassOutputDir: true eleventyExcludeFromCollections: true --- diff --git a/og/og-posts.njk b/og/og-posts.njk index a8cfd109..5e5709a8 100644 --- a/og/og-posts.njk +++ b/og/og-posts.njk @@ -1,12 +1,12 @@ --- title: "Open Graph: posts.json" -permalink: functions/_posts.json +permalink: .cache/_posts.json permalinkBypassOutputDir: true eleventyExcludeFromCollections: true --- [{% for post in collections.post %} { "slug":"{{ post.data.title | slugify }}", - "template":"functions/_posts/{{ post.data.title | slugify }}/og-image.html" + "template":".cache/_posts/{{ post.data.title | slugify }}/og-image.html" }{% if not loop.last %},{% endif %} {% endfor %}] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9c1d7768..ed584416 100644 --- a/package-lock.json +++ b/package-lock.json @@ -454,16 +454,16 @@ } }, "node_modules/@types/linkify-it": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.4.tgz", - "integrity": "sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", "dev": true, "peer": true }, "node_modules/@types/markdown-it": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.5.tgz", - "integrity": "sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.6.tgz", + "integrity": "sha512-0VqpvusJn1/lwRegCxcHVdmLfF+wIsprsKMC9xW8UPcTxhFcQtoN/fBU1zMe8pH7D/RuueMh2CaBaNv+GrLqTw==", "dev": true, "peer": true, "dependencies": { @@ -472,9 +472,9 @@ } }, "node_modules/@types/mdurl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.4.tgz", - "integrity": "sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", "dev": true, "peer": true }, diff --git a/package.json b/package.json index bce7c278..f68719af 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,12 @@ "serve:prod": "rm -rf _site && cross-env ELEVENTY_ENV=production eleventy --serve", "build": "cross-env ELEVENTY_ENV=production eleventy", "build:dev": "cross-env ELEVENTY_ENV=development eleventy", - "og-images": "node functions/create-og-images.js", + "og-images": "node ./bin/create-og-images.js", "make:bookmark": "node ./bin/add-bookmark.js" }, "bin": { - "add-bookmark": "./bin/add-bookmark.js" + "add-bookmark": "./bin/add-bookmark.js", + "gen-og-images": "./bin/create-og-images.js" }, "keywords": [ "PhotoGabble", diff --git a/projects.njk b/projects.njk index f79e43fe..86da10bc 100644 --- a/projects.njk +++ b/projects.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Projects' %} {% set projects = collections.contentTypes | findBySlug('projects') | values('items') %} diff --git a/_assets/favicon/android-chrome-192x192.png b/public/favicon/android-chrome-192x192.png similarity index 100% rename from _assets/favicon/android-chrome-192x192.png rename to public/favicon/android-chrome-192x192.png diff --git a/_assets/favicon/android-chrome-512x512.png b/public/favicon/android-chrome-512x512.png similarity index 100% rename from _assets/favicon/android-chrome-512x512.png rename to public/favicon/android-chrome-512x512.png diff --git a/_assets/favicon/apple-touch-icon.png b/public/favicon/apple-touch-icon.png similarity index 100% rename from _assets/favicon/apple-touch-icon.png rename to public/favicon/apple-touch-icon.png diff --git a/_assets/favicon/browserconfig.xml b/public/favicon/browserconfig.xml similarity index 100% rename from _assets/favicon/browserconfig.xml rename to public/favicon/browserconfig.xml diff --git a/_assets/favicon/favicon-16x16.png b/public/favicon/favicon-16x16.png similarity index 100% rename from _assets/favicon/favicon-16x16.png rename to public/favicon/favicon-16x16.png diff --git a/_assets/favicon/favicon-32x32.png b/public/favicon/favicon-32x32.png similarity index 100% rename from _assets/favicon/favicon-32x32.png rename to public/favicon/favicon-32x32.png diff --git a/_assets/favicon/favicon.ico b/public/favicon/favicon.ico similarity index 100% rename from _assets/favicon/favicon.ico rename to public/favicon/favicon.ico diff --git a/_assets/favicon/mstile-150x150.png b/public/favicon/mstile-150x150.png similarity index 100% rename from _assets/favicon/mstile-150x150.png rename to public/favicon/mstile-150x150.png diff --git a/_assets/favicon/safari-pinned-tab.svg b/public/favicon/safari-pinned-tab.svg similarity index 100% rename from _assets/favicon/safari-pinned-tab.svg rename to public/favicon/safari-pinned-tab.svg diff --git a/_assets/favicon/site.webmanifest b/public/favicon/site.webmanifest similarity index 100% rename from _assets/favicon/site.webmanifest rename to public/favicon/site.webmanifest diff --git a/_assets/files/1.2_blogtimes.zip b/public/files/1.2_blogtimes.zip similarity index 100% rename from _assets/files/1.2_blogtimes.zip rename to public/files/1.2_blogtimes.zip diff --git a/_assets/files/64x_hilly.scn b/public/files/64x_hilly.scn similarity index 100% rename from _assets/files/64x_hilly.scn rename to public/files/64x_hilly.scn diff --git a/_assets/files/TURBOCAPP.zip b/public/files/TURBOCAPP.zip similarity index 100% rename from _assets/files/TURBOCAPP.zip rename to public/files/TURBOCAPP.zip diff --git a/_assets/files/kareltima3-10-dos.zip b/public/files/kareltima3-10-dos.zip similarity index 100% rename from _assets/files/kareltima3-10-dos.zip rename to public/files/kareltima3-10-dos.zip diff --git a/_assets/files/mission-mainframe-dos.zip b/public/files/mission-mainframe-dos.zip similarity index 100% rename from _assets/files/mission-mainframe-dos.zip rename to public/files/mission-mainframe-dos.zip diff --git a/_assets/files/mtblogtimes-1.0.zip b/public/files/mtblogtimes-1.0.zip similarity index 100% rename from _assets/files/mtblogtimes-1.0.zip rename to public/files/mtblogtimes-1.0.zip diff --git a/_assets/files/tc201.zip b/public/files/tc201.zip similarity index 100% rename from _assets/files/tc201.zip rename to public/files/tc201.zip diff --git a/_assets/fonts/iosevka-etoile-bold.woff2 b/public/fonts/iosevka-etoile-bold.woff2 similarity index 100% rename from _assets/fonts/iosevka-etoile-bold.woff2 rename to public/fonts/iosevka-etoile-bold.woff2 diff --git a/_assets/fonts/iosevka-etoile-bolditalic.woff2 b/public/fonts/iosevka-etoile-bolditalic.woff2 similarity index 100% rename from _assets/fonts/iosevka-etoile-bolditalic.woff2 rename to public/fonts/iosevka-etoile-bolditalic.woff2 diff --git a/_assets/fonts/iosevka-etoile-italic.woff2 b/public/fonts/iosevka-etoile-italic.woff2 similarity index 100% rename from _assets/fonts/iosevka-etoile-italic.woff2 rename to public/fonts/iosevka-etoile-italic.woff2 diff --git a/_assets/fonts/iosevka-etoile-regular.woff2 b/public/fonts/iosevka-etoile-regular.woff2 similarity index 100% rename from _assets/fonts/iosevka-etoile-regular.woff2 rename to public/fonts/iosevka-etoile-regular.woff2 diff --git a/img/11ty-blogtimes.png b/public/img/11ty-blogtimes.png similarity index 100% rename from img/11ty-blogtimes.png rename to public/img/11ty-blogtimes.png diff --git a/img/88x31/articexploit.xyz.png b/public/img/88x31/articexploit.xyz.png similarity index 100% rename from img/88x31/articexploit.xyz.png rename to public/img/88x31/articexploit.xyz.png diff --git a/img/88x31/corru.observer.gif b/public/img/88x31/corru.observer.gif similarity index 100% rename from img/88x31/corru.observer.gif rename to public/img/88x31/corru.observer.gif diff --git a/img/88x31/emreed.net.png b/public/img/88x31/emreed.net.png similarity index 100% rename from img/88x31/emreed.net.png rename to public/img/88x31/emreed.net.png diff --git a/img/88x31/melonking.net.gif b/public/img/88x31/melonking.net.gif similarity index 100% rename from img/88x31/melonking.net.gif rename to public/img/88x31/melonking.net.gif diff --git a/img/88x31/oekaki.cinni.gif b/public/img/88x31/oekaki.cinni.gif similarity index 100% rename from img/88x31/oekaki.cinni.gif rename to public/img/88x31/oekaki.cinni.gif diff --git a/img/88x31/sinewave.cyou.gif b/public/img/88x31/sinewave.cyou.gif similarity index 100% rename from img/88x31/sinewave.cyou.gif rename to public/img/88x31/sinewave.cyou.gif diff --git a/img/a-review-of-rimworld-a16-after-100-hours-ingame-1.jpg b/public/img/a-review-of-rimworld-a16-after-100-hours-ingame-1.jpg similarity index 100% rename from img/a-review-of-rimworld-a16-after-100-hours-ingame-1.jpg rename to public/img/a-review-of-rimworld-a16-after-100-hours-ingame-1.jpg diff --git a/img/a-review-of-rimworld-a16-after-100-hours-ingame-2.jpg b/public/img/a-review-of-rimworld-a16-after-100-hours-ingame-2.jpg similarity index 100% rename from img/a-review-of-rimworld-a16-after-100-hours-ingame-2.jpg rename to public/img/a-review-of-rimworld-a16-after-100-hours-ingame-2.jpg diff --git a/img/a-review-of-rimworld-a16-after-100-hours-ingame-3.jpg b/public/img/a-review-of-rimworld-a16-after-100-hours-ingame-3.jpg similarity index 100% rename from img/a-review-of-rimworld-a16-after-100-hours-ingame-3.jpg rename to public/img/a-review-of-rimworld-a16-after-100-hours-ingame-3.jpg diff --git a/img/a-review-of-rimworld-a16-after-100-hours-ingame-4.jpg b/public/img/a-review-of-rimworld-a16-after-100-hours-ingame-4.jpg similarity index 100% rename from img/a-review-of-rimworld-a16-after-100-hours-ingame-4.jpg rename to public/img/a-review-of-rimworld-a16-after-100-hours-ingame-4.jpg diff --git a/img/a-review-of-the-godville-game-1.png b/public/img/a-review-of-the-godville-game-1.png similarity index 100% rename from img/a-review-of-the-godville-game-1.png rename to public/img/a-review-of-the-godville-game-1.png diff --git a/img/a-review-of-the-godville-game-2.png b/public/img/a-review-of-the-godville-game-2.png similarity index 100% rename from img/a-review-of-the-godville-game-2.png rename to public/img/a-review-of-the-godville-game-2.png diff --git a/img/adding-wiki-links-to-11ty-1.png b/public/img/adding-wiki-links-to-11ty-1.png similarity index 100% rename from img/adding-wiki-links-to-11ty-1.png rename to public/img/adding-wiki-links-to-11ty-1.png diff --git a/img/alice-down-the-rabbit-hole.png b/public/img/alice-down-the-rabbit-hole.png similarity index 100% rename from img/alice-down-the-rabbit-hole.png rename to public/img/alice-down-the-rabbit-hole.png diff --git a/img/ansicon-install-cmd.png b/public/img/ansicon-install-cmd.png similarity index 100% rename from img/ansicon-install-cmd.png rename to public/img/ansicon-install-cmd.png diff --git a/img/ansicon-install.png b/public/img/ansicon-install.png similarity index 100% rename from img/ansicon-install.png rename to public/img/ansicon-install.png diff --git a/img/azure-cli-1.png b/public/img/azure-cli-1.png similarity index 100% rename from img/azure-cli-1.png rename to public/img/azure-cli-1.png diff --git a/img/azure-peformance-test-01.png b/public/img/azure-peformance-test-01.png similarity index 100% rename from img/azure-peformance-test-01.png rename to public/img/azure-peformance-test-01.png diff --git a/img/azure-peformance-test-02.png b/public/img/azure-peformance-test-02.png similarity index 100% rename from img/azure-peformance-test-02.png rename to public/img/azure-peformance-test-02.png diff --git a/img/basic-space-mines-port-to-golang-1.png b/public/img/basic-space-mines-port-to-golang-1.png similarity index 100% rename from img/basic-space-mines-port-to-golang-1.png rename to public/img/basic-space-mines-port-to-golang-1.png diff --git a/img/berthub-eu-screenshot.png b/public/img/berthub-eu-screenshot.png similarity index 100% rename from img/berthub-eu-screenshot.png rename to public/img/berthub-eu-screenshot.png diff --git a/img/blogging-is-hard-1.png b/public/img/blogging-is-hard-1.png similarity index 100% rename from img/blogging-is-hard-1.png rename to public/img/blogging-is-hard-1.png diff --git a/img/blogtimes.png b/public/img/blogtimes.png similarity index 100% rename from img/blogtimes.png rename to public/img/blogtimes.png diff --git a/img/bookmarks/10nes.3d6f39046470c39c10c3954f.jpeg b/public/img/bookmarks/10nes.3d6f39046470c39c10c3954f.jpeg similarity index 100% rename from img/bookmarks/10nes.3d6f39046470c39c10c3954f.jpeg rename to public/img/bookmarks/10nes.3d6f39046470c39c10c3954f.jpeg diff --git a/img/bookmarks/1kb-club-a-collection-of-web-pages-weighing-less-than-1-kilobyte.44c399c28a42616c4dc2ab00.jpeg b/public/img/bookmarks/1kb-club-a-collection-of-web-pages-weighing-less-than-1-kilobyte.44c399c28a42616c4dc2ab00.jpeg similarity index 100% rename from img/bookmarks/1kb-club-a-collection-of-web-pages-weighing-less-than-1-kilobyte.44c399c28a42616c4dc2ab00.jpeg rename to public/img/bookmarks/1kb-club-a-collection-of-web-pages-weighing-less-than-1-kilobyte.44c399c28a42616c4dc2ab00.jpeg diff --git a/img/bookmarks/1mb-club-a-collection-of-web-pages-weighing-in-less-than-1mb.3ec3bbc2b45ec38f64c38000.jpeg b/public/img/bookmarks/1mb-club-a-collection-of-web-pages-weighing-in-less-than-1mb.3ec3bbc2b45ec38f64c38000.jpeg similarity index 100% rename from img/bookmarks/1mb-club-a-collection-of-web-pages-weighing-in-less-than-1mb.3ec3bbc2b45ec38f64c38000.jpeg rename to public/img/bookmarks/1mb-club-a-collection-of-web-pages-weighing-in-less-than-1mb.3ec3bbc2b45ec38f64c38000.jpeg diff --git a/img/bookmarks/2200-forgotten-vintage-computers.45043d7f7c2f362742082f49.jpeg b/public/img/bookmarks/2200-forgotten-vintage-computers.45043d7f7c2f362742082f49.jpeg similarity index 100% rename from img/bookmarks/2200-forgotten-vintage-computers.45043d7f7c2f362742082f49.jpeg rename to public/img/bookmarks/2200-forgotten-vintage-computers.45043d7f7c2f362742082f49.jpeg diff --git a/img/bookmarks/2moons.28464a0fc392527e2fc2a21d.jpeg b/public/img/bookmarks/2moons.28464a0fc392527e2fc2a21d.jpeg similarity index 100% rename from img/bookmarks/2moons.28464a0fc392527e2fc2a21d.jpeg rename to public/img/bookmarks/2moons.28464a0fc392527e2fc2a21d.jpeg diff --git a/img/bookmarks/3d-printing-needs-open-source-more-than-ever.043749c2b2c2a3c38438c39c.jpeg b/public/img/bookmarks/3d-printing-needs-open-source-more-than-ever.043749c2b2c2a3c38438c39c.jpeg similarity index 100% rename from img/bookmarks/3d-printing-needs-open-source-more-than-ever.043749c2b2c2a3c38438c39c.jpeg rename to public/img/bookmarks/3d-printing-needs-open-source-more-than-ever.043749c2b2c2a3c38438c39c.jpeg diff --git a/img/bookmarks/a-286-running-like-a-386.17c3a0c3bbc3923152390a2b.jpeg b/public/img/bookmarks/a-286-running-like-a-386.17c3a0c3bbc3923152390a2b.jpeg similarity index 100% rename from img/bookmarks/a-286-running-like-a-386.17c3a0c3bbc3923152390a2b.jpeg rename to public/img/bookmarks/a-286-running-like-a-386.17c3a0c3bbc3923152390a2b.jpeg diff --git a/img/bookmarks/a-brief-history-and-ethos-of-the-digital-garden.53c39dc2be33155ac2a64a00.jpeg b/public/img/bookmarks/a-brief-history-and-ethos-of-the-digital-garden.53c39dc2be33155ac2a64a00.jpeg similarity index 100% rename from img/bookmarks/a-brief-history-and-ethos-of-the-digital-garden.53c39dc2be33155ac2a64a00.jpeg rename to public/img/bookmarks/a-brief-history-and-ethos-of-the-digital-garden.53c39dc2be33155ac2a64a00.jpeg diff --git a/img/bookmarks/a-list-of-fediverse-accounts-about-geospatial-topics.2ac398c38046c3be6dc2ac00.jpeg b/public/img/bookmarks/a-list-of-fediverse-accounts-about-geospatial-topics.2ac398c38046c3be6dc2ac00.jpeg similarity index 100% rename from img/bookmarks/a-list-of-fediverse-accounts-about-geospatial-topics.2ac398c38046c3be6dc2ac00.jpeg rename to public/img/bookmarks/a-list-of-fediverse-accounts-about-geospatial-topics.2ac398c38046c3be6dc2ac00.jpeg diff --git a/img/bookmarks/a-new-era-for-neopets.c2a30f0fc3b759c292c39b42.jpeg b/public/img/bookmarks/a-new-era-for-neopets.c2a30f0fc3b759c292c39b42.jpeg similarity index 100% rename from img/bookmarks/a-new-era-for-neopets.c2a30f0fc3b759c292c39b42.jpeg rename to public/img/bookmarks/a-new-era-for-neopets.c2a30f0fc3b759c292c39b42.jpeg diff --git a/img/bookmarks/accu-conference-2023-bristol.4c523dc2a33b0b355fc3b800.jpeg b/public/img/bookmarks/accu-conference-2023-bristol.4c523dc2a33b0b355fc3b800.jpeg similarity index 100% rename from img/bookmarks/accu-conference-2023-bristol.4c523dc2a33b0b355fc3b800.jpeg rename to public/img/bookmarks/accu-conference-2023-bristol.4c523dc2a33b0b355fc3b800.jpeg diff --git a/img/bookmarks/activity-pub-vs-web-frameworks.c3b6c28571c3aa46522fc3ad.jpeg b/public/img/bookmarks/activity-pub-vs-web-frameworks.c3b6c28571c3aa46522fc3ad.jpeg similarity index 100% rename from img/bookmarks/activity-pub-vs-web-frameworks.c3b6c28571c3aa46522fc3ad.jpeg rename to public/img/bookmarks/activity-pub-vs-web-frameworks.c3b6c28571c3aa46522fc3ad.jpeg diff --git a/img/bookmarks/ad-manager-for-laravel.20427fc2a4c2950cc3adc2be.jpeg b/public/img/bookmarks/ad-manager-for-laravel.20427fc2a4c2950cc3adc2be.jpeg similarity index 100% rename from img/bookmarks/ad-manager-for-laravel.20427fc2a4c2950cc3adc2be.jpeg rename to public/img/bookmarks/ad-manager-for-laravel.20427fc2a4c2950cc3adc2be.jpeg diff --git a/img/bookmarks/admes-andover-and-district-model-engineering-society.c3ad4bc2ad5643c283c39e00.jpeg b/public/img/bookmarks/admes-andover-and-district-model-engineering-society.c3ad4bc2ad5643c283c39e00.jpeg similarity index 100% rename from img/bookmarks/admes-andover-and-district-model-engineering-society.c3ad4bc2ad5643c283c39e00.jpeg rename to public/img/bookmarks/admes-andover-and-district-model-engineering-society.c3ad4bc2ad5643c283c39e00.jpeg diff --git a/img/bookmarks/advanced-in-memory-caching-module-for-js.5ac29c63c3ac6e5f10c39154.jpeg b/public/img/bookmarks/advanced-in-memory-caching-module-for-js.5ac29c63c3ac6e5f10c39154.jpeg similarity index 100% rename from img/bookmarks/advanced-in-memory-caching-module-for-js.5ac29c63c3ac6e5f10c39154.jpeg rename to public/img/bookmarks/advanced-in-memory-caching-module-for-js.5ac29c63c3ac6e5f10c39154.jpeg diff --git a/img/bookmarks/advice-for-operating-a-public-facing-api.4d540ac386c2a6476c6c1732.jpeg b/public/img/bookmarks/advice-for-operating-a-public-facing-api.4d540ac386c2a6476c6c1732.jpeg similarity index 100% rename from img/bookmarks/advice-for-operating-a-public-facing-api.4d540ac386c2a6476c6c1732.jpeg rename to public/img/bookmarks/advice-for-operating-a-public-facing-api.4d540ac386c2a6476c6c1732.jpeg diff --git a/img/bookmarks/aeronear-an-ambient-device-showing-nearby-aircraft.c3a0c289c29f6ac38cc38900.jpeg b/public/img/bookmarks/aeronear-an-ambient-device-showing-nearby-aircraft.c3a0c289c29f6ac38cc38900.jpeg similarity index 100% rename from img/bookmarks/aeronear-an-ambient-device-showing-nearby-aircraft.c3a0c289c29f6ac38cc38900.jpeg rename to public/img/bookmarks/aeronear-an-ambient-device-showing-nearby-aircraft.c3a0c289c29f6ac38cc38900.jpeg diff --git a/img/bookmarks/alejandros-website.c2a3c3abc3bbc3877755c3b7.jpeg b/public/img/bookmarks/alejandros-website.c2a3c3abc3bbc3877755c3b7.jpeg similarity index 100% rename from img/bookmarks/alejandros-website.c2a3c3abc3bbc3877755c3b7.jpeg rename to public/img/bookmarks/alejandros-website.c2a3c3abc3bbc3877755c3b7.jpeg diff --git a/img/bookmarks/always-your-pal-melon.6f366bc2acc2bbc3a75c1800.jpeg b/public/img/bookmarks/always-your-pal-melon.6f366bc2acc2bbc3a75c1800.jpeg similarity index 100% rename from img/bookmarks/always-your-pal-melon.6f366bc2acc2bbc3a75c1800.jpeg rename to public/img/bookmarks/always-your-pal-melon.6f366bc2acc2bbc3a75c1800.jpeg diff --git a/img/bookmarks/an-america-less-internet.48c295601bc3af511909c2a3.jpeg b/public/img/bookmarks/an-america-less-internet.48c295601bc3af511909c2a3.jpeg similarity index 100% rename from img/bookmarks/an-america-less-internet.48c295601bc3af511909c2a3.jpeg rename to public/img/bookmarks/an-america-less-internet.48c295601bc3af511909c2a3.jpeg diff --git a/img/bookmarks/an-updated-version-of-the-classic-basic-computer-games-book.c38ec3a4092dc389c28b4711.jpeg b/public/img/bookmarks/an-updated-version-of-the-classic-basic-computer-games-book.c38ec3a4092dc389c28b4711.jpeg similarity index 100% rename from img/bookmarks/an-updated-version-of-the-classic-basic-computer-games-book.c38ec3a4092dc389c28b4711.jpeg rename to public/img/bookmarks/an-updated-version-of-the-classic-basic-computer-games-book.c38ec3a4092dc389c28b4711.jpeg diff --git a/img/bookmarks/andy-bells-blog.c2a5c2a6c39d214dc39cc29f.jpeg b/public/img/bookmarks/andy-bells-blog.c2a5c2a6c39d214dc39cc29f.jpeg similarity index 100% rename from img/bookmarks/andy-bells-blog.c2a5c2a6c39d214dc39cc29f.jpeg rename to public/img/bookmarks/andy-bells-blog.c2a5c2a6c39d214dc39cc29f.jpeg diff --git a/img/bookmarks/anton-petrov.52c3b8c28841010bc398c285.jpeg b/public/img/bookmarks/anton-petrov.52c3b8c28841010bc398c285.jpeg similarity index 100% rename from img/bookmarks/anton-petrov.52c3b8c28841010bc398c285.jpeg rename to public/img/bookmarks/anton-petrov.52c3b8c28841010bc398c285.jpeg diff --git a/img/bookmarks/are-we-making-lambda-too-hard.c28a250ac3ab37c381c3b97e.jpeg b/public/img/bookmarks/are-we-making-lambda-too-hard.c28a250ac3ab37c381c3b97e.jpeg similarity index 100% rename from img/bookmarks/are-we-making-lambda-too-hard.c28a250ac3ab37c381c3b97e.jpeg rename to public/img/bookmarks/are-we-making-lambda-too-hard.c28a250ac3ab37c381c3b97e.jpeg diff --git a/img/bookmarks/automate-syndication-of-your-content-with-eleventy-devto-and-github-actions.5ec39821c2bbc388c2985070.jpeg b/public/img/bookmarks/automate-syndication-of-your-content-with-eleventy-devto-and-github-actions.5ec39821c2bbc388c2985070.jpeg similarity index 100% rename from img/bookmarks/automate-syndication-of-your-content-with-eleventy-devto-and-github-actions.5ec39821c2bbc388c2985070.jpeg rename to public/img/bookmarks/automate-syndication-of-your-content-with-eleventy-devto-and-github-actions.5ec39821c2bbc388c2985070.jpeg diff --git a/img/bookmarks/automating-advent-calendar-with-github-actions-and-11ty.c2b51279c3a811c3a14ac390.jpeg b/public/img/bookmarks/automating-advent-calendar-with-github-actions-and-11ty.c2b51279c3a811c3a14ac390.jpeg similarity index 100% rename from img/bookmarks/automating-advent-calendar-with-github-actions-and-11ty.c2b51279c3a811c3a14ac390.jpeg rename to public/img/bookmarks/automating-advent-calendar-with-github-actions-and-11ty.c2b51279c3a811c3a14ac390.jpeg diff --git a/img/bookmarks/awesome-looking-websites.c3adc2a1c2bbc39d4bc38f69.jpeg b/public/img/bookmarks/awesome-looking-websites.c3adc2a1c2bbc39d4bc38f69.jpeg similarity index 100% rename from img/bookmarks/awesome-looking-websites.c3adc2a1c2bbc39d4bc38f69.jpeg rename to public/img/bookmarks/awesome-looking-websites.c3adc2a1c2bbc39d4bc38f69.jpeg diff --git a/img/bookmarks/bang-bang-con.044660c385c2b2c382c2b10d.jpeg b/public/img/bookmarks/bang-bang-con.044660c385c2b2c382c2b10d.jpeg similarity index 100% rename from img/bookmarks/bang-bang-con.044660c385c2b2c382c2b10d.jpeg rename to public/img/bookmarks/bang-bang-con.044660c385c2b2c382c2b10d.jpeg diff --git a/img/bookmarks/benjojos-blog.c291c286c2a16443c29d7d00.jpeg b/public/img/bookmarks/benjojos-blog.c291c286c2a16443c29d7d00.jpeg similarity index 100% rename from img/bookmarks/benjojos-blog.c291c286c2a16443c29d7d00.jpeg rename to public/img/bookmarks/benjojos-blog.c291c286c2a16443c29d7d00.jpeg diff --git a/img/bookmarks/bjorn-staerks-website.c28764c393c3a132c38d6076.jpeg b/public/img/bookmarks/bjorn-staerks-website.c28764c393c3a132c38d6076.jpeg similarity index 100% rename from img/bookmarks/bjorn-staerks-website.c28764c393c3a132c38d6076.jpeg rename to public/img/bookmarks/bjorn-staerks-website.c28764c393c3a132c38d6076.jpeg diff --git a/img/bookmarks/blacknova-traders.572c0ec2b45bc3a2c39f5b44.jpeg b/public/img/bookmarks/blacknova-traders.572c0ec2b45bc3a2c39f5b44.jpeg similarity index 100% rename from img/bookmarks/blacknova-traders.572c0ec2b45bc3a2c39f5b44.jpeg rename to public/img/bookmarks/blacknova-traders.572c0ec2b45bc3a2c39f5b44.jpeg diff --git a/img/bookmarks/bluesky-is-a-scam.4ec3a1c2a1c29273c3b9c2a1.jpeg b/public/img/bookmarks/bluesky-is-a-scam.4ec3a1c2a1c29273c3b9c2a1.jpeg similarity index 100% rename from img/bookmarks/bluesky-is-a-scam.4ec3a1c2a1c29273c3b9c2a1.jpeg rename to public/img/bookmarks/bluesky-is-a-scam.4ec3a1c2a1c29273c3b9c2a1.jpeg diff --git a/img/bookmarks/boing-directory.c3b4c386c2ab281277c38a00.jpeg b/public/img/bookmarks/boing-directory.c3b4c386c2ab281277c38a00.jpeg similarity index 100% rename from img/bookmarks/boing-directory.c3b4c386c2ab281277c38a00.jpeg rename to public/img/bookmarks/boing-directory.c3b4c386c2ab281277c38a00.jpeg diff --git a/img/bookmarks/books-bookshop-org-thrives-amazon-world.c2b9c39110c3b6c293c28910.jpeg b/public/img/bookmarks/books-bookshop-org-thrives-amazon-world.c2b9c39110c3b6c293c28910.jpeg similarity index 100% rename from img/bookmarks/books-bookshop-org-thrives-amazon-world.c2b9c39110c3b6c293c28910.jpeg rename to public/img/bookmarks/books-bookshop-org-thrives-amazon-world.c2b9c39110c3b6c293c28910.jpeg diff --git a/img/bookmarks/booting-modern-intel-cpus.53294d173ec29cc2a0c2ab00.jpeg b/public/img/bookmarks/booting-modern-intel-cpus.53294d173ec29cc2a0c2ab00.jpeg similarity index 100% rename from img/bookmarks/booting-modern-intel-cpus.53294d173ec29cc2a0c2ab00.jpeg rename to public/img/bookmarks/booting-modern-intel-cpus.53294d173ec29cc2a0c2ab00.jpeg diff --git a/img/bookmarks/brad-taunts-brain-dump.2433c2b97ec3a554c38dc386.jpeg b/public/img/bookmarks/brad-taunts-brain-dump.2433c2b97ec3a554c38dc386.jpeg similarity index 100% rename from img/bookmarks/brad-taunts-brain-dump.2433c2b97ec3a554c38dc386.jpeg rename to public/img/bookmarks/brad-taunts-brain-dump.2433c2b97ec3a554c38dc386.jpeg diff --git a/img/bookmarks/brandur-leach-website.6bc29f161fc2846bc38c7604.jpeg b/public/img/bookmarks/brandur-leach-website.6bc29f161fc2846bc38c7604.jpeg similarity index 100% rename from img/bookmarks/brandur-leach-website.6bc29f161fc2846bc38c7604.jpeg rename to public/img/bookmarks/brandur-leach-website.6bc29f161fc2846bc38c7604.jpeg diff --git a/img/bookmarks/brents-blog.c3b5c2adc381c39dc2abc290.jpeg b/public/img/bookmarks/brents-blog.c3b5c2adc381c39dc2abc290.jpeg similarity index 100% rename from img/bookmarks/brents-blog.c3b5c2adc381c39dc2abc290.jpeg rename to public/img/bookmarks/brents-blog.c3b5c2adc381c39dc2abc290.jpeg diff --git a/img/bookmarks/build-a-routing-web-app-with-neo4j-openstreetmap-and-leafletjs.c29b7ac3b7c2bcc284c2b900.jpeg b/public/img/bookmarks/build-a-routing-web-app-with-neo4j-openstreetmap-and-leafletjs.c29b7ac3b7c2bcc284c2b900.jpeg similarity index 100% rename from img/bookmarks/build-a-routing-web-app-with-neo4j-openstreetmap-and-leafletjs.c29b7ac3b7c2bcc284c2b900.jpeg rename to public/img/bookmarks/build-a-routing-web-app-with-neo4j-openstreetmap-and-leafletjs.c29b7ac3b7c2bcc284c2b900.jpeg diff --git a/img/bookmarks/build-this-8-bit-home-computer-with-just-5-chips.15c3a6c2bbc38a0cc3af7e00.jpeg b/public/img/bookmarks/build-this-8-bit-home-computer-with-just-5-chips.15c3a6c2bbc38a0cc3af7e00.jpeg similarity index 100% rename from img/bookmarks/build-this-8-bit-home-computer-with-just-5-chips.15c3a6c2bbc38a0cc3af7e00.jpeg rename to public/img/bookmarks/build-this-8-bit-home-computer-with-just-5-chips.15c3a6c2bbc38a0cc3af7e00.jpeg diff --git a/img/bookmarks/burning-down-the-house.716b6f35664ac3adc3a3c288.jpeg b/public/img/bookmarks/burning-down-the-house.716b6f35664ac3adc3a3c288.jpeg similarity index 100% rename from img/bookmarks/burning-down-the-house.716b6f35664ac3adc3a3c288.jpeg rename to public/img/bookmarks/burning-down-the-house.716b6f35664ac3adc3a3c288.jpeg diff --git a/img/bookmarks/c-dogs-sdl.c3b2c294684fc29cc2af7f00.jpeg b/public/img/bookmarks/c-dogs-sdl.c3b2c294684fc29cc2af7f00.jpeg similarity index 100% rename from img/bookmarks/c-dogs-sdl.c3b2c294684fc29cc2af7f00.jpeg rename to public/img/bookmarks/c-dogs-sdl.c3b2c294684fc29cc2af7f00.jpeg diff --git a/img/bookmarks/caching-inertias-ssr-responses.5bc3a5614dc2814b48c38800.jpeg b/public/img/bookmarks/caching-inertias-ssr-responses.5bc3a5614dc2814b48c38800.jpeg similarity index 100% rename from img/bookmarks/caching-inertias-ssr-responses.5bc3a5614dc2814b48c38800.jpeg rename to public/img/bookmarks/caching-inertias-ssr-responses.5bc3a5614dc2814b48c38800.jpeg diff --git a/img/bookmarks/caleb-hearths-blog.c2a62b011905c3af6a75307f.jpeg b/public/img/bookmarks/caleb-hearths-blog.c2a62b011905c3af6a75307f.jpeg similarity index 100% rename from img/bookmarks/caleb-hearths-blog.c2a62b011905c3af6a75307f.jpeg rename to public/img/bookmarks/caleb-hearths-blog.c2a62b011905c3af6a75307f.jpeg diff --git a/img/bookmarks/camerons-world.47c2825c78c2921b5cc28854.jpeg b/public/img/bookmarks/camerons-world.47c2825c78c2921b5cc28854.jpeg similarity index 100% rename from img/bookmarks/camerons-world.47c2825c78c2921b5cc28854.jpeg rename to public/img/bookmarks/camerons-world.47c2825c78c2921b5cc28854.jpeg diff --git a/img/bookmarks/can-a-fungus-really-take-over-our-brains.c3b43a58c3813f73c39ac384.jpeg b/public/img/bookmarks/can-a-fungus-really-take-over-our-brains.c3b43a58c3813f73c39ac384.jpeg similarity index 100% rename from img/bookmarks/can-a-fungus-really-take-over-our-brains.c3b43a58c3813f73c39ac384.jpeg rename to public/img/bookmarks/can-a-fungus-really-take-over-our-brains.c3b43a58c3813f73c39ac384.jpeg diff --git a/img/bookmarks/case-study-4-the-dollar440-million-software-error-at-knight-capital.c2b0c2b1c383c3bcc3ae4b77.jpeg b/public/img/bookmarks/case-study-4-the-dollar440-million-software-error-at-knight-capital.c2b0c2b1c383c3bcc3ae4b77.jpeg similarity index 100% rename from img/bookmarks/case-study-4-the-dollar440-million-software-error-at-knight-capital.c2b0c2b1c383c3bcc3ae4b77.jpeg rename to public/img/bookmarks/case-study-4-the-dollar440-million-software-error-at-knight-capital.c2b0c2b1c383c3bcc3ae4b77.jpeg diff --git a/img/bookmarks/cheeriojs-fast-flexible-and-elegant-library-for-parsing-and-manipulating-html-and-xml.c3bdc2af47c38e5116c3bf00.jpeg b/public/img/bookmarks/cheeriojs-fast-flexible-and-elegant-library-for-parsing-and-manipulating-html-and-xml.c3bdc2af47c38e5116c3bf00.jpeg similarity index 100% rename from img/bookmarks/cheeriojs-fast-flexible-and-elegant-library-for-parsing-and-manipulating-html-and-xml.c3bdc2af47c38e5116c3bf00.jpeg rename to public/img/bookmarks/cheeriojs-fast-flexible-and-elegant-library-for-parsing-and-manipulating-html-and-xml.c3bdc2af47c38e5116c3bf00.jpeg diff --git a/img/bookmarks/chicago95-a-rendition-of-everyones-favorite-1995-microsoft-operating-system-for-linux.2328c38ec38ec38f5cc28500.jpeg b/public/img/bookmarks/chicago95-a-rendition-of-everyones-favorite-1995-microsoft-operating-system-for-linux.2328c38ec38ec38f5cc28500.jpeg similarity index 100% rename from img/bookmarks/chicago95-a-rendition-of-everyones-favorite-1995-microsoft-operating-system-for-linux.2328c38ec38ec38f5cc28500.jpeg rename to public/img/bookmarks/chicago95-a-rendition-of-everyones-favorite-1995-microsoft-operating-system-for-linux.2328c38ec38ec38f5cc28500.jpeg diff --git a/img/bookmarks/chiptune-player.78c3acc3ba632bc2a0c3b41b.jpeg b/public/img/bookmarks/chiptune-player.78c3acc3ba632bc2a0c3b41b.jpeg similarity index 100% rename from img/bookmarks/chiptune-player.78c3acc3ba632bc2a0c3b41b.jpeg rename to public/img/bookmarks/chiptune-player.78c3acc3ba632bc2a0c3b41b.jpeg diff --git a/img/bookmarks/churn-php-discover-files-in-need-of-refactoring.c2ae5c7940c280c2b8c29d30.jpeg b/public/img/bookmarks/churn-php-discover-files-in-need-of-refactoring.c2ae5c7940c280c2b8c29d30.jpeg similarity index 100% rename from img/bookmarks/churn-php-discover-files-in-need-of-refactoring.c2ae5c7940c280c2b8c29d30.jpeg rename to public/img/bookmarks/churn-php-discover-files-in-need-of-refactoring.c2ae5c7940c280c2b8c29d30.jpeg diff --git a/img/bookmarks/cinnis-oekaki.1779c395c2941d33c38cc394.jpeg b/public/img/bookmarks/cinnis-oekaki.1779c395c2941d33c38cc394.jpeg similarity index 100% rename from img/bookmarks/cinnis-oekaki.1779c395c2941d33c38cc394.jpeg rename to public/img/bookmarks/cinnis-oekaki.1779c395c2941d33c38cc394.jpeg diff --git a/img/bookmarks/cli-tool-to-insert-spacers-when-command-output-stops.c3ba46213b521e482bc3b432.jpeg b/public/img/bookmarks/cli-tool-to-insert-spacers-when-command-output-stops.c3ba46213b521e482bc3b432.jpeg similarity index 100% rename from img/bookmarks/cli-tool-to-insert-spacers-when-command-output-stops.c3ba46213b521e482bc3b432.jpeg rename to public/img/bookmarks/cli-tool-to-insert-spacers-when-command-output-stops.c3ba46213b521e482bc3b432.jpeg diff --git a/img/bookmarks/clotilde-soffritti-in-never-buy-a-used-spaceship.c3b5c299c39106c2b8c28000.jpeg b/public/img/bookmarks/clotilde-soffritti-in-never-buy-a-used-spaceship.c3b5c299c39106c2b8c28000.jpeg similarity index 100% rename from img/bookmarks/clotilde-soffritti-in-never-buy-a-used-spaceship.c3b5c299c39106c2b8c28000.jpeg rename to public/img/bookmarks/clotilde-soffritti-in-never-buy-a-used-spaceship.c3b5c299c39106c2b8c28000.jpeg diff --git a/img/bookmarks/conquest-4000-a-game-based-on-tradewars-2002.1d60c2bd13c3b0c3ba563600.jpeg b/public/img/bookmarks/conquest-4000-a-game-based-on-tradewars-2002.1d60c2bd13c3b0c3ba563600.jpeg similarity index 100% rename from img/bookmarks/conquest-4000-a-game-based-on-tradewars-2002.1d60c2bd13c3b0c3ba563600.jpeg rename to public/img/bookmarks/conquest-4000-a-game-based-on-tradewars-2002.1d60c2bd13c3b0c3ba563600.jpeg diff --git a/img/bookmarks/console-log-on-screen.5ac29c63c3ac6e5f10c39154.jpeg b/public/img/bookmarks/console-log-on-screen.5ac29c63c3ac6e5f10c39154.jpeg similarity index 100% rename from img/bookmarks/console-log-on-screen.5ac29c63c3ac6e5f10c39154.jpeg rename to public/img/bookmarks/console-log-on-screen.5ac29c63c3ac6e5f10c39154.jpeg diff --git a/img/bookmarks/console-log-on-screen.c3bac2abc3aa66c3b0c28f00.jpeg b/public/img/bookmarks/console-log-on-screen.c3bac2abc3aa66c3b0c28f00.jpeg similarity index 100% rename from img/bookmarks/console-log-on-screen.c3bac2abc3aa66c3b0c28f00.jpeg rename to public/img/bookmarks/console-log-on-screen.c3bac2abc3aa66c3b0c28f00.jpeg diff --git a/img/bookmarks/creatures-that-dont-conform.0fc3a16a63c3b9c3bc054f66.jpeg b/public/img/bookmarks/creatures-that-dont-conform.0fc3a16a63c3b9c3bc054f66.jpeg similarity index 100% rename from img/bookmarks/creatures-that-dont-conform.0fc3a16a63c3b9c3bc054f66.jpeg rename to public/img/bookmarks/creatures-that-dont-conform.0fc3a16a63c3b9c3bc054f66.jpeg diff --git a/img/bookmarks/crop-rotation-on-steam.3ac391c3a5c3b5c3b0c3a855.jpeg b/public/img/bookmarks/crop-rotation-on-steam.3ac391c3a5c3b5c3b0c3a855.jpeg similarity index 100% rename from img/bookmarks/crop-rotation-on-steam.3ac391c3a5c3b5c3b0c3a855.jpeg rename to public/img/bookmarks/crop-rotation-on-steam.3ac391c3a5c3b5c3b0c3a855.jpeg diff --git a/img/bookmarks/curlie-the-collector-of-urls.4fc3b37d09375bc29dc39500.jpeg b/public/img/bookmarks/curlie-the-collector-of-urls.4fc3b37d09375bc29dc39500.jpeg similarity index 100% rename from img/bookmarks/curlie-the-collector-of-urls.4fc3b37d09375bc29dc39500.jpeg rename to public/img/bookmarks/curlie-the-collector-of-urls.4fc3b37d09375bc29dc39500.jpeg diff --git a/img/bookmarks/dark-matter-developers-the-unseen-99percent.c2b974c3bec295c2a0793309.jpeg b/public/img/bookmarks/dark-matter-developers-the-unseen-99percent.c2b974c3bec295c2a0793309.jpeg similarity index 100% rename from img/bookmarks/dark-matter-developers-the-unseen-99percent.c2b974c3bec295c2a0793309.jpeg rename to public/img/bookmarks/dark-matter-developers-the-unseen-99percent.c2b974c3bec295c2a0793309.jpeg diff --git a/img/bookmarks/debunking-the-myth-of-dollar-cost-averaging.c29dc3be2ac286c2b375c3b9.jpeg b/public/img/bookmarks/debunking-the-myth-of-dollar-cost-averaging.c29dc3be2ac286c2b375c3b9.jpeg similarity index 100% rename from img/bookmarks/debunking-the-myth-of-dollar-cost-averaging.c29dc3be2ac286c2b375c3b9.jpeg rename to public/img/bookmarks/debunking-the-myth-of-dollar-cost-averaging.c29dc3be2ac286c2b375c3b9.jpeg diff --git a/img/bookmarks/deploy-a-nuxt-3-application-on-aws-using-sst-serverless.26c2b4c2a4c29f3527c3bc00.jpeg b/public/img/bookmarks/deploy-a-nuxt-3-application-on-aws-using-sst-serverless.26c2b4c2a4c29f3527c3bc00.jpeg similarity index 100% rename from img/bookmarks/deploy-a-nuxt-3-application-on-aws-using-sst-serverless.26c2b4c2a4c29f3527c3bc00.jpeg rename to public/img/bookmarks/deploy-a-nuxt-3-application-on-aws-using-sst-serverless.26c2b4c2a4c29f3527c3bc00.jpeg diff --git a/img/bookmarks/designing-and-building-stockfighter-our-programming-game.c38761c2b67ac3a4c3ae754f.jpeg b/public/img/bookmarks/designing-and-building-stockfighter-our-programming-game.c38761c2b67ac3a4c3ae754f.jpeg similarity index 100% rename from img/bookmarks/designing-and-building-stockfighter-our-programming-game.c38761c2b67ac3a4c3ae754f.jpeg rename to public/img/bookmarks/designing-and-building-stockfighter-our-programming-game.c38761c2b67ac3a4c3ae754f.jpeg diff --git a/img/bookmarks/docker-is-deleting-open-source-images.c3bec38fc29542c2bb093b00.jpeg b/public/img/bookmarks/docker-is-deleting-open-source-images.c3bec38fc29542c2bb093b00.jpeg similarity index 100% rename from img/bookmarks/docker-is-deleting-open-source-images.c3bec38fc29542c2bb093b00.jpeg rename to public/img/bookmarks/docker-is-deleting-open-source-images.c3bec38fc29542c2bb093b00.jpeg diff --git "a/img/bookmarks/docopt\342\200\224language-for-description-of-command-line-interfaces.c2b6c3b2c3a2c2a427c2b000.jpeg" "b/public/img/bookmarks/docopt\342\200\224language-for-description-of-command-line-interfaces.c2b6c3b2c3a2c2a427c2b000.jpeg" similarity index 100% rename from "img/bookmarks/docopt\342\200\224language-for-description-of-command-line-interfaces.c2b6c3b2c3a2c2a427c2b000.jpeg" rename to "public/img/bookmarks/docopt\342\200\224language-for-description-of-command-line-interfaces.c2b6c3b2c3a2c2a427c2b000.jpeg" diff --git a/img/bookmarks/dotage-on-steam.c29614c29fc2bec393727600.jpeg b/public/img/bookmarks/dotage-on-steam.c29614c29fc2bec393727600.jpeg similarity index 100% rename from img/bookmarks/dotage-on-steam.c29614c29fc2bec393727600.jpeg rename to public/img/bookmarks/dotage-on-steam.c29614c29fc2bec393727600.jpeg diff --git a/img/bookmarks/dreamm.c2b6c2ae2b427dc28ac3af56.jpeg b/public/img/bookmarks/dreamm.c2b6c2ae2b427dc28ac3af56.jpeg similarity index 100% rename from img/bookmarks/dreamm.c2b6c2ae2b427dc28ac3af56.jpeg rename to public/img/bookmarks/dreamm.c2b6c2ae2b427dc28ac3af56.jpeg diff --git a/img/bookmarks/early-computer-art-in-the-50s-and-60s.c39315c3b8c2b0c2bdc2b673.jpeg b/public/img/bookmarks/early-computer-art-in-the-50s-and-60s.c39315c3b8c2b0c2bdc2b673.jpeg similarity index 100% rename from img/bookmarks/early-computer-art-in-the-50s-and-60s.c39315c3b8c2b0c2bdc2b673.jpeg rename to public/img/bookmarks/early-computer-art-in-the-50s-and-60s.c39315c3b8c2b0c2bdc2b673.jpeg diff --git a/img/bookmarks/elon-musks-compelling-case-for-worst-human-of-2023.12c2abc3b2c3bf6ec3984d00.jpeg b/public/img/bookmarks/elon-musks-compelling-case-for-worst-human-of-2023.12c2abc3b2c3bf6ec3984d00.jpeg similarity index 100% rename from img/bookmarks/elon-musks-compelling-case-for-worst-human-of-2023.12c2abc3b2c3bf6ec3984d00.jpeg rename to public/img/bookmarks/elon-musks-compelling-case-for-worst-human-of-2023.12c2abc3b2c3bf6ec3984d00.jpeg diff --git a/img/bookmarks/em-reeds-website.1d07c290c283c3a5c3a3c291.jpeg b/public/img/bookmarks/em-reeds-website.1d07c290c283c3a5c3a3c291.jpeg similarity index 100% rename from img/bookmarks/em-reeds-website.1d07c290c283c3a5c3a3c291.jpeg rename to public/img/bookmarks/em-reeds-website.1d07c290c283c3a5c3a3c291.jpeg diff --git a/img/bookmarks/enclosure-3-d-on-steam.42214054c2bfc289c3b5c28e.jpeg b/public/img/bookmarks/enclosure-3-d-on-steam.42214054c2bfc289c3b5c28e.jpeg similarity index 100% rename from img/bookmarks/enclosure-3-d-on-steam.42214054c2bfc289c3b5c28e.jpeg rename to public/img/bookmarks/enclosure-3-d-on-steam.42214054c2bfc289c3b5c28e.jpeg diff --git a/img/bookmarks/es2023-introduces-new-array-copying-methods-to-javascript.5fc2aac2bd3058c391c2ad00.jpeg b/public/img/bookmarks/es2023-introduces-new-array-copying-methods-to-javascript.5fc2aac2bd3058c391c2ad00.jpeg similarity index 100% rename from img/bookmarks/es2023-introduces-new-array-copying-methods-to-javascript.5fc2aac2bd3058c391c2ad00.jpeg rename to public/img/bookmarks/es2023-introduces-new-array-copying-methods-to-javascript.5fc2aac2bd3058c391c2ad00.jpeg diff --git a/img/bookmarks/etherdfs-the-ethernet-dos-file-system.70c280c2bf17294ac2bbc3a0.jpeg b/public/img/bookmarks/etherdfs-the-ethernet-dos-file-system.70c280c2bf17294ac2bbc3a0.jpeg similarity index 100% rename from img/bookmarks/etherdfs-the-ethernet-dos-file-system.70c280c2bf17294ac2bbc3a0.jpeg rename to public/img/bookmarks/etherdfs-the-ethernet-dos-file-system.70c280c2bf17294ac2bbc3a0.jpeg diff --git a/img/bookmarks/evan-boehs-website.c3b863c2ad09c2bec2841400.jpeg b/public/img/bookmarks/evan-boehs-website.c3b863c2ad09c2bec2841400.jpeg similarity index 100% rename from img/bookmarks/evan-boehs-website.c3b863c2ad09c2bec2841400.jpeg rename to public/img/bookmarks/evan-boehs-website.c3b863c2ad09c2bec2841400.jpeg diff --git a/img/bookmarks/existential-dread-inducer.6a61c390c29ec2ab275c1100.jpeg b/public/img/bookmarks/existential-dread-inducer.6a61c390c29ec2ab275c1100.jpeg similarity index 100% rename from img/bookmarks/existential-dread-inducer.6a61c390c29ec2ab275c1100.jpeg rename to public/img/bookmarks/existential-dread-inducer.6a61c390c29ec2ab275c1100.jpeg diff --git a/img/bookmarks/eyecandy-visual-technique-library.c3a5c3acc2ae70c29d2ac3a7.jpeg b/public/img/bookmarks/eyecandy-visual-technique-library.c3a5c3acc2ae70c29d2ac3a7.jpeg similarity index 100% rename from img/bookmarks/eyecandy-visual-technique-library.c3a5c3acc2ae70c29d2ac3a7.jpeg rename to public/img/bookmarks/eyecandy-visual-technique-library.c3a5c3acc2ae70c29d2ac3a7.jpeg diff --git a/img/bookmarks/fabien-sanglards-website.17c3b4c38e28c3801f096a00.jpeg b/public/img/bookmarks/fabien-sanglards-website.17c3b4c38e28c3801f096a00.jpeg similarity index 100% rename from img/bookmarks/fabien-sanglards-website.17c3b4c38e28c3801f096a00.jpeg rename to public/img/bookmarks/fabien-sanglards-website.17c3b4c38e28c3801f096a00.jpeg diff --git a/img/bookmarks/fallenshogun-gaming.7954c2bc4e2035c29a21305f.jpeg b/public/img/bookmarks/fallenshogun-gaming.7954c2bc4e2035c29a21305f.jpeg similarity index 100% rename from img/bookmarks/fallenshogun-gaming.7954c2bc4e2035c29a21305f.jpeg rename to public/img/bookmarks/fallenshogun-gaming.7954c2bc4e2035c29a21305f.jpeg diff --git a/img/bookmarks/fediverse-network-statistics.c28ec38d7fc3952bc38ec381.jpeg b/public/img/bookmarks/fediverse-network-statistics.c28ec38d7fc3952bc38ec381.jpeg similarity index 100% rename from img/bookmarks/fediverse-network-statistics.c28ec38d7fc3952bc38ec381.jpeg rename to public/img/bookmarks/fediverse-network-statistics.c28ec38d7fc3952bc38ec381.jpeg diff --git a/img/bookmarks/finding-stuff-online-20-years-of-innovative-search-engines.656dc2a1c3b42c1fc2a9287a.jpeg b/public/img/bookmarks/finding-stuff-online-20-years-of-innovative-search-engines.656dc2a1c3b42c1fc2a9287a.jpeg similarity index 100% rename from img/bookmarks/finding-stuff-online-20-years-of-innovative-search-engines.656dc2a1c3b42c1fc2a9287a.jpeg rename to public/img/bookmarks/finding-stuff-online-20-years-of-innovative-search-engines.656dc2a1c3b42c1fc2a9287a.jpeg diff --git a/img/bookmarks/first-rom-shadowing.c3af3fc3bfc389c2b9c3bd00.jpeg b/public/img/bookmarks/first-rom-shadowing.c3af3fc3bfc389c2b9c3bd00.jpeg similarity index 100% rename from img/bookmarks/first-rom-shadowing.c3af3fc3bfc389c2b9c3bd00.jpeg rename to public/img/bookmarks/first-rom-shadowing.c3af3fc3bfc389c2b9c3bd00.jpeg diff --git a/img/bookmarks/florin-lipans-website.73c2901329c2aac38f6bc3a3.jpeg b/public/img/bookmarks/florin-lipans-website.73c2901329c2aac38f6bc3a3.jpeg similarity index 100% rename from img/bookmarks/florin-lipans-website.73c2901329c2aac38f6bc3a3.jpeg rename to public/img/bookmarks/florin-lipans-website.73c2901329c2aac38f6bc3a3.jpeg diff --git a/img/bookmarks/fun-with-virtualization.75c3a9c3922021077ac29800.jpeg b/public/img/bookmarks/fun-with-virtualization.75c3a9c3922021077ac29800.jpeg similarity index 100% rename from img/bookmarks/fun-with-virtualization.75c3a9c3922021077ac29800.jpeg rename to public/img/bookmarks/fun-with-virtualization.75c3a9c3922021077ac29800.jpeg diff --git a/img/bookmarks/game-boy-camera.c386c2a405c3b3c3b5646900.jpeg b/public/img/bookmarks/game-boy-camera.c386c2a405c3b3c3b5646900.jpeg similarity index 100% rename from img/bookmarks/game-boy-camera.c386c2a405c3b3c3b5646900.jpeg rename to public/img/bookmarks/game-boy-camera.c386c2a405c3b3c3b5646900.jpeg diff --git a/img/bookmarks/gereds-ramblings.c3bfc2aa425739c3b17dc2bb.jpeg b/public/img/bookmarks/gereds-ramblings.c3bfc2aa425739c3b17dc2bb.jpeg similarity index 100% rename from img/bookmarks/gereds-ramblings.c3bfc2aa425739c3b17dc2bb.jpeg rename to public/img/bookmarks/gereds-ramblings.c3bfc2aa425739c3b17dc2bb.jpeg diff --git a/img/bookmarks/get-started-programming-with-dos-conio.0a6fc2b06dc2b0c38f56c2be.jpeg b/public/img/bookmarks/get-started-programming-with-dos-conio.0a6fc2b06dc2b0c38f56c2be.jpeg similarity index 100% rename from img/bookmarks/get-started-programming-with-dos-conio.0a6fc2b06dc2b0c38f56c2be.jpeg rename to public/img/bookmarks/get-started-programming-with-dos-conio.0a6fc2b06dc2b0c38f56c2be.jpeg diff --git a/img/bookmarks/graveyard-keeper-on-steam.c39cc3a03fc2adc2a3190c00.jpeg b/public/img/bookmarks/graveyard-keeper-on-steam.c39cc3a03fc2adc2a3190c00.jpeg similarity index 100% rename from img/bookmarks/graveyard-keeper-on-steam.c39cc3a03fc2adc2a3190c00.jpeg rename to public/img/bookmarks/graveyard-keeper-on-steam.c39cc3a03fc2adc2a3190c00.jpeg diff --git a/img/bookmarks/guppe-federated-social-groups-with-activitypub.3065c2bcc386c38b6d23c38b.jpeg b/public/img/bookmarks/guppe-federated-social-groups-with-activitypub.3065c2bcc386c38b6d23c38b.jpeg similarity index 100% rename from img/bookmarks/guppe-federated-social-groups-with-activitypub.3065c2bcc386c38b6d23c38b.jpeg rename to public/img/bookmarks/guppe-federated-social-groups-with-activitypub.3065c2bcc386c38b6d23c38b.jpeg diff --git a/img/bookmarks/halftone-qr-code-generator.c3b7742e64c2a93a1c34c39c.jpeg b/public/img/bookmarks/halftone-qr-code-generator.c3b7742e64c2a93a1c34c39c.jpeg similarity index 100% rename from img/bookmarks/halftone-qr-code-generator.c3b7742e64c2a93a1c34c39c.jpeg rename to public/img/bookmarks/halftone-qr-code-generator.c3b7742e64c2a93a1c34c39c.jpeg diff --git a/img/bookmarks/holidaycss-minimalist-classless-css-theme-with-dark-mode-support.c28d700a7ac3bec28f43c396.jpeg b/public/img/bookmarks/holidaycss-minimalist-classless-css-theme-with-dark-mode-support.c28d700a7ac3bec28f43c396.jpeg similarity index 100% rename from img/bookmarks/holidaycss-minimalist-classless-css-theme-with-dark-mode-support.c28d700a7ac3bec28f43c396.jpeg rename to public/img/bookmarks/holidaycss-minimalist-classless-css-theme-with-dark-mode-support.c28d700a7ac3bec28f43c396.jpeg diff --git a/img/bookmarks/how-ahrefs-saved-usdollar400m-in-3-years-by-not-going-to-the-cloud.c291c29dc381c3a2c382c292.jpeg b/public/img/bookmarks/how-ahrefs-saved-usdollar400m-in-3-years-by-not-going-to-the-cloud.c291c29dc381c3a2c382c292.jpeg similarity index 100% rename from img/bookmarks/how-ahrefs-saved-usdollar400m-in-3-years-by-not-going-to-the-cloud.c291c29dc381c3a2c382c292.jpeg rename to public/img/bookmarks/how-ahrefs-saved-usdollar400m-in-3-years-by-not-going-to-the-cloud.c291c29dc381c3a2c382c292.jpeg diff --git a/img/bookmarks/how-hypercard-got-its-color-back.63c3bac2ac691a39c3a61410.jpeg b/public/img/bookmarks/how-hypercard-got-its-color-back.63c3bac2ac691a39c3a61410.jpeg similarity index 100% rename from img/bookmarks/how-hypercard-got-its-color-back.63c3bac2ac691a39c3a61410.jpeg rename to public/img/bookmarks/how-hypercard-got-its-color-back.63c3bac2ac691a39c3a61410.jpeg diff --git a/img/bookmarks/how-i-discovered-the-underground-world-of-credit-card-network-exploitation.152412c3b0c28e434dc29700.jpeg b/public/img/bookmarks/how-i-discovered-the-underground-world-of-credit-card-network-exploitation.152412c3b0c28e434dc29700.jpeg similarity index 100% rename from img/bookmarks/how-i-discovered-the-underground-world-of-credit-card-network-exploitation.152412c3b0c28e434dc29700.jpeg rename to public/img/bookmarks/how-i-discovered-the-underground-world-of-credit-card-network-exploitation.152412c3b0c28e434dc29700.jpeg diff --git a/img/bookmarks/how-i-run-my-servers.5806c287c2bdc388c38fc3ad.jpeg b/public/img/bookmarks/how-i-run-my-servers.5806c287c2bdc388c38fc3ad.jpeg similarity index 100% rename from img/bookmarks/how-i-run-my-servers.5806c287c2bdc388c38fc3ad.jpeg rename to public/img/bookmarks/how-i-run-my-servers.5806c287c2bdc388c38fc3ad.jpeg diff --git a/img/bookmarks/ian-bells-text-elite-page.29c29e222b02c38036384435.jpeg b/public/img/bookmarks/ian-bells-text-elite-page.29c29e222b02c38036384435.jpeg similarity index 100% rename from img/bookmarks/ian-bells-text-elite-page.29c29e222b02c38036384435.jpeg rename to public/img/bookmarks/ian-bells-text-elite-page.29c29e222b02c38036384435.jpeg diff --git a/img/bookmarks/id-software-open-source.48c2b6c2afc2afc2afc2a020.jpeg b/public/img/bookmarks/id-software-open-source.48c2b6c2afc2afc2afc2a020.jpeg similarity index 100% rename from img/bookmarks/id-software-open-source.48c2b6c2afc2afc2afc2a020.jpeg rename to public/img/bookmarks/id-software-open-source.48c2b6c2afc2afc2afc2a020.jpeg diff --git a/img/bookmarks/idle-dr-dos.69c2a0c3a1c29f5d06c39900.jpeg b/public/img/bookmarks/idle-dr-dos.69c2a0c3a1c29f5d06c39900.jpeg similarity index 100% rename from img/bookmarks/idle-dr-dos.69c2a0c3a1c29f5d06c39900.jpeg rename to public/img/bookmarks/idle-dr-dos.69c2a0c3a1c29f5d06c39900.jpeg diff --git a/img/bookmarks/im-a-very-slow-thinker.c2a76bc2a5c2a1c3a5c39f14.jpeg b/public/img/bookmarks/im-a-very-slow-thinker.c2a76bc2a5c2a1c3a5c39f14.jpeg similarity index 100% rename from img/bookmarks/im-a-very-slow-thinker.c2a76bc2a5c2a1c3a5c39f14.jpeg rename to public/img/bookmarks/im-a-very-slow-thinker.c2a76bc2a5c2a1c3a5c39f14.jpeg diff --git a/img/bookmarks/improbable-island.c2bc6b14c2bb1ec3bd776900.jpeg b/public/img/bookmarks/improbable-island.c2bc6b14c2bb1ec3bd776900.jpeg similarity index 100% rename from img/bookmarks/improbable-island.c2bc6b14c2bb1ec3bd776900.jpeg rename to public/img/bookmarks/improbable-island.c2bc6b14c2bb1ec3bd776900.jpeg diff --git a/img/bookmarks/improve-performance-of-laravels-pagination-with-complex-queries.c3852b05c38b67c3b9c29e0c.jpeg b/public/img/bookmarks/improve-performance-of-laravels-pagination-with-complex-queries.c3852b05c38b67c3b9c29e0c.jpeg similarity index 100% rename from img/bookmarks/improve-performance-of-laravels-pagination-with-complex-queries.c3852b05c38b67c3b9c29e0c.jpeg rename to public/img/bookmarks/improve-performance-of-laravels-pagination-with-complex-queries.c3852b05c38b67c3b9c29e0c.jpeg diff --git a/img/bookmarks/introducing-rbot-a-personalized-ai-assistant-written-by-rbot.61c3a23254c2bfc384175225.jpeg b/public/img/bookmarks/introducing-rbot-a-personalized-ai-assistant-written-by-rbot.61c3a23254c2bfc384175225.jpeg similarity index 100% rename from img/bookmarks/introducing-rbot-a-personalized-ai-assistant-written-by-rbot.61c3a23254c2bfc384175225.jpeg rename to public/img/bookmarks/introducing-rbot-a-personalized-ai-assistant-written-by-rbot.61c3a23254c2bfc384175225.jpeg diff --git a/img/bookmarks/introducing-utf-21-a-toy-character-encoding.c2bc25c2a8c2a61ac3a7770b.jpeg b/public/img/bookmarks/introducing-utf-21-a-toy-character-encoding.c2bc25c2a8c2a61ac3a7770b.jpeg similarity index 100% rename from img/bookmarks/introducing-utf-21-a-toy-character-encoding.c2bc25c2a8c2a61ac3a7770b.jpeg rename to public/img/bookmarks/introducing-utf-21-a-toy-character-encoding.c2bc25c2a8c2a61ac3a7770b.jpeg diff --git a/img/bookmarks/ivan-safrins-website.0935c39cc3ae5f43601f2417.jpeg b/public/img/bookmarks/ivan-safrins-website.0935c39cc3ae5f43601f2417.jpeg similarity index 100% rename from img/bookmarks/ivan-safrins-website.0935c39cc3ae5f43601f2417.jpeg rename to public/img/bookmarks/ivan-safrins-website.0935c39cc3ae5f43601f2417.jpeg diff --git a/img/bookmarks/jaana-dogans-blog.57c2b5c3aa39c2a94855c39a.jpeg b/public/img/bookmarks/jaana-dogans-blog.57c2b5c3aa39c2a94855c39a.jpeg similarity index 100% rename from img/bookmarks/jaana-dogans-blog.57c2b5c3aa39c2a94855c39a.jpeg rename to public/img/bookmarks/jaana-dogans-blog.57c2b5c3aa39c2a94855c39a.jpeg diff --git a/img/bookmarks/jacques-corby-tuech-website.02c3892c742b46c29a28c38d.jpeg b/public/img/bookmarks/jacques-corby-tuech-website.02c3892c742b46c29a28c38d.jpeg similarity index 100% rename from img/bookmarks/jacques-corby-tuech-website.02c3892c742b46c29a28c38d.jpeg rename to public/img/bookmarks/jacques-corby-tuech-website.02c3892c742b46c29a28c38d.jpeg diff --git a/img/bookmarks/jake-howards-website.c28518c3bf1cc284c2a46d00.jpeg b/public/img/bookmarks/jake-howards-website.c28518c3bf1cc284c2a46d00.jpeg similarity index 100% rename from img/bookmarks/jake-howards-website.c28518c3bf1cc284c2a46d00.jpeg rename to public/img/bookmarks/jake-howards-website.c28518c3bf1cc284c2a46d00.jpeg diff --git a/img/bookmarks/jake-lazaroffs-website.27c2bdc38ec2817c4cc2b500.jpeg b/public/img/bookmarks/jake-lazaroffs-website.27c2bdc38ec2817c4cc2b500.jpeg similarity index 100% rename from img/bookmarks/jake-lazaroffs-website.27c2bdc38ec2817c4cc2b500.jpeg rename to public/img/bookmarks/jake-lazaroffs-website.27c2bdc38ec2817c4cc2b500.jpeg diff --git a/img/bookmarks/jakemuseum.c38268c2b5c3b3c3bac28a00.jpeg b/public/img/bookmarks/jakemuseum.c38268c2b5c3b3c3bac28a00.jpeg similarity index 100% rename from img/bookmarks/jakemuseum.c38268c2b5c3b3c3bac28a00.jpeg rename to public/img/bookmarks/jakemuseum.c38268c2b5c3b3c3bac28a00.jpeg diff --git a/img/bookmarks/john-mathews-blog.c2a24d7f7205c3b1c388c2bd.jpeg b/public/img/bookmarks/john-mathews-blog.c2a24d7f7205c3b1c388c2bd.jpeg similarity index 100% rename from img/bookmarks/john-mathews-blog.c2a24d7f7205c3b1c388c2bd.jpeg rename to public/img/bookmarks/john-mathews-blog.c2a24d7f7205c3b1c388c2bd.jpeg diff --git a/img/bookmarks/js-private-class-fields-considered-harmful.2837c2b64a24162ec3a7c3b3.jpeg b/public/img/bookmarks/js-private-class-fields-considered-harmful.2837c2b64a24162ec3a7c3b3.jpeg similarity index 100% rename from img/bookmarks/js-private-class-fields-considered-harmful.2837c2b64a24162ec3a7c3b3.jpeg rename to public/img/bookmarks/js-private-class-fields-considered-harmful.2837c2b64a24162ec3a7c3b3.jpeg diff --git a/img/bookmarks/jswm-javascript-window-manager.2c1b31c2bac2b030c3945562.jpeg b/public/img/bookmarks/jswm-javascript-window-manager.2c1b31c2bac2b030c3945562.jpeg similarity index 100% rename from img/bookmarks/jswm-javascript-window-manager.2c1b31c2bac2b030c3945562.jpeg rename to public/img/bookmarks/jswm-javascript-window-manager.2c1b31c2bac2b030c3945562.jpeg diff --git a/img/bookmarks/just-update-rules-between-neurons.c2a0c38647c2a73263067441.jpeg b/public/img/bookmarks/just-update-rules-between-neurons.c2a0c38647c2a73263067441.jpeg similarity index 100% rename from img/bookmarks/just-update-rules-between-neurons.c2a0c38647c2a73263067441.jpeg rename to public/img/bookmarks/just-update-rules-between-neurons.c2a0c38647c2a73263067441.jpeg diff --git a/img/bookmarks/koos-looijesteijns-website.c283c3b94063c382c388c39e.jpeg b/public/img/bookmarks/koos-looijesteijns-website.c283c3b94063c382c388c39e.jpeg similarity index 100% rename from img/bookmarks/koos-looijesteijns-website.c283c3b94063c382c388c39e.jpeg rename to public/img/bookmarks/koos-looijesteijns-website.c283c3b94063c382c388c39e.jpeg diff --git a/img/bookmarks/kyle-shooks-website.5d127dc397c38cc28f43c383.jpeg b/public/img/bookmarks/kyle-shooks-website.5d127dc397c38cc28f43c383.jpeg similarity index 100% rename from img/bookmarks/kyle-shooks-website.5d127dc397c38cc28f43c383.jpeg rename to public/img/bookmarks/kyle-shooks-website.5d127dc397c38cc28f43c383.jpeg diff --git a/img/bookmarks/laravel-pint.c395c28c586517c2afc2b800.jpeg b/public/img/bookmarks/laravel-pint.c395c28c586517c2afc2b800.jpeg similarity index 100% rename from img/bookmarks/laravel-pint.c395c28c586517c2afc2b800.jpeg rename to public/img/bookmarks/laravel-pint.c395c28c586517c2afc2b800.jpeg diff --git a/img/bookmarks/lauren-tans-blog.c3a5c29fc3b247c2bd11c2a5.jpeg b/public/img/bookmarks/lauren-tans-blog.c3a5c29fc3b247c2bd11c2a5.jpeg similarity index 100% rename from img/bookmarks/lauren-tans-blog.c3a5c29fc3b247c2bd11c2a5.jpeg rename to public/img/bookmarks/lauren-tans-blog.c3a5c29fc3b247c2bd11c2a5.jpeg diff --git a/img/bookmarks/laying-out-a-book-with-css.30c3b86244c2be4dc28bc284.jpeg b/public/img/bookmarks/laying-out-a-book-with-css.30c3b86244c2be4dc28bc284.jpeg similarity index 100% rename from img/bookmarks/laying-out-a-book-with-css.30c3b86244c2be4dc28bc284.jpeg rename to public/img/bookmarks/laying-out-a-book-with-css.30c3b86244c2be4dc28bc284.jpeg diff --git a/img/bookmarks/lazydocker-the-lazier-way-to-manage-everything-docker.091bc384604e0ec38b302311.jpeg b/public/img/bookmarks/lazydocker-the-lazier-way-to-manage-everything-docker.091bc384604e0ec38b302311.jpeg similarity index 100% rename from img/bookmarks/lazydocker-the-lazier-way-to-manage-everything-docker.091bc384604e0ec38b302311.jpeg rename to public/img/bookmarks/lazydocker-the-lazier-way-to-manage-everything-docker.091bc384604e0ec38b302311.jpeg diff --git a/img/bookmarks/linear-interpolation-functions.c2a6c396592e11c3ac61c29a.jpeg b/public/img/bookmarks/linear-interpolation-functions.c2a6c396592e11c3ac61c29a.jpeg similarity index 100% rename from img/bookmarks/linear-interpolation-functions.c2a6c396592e11c3ac61c29a.jpeg rename to public/img/bookmarks/linear-interpolation-functions.c2a6c396592e11c3ac61c29a.jpeg diff --git a/img/bookmarks/little-witch-in-the-woods-on-steam.c3bac2b9072f6f1c7365c3aa.jpeg b/public/img/bookmarks/little-witch-in-the-woods-on-steam.c3bac2b9072f6f1c7365c3aa.jpeg similarity index 100% rename from img/bookmarks/little-witch-in-the-woods-on-steam.c3bac2b9072f6f1c7365c3aa.jpeg rename to public/img/bookmarks/little-witch-in-the-woods-on-steam.c3bac2b9072f6f1c7365c3aa.jpeg diff --git a/img/bookmarks/low-code-software-development-is-a-lie.31c2877dc391c39718c38c00.jpeg b/public/img/bookmarks/low-code-software-development-is-a-lie.31c2877dc391c39718c38c00.jpeg similarity index 100% rename from img/bookmarks/low-code-software-development-is-a-lie.31c2877dc391c39718c38c00.jpeg rename to public/img/bookmarks/low-code-software-development-is-a-lie.31c2877dc391c39718c38c00.jpeg diff --git a/img/bookmarks/low-tech-webring-directory.c388c289c3a5c2afc2bac281.jpeg b/public/img/bookmarks/low-tech-webring-directory.c388c289c3a5c2afc2bac281.jpeg similarity index 100% rename from img/bookmarks/low-tech-webring-directory.c388c289c3a5c2afc2bac281.jpeg rename to public/img/bookmarks/low-tech-webring-directory.c388c289c3a5c2afc2bac281.jpeg diff --git a/img/bookmarks/maggie-appletons-digital-garden.c2afc3b4c3a4c2a9c2b9c380.jpeg b/public/img/bookmarks/maggie-appletons-digital-garden.c2afc3b4c3a4c2a9c2b9c380.jpeg similarity index 100% rename from img/bookmarks/maggie-appletons-digital-garden.c2afc3b4c3a4c2a9c2b9c380.jpeg rename to public/img/bookmarks/maggie-appletons-digital-garden.c2afc3b4c3a4c2a9c2b9c380.jpeg diff --git a/img/bookmarks/mark-llobreras-blog.c2915ec3ba11c39011c3b400.jpeg b/public/img/bookmarks/mark-llobreras-blog.c2915ec3ba11c39011c3b400.jpeg similarity index 100% rename from img/bookmarks/mark-llobreras-blog.c2915ec3ba11c39011c3b400.jpeg rename to public/img/bookmarks/mark-llobreras-blog.c2915ec3ba11c39011c3b400.jpeg diff --git a/img/bookmarks/martin-heinzs-personal-website-and-blog.63c384c2bac389c2825a3000.jpeg b/public/img/bookmarks/martin-heinzs-personal-website-and-blog.63c384c2bac389c2825a3000.jpeg similarity index 100% rename from img/bookmarks/martin-heinzs-personal-website-and-blog.63c384c2bac389c2825a3000.jpeg rename to public/img/bookmarks/martin-heinzs-personal-website-and-blog.63c384c2bac389c2825a3000.jpeg diff --git a/img/bookmarks/mastodon-powered-blog-comments.c2adc2bdc3a1c2ae60c2ba6c.jpeg b/public/img/bookmarks/mastodon-powered-blog-comments.c2adc2bdc3a1c2ae60c2ba6c.jpeg similarity index 100% rename from img/bookmarks/mastodon-powered-blog-comments.c2adc2bdc3a1c2ae60c2ba6c.jpeg rename to public/img/bookmarks/mastodon-powered-blog-comments.c2adc2bdc3a1c2ae60c2ba6c.jpeg diff --git a/img/bookmarks/merveilles-webring.c391c2bfc39ec2b95ac3832e.jpeg b/public/img/bookmarks/merveilles-webring.c391c2bfc39ec2b95ac3832e.jpeg similarity index 100% rename from img/bookmarks/merveilles-webring.c391c2bfc39ec2b95ac3832e.jpeg rename to public/img/bookmarks/merveilles-webring.c391c2bfc39ec2b95ac3832e.jpeg diff --git a/img/bookmarks/mindspike.c39922c3973d192640c2af00.jpeg b/public/img/bookmarks/mindspike.c39922c3973d192640c2af00.jpeg similarity index 100% rename from img/bookmarks/mindspike.c39922c3973d192640c2af00.jpeg rename to public/img/bookmarks/mindspike.c39922c3973d192640c2af00.jpeg diff --git a/img/bookmarks/minigpt4cpp-a-port-of-minigpt4-in-c.6627382c5130c39435c3a834.jpeg b/public/img/bookmarks/minigpt4cpp-a-port-of-minigpt4-in-c.6627382c5130c39435c3a834.jpeg similarity index 100% rename from img/bookmarks/minigpt4cpp-a-port-of-minigpt4-in-c.6627382c5130c39435c3a834.jpeg rename to public/img/bookmarks/minigpt4cpp-a-port-of-minigpt4-in-c.6627382c5130c39435c3a834.jpeg diff --git a/img/bookmarks/mosaic-tetris.67c2adc39378c2b3c2a72c75.jpeg b/public/img/bookmarks/mosaic-tetris.67c2adc39378c2b3c2a72c75.jpeg similarity index 100% rename from img/bookmarks/mosaic-tetris.67c2adc39378c2b3c2a72c75.jpeg rename to public/img/bookmarks/mosaic-tetris.67c2adc39378c2b3c2a72c75.jpeg diff --git a/img/bookmarks/my-journey-away-from-the-jamstack.c3ae05c2a4c385c3a5206000.jpeg b/public/img/bookmarks/my-journey-away-from-the-jamstack.c3ae05c2a4c385c3a5206000.jpeg similarity index 100% rename from img/bookmarks/my-journey-away-from-the-jamstack.c3ae05c2a4c385c3a5206000.jpeg rename to public/img/bookmarks/my-journey-away-from-the-jamstack.c3ae05c2a4c385c3a5206000.jpeg diff --git a/img/bookmarks/nightwave-plaza-online-vaporwave-radio.c288530034c29bc3a7c3b800.jpeg b/public/img/bookmarks/nightwave-plaza-online-vaporwave-radio.c288530034c29bc3a7c3b800.jpeg similarity index 100% rename from img/bookmarks/nightwave-plaza-online-vaporwave-radio.c288530034c29bc3a7c3b800.jpeg rename to public/img/bookmarks/nightwave-plaza-online-vaporwave-radio.c288530034c29bc3a7c3b800.jpeg diff --git a/img/bookmarks/no-lab-coat-required.c39347c3bcc39d65c38c6100.jpeg b/public/img/bookmarks/no-lab-coat-required.c39347c3bcc39d65c38c6100.jpeg similarity index 100% rename from img/bookmarks/no-lab-coat-required.c39347c3bcc39d65c38c6100.jpeg rename to public/img/bookmarks/no-lab-coat-required.c39347c3bcc39d65c38c6100.jpeg diff --git a/img/bookmarks/north-of-england-woodworking-and-power-tool-show.c284c38523c2acc386402a23.jpeg b/public/img/bookmarks/north-of-england-woodworking-and-power-tool-show.c284c38523c2acc386402a23.jpeg similarity index 100% rename from img/bookmarks/north-of-england-woodworking-and-power-tool-show.c284c38523c2acc386402a23.jpeg rename to public/img/bookmarks/north-of-england-woodworking-and-power-tool-show.c284c38523c2acc386402a23.jpeg diff --git a/img/bookmarks/obsidian-web-clipper-bookmarklet-to-save-articles-and-pages-from-the-web-for-safari-chrome-firefox-and-mobile-browsers.c3a325c2b157c395c2aa7b00.jpeg b/public/img/bookmarks/obsidian-web-clipper-bookmarklet-to-save-articles-and-pages-from-the-web-for-safari-chrome-firefox-and-mobile-browsers.c3a325c2b157c395c2aa7b00.jpeg similarity index 100% rename from img/bookmarks/obsidian-web-clipper-bookmarklet-to-save-articles-and-pages-from-the-web-for-safari-chrome-firefox-and-mobile-browsers.c3a325c2b157c395c2aa7b00.jpeg rename to public/img/bookmarks/obsidian-web-clipper-bookmarklet-to-save-articles-and-pages-from-the-web-for-safari-chrome-firefox-and-mobile-browsers.c3a325c2b157c395c2aa7b00.jpeg diff --git a/img/bookmarks/offline-is-just-online-with-extreme-latency.52c2ae2138c2973463022425.jpeg b/public/img/bookmarks/offline-is-just-online-with-extreme-latency.52c2ae2138c2973463022425.jpeg similarity index 100% rename from img/bookmarks/offline-is-just-online-with-extreme-latency.52c2ae2138c2973463022425.jpeg rename to public/img/bookmarks/offline-is-just-online-with-extreme-latency.52c2ae2138c2973463022425.jpeg diff --git a/img/bookmarks/openworm.c28c29122d79c28047c3b20b.jpeg b/public/img/bookmarks/openworm.c28c29122d79c28047c3b20b.jpeg similarity index 100% rename from img/bookmarks/openworm.c28c29122d79c28047c3b20b.jpeg rename to public/img/bookmarks/openworm.c28c29122d79c28047c3b20b.jpeg diff --git a/img/bookmarks/over-powerful-party-leaders-have-undermined-politics.c3ad495cc3894c4fc3900507.jpeg b/public/img/bookmarks/over-powerful-party-leaders-have-undermined-politics.c3ad495cc3894c4fc3900507.jpeg similarity index 100% rename from img/bookmarks/over-powerful-party-leaders-have-undermined-politics.c3ad495cc3894c4fc3900507.jpeg rename to public/img/bookmarks/over-powerful-party-leaders-have-undermined-politics.c3ad495cc3894c4fc3900507.jpeg diff --git a/img/bookmarks/pardus-free-browser-game-set-in-space.461dc2a833c398c297762c6e.jpeg b/public/img/bookmarks/pardus-free-browser-game-set-in-space.461dc2a833c398c297762c6e.jpeg similarity index 100% rename from img/bookmarks/pardus-free-browser-game-set-in-space.461dc2a833c398c297762c6e.jpeg rename to public/img/bookmarks/pardus-free-browser-game-set-in-space.461dc2a833c398c297762c6e.jpeg diff --git a/img/bookmarks/php-perlin-noise.c283046222c2b90924c38800.jpeg b/public/img/bookmarks/php-perlin-noise.c283046222c2b90924c38800.jpeg similarity index 100% rename from img/bookmarks/php-perlin-noise.c283046222c2b90924c38800.jpeg rename to public/img/bookmarks/php-perlin-noise.c283046222c2b90924c38800.jpeg diff --git a/img/bookmarks/php[tek]-2023-web-development-conference-chicago-il.c387c3a464c39001c38dc2a1.jpeg b/public/img/bookmarks/php[tek]-2023-web-development-conference-chicago-il.c387c3a464c39001c38dc2a1.jpeg similarity index 100% rename from img/bookmarks/php[tek]-2023-web-development-conference-chicago-il.c387c3a464c39001c38dc2a1.jpeg rename to public/img/bookmarks/php[tek]-2023-web-development-conference-chicago-il.c387c3a464c39001c38dc2a1.jpeg diff --git a/img/bookmarks/pile-of-hrefs.0bc2a855c2a8c3b2c29bc284.jpeg b/public/img/bookmarks/pile-of-hrefs.0bc2a855c2a8c3b2c29bc284.jpeg similarity index 100% rename from img/bookmarks/pile-of-hrefs.0bc2a855c2a8c3b2c29bc284.jpeg rename to public/img/bookmarks/pile-of-hrefs.0bc2a855c2a8c3b2c29bc284.jpeg diff --git a/img/bookmarks/pop-calculator.c2b6095d0dc3860cc3b22d57.jpeg b/public/img/bookmarks/pop-calculator.c2b6095d0dc3860cc3b22d57.jpeg similarity index 100% rename from img/bookmarks/pop-calculator.c2b6095d0dc3860cc3b22d57.jpeg rename to public/img/bookmarks/pop-calculator.c2b6095d0dc3860cc3b22d57.jpeg diff --git a/img/bookmarks/prison-architect-on-steam.c38c2dc38ac2b4c2b3c29034.jpeg b/public/img/bookmarks/prison-architect-on-steam.c38c2dc38ac2b4c2b3c29034.jpeg similarity index 100% rename from img/bookmarks/prison-architect-on-steam.c38c2dc38ac2b4c2b3c29034.jpeg rename to public/img/bookmarks/prison-architect-on-steam.c38c2dc38ac2b4c2b3c29034.jpeg diff --git a/img/bookmarks/procedural-planets.2bc3a534c2b530c287c2a031.jpeg b/public/img/bookmarks/procedural-planets.2bc3a534c2b530c287c2a031.jpeg similarity index 100% rename from img/bookmarks/procedural-planets.2bc3a534c2b530c287c2a031.jpeg rename to public/img/bookmarks/procedural-planets.2bc3a534c2b530c287c2a031.jpeg diff --git a/img/bookmarks/progress-linux-tool-to-show-progress-for-cp-mv-dd-formerly-known-as-cv.c3a4c397c29447c2adc38900.jpeg b/public/img/bookmarks/progress-linux-tool-to-show-progress-for-cp-mv-dd-formerly-known-as-cv.c3a4c397c29447c2adc38900.jpeg similarity index 100% rename from img/bookmarks/progress-linux-tool-to-show-progress-for-cp-mv-dd-formerly-known-as-cv.c3a4c397c29447c2adc38900.jpeg rename to public/img/bookmarks/progress-linux-tool-to-show-progress-for-cp-mv-dd-formerly-known-as-cv.c3a4c397c29447c2adc38900.jpeg diff --git a/img/bookmarks/qr-code-generation-from-image-with-stable-diffusion.c2b86e2e4210c2a15a670c2d.jpeg b/public/img/bookmarks/qr-code-generation-from-image-with-stable-diffusion.c2b86e2e4210c2a15a670c2d.jpeg similarity index 100% rename from img/bookmarks/qr-code-generation-from-image-with-stable-diffusion.c2b86e2e4210c2a15a670c2d.jpeg rename to public/img/bookmarks/qr-code-generation-from-image-with-stable-diffusion.c2b86e2e4210c2a15a670c2d.jpeg diff --git a/img/bookmarks/quic-to-mars.c39bc2bb5dc282c293c3a972.jpeg b/public/img/bookmarks/quic-to-mars.c39bc2bb5dc282c293c3a972.jpeg similarity index 100% rename from img/bookmarks/quic-to-mars.c39bc2bb5dc282c293c3a972.jpeg rename to public/img/bookmarks/quic-to-mars.c39bc2bb5dc282c293c3a972.jpeg diff --git a/img/bookmarks/rach-smiths-digital-garden.c38d731e4ec3a10ec386c2ba.jpeg b/public/img/bookmarks/rach-smiths-digital-garden.c38d731e4ec3a10ec386c2ba.jpeg similarity index 100% rename from img/bookmarks/rach-smiths-digital-garden.c38d731e4ec3a10ec386c2ba.jpeg rename to public/img/bookmarks/rach-smiths-digital-garden.c38d731e4ec3a10ec386c2ba.jpeg diff --git a/img/bookmarks/recreating-windows-11-with-svelte.c291c38052c3bd24c2b6c2bd.jpeg b/public/img/bookmarks/recreating-windows-11-with-svelte.c291c38052c3bd24c2b6c2bd.jpeg similarity index 100% rename from img/bookmarks/recreating-windows-11-with-svelte.c291c38052c3bd24c2b6c2bd.jpeg rename to public/img/bookmarks/recreating-windows-11-with-svelte.c291c38052c3bd24c2b6c2bd.jpeg diff --git a/img/bookmarks/regl-scatterplot.015117c281432b1541621e00.jpeg b/public/img/bookmarks/regl-scatterplot.015117c281432b1541621e00.jpeg similarity index 100% rename from img/bookmarks/regl-scatterplot.015117c281432b1541621e00.jpeg rename to public/img/bookmarks/regl-scatterplot.015117c281432b1541621e00.jpeg diff --git a/img/bookmarks/retro-forum-directory.3a4368c281c3806cc382c2a8.jpeg b/public/img/bookmarks/retro-forum-directory.3a4368c281c3806cc382c2a8.jpeg similarity index 100% rename from img/bookmarks/retro-forum-directory.3a4368c281c3806cc382c2a8.jpeg rename to public/img/bookmarks/retro-forum-directory.3a4368c281c3806cc382c2a8.jpeg diff --git a/img/bookmarks/retrotechnews.056fc3b80cc382c39ec28d29.jpeg b/public/img/bookmarks/retrotechnews.056fc3b80cc382c39ec28d29.jpeg similarity index 100% rename from img/bookmarks/retrotechnews.056fc3b80cc382c39ec28d29.jpeg rename to public/img/bookmarks/retrotechnews.056fc3b80cc382c39ec28d29.jpeg diff --git a/img/bookmarks/rimworld-on-steam.c2b13e5dc2b8c3a658c2b515.jpeg b/public/img/bookmarks/rimworld-on-steam.c2b13e5dc2b8c3a658c2b515.jpeg similarity index 100% rename from img/bookmarks/rimworld-on-steam.c2b13e5dc2b8c3a658c2b515.jpeg rename to public/img/bookmarks/rimworld-on-steam.c2b13e5dc2b8c3a658c2b515.jpeg diff --git a/img/bookmarks/risc-v-cpu-core-written-in-ansi-c.48c38dc388c38ec2af34c3a9.jpeg b/public/img/bookmarks/risc-v-cpu-core-written-in-ansi-c.48c38dc388c38ec2af34c3a9.jpeg similarity index 100% rename from img/bookmarks/risc-v-cpu-core-written-in-ansi-c.48c38dc388c38ec2af34c3a9.jpeg rename to public/img/bookmarks/risc-v-cpu-core-written-in-ansi-c.48c38dc388c38ec2af34c3a9.jpeg diff --git a/img/bookmarks/robot-cantina.c2a4c2a0c2b5c3ab7821c28a.jpeg b/public/img/bookmarks/robot-cantina.c2a4c2a0c2b5c3ab7821c28a.jpeg similarity index 100% rename from img/bookmarks/robot-cantina.c2a4c2a0c2b5c3ab7821c28a.jpeg rename to public/img/bookmarks/robot-cantina.c2a4c2a0c2b5c3ab7821c28a.jpeg diff --git a/img/bookmarks/roguelike-simulator.c3a4c39ec295c38005633a00.jpeg b/public/img/bookmarks/roguelike-simulator.c3a4c39ec295c38005633a00.jpeg similarity index 100% rename from img/bookmarks/roguelike-simulator.c3a4c39ec295c38005633a00.jpeg rename to public/img/bookmarks/roguelike-simulator.c3a4c39ec295c38005633a00.jpeg diff --git a/img/bookmarks/running-long-running-tasks-in-php-best-practices-and-techniques.59c2805ac396c3b5c295c2b5.jpeg b/public/img/bookmarks/running-long-running-tasks-in-php-best-practices-and-techniques.59c2805ac396c3b5c295c2b5.jpeg similarity index 100% rename from img/bookmarks/running-long-running-tasks-in-php-best-practices-and-techniques.59c2805ac396c3b5c295c2b5.jpeg rename to public/img/bookmarks/running-long-running-tasks-in-php-best-practices-and-techniques.59c2805ac396c3b5c295c2b5.jpeg diff --git a/img/bookmarks/scams-upon-scams-the-data-driven-advertising-grift.c29c59c2b458c398c39b6e00.jpeg b/public/img/bookmarks/scams-upon-scams-the-data-driven-advertising-grift.c29c59c2b458c398c39b6e00.jpeg similarity index 100% rename from img/bookmarks/scams-upon-scams-the-data-driven-advertising-grift.c29c59c2b458c398c39b6e00.jpeg rename to public/img/bookmarks/scams-upon-scams-the-data-driven-advertising-grift.c29c59c2b458c398c39b6e00.jpeg diff --git a/img/bookmarks/schnitzeljagddev-scavenger-hunt-on-the-internet-to-test-your-web-dev-skills.c289c2bcc39640c3b323c398.jpeg b/public/img/bookmarks/schnitzeljagddev-scavenger-hunt-on-the-internet-to-test-your-web-dev-skills.c289c2bcc39640c3b323c398.jpeg similarity index 100% rename from img/bookmarks/schnitzeljagddev-scavenger-hunt-on-the-internet-to-test-your-web-dev-skills.c289c2bcc39640c3b323c398.jpeg rename to public/img/bookmarks/schnitzeljagddev-scavenger-hunt-on-the-internet-to-test-your-web-dev-skills.c289c2bcc39640c3b323c398.jpeg diff --git a/img/bookmarks/secret-colours-of-the-commodore-64.c29c53c28b5ec28f20c3bb00.jpeg b/public/img/bookmarks/secret-colours-of-the-commodore-64.c29c53c28b5ec28f20c3bb00.jpeg similarity index 100% rename from img/bookmarks/secret-colours-of-the-commodore-64.c29c53c28b5ec28f20c3bb00.jpeg rename to public/img/bookmarks/secret-colours-of-the-commodore-64.c29c53c28b5ec28f20c3bb00.jpeg diff --git a/img/bookmarks/shadows-of-the-afterland-on-steam.c38bc38061c38c56c386c398.jpeg b/public/img/bookmarks/shadows-of-the-afterland-on-steam.c38bc38061c38c56c386c398.jpeg similarity index 100% rename from img/bookmarks/shadows-of-the-afterland-on-steam.c38bc38061c38c56c386c398.jpeg rename to public/img/bookmarks/shadows-of-the-afterland-on-steam.c38bc38061c38c56c386c398.jpeg diff --git a/img/bookmarks/shoelace-a-forward-thinking-library-of-web-components.c38bc28fc289c3b900c39e00.jpeg b/public/img/bookmarks/shoelace-a-forward-thinking-library-of-web-components.c38bc28fc289c3b900c39e00.jpeg similarity index 100% rename from img/bookmarks/shoelace-a-forward-thinking-library-of-web-components.c38bc28fc289c3b900c39e00.jpeg rename to public/img/bookmarks/shoelace-a-forward-thinking-library-of-web-components.c38bc28fc289c3b900c39e00.jpeg diff --git a/img/bookmarks/sidebar-webring.24c2a4c29643c3a77c1fc295.jpeg b/public/img/bookmarks/sidebar-webring.24c2a4c29643c3a77c1fc295.jpeg similarity index 100% rename from img/bookmarks/sidebar-webring.24c2a4c29643c3a77c1fc295.jpeg rename to public/img/bookmarks/sidebar-webring.24c2a4c29643c3a77c1fc295.jpeg diff --git a/img/bookmarks/simon-willisons-weblog.7d5835397b630d3c1c411800.jpeg b/public/img/bookmarks/simon-willisons-weblog.7d5835397b630d3c1c411800.jpeg similarity index 100% rename from img/bookmarks/simon-willisons-weblog.7d5835397b630d3c1c411800.jpeg rename to public/img/bookmarks/simon-willisons-weblog.7d5835397b630d3c1c411800.jpeg diff --git a/img/bookmarks/simple-icons-org.3fc3a041c285c2902cc29900.jpeg b/public/img/bookmarks/simple-icons-org.3fc3a041c285c2902cc29900.jpeg similarity index 100% rename from img/bookmarks/simple-icons-org.3fc3a041c285c2902cc29900.jpeg rename to public/img/bookmarks/simple-icons-org.3fc3a041c285c2902cc29900.jpeg diff --git a/img/bookmarks/simple-php-game-in-php-using-raylib-snake-with-source-code.394945c28f7734623f66c2aa.jpeg b/public/img/bookmarks/simple-php-game-in-php-using-raylib-snake-with-source-code.394945c28f7734623f66c2aa.jpeg similarity index 100% rename from img/bookmarks/simple-php-game-in-php-using-raylib-snake-with-source-code.394945c28f7734623f66c2aa.jpeg rename to public/img/bookmarks/simple-php-game-in-php-using-raylib-snake-with-source-code.394945c28f7734623f66c2aa.jpeg diff --git a/img/bookmarks/simply-parse-in-c.14c3974c6548c2a5c3924c6b.jpeg b/public/img/bookmarks/simply-parse-in-c.14c3974c6548c2a5c3924c6b.jpeg similarity index 100% rename from img/bookmarks/simply-parse-in-c.14c3974c6548c2a5c3924c6b.jpeg rename to public/img/bookmarks/simply-parse-in-c.14c3974c6548c2a5c3924c6b.jpeg diff --git a/img/bookmarks/sinewave.0ec292c2b0c3b00e30c2a74d.jpeg b/public/img/bookmarks/sinewave.0ec292c2b0c3b00e30c2a74d.jpeg similarity index 100% rename from img/bookmarks/sinewave.0ec292c2b0c3b00e30c2a74d.jpeg rename to public/img/bookmarks/sinewave.0ec292c2b0c3b00e30c2a74d.jpeg diff --git a/img/bookmarks/so-you-want-to-deploy-on-the-edge.053a3b76c39fc284c2b8c2a6.jpeg b/public/img/bookmarks/so-you-want-to-deploy-on-the-edge.053a3b76c39fc284c2b8c2a6.jpeg similarity index 100% rename from img/bookmarks/so-you-want-to-deploy-on-the-edge.053a3b76c39fc284c2b8c2a6.jpeg rename to public/img/bookmarks/so-you-want-to-deploy-on-the-edge.053a3b76c39fc284c2b8c2a6.jpeg diff --git a/img/bookmarks/societys-technical-debt-and-softwares-gutenberg-moment.77c3b513c2afc2a4085bc29d.jpeg b/public/img/bookmarks/societys-technical-debt-and-softwares-gutenberg-moment.77c3b513c2afc2a4085bc29d.jpeg similarity index 100% rename from img/bookmarks/societys-technical-debt-and-softwares-gutenberg-moment.77c3b513c2afc2a4085bc29d.jpeg rename to public/img/bookmarks/societys-technical-debt-and-softwares-gutenberg-moment.77c3b513c2afc2a4085bc29d.jpeg diff --git a/img/bookmarks/space-wreck-on-steam.31c3b20c04c3a4c281257831.jpeg b/public/img/bookmarks/space-wreck-on-steam.31c3b20c04c3a4c281257831.jpeg similarity index 100% rename from img/bookmarks/space-wreck-on-steam.31c3b20c04c3a4c281257831.jpeg rename to public/img/bookmarks/space-wreck-on-steam.31c3b20c04c3a4c281257831.jpeg diff --git a/img/bookmarks/spacetraders-api.c3851373c29028c2a3c2b600.jpeg b/public/img/bookmarks/spacetraders-api.c3851373c29028c2a3c2b600.jpeg similarity index 100% rename from img/bookmarks/spacetraders-api.c3851373c29028c2a3c2b600.jpeg rename to public/img/bookmarks/spacetraders-api.c3851373c29028c2a3c2b600.jpeg diff --git a/img/bookmarks/spacexs-texas-rocket-caused-a-big-mess-whats-next.087010c396c397c3a8c28300.jpeg b/public/img/bookmarks/spacexs-texas-rocket-caused-a-big-mess-whats-next.087010c396c397c3a8c28300.jpeg similarity index 100% rename from img/bookmarks/spacexs-texas-rocket-caused-a-big-mess-whats-next.087010c396c397c3a8c28300.jpeg rename to public/img/bookmarks/spacexs-texas-rocket-caused-a-big-mess-whats-next.087010c396c397c3a8c28300.jpeg diff --git a/img/bookmarks/spacexs-texas-rocket-is-going-to-cause-a-lot-more-damage-than-anyone-thinks.c38dc3ac2ac28e4c67276c00.jpeg b/public/img/bookmarks/spacexs-texas-rocket-is-going-to-cause-a-lot-more-damage-than-anyone-thinks.c38dc3ac2ac28e4c67276c00.jpeg similarity index 100% rename from img/bookmarks/spacexs-texas-rocket-is-going-to-cause-a-lot-more-damage-than-anyone-thinks.c38dc3ac2ac28e4c67276c00.jpeg rename to public/img/bookmarks/spacexs-texas-rocket-is-going-to-cause-a-lot-more-damage-than-anyone-thinks.c38dc3ac2ac28e4c67276c00.jpeg diff --git a/img/bookmarks/speed-up-your-laravel-app-by-caching-the-entire-response.61016b40c3965943c38fc384.jpeg b/public/img/bookmarks/speed-up-your-laravel-app-by-caching-the-entire-response.61016b40c3965943c38fc384.jpeg similarity index 100% rename from img/bookmarks/speed-up-your-laravel-app-by-caching-the-entire-response.61016b40c3965943c38fc384.jpeg rename to public/img/bookmarks/speed-up-your-laravel-app-by-caching-the-entire-response.61016b40c3965943c38fc384.jpeg diff --git a/img/bookmarks/splattercatgaming.c3b351c2abc3b83b13c3be2a.jpeg b/public/img/bookmarks/splattercatgaming.c3b351c2abc3b83b13c3be2a.jpeg similarity index 100% rename from img/bookmarks/splattercatgaming.c3b351c2abc3b83b13c3be2a.jpeg rename to public/img/bookmarks/splattercatgaming.c3b351c2abc3b83b13c3be2a.jpeg diff --git a/img/bookmarks/star-trek-audioclips.c3aac39552c29fc293c2b46a.jpeg b/public/img/bookmarks/star-trek-audioclips.c3aac39552c29fc293c2b46a.jpeg similarity index 100% rename from img/bookmarks/star-trek-audioclips.c3aac39552c29fc293c2b46a.jpeg rename to public/img/bookmarks/star-trek-audioclips.c3aac39552c29fc293c2b46a.jpeg diff --git a/img/bookmarks/stardew-valley-on-steam.30c294c2b0c280c2bdc3bb5a.jpeg b/public/img/bookmarks/stardew-valley-on-steam.30c294c2b0c280c2bdc3bb5a.jpeg similarity index 100% rename from img/bookmarks/stardew-valley-on-steam.30c294c2b0c280c2bdc3bb5a.jpeg rename to public/img/bookmarks/stardew-valley-on-steam.30c294c2b0c280c2bdc3bb5a.jpeg diff --git a/img/bookmarks/steem-nova.c2ba41c298c2a6c285c3a700.jpeg b/public/img/bookmarks/steem-nova.c2ba41c298c2a6c285c3a700.jpeg similarity index 100% rename from img/bookmarks/steem-nova.c2ba41c298c2a6c285c3a700.jpeg rename to public/img/bookmarks/steem-nova.c2ba41c298c2a6c285c3a700.jpeg diff --git a/img/bookmarks/super-fantasy-kingdom-on-steam.c2aac2901e3e3fc2b0185d77.jpeg b/public/img/bookmarks/super-fantasy-kingdom-on-steam.c2aac2901e3e3fc2b0185d77.jpeg similarity index 100% rename from img/bookmarks/super-fantasy-kingdom-on-steam.c2aac2901e3e3fc2b0185d77.jpeg rename to public/img/bookmarks/super-fantasy-kingdom-on-steam.c2aac2901e3e3fc2b0185d77.jpeg diff --git a/img/bookmarks/susams-blog.c38246c28ec389c297497b61.jpeg b/public/img/bookmarks/susams-blog.c38246c28ec389c297497b61.jpeg similarity index 100% rename from img/bookmarks/susams-blog.c38246c28ec389c297497b61.jpeg rename to public/img/bookmarks/susams-blog.c38246c28ec389c297497b61.jpeg diff --git a/img/bookmarks/swords-of-freeport-on-itchio.c2b1c288c2acc397c3b7c293.jpeg b/public/img/bookmarks/swords-of-freeport-on-itchio.c2b1c288c2acc397c3b7c293.jpeg similarity index 100% rename from img/bookmarks/swords-of-freeport-on-itchio.c2b1c288c2acc397c3b7c293.jpeg rename to public/img/bookmarks/swords-of-freeport-on-itchio.c2b1c288c2acc397c3b7c293.jpeg diff --git a/img/bookmarks/ten-years-of-go-the-good-the-bad-and-the-meh.0c3ac2ba1ac3a3c38268c2b3.jpeg b/public/img/bookmarks/ten-years-of-go-the-good-the-bad-and-the-meh.0c3ac2ba1ac3a3c38268c2b3.jpeg similarity index 100% rename from img/bookmarks/ten-years-of-go-the-good-the-bad-and-the-meh.0c3ac2ba1ac3a3c38268c2b3.jpeg rename to public/img/bookmarks/ten-years-of-go-the-good-the-bad-and-the-meh.0c3ac2ba1ac3a3c38268c2b3.jpeg diff --git a/img/bookmarks/tendigits-digital-garden.7bc28ac284c3a2740ac28540.jpeg b/public/img/bookmarks/tendigits-digital-garden.7bc28ac284c3a2740ac28540.jpeg similarity index 100% rename from img/bookmarks/tendigits-digital-garden.7bc28ac284c3a2740ac28540.jpeg rename to public/img/bookmarks/tendigits-digital-garden.7bc28ac284c3a2740ac28540.jpeg diff --git a/img/bookmarks/textual-paint-ms-paint-in-your-terminal.c3936ec3ad49c28431205300.jpeg b/public/img/bookmarks/textual-paint-ms-paint-in-your-terminal.c3936ec3ad49c28431205300.jpeg similarity index 100% rename from img/bookmarks/textual-paint-ms-paint-in-your-terminal.c3936ec3ad49c28431205300.jpeg rename to public/img/bookmarks/textual-paint-ms-paint-in-your-terminal.c3936ec3ad49c28431205300.jpeg diff --git a/img/bookmarks/the-arcade.58220c16c38121c2aa19c3b5.jpeg b/public/img/bookmarks/the-arcade.58220c16c38121c2aa19c3b5.jpeg similarity index 100% rename from img/bookmarks/the-arcade.58220c16c38121c2aa19c3b5.jpeg rename to public/img/bookmarks/the-arcade.58220c16c38121c2aa19c3b5.jpeg diff --git a/img/bookmarks/the-big-lie-of-good-fast-cheap.c2a00d0430c2981821c2be00.jpeg b/public/img/bookmarks/the-big-lie-of-good-fast-cheap.c2a00d0430c2981821c2be00.jpeg similarity index 100% rename from img/bookmarks/the-big-lie-of-good-fast-cheap.c2a00d0430c2981821c2be00.jpeg rename to public/img/bookmarks/the-big-lie-of-good-fast-cheap.c2a00d0430c2981821c2be00.jpeg diff --git a/img/bookmarks/the-blog-of-andrew-stephens.27c2825b6e50c3a2c3865100.jpeg b/public/img/bookmarks/the-blog-of-andrew-stephens.27c2825b6e50c3a2c3865100.jpeg similarity index 100% rename from img/bookmarks/the-blog-of-andrew-stephens.27c2825b6e50c3a2c3865100.jpeg rename to public/img/bookmarks/the-blog-of-andrew-stephens.27c2825b6e50c3a2c3865100.jpeg diff --git a/img/bookmarks/the-buttons-on-zeniths-original-clicker-remote-were-a-mechanical-marvel.0754c3acc2acc2b90742c3bf.jpeg b/public/img/bookmarks/the-buttons-on-zeniths-original-clicker-remote-were-a-mechanical-marvel.0754c3acc2acc2b90742c3bf.jpeg similarity index 100% rename from img/bookmarks/the-buttons-on-zeniths-original-clicker-remote-were-a-mechanical-marvel.0754c3acc2acc2b90742c3bf.jpeg rename to public/img/bookmarks/the-buttons-on-zeniths-original-clicker-remote-were-a-mechanical-marvel.0754c3acc2acc2b90742c3bf.jpeg diff --git a/img/bookmarks/the-church-forests-of-ethiopia.c3bb26c294c28d7c3008211b.jpeg b/public/img/bookmarks/the-church-forests-of-ethiopia.c3bb26c294c28d7c3008211b.jpeg similarity index 100% rename from img/bookmarks/the-church-forests-of-ethiopia.c3bb26c294c28d7c3008211b.jpeg rename to public/img/bookmarks/the-church-forests-of-ethiopia.c3bb26c294c28d7c3008211b.jpeg diff --git a/img/bookmarks/the-claw-webring.5a7a22c290c293c399687d00.jpeg b/public/img/bookmarks/the-claw-webring.5a7a22c290c293c399687d00.jpeg similarity index 100% rename from img/bookmarks/the-claw-webring.5a7a22c290c293c399687d00.jpeg rename to public/img/bookmarks/the-claw-webring.5a7a22c290c293c399687d00.jpeg diff --git a/img/bookmarks/the-computers-are-bad-newsletter.2c05c2b637c299c3a1c3a400.jpeg b/public/img/bookmarks/the-computers-are-bad-newsletter.2c05c2b637c299c3a1c3a400.jpeg similarity index 100% rename from img/bookmarks/the-computers-are-bad-newsletter.2c05c2b637c299c3a1c3a400.jpeg rename to public/img/bookmarks/the-computers-are-bad-newsletter.2c05c2b637c299c3a1c3a400.jpeg diff --git a/img/bookmarks/the-death-of-infosec-twitter.72c3a07ac2b2c3b127c2a100.jpeg b/public/img/bookmarks/the-death-of-infosec-twitter.72c3a07ac2b2c3b127c2a100.jpeg similarity index 100% rename from img/bookmarks/the-death-of-infosec-twitter.72c3a07ac2b2c3b127c2a100.jpeg rename to public/img/bookmarks/the-death-of-infosec-twitter.72c3a07ac2b2c3b127c2a100.jpeg diff --git a/img/bookmarks/the-ethically-trained-programmer.c3a6c386c2adc397c383c3ac.jpeg b/public/img/bookmarks/the-ethically-trained-programmer.c3a6c386c2adc397c383c3ac.jpeg similarity index 100% rename from img/bookmarks/the-ethically-trained-programmer.c3a6c386c2adc397c383c3ac.jpeg rename to public/img/bookmarks/the-ethically-trained-programmer.c3a6c386c2adc397c383c3ac.jpeg diff --git a/img/bookmarks/the-grind-a-day.472c7d4cc3881d25c29e7800.jpeg b/public/img/bookmarks/the-grind-a-day.472c7d4cc3881d25c29e7800.jpeg similarity index 100% rename from img/bookmarks/the-grind-a-day.472c7d4cc3881d25c29e7800.jpeg rename to public/img/bookmarks/the-grind-a-day.472c7d4cc3881d25c29e7800.jpeg diff --git a/img/bookmarks/the-html-review.c2b408c3ad3761c29626c385.jpeg b/public/img/bookmarks/the-html-review.c2b408c3ad3761c29626c385.jpeg similarity index 100% rename from img/bookmarks/the-html-review.c2b408c3ad3761c29626c385.jpeg rename to public/img/bookmarks/the-html-review.c2b408c3ad3761c29626c385.jpeg diff --git a/img/bookmarks/the-kabal-invasion.c38ec3a7382bc3a454c28c00.jpeg b/public/img/bookmarks/the-kabal-invasion.c38ec3a7382bc3a454c28c00.jpeg similarity index 100% rename from img/bookmarks/the-kabal-invasion.c38ec3a7382bc3a454c28c00.jpeg rename to public/img/bookmarks/the-kabal-invasion.c38ec3a7382bc3a454c28c00.jpeg diff --git a/img/bookmarks/the-kingdom-of-loathing.3c6546c3be76c28bc3b24500.jpeg b/public/img/bookmarks/the-kingdom-of-loathing.3c6546c3be76c28bc3b24500.jpeg similarity index 100% rename from img/bookmarks/the-kingdom-of-loathing.3c6546c3be76c28bc3b24500.jpeg rename to public/img/bookmarks/the-kingdom-of-loathing.3c6546c3be76c28bc3b24500.jpeg diff --git a/img/bookmarks/the-ladybird-browser-project.435741466169c2bc0a752056.jpeg b/public/img/bookmarks/the-ladybird-browser-project.435741466169c2bc0a752056.jpeg similarity index 100% rename from img/bookmarks/the-ladybird-browser-project.435741466169c2bc0a752056.jpeg rename to public/img/bookmarks/the-ladybird-browser-project.435741466169c2bc0a752056.jpeg diff --git a/img/bookmarks/the-para-method-the-simple-system-for-organizing-your-digital-life-in-seconds.c3ae26c2af02041bc3bd7600.jpeg b/public/img/bookmarks/the-para-method-the-simple-system-for-organizing-your-digital-life-in-seconds.c3ae26c2af02041bc3bd7600.jpeg similarity index 100% rename from img/bookmarks/the-para-method-the-simple-system-for-organizing-your-digital-life-in-seconds.c3ae26c2af02041bc3bd7600.jpeg rename to public/img/bookmarks/the-para-method-the-simple-system-for-organizing-your-digital-life-in-seconds.c3ae26c2af02041bc3bd7600.jpeg diff --git a/img/bookmarks/the-proposal-to-enhance-gos-http-router.2f511963c3bbc2987543c2a5.jpeg b/public/img/bookmarks/the-proposal-to-enhance-gos-http-router.2f511963c3bbc2987543c2a5.jpeg similarity index 100% rename from img/bookmarks/the-proposal-to-enhance-gos-http-router.2f511963c3bbc2987543c2a5.jpeg rename to public/img/bookmarks/the-proposal-to-enhance-gos-http-router.2f511963c3bbc2987543c2a5.jpeg diff --git a/img/bookmarks/the-residual-media-depot.c392c2bac384c2a367c2b900.jpeg b/public/img/bookmarks/the-residual-media-depot.c392c2bac384c2a367c2b900.jpeg similarity index 100% rename from img/bookmarks/the-residual-media-depot.c392c2bac384c2a367c2b900.jpeg rename to public/img/bookmarks/the-residual-media-depot.c392c2bac384c2a367c2b900.jpeg diff --git a/img/bookmarks/the-smallest-docker-image-to-serve-static-websites.c381260a4f7c4072c2ac6e4b.jpeg b/public/img/bookmarks/the-smallest-docker-image-to-serve-static-websites.c381260a4f7c4072c2ac6e4b.jpeg similarity index 100% rename from img/bookmarks/the-smallest-docker-image-to-serve-static-websites.c381260a4f7c4072c2ac6e4b.jpeg rename to public/img/bookmarks/the-smallest-docker-image-to-serve-static-websites.c381260a4f7c4072c2ac6e4b.jpeg diff --git a/img/bookmarks/til-in-is-not-the-same-as-any.c2b7c2a96d05c38f4811c381.jpeg b/public/img/bookmarks/til-in-is-not-the-same-as-any.c2b7c2a96d05c38f4811c381.jpeg similarity index 100% rename from img/bookmarks/til-in-is-not-the-same-as-any.c2b7c2a96d05c38f4811c381.jpeg rename to public/img/bookmarks/til-in-is-not-the-same-as-any.c2b7c2a96d05c38f4811c381.jpeg diff --git a/img/bookmarks/tim-hareks-website.c2a9556f23c2a1c3b879c39b.jpeg b/public/img/bookmarks/tim-hareks-website.c2a9556f23c2a1c3b879c39b.jpeg similarity index 100% rename from img/bookmarks/tim-hareks-website.c2a9556f23c2a1c3b879c39b.jpeg rename to public/img/bookmarks/tim-hareks-website.c2a9556f23c2a1c3b879c39b.jpeg diff --git a/img/bookmarks/timeline-of-the-far-future.402bc395c38d3ac39226c391.jpeg b/public/img/bookmarks/timeline-of-the-far-future.402bc395c38d3ac39226c391.jpeg similarity index 100% rename from img/bookmarks/timeline-of-the-far-future.402bc395c38d3ac39226c391.jpeg rename to public/img/bookmarks/timeline-of-the-far-future.402bc395c38d3ac39226c391.jpeg diff --git a/img/bookmarks/tobias-girstmairs-website.01c3bd17291a23c2b4c2ba00.jpeg b/public/img/bookmarks/tobias-girstmairs-website.01c3bd17291a23c2b4c2ba00.jpeg similarity index 100% rename from img/bookmarks/tobias-girstmairs-website.01c3bd17291a23c2b4c2ba00.jpeg rename to public/img/bookmarks/tobias-girstmairs-website.01c3bd17291a23c2b4c2ba00.jpeg diff --git a/img/bookmarks/tom-critchlows-digital-garden.1c253e363315c28ec2b22300.jpeg b/public/img/bookmarks/tom-critchlows-digital-garden.1c253e363315c28ec2b22300.jpeg similarity index 100% rename from img/bookmarks/tom-critchlows-digital-garden.1c253e363315c28ec2b22300.jpeg rename to public/img/bookmarks/tom-critchlows-digital-garden.1c253e363315c28ec2b22300.jpeg diff --git a/img/bookmarks/toot-that-browser-extension-for-firefox.c28a18c292c28bc2ab3ac290.jpeg b/public/img/bookmarks/toot-that-browser-extension-for-firefox.c28a18c292c28bc2ab3ac290.jpeg similarity index 100% rename from img/bookmarks/toot-that-browser-extension-for-firefox.c28a18c292c28bc2ab3ac290.jpeg rename to public/img/bookmarks/toot-that-browser-extension-for-firefox.c28a18c292c28bc2ab3ac290.jpeg diff --git a/img/bookmarks/town-of-zzt.6ec2ad77c28bc2bcc2a8c280.jpeg b/public/img/bookmarks/town-of-zzt.6ec2ad77c28bc2bcc2a8c280.jpeg similarity index 100% rename from img/bookmarks/town-of-zzt.6ec2ad77c28bc2bcc2a8c280.jpeg rename to public/img/bookmarks/town-of-zzt.6ec2ad77c28bc2bcc2a8c280.jpeg diff --git a/img/bookmarks/travellers-rest-on-steam.c3b1c280c3a52dc296c2a41c.jpeg b/public/img/bookmarks/travellers-rest-on-steam.c3b1c280c3a52dc296c2a41c.jpeg similarity index 100% rename from img/bookmarks/travellers-rest-on-steam.c3b1c280c3a52dc296c2a41c.jpeg rename to public/img/bookmarks/travellers-rest-on-steam.c3b1c280c3a52dc296c2a41c.jpeg diff --git a/img/bookmarks/travis-shears-personal-site.5b5820c3bac3b1c3a1c3ae36.jpeg b/public/img/bookmarks/travis-shears-personal-site.5b5820c3bac3b1c3a1c3ae36.jpeg similarity index 100% rename from img/bookmarks/travis-shears-personal-site.5b5820c3bac3b1c3a1c3ae36.jpeg rename to public/img/bookmarks/travis-shears-personal-site.5b5820c3bac3b1c3a1c3ae36.jpeg diff --git a/img/bookmarks/twitters-bot-problem-is-getting-weird-with-chatgpt.c28ac2abc381c3a113c3ac7d.jpeg b/public/img/bookmarks/twitters-bot-problem-is-getting-weird-with-chatgpt.c28ac2abc381c3a113c3ac7d.jpeg similarity index 100% rename from img/bookmarks/twitters-bot-problem-is-getting-weird-with-chatgpt.c28ac2abc381c3a113c3ac7d.jpeg rename to public/img/bookmarks/twitters-bot-problem-is-getting-weird-with-chatgpt.c28ac2abc381c3a113c3ac7d.jpeg diff --git a/img/bookmarks/unimported-find-and-fix-dangling-files-in-js-projects.c2aec3b1c28cc3803ec3b200.jpeg b/public/img/bookmarks/unimported-find-and-fix-dangling-files-in-js-projects.c2aec3b1c28cc3803ec3b200.jpeg similarity index 100% rename from img/bookmarks/unimported-find-and-fix-dangling-files-in-js-projects.c2aec3b1c28cc3803ec3b200.jpeg rename to public/img/bookmarks/unimported-find-and-fix-dangling-files-in-js-projects.c2aec3b1c28cc3803ec3b200.jpeg diff --git a/img/bookmarks/vercel-markup.43c28bc2b211c28cc2a24100.jpeg b/public/img/bookmarks/vercel-markup.43c28bc2b211c28cc2a24100.jpeg similarity index 100% rename from img/bookmarks/vercel-markup.43c28bc2b211c28cc2a24100.jpeg rename to public/img/bookmarks/vercel-markup.43c28bc2b211c28cc2a24100.jpeg diff --git a/img/bookmarks/vic-20-listings.c3bcc38347c289c289c38f00.jpeg b/public/img/bookmarks/vic-20-listings.c3bcc38347c289c289c38f00.jpeg similarity index 100% rename from img/bookmarks/vic-20-listings.c3bcc38347c289c289c38f00.jpeg rename to public/img/bookmarks/vic-20-listings.c3bcc38347c289c289c38f00.jpeg diff --git a/img/bookmarks/video-game-preservation.c2917202c3b957c28bc38d00.jpeg b/public/img/bookmarks/video-game-preservation.c2917202c3b957c28bc38d00.jpeg similarity index 100% rename from img/bookmarks/video-game-preservation.c2917202c3b957c28bc38d00.jpeg rename to public/img/bookmarks/video-game-preservation.c2917202c3b957c28bc38d00.jpeg diff --git a/img/bookmarks/vintage-basic-games.c29cc28ec3a5c2bd7dc2b864.jpeg b/public/img/bookmarks/vintage-basic-games.c29cc28ec3a5c2bd7dc2b864.jpeg similarity index 100% rename from img/bookmarks/vintage-basic-games.c29cc28ec3a5c2bd7dc2b864.jpeg rename to public/img/bookmarks/vintage-basic-games.c29cc28ec3a5c2bd7dc2b864.jpeg diff --git a/img/bookmarks/wasabi-the-parts.c2910d1a7e2ec380c29fc390.jpeg b/public/img/bookmarks/wasabi-the-parts.c2910d1a7e2ec380c29fc390.jpeg similarity index 100% rename from img/bookmarks/wasabi-the-parts.c2910d1a7e2ec380c29fc390.jpeg rename to public/img/bookmarks/wasabi-the-parts.c2910d1a7e2ec380c29fc390.jpeg diff --git a/img/bookmarks/webgbcam.61456ac28ec287c3b804c2a0.jpeg b/public/img/bookmarks/webgbcam.61456ac28ec287c3b804c2a0.jpeg similarity index 100% rename from img/bookmarks/webgbcam.61456ac28ec287c3b804c2a0.jpeg rename to public/img/bookmarks/webgbcam.61456ac28ec287c3b804c2a0.jpeg diff --git a/img/bookmarks/weird-web-pages.7317342964c2bbc299c3a600.jpeg b/public/img/bookmarks/weird-web-pages.7317342964c2bbc299c3a600.jpeg similarity index 100% rename from img/bookmarks/weird-web-pages.7317342964c2bbc299c3a600.jpeg rename to public/img/bookmarks/weird-web-pages.7317342964c2bbc299c3a600.jpeg diff --git a/img/bookmarks/what-is-the-most-minimal-uk-address-possible.01c38dc2acc3af66c28b7846.jpeg b/public/img/bookmarks/what-is-the-most-minimal-uk-address-possible.01c38dc2acc3af66c28b7846.jpeg similarity index 100% rename from img/bookmarks/what-is-the-most-minimal-uk-address-possible.01c38dc2acc3af66c28b7846.jpeg rename to public/img/bookmarks/what-is-the-most-minimal-uk-address-possible.01c38dc2acc3af66c28b7846.jpeg diff --git a/img/bookmarks/why-developers-never-use-state-machines.4e1a63c3a81dc28fc280037a.jpeg b/public/img/bookmarks/why-developers-never-use-state-machines.4e1a63c3a81dc28fc280037a.jpeg similarity index 100% rename from img/bookmarks/why-developers-never-use-state-machines.4e1a63c3a81dc28fc280037a.jpeg rename to public/img/bookmarks/why-developers-never-use-state-machines.4e1a63c3a81dc28fc280037a.jpeg diff --git a/img/bookmarks/why-is-oauth-still-hard-in-2023.c28e21c3bdc3b0c3a0550100.jpeg b/public/img/bookmarks/why-is-oauth-still-hard-in-2023.c28e21c3bdc3b0c3a0550100.jpeg similarity index 100% rename from img/bookmarks/why-is-oauth-still-hard-in-2023.c28e21c3bdc3b0c3a0550100.jpeg rename to public/img/bookmarks/why-is-oauth-still-hard-in-2023.c28e21c3bdc3b0c3a0550100.jpeg diff --git a/img/bookmarks/windows-nt-on-bull-estrella.543dc38e765bc2a71ac2b700.jpeg b/public/img/bookmarks/windows-nt-on-bull-estrella.543dc38e765bc2a71ac2b700.jpeg similarity index 100% rename from img/bookmarks/windows-nt-on-bull-estrella.543dc38e765bc2a71ac2b700.jpeg rename to public/img/bookmarks/windows-nt-on-bull-estrella.543dc38e765bc2a71ac2b700.jpeg diff --git a/img/bookmarks/worlds-apart-trade-wars-2002-game-server.c296c387c3985dc3b3c3b349.jpeg b/public/img/bookmarks/worlds-apart-trade-wars-2002-game-server.c296c387c3985dc3b3c3b349.jpeg similarity index 100% rename from img/bookmarks/worlds-apart-trade-wars-2002-game-server.c296c387c3985dc3b3c3b349.jpeg rename to public/img/bookmarks/worlds-apart-trade-wars-2002-game-server.c296c387c3985dc3b3c3b349.jpeg diff --git a/img/bookmarks/worlds-tallest-wooden-wind-turbine.5fc389c3bdc2ab6372c2865d.jpeg b/public/img/bookmarks/worlds-tallest-wooden-wind-turbine.5fc389c3bdc2ab6372c2865d.jpeg similarity index 100% rename from img/bookmarks/worlds-tallest-wooden-wind-turbine.5fc389c3bdc2ab6372c2865d.jpeg rename to public/img/bookmarks/worlds-tallest-wooden-wind-turbine.5fc389c3bdc2ab6372c2865d.jpeg diff --git a/img/bookmarks/writing-on-your-palm.36c3ad3e06c3a9c295c3a600.jpeg b/public/img/bookmarks/writing-on-your-palm.36c3ad3e06c3a9c295c3a600.jpeg similarity index 100% rename from img/bookmarks/writing-on-your-palm.36c3ad3e06c3a9c295c3a600.jpeg rename to public/img/bookmarks/writing-on-your-palm.36c3ad3e06c3a9c295c3a600.jpeg diff --git a/img/bookmarks/wyesoft-tradewars-2002-server.c3bcc2acc28861c2b319c2ae.jpeg b/public/img/bookmarks/wyesoft-tradewars-2002-server.c3bcc2acc28861c2b319c2ae.jpeg similarity index 100% rename from img/bookmarks/wyesoft-tradewars-2002-server.c3bcc2acc28861c2b319c2ae.jpeg rename to public/img/bookmarks/wyesoft-tradewars-2002-server.c3bcc2acc28861c2b319c2ae.jpeg diff --git a/img/bookmarks/x86-is-dead-long-live-x86.682b193725c2b7c2a9487800.jpeg b/public/img/bookmarks/x86-is-dead-long-live-x86.682b193725c2b7c2a9487800.jpeg similarity index 100% rename from img/bookmarks/x86-is-dead-long-live-x86.682b193725c2b7c2a9487800.jpeg rename to public/img/bookmarks/x86-is-dead-long-live-x86.682b193725c2b7c2a9487800.jpeg diff --git a/img/bookmarks/xe-christine-dodrill-blog.1a12c2926243334fc2952600.jpeg b/public/img/bookmarks/xe-christine-dodrill-blog.1a12c2926243334fc2952600.jpeg similarity index 100% rename from img/bookmarks/xe-christine-dodrill-blog.1a12c2926243334fc2952600.jpeg rename to public/img/bookmarks/xe-christine-dodrill-blog.1a12c2926243334fc2952600.jpeg diff --git a/img/bookmarks/xhtml-club.c3ab0d2738c384c290030b00.jpeg b/public/img/bookmarks/xhtml-club.c3ab0d2738c384c290030b00.jpeg similarity index 100% rename from img/bookmarks/xhtml-club.c3ab0d2738c384c290030b00.jpeg rename to public/img/bookmarks/xhtml-club.c3ab0d2738c384c290030b00.jpeg diff --git a/img/bookmarks/xml-is-the-future.c382c2b2c39a43c3bd5cc3a9.jpeg b/public/img/bookmarks/xml-is-the-future.c382c2b2c39a43c3bd5cc3a9.jpeg similarity index 100% rename from img/bookmarks/xml-is-the-future.c382c2b2c39a43c3bd5cc3a9.jpeg rename to public/img/bookmarks/xml-is-the-future.c382c2b2c39a43c3bd5cc3a9.jpeg diff --git a/img/bookmarks/xstate-docs.c2a97d3a7137c38f4d0ec3a4.jpeg b/public/img/bookmarks/xstate-docs.c2a97d3a7137c38f4d0ec3a4.jpeg similarity index 100% rename from img/bookmarks/xstate-docs.c2a97d3a7137c38f4d0ec3a4.jpeg rename to public/img/bookmarks/xstate-docs.c2a97d3a7137c38f4d0ec3a4.jpeg diff --git a/img/bookmarks/you-didnt-just-do-that-heroku.c29348c3b3c2a4c28f32c3af.jpeg b/public/img/bookmarks/you-didnt-just-do-that-heroku.c29348c3b3c2a4c28f32c3af.jpeg similarity index 100% rename from img/bookmarks/you-didnt-just-do-that-heroku.c29348c3b3c2a4c28f32c3af.jpeg rename to public/img/bookmarks/you-didnt-just-do-that-heroku.c29348c3b3c2a4c28f32c3af.jpeg diff --git a/img/bookmarks/yuri-vishnevskys-website.1b27c39b2bc38062c3a1c299.jpeg b/public/img/bookmarks/yuri-vishnevskys-website.1b27c39b2bc38062c3a1c299.jpeg similarity index 100% rename from img/bookmarks/yuri-vishnevskys-website.1b27c39b2bc38062c3a1c299.jpeg rename to public/img/bookmarks/yuri-vishnevskys-website.1b27c39b2bc38062c3a1c299.jpeg diff --git a/img/bookmarks/zeal-offline-documentation-viewer.c2af7f61c398595dc2807700.jpeg b/public/img/bookmarks/zeal-offline-documentation-viewer.c2af7f61c398595dc2807700.jpeg similarity index 100% rename from img/bookmarks/zeal-offline-documentation-viewer.c2af7f61c398595dc2807700.jpeg rename to public/img/bookmarks/zeal-offline-documentation-viewer.c2af7f61c398595dc2807700.jpeg diff --git "a/img/bookmarks/\343\200\220-s-i-n-e-w-a-v-e-\343\200\221.0ec292c2b0c3b00e30c2a74d.jpeg" "b/public/img/bookmarks/\343\200\220-s-i-n-e-w-a-v-e-\343\200\221.0ec292c2b0c3b00e30c2a74d.jpeg" similarity index 100% rename from "img/bookmarks/\343\200\220-s-i-n-e-w-a-v-e-\343\200\221.0ec292c2b0c3b00e30c2a74d.jpeg" rename to "public/img/bookmarks/\343\200\220-s-i-n-e-w-a-v-e-\343\200\221.0ec292c2b0c3b00e30c2a74d.jpeg" diff --git a/img/books/bill-turnbull-the-bad-beekeepers-club.jpg b/public/img/books/bill-turnbull-the-bad-beekeepers-club.jpg similarity index 100% rename from img/books/bill-turnbull-the-bad-beekeepers-club.jpg rename to public/img/books/bill-turnbull-the-bad-beekeepers-club.jpg diff --git a/img/books/chad-orzel-how-to-teach-relativity-to-your-dog.jpg b/public/img/books/chad-orzel-how-to-teach-relativity-to-your-dog.jpg similarity index 100% rename from img/books/chad-orzel-how-to-teach-relativity-to-your-dog.jpg rename to public/img/books/chad-orzel-how-to-teach-relativity-to-your-dog.jpg diff --git a/img/books/jessica-joelle-alexander-and-iben-dissing-sandahl-the-danish-way-of-parenting.jpg b/public/img/books/jessica-joelle-alexander-and-iben-dissing-sandahl-the-danish-way-of-parenting.jpg similarity index 100% rename from img/books/jessica-joelle-alexander-and-iben-dissing-sandahl-the-danish-way-of-parenting.jpg rename to public/img/books/jessica-joelle-alexander-and-iben-dissing-sandahl-the-danish-way-of-parenting.jpg diff --git a/img/books/michio-kaku-physics-of-the-impossible.jpg b/public/img/books/michio-kaku-physics-of-the-impossible.jpg similarity index 100% rename from img/books/michio-kaku-physics-of-the-impossible.jpg rename to public/img/books/michio-kaku-physics-of-the-impossible.jpg diff --git a/img/books/new-scientist-nothing-from-absolute-zero-to-cosmic-oblivion.jpg b/public/img/books/new-scientist-nothing-from-absolute-zero-to-cosmic-oblivion.jpg similarity index 100% rename from img/books/new-scientist-nothing-from-absolute-zero-to-cosmic-oblivion.jpg rename to public/img/books/new-scientist-nothing-from-absolute-zero-to-cosmic-oblivion.jpg diff --git a/img/books/ray-bradbury-the-martian-chronicles.jpg b/public/img/books/ray-bradbury-the-martian-chronicles.jpg similarity index 100% rename from img/books/ray-bradbury-the-martian-chronicles.jpg rename to public/img/books/ray-bradbury-the-martian-chronicles.jpg diff --git a/img/books/sean-carrol-the-particle-at-the-end-of-the-universe.jpg b/public/img/books/sean-carrol-the-particle-at-the-end-of-the-universe.jpg similarity index 100% rename from img/books/sean-carrol-the-particle-at-the-end-of-the-universe.jpg rename to public/img/books/sean-carrol-the-particle-at-the-end-of-the-universe.jpg diff --git a/img/bounce-in-qb64-1.png b/public/img/bounce-in-qb64-1.png similarity index 100% rename from img/bounce-in-qb64-1.png rename to public/img/bounce-in-qb64-1.png diff --git a/img/bounce-in-qb64-2.png b/public/img/bounce-in-qb64-2.png similarity index 100% rename from img/bounce-in-qb64-2.png rename to public/img/bounce-in-qb64-2.png diff --git a/img/bounce-in-qb64-3.png b/public/img/bounce-in-qb64-3.png similarity index 100% rename from img/bounce-in-qb64-3.png rename to public/img/bounce-in-qb64-3.png diff --git a/img/bounce-in-qb64-4.png b/public/img/bounce-in-qb64-4.png similarity index 100% rename from img/bounce-in-qb64-4.png rename to public/img/bounce-in-qb64-4.png diff --git a/img/build-an-incremental-web-game-with-vue-js-1.png b/public/img/build-an-incremental-web-game-with-vue-js-1.png similarity index 100% rename from img/build-an-incremental-web-game-with-vue-js-1.png rename to public/img/build-an-incremental-web-game-with-vue-js-1.png diff --git a/img/build-an-incremental-web-game-with-vue-js-2.png b/public/img/build-an-incremental-web-game-with-vue-js-2.png similarity index 100% rename from img/build-an-incremental-web-game-with-vue-js-2.png rename to public/img/build-an-incremental-web-game-with-vue-js-2.png diff --git a/img/build-an-incremental-web-game-with-vue-js-3.png b/public/img/build-an-incremental-web-game-with-vue-js-3.png similarity index 100% rename from img/build-an-incremental-web-game-with-vue-js-3.png rename to public/img/build-an-incremental-web-game-with-vue-js-3.png diff --git a/img/build-an-incremental-web-game-with-vue-js-p2-1.png b/public/img/build-an-incremental-web-game-with-vue-js-p2-1.png similarity index 100% rename from img/build-an-incremental-web-game-with-vue-js-p2-1.png rename to public/img/build-an-incremental-web-game-with-vue-js-p2-1.png diff --git a/img/build-an-incremental-web-game-with-vue-js-p2-2.png b/public/img/build-an-incremental-web-game-with-vue-js-p2-2.png similarity index 100% rename from img/build-an-incremental-web-game-with-vue-js-p2-2.png rename to public/img/build-an-incremental-web-game-with-vue-js-p2-2.png diff --git a/img/building-your-own-social-media-feed-1.png b/public/img/building-your-own-social-media-feed-1.png similarity index 100% rename from img/building-your-own-social-media-feed-1.png rename to public/img/building-your-own-social-media-feed-1.png diff --git a/img/camera-3-24.png b/public/img/camera-3-24.png similarity index 100% rename from img/camera-3-24.png rename to public/img/camera-3-24.png diff --git a/img/carrot.png b/public/img/carrot.png similarity index 100% rename from img/carrot.png rename to public/img/carrot.png diff --git a/img/chickenstreet-iampixeltier-mainframe-1.png b/public/img/chickenstreet-iampixeltier-mainframe-1.png similarity index 100% rename from img/chickenstreet-iampixeltier-mainframe-1.png rename to public/img/chickenstreet-iampixeltier-mainframe-1.png diff --git a/img/chickenstreet-iampixeltier-mainframe.png b/public/img/chickenstreet-iampixeltier-mainframe.png similarity index 100% rename from img/chickenstreet-iampixeltier-mainframe.png rename to public/img/chickenstreet-iampixeltier-mainframe.png diff --git a/img/composited-mainframe-computers.png b/public/img/composited-mainframe-computers.png similarity index 100% rename from img/composited-mainframe-computers.png rename to public/img/composited-mainframe-computers.png diff --git a/img/creating-a-city-sim-with-golang-1.png b/public/img/creating-a-city-sim-with-golang-1.png similarity index 100% rename from img/creating-a-city-sim-with-golang-1.png rename to public/img/creating-a-city-sim-with-golang-1.png diff --git a/img/creating-a-city-sim-with-golang-2.png b/public/img/creating-a-city-sim-with-golang-2.png similarity index 100% rename from img/creating-a-city-sim-with-golang-2.png rename to public/img/creating-a-city-sim-with-golang-2.png diff --git a/img/creating-a-city-sim-with-golang-3.png b/public/img/creating-a-city-sim-with-golang-3.png similarity index 100% rename from img/creating-a-city-sim-with-golang-3.png rename to public/img/creating-a-city-sim-with-golang-3.png diff --git a/img/creating-a-city-sim-with-golang-4.png b/public/img/creating-a-city-sim-with-golang-4.png similarity index 100% rename from img/creating-a-city-sim-with-golang-4.png rename to public/img/creating-a-city-sim-with-golang-4.png diff --git a/img/creating-a-city-sim-with-golang-5.png b/public/img/creating-a-city-sim-with-golang-5.png similarity index 100% rename from img/creating-a-city-sim-with-golang-5.png rename to public/img/creating-a-city-sim-with-golang-5.png diff --git a/img/creating-a-city-sim-with-golang-p4-animation.gif b/public/img/creating-a-city-sim-with-golang-p4-animation.gif similarity index 100% rename from img/creating-a-city-sim-with-golang-p4-animation.gif rename to public/img/creating-a-city-sim-with-golang-p4-animation.gif diff --git a/img/defrag-like-its-1992-1.png b/public/img/defrag-like-its-1992-1.png similarity index 100% rename from img/defrag-like-its-1992-1.png rename to public/img/defrag-like-its-1992-1.png diff --git a/img/defrag-like-its-1992-2.png b/public/img/defrag-like-its-1992-2.png similarity index 100% rename from img/defrag-like-its-1992-2.png rename to public/img/defrag-like-its-1992-2.png diff --git a/img/defrag-like-its-1992-3.png b/public/img/defrag-like-its-1992-3.png similarity index 100% rename from img/defrag-like-its-1992-3.png rename to public/img/defrag-like-its-1992-3.png diff --git a/img/dependency-resolving-algorithm-1.png b/public/img/dependency-resolving-algorithm-1.png similarity index 100% rename from img/dependency-resolving-algorithm-1.png rename to public/img/dependency-resolving-algorithm-1.png diff --git a/img/dependency-resolving-algorithm-2.png b/public/img/dependency-resolving-algorithm-2.png similarity index 100% rename from img/dependency-resolving-algorithm-2.png rename to public/img/dependency-resolving-algorithm-2.png diff --git a/img/dependency-resolving-algorithm-3.png b/public/img/dependency-resolving-algorithm-3.png similarity index 100% rename from img/dependency-resolving-algorithm-3.png rename to public/img/dependency-resolving-algorithm-3.png diff --git a/img/eleventyjs-font-subsetting-plugin-1.png b/public/img/eleventyjs-font-subsetting-plugin-1.png similarity index 100% rename from img/eleventyjs-font-subsetting-plugin-1.png rename to public/img/eleventyjs-font-subsetting-plugin-1.png diff --git a/img/emoji.png b/public/img/emoji.png similarity index 100% rename from img/emoji.png rename to public/img/emoji.png diff --git a/img/escapists.jpg b/public/img/escapists.jpg similarity index 100% rename from img/escapists.jpg rename to public/img/escapists.jpg diff --git a/img/fail2ban-regex.png b/public/img/fail2ban-regex.png similarity index 100% rename from img/fail2ban-regex.png rename to public/img/fail2ban-regex.png diff --git a/img/featured-images/a-review-of-rimworld-a16.png b/public/img/featured-images/a-review-of-rimworld-a16.png similarity index 100% rename from img/featured-images/a-review-of-rimworld-a16.png rename to public/img/featured-images/a-review-of-rimworld-a16.png diff --git a/img/featured-images/a-review-of-the-godville-game.png b/public/img/featured-images/a-review-of-the-godville-game.png similarity index 100% rename from img/featured-images/a-review-of-the-godville-game.png rename to public/img/featured-images/a-review-of-the-godville-game.png diff --git a/img/featured-images/basic-space-mines-port-to-golang-featured-img.png b/public/img/featured-images/basic-space-mines-port-to-golang-featured-img.png similarity index 100% rename from img/featured-images/basic-space-mines-port-to-golang-featured-img.png rename to public/img/featured-images/basic-space-mines-port-to-golang-featured-img.png diff --git a/img/featured-images/bounce-in-qb64.png b/public/img/featured-images/bounce-in-qb64.png similarity index 100% rename from img/featured-images/bounce-in-qb64.png rename to public/img/featured-images/bounce-in-qb64.png diff --git a/img/featured-images/build-an-incremental-web-game-with-vue-js.png b/public/img/featured-images/build-an-incremental-web-game-with-vue-js.png similarity index 100% rename from img/featured-images/build-an-incremental-web-game-with-vue-js.png rename to public/img/featured-images/build-an-incremental-web-game-with-vue-js.png diff --git a/img/featured-images/building-tuppence-the-pico-php-framework.png b/public/img/featured-images/building-tuppence-the-pico-php-framework.png similarity index 100% rename from img/featured-images/building-tuppence-the-pico-php-framework.png rename to public/img/featured-images/building-tuppence-the-pico-php-framework.png diff --git a/img/featured-images/building-your-own-social-media-feed.png b/public/img/featured-images/building-your-own-social-media-feed.png similarity index 100% rename from img/featured-images/building-your-own-social-media-feed.png rename to public/img/featured-images/building-your-own-social-media-feed.png diff --git a/img/featured-images/creating-a-city-sim-with-golang-p1.png b/public/img/featured-images/creating-a-city-sim-with-golang-p1.png similarity index 100% rename from img/featured-images/creating-a-city-sim-with-golang-p1.png rename to public/img/featured-images/creating-a-city-sim-with-golang-p1.png diff --git a/img/featured-images/creating-a-city-sim-with-golang-p2.png b/public/img/featured-images/creating-a-city-sim-with-golang-p2.png similarity index 100% rename from img/featured-images/creating-a-city-sim-with-golang-p2.png rename to public/img/featured-images/creating-a-city-sim-with-golang-p2.png diff --git a/img/featured-images/dependency-resolving-algorithm.png b/public/img/featured-images/dependency-resolving-algorithm.png similarity index 100% rename from img/featured-images/dependency-resolving-algorithm.png rename to public/img/featured-images/dependency-resolving-algorithm.png diff --git a/img/featured-images/free-open-source-games.png b/public/img/featured-images/free-open-source-games.png similarity index 100% rename from img/featured-images/free-open-source-games.png rename to public/img/featured-images/free-open-source-games.png diff --git a/img/featured-images/installing-turbo-c-on-dosbox.png b/public/img/featured-images/installing-turbo-c-on-dosbox.png similarity index 100% rename from img/featured-images/installing-turbo-c-on-dosbox.png rename to public/img/featured-images/installing-turbo-c-on-dosbox.png diff --git a/img/featured-images/introducing-the-qb64-programming-language.png b/public/img/featured-images/introducing-the-qb64-programming-language.png similarity index 100% rename from img/featured-images/introducing-the-qb64-programming-language.png rename to public/img/featured-images/introducing-the-qb64-programming-language.png diff --git a/img/featured-images/kareltima-iii-the-self-beating-machine.png b/public/img/featured-images/kareltima-iii-the-self-beating-machine.png similarity index 100% rename from img/featured-images/kareltima-iii-the-self-beating-machine.png rename to public/img/featured-images/kareltima-iii-the-self-beating-machine.png diff --git a/img/featured-images/mission-mainframe.png b/public/img/featured-images/mission-mainframe.png similarity index 100% rename from img/featured-images/mission-mainframe.png rename to public/img/featured-images/mission-mainframe.png diff --git a/img/featured-images/porting-basic-bounce-game-to-go.png b/public/img/featured-images/porting-basic-bounce-game-to-go.png similarity index 100% rename from img/featured-images/porting-basic-bounce-game-to-go.png rename to public/img/featured-images/porting-basic-bounce-game-to-go.png diff --git a/img/featured-images/revisiting-google-page-speed-tool.png b/public/img/featured-images/revisiting-google-page-speed-tool.png similarity index 100% rename from img/featured-images/revisiting-google-page-speed-tool.png rename to public/img/featured-images/revisiting-google-page-speed-tool.png diff --git a/img/featured-images/scaleway-gogs.png b/public/img/featured-images/scaleway-gogs.png similarity index 100% rename from img/featured-images/scaleway-gogs.png rename to public/img/featured-images/scaleway-gogs.png diff --git a/img/featured-images/the-escapists.png b/public/img/featured-images/the-escapists.png similarity index 100% rename from img/featured-images/the-escapists.png rename to public/img/featured-images/the-escapists.png diff --git a/img/featured-images/thoughts-on-goaccess.png b/public/img/featured-images/thoughts-on-goaccess.png similarity index 100% rename from img/featured-images/thoughts-on-goaccess.png rename to public/img/featured-images/thoughts-on-goaccess.png diff --git a/img/featured-images/ufo-enemy-unknown.png b/public/img/featured-images/ufo-enemy-unknown.png similarity index 100% rename from img/featured-images/ufo-enemy-unknown.png rename to public/img/featured-images/ufo-enemy-unknown.png diff --git a/img/featured-images/zero-config-vue-development-with-parcel-js.png b/public/img/featured-images/zero-config-vue-development-with-parcel-js.png similarity index 100% rename from img/featured-images/zero-config-vue-development-with-parcel-js.png rename to public/img/featured-images/zero-config-vue-development-with-parcel-js.png diff --git a/img/font-subsetting-with-eleventyjs-1.png b/public/img/font-subsetting-with-eleventyjs-1.png similarity index 100% rename from img/font-subsetting-with-eleventyjs-1.png rename to public/img/font-subsetting-with-eleventyjs-1.png diff --git a/img/font-subsetting-with-eleventyjs-2.png b/public/img/font-subsetting-with-eleventyjs-2.png similarity index 100% rename from img/font-subsetting-with-eleventyjs-2.png rename to public/img/font-subsetting-with-eleventyjs-2.png diff --git a/img/free-open-source-games-automanic.jpg b/public/img/free-open-source-games-automanic.jpg similarity index 100% rename from img/free-open-source-games-automanic.jpg rename to public/img/free-open-source-games-automanic.jpg diff --git a/img/free-open-source-games-cytadela.jpg b/public/img/free-open-source-games-cytadela.jpg similarity index 100% rename from img/free-open-source-games-cytadela.jpg rename to public/img/free-open-source-games-cytadela.jpg diff --git a/img/free-open-source-games-eduke32.jpg b/public/img/free-open-source-games-eduke32.jpg similarity index 100% rename from img/free-open-source-games-eduke32.jpg rename to public/img/free-open-source-games-eduke32.jpg diff --git a/img/free-open-source-games-irrlicht.jpg b/public/img/free-open-source-games-irrlicht.jpg similarity index 100% rename from img/free-open-source-games-irrlicht.jpg rename to public/img/free-open-source-games-irrlicht.jpg diff --git a/img/free-open-source-games-scorched3d.jpg b/public/img/free-open-source-games-scorched3d.jpg similarity index 100% rename from img/free-open-source-games-scorched3d.jpg rename to public/img/free-open-source-games-scorched3d.jpg diff --git a/img/free-open-source-games-smclone.jpg b/public/img/free-open-source-games-smclone.jpg similarity index 100% rename from img/free-open-source-games-smclone.jpg rename to public/img/free-open-source-games-smclone.jpg diff --git a/img/free-open-source-games-ufo2000.jpg b/public/img/free-open-source-games-ufo2000.jpg similarity index 100% rename from img/free-open-source-games-ufo2000.jpg rename to public/img/free-open-source-games-ufo2000.jpg diff --git a/img/freezetime-featured-img.png b/public/img/freezetime-featured-img.png similarity index 100% rename from img/freezetime-featured-img.png rename to public/img/freezetime-featured-img.png diff --git a/img/freezetime-gameplay-img-1.png b/public/img/freezetime-gameplay-img-1.png similarity index 100% rename from img/freezetime-gameplay-img-1.png rename to public/img/freezetime-gameplay-img-1.png diff --git a/img/github-contributions-example.png b/public/img/github-contributions-example.png similarity index 100% rename from img/github-contributions-example.png rename to public/img/github-contributions-example.png diff --git a/img/github.png b/public/img/github.png similarity index 100% rename from img/github.png rename to public/img/github.png diff --git a/img/go-rogue-example-gui.png b/public/img/go-rogue-example-gui.png similarity index 100% rename from img/go-rogue-example-gui.png rename to public/img/go-rogue-example-gui.png diff --git a/img/google-docs-scam-1.png b/public/img/google-docs-scam-1.png similarity index 100% rename from img/google-docs-scam-1.png rename to public/img/google-docs-scam-1.png diff --git a/img/google-mobile-website-speed-testing-tool-1.png b/public/img/google-mobile-website-speed-testing-tool-1.png similarity index 100% rename from img/google-mobile-website-speed-testing-tool-1.png rename to public/img/google-mobile-website-speed-testing-tool-1.png diff --git a/img/google-mobile-website-speed-testing-tool-2.png b/public/img/google-mobile-website-speed-testing-tool-2.png similarity index 100% rename from img/google-mobile-website-speed-testing-tool-2.png rename to public/img/google-mobile-website-speed-testing-tool-2.png diff --git a/img/google-mobile-website-speed-testing-tool-3.png b/public/img/google-mobile-website-speed-testing-tool-3.png similarity index 100% rename from img/google-mobile-website-speed-testing-tool-3.png rename to public/img/google-mobile-website-speed-testing-tool-3.png diff --git a/img/google-mobile-website-speed-testing-tool-4.png b/public/img/google-mobile-website-speed-testing-tool-4.png similarity index 100% rename from img/google-mobile-website-speed-testing-tool-4.png rename to public/img/google-mobile-website-speed-testing-tool-4.png diff --git a/img/google-mobile-website-speed-testing-tool-featured-img.png b/public/img/google-mobile-website-speed-testing-tool-featured-img.png similarity index 100% rename from img/google-mobile-website-speed-testing-tool-featured-img.png rename to public/img/google-mobile-website-speed-testing-tool-featured-img.png diff --git a/img/gping-application-error.png b/public/img/gping-application-error.png similarity index 100% rename from img/gping-application-error.png rename to public/img/gping-application-error.png diff --git a/img/gping-graphical-ping-for-windows.png b/public/img/gping-graphical-ping-for-windows.png similarity index 100% rename from img/gping-graphical-ping-for-windows.png rename to public/img/gping-graphical-ping-for-windows.png diff --git a/img/growth.png b/public/img/growth.png similarity index 100% rename from img/growth.png rename to public/img/growth.png diff --git a/img/happy-fiftyth-birthday-basic-1.png b/public/img/happy-fiftyth-birthday-basic-1.png similarity index 100% rename from img/happy-fiftyth-birthday-basic-1.png rename to public/img/happy-fiftyth-birthday-basic-1.png diff --git a/img/happy-fiftyth-birthday-basic-2.png b/public/img/happy-fiftyth-birthday-basic-2.png similarity index 100% rename from img/happy-fiftyth-birthday-basic-2.png rename to public/img/happy-fiftyth-birthday-basic-2.png diff --git a/img/happy-fiftyth-birthday-basic-3.png b/public/img/happy-fiftyth-birthday-basic-3.png similarity index 100% rename from img/happy-fiftyth-birthday-basic-3.png rename to public/img/happy-fiftyth-birthday-basic-3.png diff --git a/img/happy-fiftyth-birthday-basic-4.png b/public/img/happy-fiftyth-birthday-basic-4.png similarity index 100% rename from img/happy-fiftyth-birthday-basic-4.png rename to public/img/happy-fiftyth-birthday-basic-4.png diff --git a/img/happy-fiftyth-birthday-basic-featured-img.png b/public/img/happy-fiftyth-birthday-basic-featured-img.png similarity index 100% rename from img/happy-fiftyth-birthday-basic-featured-img.png rename to public/img/happy-fiftyth-birthday-basic-featured-img.png diff --git a/img/headshot.jpg b/public/img/headshot.jpg similarity index 100% rename from img/headshot.jpg rename to public/img/headshot.jpg diff --git a/img/installing-turbo-c-on-dosbox-1.png b/public/img/installing-turbo-c-on-dosbox-1.png similarity index 100% rename from img/installing-turbo-c-on-dosbox-1.png rename to public/img/installing-turbo-c-on-dosbox-1.png diff --git a/img/installing-turbo-c-on-dosbox-2.png b/public/img/installing-turbo-c-on-dosbox-2.png similarity index 100% rename from img/installing-turbo-c-on-dosbox-2.png rename to public/img/installing-turbo-c-on-dosbox-2.png diff --git a/img/installing-turbo-c-on-dosbox-3.png b/public/img/installing-turbo-c-on-dosbox-3.png similarity index 100% rename from img/installing-turbo-c-on-dosbox-3.png rename to public/img/installing-turbo-c-on-dosbox-3.png diff --git a/img/installing-turbo-c-on-dosbox-4.png b/public/img/installing-turbo-c-on-dosbox-4.png similarity index 100% rename from img/installing-turbo-c-on-dosbox-4.png rename to public/img/installing-turbo-c-on-dosbox-4.png diff --git a/img/installing-turbo-c-on-dosbox-5.png b/public/img/installing-turbo-c-on-dosbox-5.png similarity index 100% rename from img/installing-turbo-c-on-dosbox-5.png rename to public/img/installing-turbo-c-on-dosbox-5.png diff --git a/img/installing-turbo-c-on-dosbox-6.png b/public/img/installing-turbo-c-on-dosbox-6.png similarity index 100% rename from img/installing-turbo-c-on-dosbox-6.png rename to public/img/installing-turbo-c-on-dosbox-6.png diff --git a/img/interroban-gg-screenshot.png b/public/img/interroban-gg-screenshot.png similarity index 100% rename from img/interroban-gg-screenshot.png rename to public/img/interroban-gg-screenshot.png diff --git a/img/introducing-the-qb64-programming-language-1.png b/public/img/introducing-the-qb64-programming-language-1.png similarity index 100% rename from img/introducing-the-qb64-programming-language-1.png rename to public/img/introducing-the-qb64-programming-language-1.png diff --git a/img/introducing-the-qb64-programming-language-2.png b/public/img/introducing-the-qb64-programming-language-2.png similarity index 100% rename from img/introducing-the-qb64-programming-language-2.png rename to public/img/introducing-the-qb64-programming-language-2.png diff --git a/img/introducing-the-qb64-programming-language-3.png b/public/img/introducing-the-qb64-programming-language-3.png similarity index 100% rename from img/introducing-the-qb64-programming-language-3.png rename to public/img/introducing-the-qb64-programming-language-3.png diff --git a/img/introducing-the-qb64-programming-language-4.png b/public/img/introducing-the-qb64-programming-language-4.png similarity index 100% rename from img/introducing-the-qb64-programming-language-4.png rename to public/img/introducing-the-qb64-programming-language-4.png diff --git a/img/introducing-the-qb64-programming-language-5.png b/public/img/introducing-the-qb64-programming-language-5.png similarity index 100% rename from img/introducing-the-qb64-programming-language-5.png rename to public/img/introducing-the-qb64-programming-language-5.png diff --git a/img/javascript-pixel-paint-10.png b/public/img/javascript-pixel-paint-10.png similarity index 100% rename from img/javascript-pixel-paint-10.png rename to public/img/javascript-pixel-paint-10.png diff --git a/img/javascript-pixel-paint-11.png b/public/img/javascript-pixel-paint-11.png similarity index 100% rename from img/javascript-pixel-paint-11.png rename to public/img/javascript-pixel-paint-11.png diff --git a/img/javascript-pixel-paint-12.png b/public/img/javascript-pixel-paint-12.png similarity index 100% rename from img/javascript-pixel-paint-12.png rename to public/img/javascript-pixel-paint-12.png diff --git a/img/javascript-pixel-paint-2.png b/public/img/javascript-pixel-paint-2.png similarity index 100% rename from img/javascript-pixel-paint-2.png rename to public/img/javascript-pixel-paint-2.png diff --git a/img/javascript-pixel-paint-3.png b/public/img/javascript-pixel-paint-3.png similarity index 100% rename from img/javascript-pixel-paint-3.png rename to public/img/javascript-pixel-paint-3.png diff --git a/img/javascript-pixel-paint-4.png b/public/img/javascript-pixel-paint-4.png similarity index 100% rename from img/javascript-pixel-paint-4.png rename to public/img/javascript-pixel-paint-4.png diff --git a/img/javascript-pixel-paint-5.png b/public/img/javascript-pixel-paint-5.png similarity index 100% rename from img/javascript-pixel-paint-5.png rename to public/img/javascript-pixel-paint-5.png diff --git a/img/javascript-pixel-paint-6.png b/public/img/javascript-pixel-paint-6.png similarity index 100% rename from img/javascript-pixel-paint-6.png rename to public/img/javascript-pixel-paint-6.png diff --git a/img/javascript-pixel-paint-7.png b/public/img/javascript-pixel-paint-7.png similarity index 100% rename from img/javascript-pixel-paint-7.png rename to public/img/javascript-pixel-paint-7.png diff --git a/img/javascript-pixel-paint-8.png b/public/img/javascript-pixel-paint-8.png similarity index 100% rename from img/javascript-pixel-paint-8.png rename to public/img/javascript-pixel-paint-8.png diff --git a/img/javascript-pixel-paint-9.png b/public/img/javascript-pixel-paint-9.png similarity index 100% rename from img/javascript-pixel-paint-9.png rename to public/img/javascript-pixel-paint-9.png diff --git a/img/javascript-pixel-paint.png b/public/img/javascript-pixel-paint.png similarity index 100% rename from img/javascript-pixel-paint.png rename to public/img/javascript-pixel-paint.png diff --git a/img/jzz-game-1.png b/public/img/jzz-game-1.png similarity index 100% rename from img/jzz-game-1.png rename to public/img/jzz-game-1.png diff --git a/img/jzz-game-2.png b/public/img/jzz-game-2.png similarity index 100% rename from img/jzz-game-2.png rename to public/img/jzz-game-2.png diff --git a/img/jzz-twitter.png b/public/img/jzz-twitter.png similarity index 100% rename from img/jzz-twitter.png rename to public/img/jzz-twitter.png diff --git a/img/kareltima-iii-the-self-beating-machine-1.png b/public/img/kareltima-iii-the-self-beating-machine-1.png similarity index 100% rename from img/kareltima-iii-the-self-beating-machine-1.png rename to public/img/kareltima-iii-the-self-beating-machine-1.png diff --git a/img/kareltima-iii-the-self-beating-machine-2.png b/public/img/kareltima-iii-the-self-beating-machine-2.png similarity index 100% rename from img/kareltima-iii-the-self-beating-machine-2.png rename to public/img/kareltima-iii-the-self-beating-machine-2.png diff --git a/img/laravel-io-1.png b/public/img/laravel-io-1.png similarity index 100% rename from img/laravel-io-1.png rename to public/img/laravel-io-1.png diff --git a/img/lessc-version.png b/public/img/lessc-version.png similarity index 100% rename from img/lessc-version.png rename to public/img/lessc-version.png diff --git a/img/lessc-where.png b/public/img/lessc-where.png similarity index 100% rename from img/lessc-where.png rename to public/img/lessc-where.png diff --git a/img/logo.png b/public/img/logo.png similarity index 100% rename from img/logo.png rename to public/img/logo.png diff --git a/img/marking-external-links-wikipedia.png b/public/img/marking-external-links-wikipedia.png similarity index 100% rename from img/marking-external-links-wikipedia.png rename to public/img/marking-external-links-wikipedia.png diff --git a/img/mission-mainframe-1.png b/public/img/mission-mainframe-1.png similarity index 100% rename from img/mission-mainframe-1.png rename to public/img/mission-mainframe-1.png diff --git a/img/mission-mainframe-2.png b/public/img/mission-mainframe-2.png similarity index 100% rename from img/mission-mainframe-2.png rename to public/img/mission-mainframe-2.png diff --git a/img/nested-queries-in-laravel-eloquent.png b/public/img/nested-queries-in-laravel-eloquent.png similarity index 100% rename from img/nested-queries-in-laravel-eloquent.png rename to public/img/nested-queries-in-laravel-eloquent.png diff --git a/img/open-graph.png b/public/img/open-graph.png similarity index 100% rename from img/open-graph.png rename to public/img/open-graph.png diff --git a/img/overlay.png b/public/img/overlay.png similarity index 100% rename from img/overlay.png rename to public/img/overlay.png diff --git a/img/photogabble_page_mockups.png b/public/img/photogabble_page_mockups.png similarity index 100% rename from img/photogabble_page_mockups.png rename to public/img/photogabble_page_mockups.png diff --git a/img/php-fpm-cluster-image-preview.gif b/public/img/php-fpm-cluster-image-preview.gif similarity index 100% rename from img/php-fpm-cluster-image-preview.gif rename to public/img/php-fpm-cluster-image-preview.gif diff --git a/img/php-fpm-cluster-image.gif b/public/img/php-fpm-cluster-image.gif similarity index 100% rename from img/php-fpm-cluster-image.gif rename to public/img/php-fpm-cluster-image.gif diff --git a/img/php-multiversion-with-homebrew-1.png b/public/img/php-multiversion-with-homebrew-1.png similarity index 100% rename from img/php-multiversion-with-homebrew-1.png rename to public/img/php-multiversion-with-homebrew-1.png diff --git a/img/pixel-paint-stage-1-conclusion.png b/public/img/pixel-paint-stage-1-conclusion.png similarity index 100% rename from img/pixel-paint-stage-1-conclusion.png rename to public/img/pixel-paint-stage-1-conclusion.png diff --git a/img/pixel-people-showcase.png b/public/img/pixel-people-showcase.png similarity index 100% rename from img/pixel-people-showcase.png rename to public/img/pixel-people-showcase.png diff --git a/img/placeholder.jpg b/public/img/placeholder.jpg similarity index 100% rename from img/placeholder.jpg rename to public/img/placeholder.jpg diff --git a/img/psd/logo.png b/public/img/psd/logo.png similarity index 100% rename from img/psd/logo.png rename to public/img/psd/logo.png diff --git a/img/ramen-roguelike-tutorial.png b/public/img/ramen-roguelike-tutorial.png similarity index 100% rename from img/ramen-roguelike-tutorial.png rename to public/img/ramen-roguelike-tutorial.png diff --git a/img/really-useful-free-stock-photography-archives-pexels.png b/public/img/really-useful-free-stock-photography-archives-pexels.png similarity index 100% rename from img/really-useful-free-stock-photography-archives-pexels.png rename to public/img/really-useful-free-stock-photography-archives-pexels.png diff --git a/img/really-useful-free-stock-photography-archives-stockpic.png b/public/img/really-useful-free-stock-photography-archives-stockpic.png similarity index 100% rename from img/really-useful-free-stock-photography-archives-stockpic.png rename to public/img/really-useful-free-stock-photography-archives-stockpic.png diff --git a/img/really-useful-free-stock-photography-archives-unsplash.png b/public/img/really-useful-free-stock-photography-archives-unsplash.png similarity index 100% rename from img/really-useful-free-stock-photography-archives-unsplash.png rename to public/img/really-useful-free-stock-photography-archives-unsplash.png diff --git a/img/revisiting-google-page-speed-tool-1.png b/public/img/revisiting-google-page-speed-tool-1.png similarity index 100% rename from img/revisiting-google-page-speed-tool-1.png rename to public/img/revisiting-google-page-speed-tool-1.png diff --git a/img/revisiting-google-page-speed-tool-2.png b/public/img/revisiting-google-page-speed-tool-2.png similarity index 100% rename from img/revisiting-google-page-speed-tool-2.png rename to public/img/revisiting-google-page-speed-tool-2.png diff --git a/img/revisiting-google-page-speed-tool-3.png b/public/img/revisiting-google-page-speed-tool-3.png similarity index 100% rename from img/revisiting-google-page-speed-tool-3.png rename to public/img/revisiting-google-page-speed-tool-3.png diff --git a/img/revisiting-google-page-speed-tool-4.png b/public/img/revisiting-google-page-speed-tool-4.png similarity index 100% rename from img/revisiting-google-page-speed-tool-4.png rename to public/img/revisiting-google-page-speed-tool-4.png diff --git a/img/revisiting-google-page-speed-tool-5.png b/public/img/revisiting-google-page-speed-tool-5.png similarity index 100% rename from img/revisiting-google-page-speed-tool-5.png rename to public/img/revisiting-google-page-speed-tool-5.png diff --git a/img/revisiting-google-page-speed-tool-6.png b/public/img/revisiting-google-page-speed-tool-6.png similarity index 100% rename from img/revisiting-google-page-speed-tool-6.png rename to public/img/revisiting-google-page-speed-tool-6.png diff --git a/img/romvlvs-screenshot.png b/public/img/romvlvs-screenshot.png similarity index 100% rename from img/romvlvs-screenshot.png rename to public/img/romvlvs-screenshot.png diff --git a/img/rubber-duck-programming.png b/public/img/rubber-duck-programming.png similarity index 100% rename from img/rubber-duck-programming.png rename to public/img/rubber-duck-programming.png diff --git a/img/space-mines-april-devlog-001.jpg b/public/img/space-mines-april-devlog-001.jpg similarity index 100% rename from img/space-mines-april-devlog-001.jpg rename to public/img/space-mines-april-devlog-001.jpg diff --git a/img/space-mines-design-language-001.png b/public/img/space-mines-design-language-001.png similarity index 100% rename from img/space-mines-design-language-001.png rename to public/img/space-mines-design-language-001.png diff --git a/img/space-mines-design-language-002.jpg b/public/img/space-mines-design-language-002.jpg similarity index 100% rename from img/space-mines-design-language-002.jpg rename to public/img/space-mines-design-language-002.jpg diff --git a/img/stardust.png b/public/img/stardust.png similarity index 100% rename from img/stardust.png rename to public/img/stardust.png diff --git a/img/stardust_blue.png b/public/img/stardust_blue.png similarity index 100% rename from img/stardust_blue.png rename to public/img/stardust_blue.png diff --git a/img/static-site-search-providers-1.png b/public/img/static-site-search-providers-1.png similarity index 100% rename from img/static-site-search-providers-1.png rename to public/img/static-site-search-providers-1.png diff --git a/img/static-site-search-providers-2.png b/public/img/static-site-search-providers-2.png similarity index 100% rename from img/static-site-search-providers-2.png rename to public/img/static-site-search-providers-2.png diff --git a/img/static-site-search-providers-3.png b/public/img/static-site-search-providers-3.png similarity index 100% rename from img/static-site-search-providers-3.png rename to public/img/static-site-search-providers-3.png diff --git a/img/thoughts-on-goaccess-1.png b/public/img/thoughts-on-goaccess-1.png similarity index 100% rename from img/thoughts-on-goaccess-1.png rename to public/img/thoughts-on-goaccess-1.png diff --git a/img/thoughts-on-goaccess-2.png b/public/img/thoughts-on-goaccess-2.png similarity index 100% rename from img/thoughts-on-goaccess-2.png rename to public/img/thoughts-on-goaccess-2.png diff --git a/img/thoughts-on-goaccess-3.png b/public/img/thoughts-on-goaccess-3.png similarity index 100% rename from img/thoughts-on-goaccess-3.png rename to public/img/thoughts-on-goaccess-3.png diff --git a/img/thoughts-on-goaccess-4.png b/public/img/thoughts-on-goaccess-4.png similarity index 100% rename from img/thoughts-on-goaccess-4.png rename to public/img/thoughts-on-goaccess-4.png diff --git a/img/three-informative-pagespeed-testing-tools-featured-img.png b/public/img/three-informative-pagespeed-testing-tools-featured-img.png similarity index 100% rename from img/three-informative-pagespeed-testing-tools-featured-img.png rename to public/img/three-informative-pagespeed-testing-tools-featured-img.png diff --git a/img/ts-city-simulator-spritesheet-editor.png b/public/img/ts-city-simulator-spritesheet-editor.png similarity index 100% rename from img/ts-city-simulator-spritesheet-editor.png rename to public/img/ts-city-simulator-spritesheet-editor.png diff --git a/img/typescript-roguelike-game.png b/public/img/typescript-roguelike-game.png similarity index 100% rename from img/typescript-roguelike-game.png rename to public/img/typescript-roguelike-game.png diff --git a/img/ufo-enemy-unknown-1.png b/public/img/ufo-enemy-unknown-1.png similarity index 100% rename from img/ufo-enemy-unknown-1.png rename to public/img/ufo-enemy-unknown-1.png diff --git a/img/ufo-enemy-unknown-2.png b/public/img/ufo-enemy-unknown-2.png similarity index 100% rename from img/ufo-enemy-unknown-2.png rename to public/img/ufo-enemy-unknown-2.png diff --git a/img/ufo-enemy-unknown-3.png b/public/img/ufo-enemy-unknown-3.png similarity index 100% rename from img/ufo-enemy-unknown-3.png rename to public/img/ufo-enemy-unknown-3.png diff --git a/img/ufo-enemy-unknown-4.png b/public/img/ufo-enemy-unknown-4.png similarity index 100% rename from img/ufo-enemy-unknown-4.png rename to public/img/ufo-enemy-unknown-4.png diff --git a/img/ufo-enemy-unknown-5.png b/public/img/ufo-enemy-unknown-5.png similarity index 100% rename from img/ufo-enemy-unknown-5.png rename to public/img/ufo-enemy-unknown-5.png diff --git a/img/ufo-enemy-unknown-6.png b/public/img/ufo-enemy-unknown-6.png similarity index 100% rename from img/ufo-enemy-unknown-6.png rename to public/img/ufo-enemy-unknown-6.png diff --git a/img/updated-content-list-layouts.png b/public/img/updated-content-list-layouts.png similarity index 100% rename from img/updated-content-list-layouts.png rename to public/img/updated-content-list-layouts.png diff --git a/img/weighted-random-number-picking-1.png b/public/img/weighted-random-number-picking-1.png similarity index 100% rename from img/weighted-random-number-picking-1.png rename to public/img/weighted-random-number-picking-1.png diff --git a/img/weighted-random-number-picking-featured-image.png b/public/img/weighted-random-number-picking-featured-image.png similarity index 100% rename from img/weighted-random-number-picking-featured-image.png rename to public/img/weighted-random-number-picking-featured-image.png diff --git a/img/why-i-dont-visit-reddit-anymore-01.png b/public/img/why-i-dont-visit-reddit-anymore-01.png similarity index 100% rename from img/why-i-dont-visit-reddit-anymore-01.png rename to public/img/why-i-dont-visit-reddit-anymore-01.png diff --git a/img/wincache-laravel-lumen-01.gif b/public/img/wincache-laravel-lumen-01.gif similarity index 100% rename from img/wincache-laravel-lumen-01.gif rename to public/img/wincache-laravel-lumen-01.gif diff --git a/img/windows-environment-variables.png b/public/img/windows-environment-variables.png similarity index 100% rename from img/windows-environment-variables.png rename to public/img/windows-environment-variables.png diff --git a/img/wordpress-jetpack-malicious-login-attempts.png b/public/img/wordpress-jetpack-malicious-login-attempts.png similarity index 100% rename from img/wordpress-jetpack-malicious-login-attempts.png rename to public/img/wordpress-jetpack-malicious-login-attempts.png diff --git a/img/writing-a-static-site-generator-1.png b/public/img/writing-a-static-site-generator-1.png similarity index 100% rename from img/writing-a-static-site-generator-1.png rename to public/img/writing-a-static-site-generator-1.png diff --git a/img/writing-a-static-site-generator-2.png b/public/img/writing-a-static-site-generator-2.png similarity index 100% rename from img/writing-a-static-site-generator-2.png rename to public/img/writing-a-static-site-generator-2.png diff --git a/img/xxiivv.black.svg b/public/img/xxiivv.black.svg similarity index 100% rename from img/xxiivv.black.svg rename to public/img/xxiivv.black.svg diff --git a/img/zzt-featured-img.png b/public/img/zzt-featured-img.png similarity index 100% rename from img/zzt-featured-img.png rename to public/img/zzt-featured-img.png diff --git a/public/main.js b/public/main.js new file mode 100644 index 00000000..928fb01b --- /dev/null +++ b/public/main.js @@ -0,0 +1,51 @@ +function toggleThemePicker() { + const themePicker = document.querySelector('.theme-picker'); + if (themePicker.classList.contains('is-open')) { + themePicker.classList.remove('is-open'); + } else { + themePicker.classList.add('is-open'); + } +} + +function setTheme(themeName) { + localStorage.setItem('theme', themeName); + document.documentElement.className = 'theme-' + themeName; + + let current = document.querySelector('.theme-picker li.current'); + if (!current) { + return; + } + current + .classList + .remove('current'); + + current = document.querySelector('.theme-picker li.' + 'theme-' + themeName); + if (!current) { + return; + } + current + .classList + .add('current'); +} + +// Set theme before page renders +(function () { + setTheme(localStorage.getItem('theme') || 'dark'); +})(); + +// When document ready add event listeners +document.addEventListener("DOMContentLoaded", function () { + const selectTheme = (e) => { + const btn = e.currentTarget; + if (!btn.dataset.theme) { + return; + } + setTheme(btn.dataset.theme); + }; + + Array.from(document.getElementsByClassName('theme-selector-btn')).forEach((el) => { + el.addEventListener('click', selectTheme) + }); + + setTheme(localStorage.getItem('theme') || 'dark'); +}); \ No newline at end of file diff --git a/_assets/og-image/2022-week-24-in-review.jpg b/public/og-image/2022-week-24-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-24-in-review.jpg rename to public/og-image/2022-week-24-in-review.jpg diff --git a/_assets/og-image/2022-week-25-in-review.jpg b/public/og-image/2022-week-25-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-25-in-review.jpg rename to public/og-image/2022-week-25-in-review.jpg diff --git a/_assets/og-image/2022-week-26-in-review.jpg b/public/og-image/2022-week-26-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-26-in-review.jpg rename to public/og-image/2022-week-26-in-review.jpg diff --git a/_assets/og-image/2022-week-27-in-review.jpg b/public/og-image/2022-week-27-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-27-in-review.jpg rename to public/og-image/2022-week-27-in-review.jpg diff --git a/_assets/og-image/2022-week-28-and-29-in-review.jpg b/public/og-image/2022-week-28-and-29-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-28-and-29-in-review.jpg rename to public/og-image/2022-week-28-and-29-in-review.jpg diff --git a/_assets/og-image/2022-week-30-in-review.jpg b/public/og-image/2022-week-30-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-30-in-review.jpg rename to public/og-image/2022-week-30-in-review.jpg diff --git a/_assets/og-image/2022-week-31-in-review.jpg b/public/og-image/2022-week-31-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-31-in-review.jpg rename to public/og-image/2022-week-31-in-review.jpg diff --git a/_assets/og-image/2022-week-32-in-review.jpg b/public/og-image/2022-week-32-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-32-in-review.jpg rename to public/og-image/2022-week-32-in-review.jpg diff --git a/_assets/og-image/2022-week-33-and-34-in-review.jpg b/public/og-image/2022-week-33-and-34-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-33-and-34-in-review.jpg rename to public/og-image/2022-week-33-and-34-in-review.jpg diff --git a/_assets/og-image/2022-week-35-in-review.jpg b/public/og-image/2022-week-35-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-35-in-review.jpg rename to public/og-image/2022-week-35-in-review.jpg diff --git a/_assets/og-image/2022-week-36-in-review.jpg b/public/og-image/2022-week-36-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-36-in-review.jpg rename to public/og-image/2022-week-36-in-review.jpg diff --git a/_assets/og-image/2022-week-37-in-review.jpg b/public/og-image/2022-week-37-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-37-in-review.jpg rename to public/og-image/2022-week-37-in-review.jpg diff --git a/_assets/og-image/2022-week-38-and-39-in-review.jpg b/public/og-image/2022-week-38-and-39-in-review.jpg similarity index 100% rename from _assets/og-image/2022-week-38-and-39-in-review.jpg rename to public/og-image/2022-week-38-and-39-in-review.jpg diff --git a/_assets/og-image/2023-week-1-in-review.jpg b/public/og-image/2023-week-1-in-review.jpg similarity index 100% rename from _assets/og-image/2023-week-1-in-review.jpg rename to public/og-image/2023-week-1-in-review.jpg diff --git a/_assets/og-image/2023-week-2-in-review.jpg b/public/og-image/2023-week-2-in-review.jpg similarity index 100% rename from _assets/og-image/2023-week-2-in-review.jpg rename to public/og-image/2023-week-2-in-review.jpg diff --git a/_assets/og-image/a-11ty-reading-time-plugin-quest.jpg b/public/og-image/a-11ty-reading-time-plugin-quest.jpg similarity index 100% rename from _assets/og-image/a-11ty-reading-time-plugin-quest.jpg rename to public/og-image/a-11ty-reading-time-plugin-quest.jpg diff --git a/_assets/og-image/a-focus-on-birdsite-drama-and-social-media-in-general.jpg b/public/og-image/a-focus-on-birdsite-drama-and-social-media-in-general.jpg similarity index 100% rename from _assets/og-image/a-focus-on-birdsite-drama-and-social-media-in-general.jpg rename to public/og-image/a-focus-on-birdsite-drama-and-social-media-in-general.jpg diff --git a/_assets/og-image/a-review-of-rimworld-a16-after-100-hours-in-game.jpg b/public/og-image/a-review-of-rimworld-a16-after-100-hours-in-game.jpg similarity index 100% rename from _assets/og-image/a-review-of-rimworld-a16-after-100-hours-in-game.jpg rename to public/og-image/a-review-of-rimworld-a16-after-100-hours-in-game.jpg diff --git a/_assets/og-image/a-review-of-the-godville-game.jpg b/public/og-image/a-review-of-the-godville-game.jpg similarity index 100% rename from _assets/og-image/a-review-of-the-godville-game.jpg rename to public/og-image/a-review-of-the-godville-game.jpg diff --git a/_assets/og-image/a-revival-of-photogabble-the-post-mortem.jpg b/public/og-image/a-revival-of-photogabble-the-post-mortem.jpg similarity index 100% rename from _assets/og-image/a-revival-of-photogabble-the-post-mortem.jpg rename to public/og-image/a-revival-of-photogabble-the-post-mortem.jpg diff --git a/_assets/og-image/a-revival-of-sorts.jpg b/public/og-image/a-revival-of-sorts.jpg similarity index 100% rename from _assets/og-image/a-revival-of-sorts.jpg rename to public/og-image/a-revival-of-sorts.jpg diff --git a/_assets/og-image/a-time_since-function-for-php.jpg b/public/og-image/a-time_since-function-for-php.jpg similarity index 100% rename from _assets/og-image/a-time_since-function-for-php.jpg rename to public/og-image/a-time_since-function-for-php.jpg diff --git a/_assets/og-image/achieving-public-private-and-privileged-members-in-javascript.jpg b/public/og-image/achieving-public-private-and-privileged-members-in-javascript.jpg similarity index 100% rename from _assets/og-image/achieving-public-private-and-privileged-members-in-javascript.jpg rename to public/og-image/achieving-public-private-and-privileged-members-in-javascript.jpg diff --git a/_assets/og-image/adding-emoji-support-to-your-website-or-project.jpg b/public/og-image/adding-emoji-support-to-your-website-or-project.jpg similarity index 100% rename from _assets/og-image/adding-emoji-support-to-your-website-or-project.jpg rename to public/og-image/adding-emoji-support-to-your-website-or-project.jpg diff --git a/_assets/og-image/adding-enhanced-opengraph-meta.jpg b/public/og-image/adding-enhanced-opengraph-meta.jpg similarity index 100% rename from _assets/og-image/adding-enhanced-opengraph-meta.jpg rename to public/og-image/adding-enhanced-opengraph-meta.jpg diff --git a/_assets/og-image/adding-favicon.jpg b/public/og-image/adding-favicon.jpg similarity index 100% rename from _assets/og-image/adding-favicon.jpg rename to public/og-image/adding-favicon.jpg diff --git a/_assets/og-image/adding-sparklines-to-your-eleventyjs-powered-website.jpg b/public/og-image/adding-sparklines-to-your-eleventyjs-powered-website.jpg similarity index 100% rename from _assets/og-image/adding-sparklines-to-your-eleventyjs-powered-website.jpg rename to public/og-image/adding-sparklines-to-your-eleventyjs-powered-website.jpg diff --git a/_assets/og-image/ansi-command-line-colors-under-windows.jpg b/public/og-image/ansi-command-line-colors-under-windows.jpg similarity index 100% rename from _assets/og-image/ansi-command-line-colors-under-windows.jpg rename to public/og-image/ansi-command-line-colors-under-windows.jpg diff --git a/_assets/og-image/basic-server-monitoring-using-php-and-rrdtools.jpg b/public/og-image/basic-server-monitoring-using-php-and-rrdtools.jpg similarity index 100% rename from _assets/og-image/basic-server-monitoring-using-php-and-rrdtools.jpg rename to public/og-image/basic-server-monitoring-using-php-and-rrdtools.jpg diff --git a/_assets/og-image/blogtimes-a-trip-down-memory-lane.jpg b/public/og-image/blogtimes-a-trip-down-memory-lane.jpg similarity index 100% rename from _assets/og-image/blogtimes-a-trip-down-memory-lane.jpg rename to public/og-image/blogtimes-a-trip-down-memory-lane.jpg diff --git a/_assets/og-image/bounce-in-qb64.jpg b/public/og-image/bounce-in-qb64.jpg similarity index 100% rename from _assets/og-image/bounce-in-qb64.jpg rename to public/og-image/bounce-in-qb64.jpg diff --git a/_assets/og-image/build-an-incremental-clicker-web-game-with-vuejs-part-one.jpg b/public/og-image/build-an-incremental-clicker-web-game-with-vuejs-part-one.jpg similarity index 100% rename from _assets/og-image/build-an-incremental-clicker-web-game-with-vuejs-part-one.jpg rename to public/og-image/build-an-incremental-clicker-web-game-with-vuejs-part-one.jpg diff --git a/_assets/og-image/clover-coverage-cli.jpg b/public/og-image/clover-coverage-cli.jpg similarity index 100% rename from _assets/og-image/clover-coverage-cli.jpg rename to public/og-image/clover-coverage-cli.jpg diff --git a/_assets/og-image/code-coverage-info.jpg b/public/og-image/code-coverage-info.jpg similarity index 100% rename from _assets/og-image/code-coverage-info.jpg rename to public/og-image/code-coverage-info.jpg diff --git a/_assets/og-image/colour.jpg b/public/og-image/colour.jpg similarity index 100% rename from _assets/og-image/colour.jpg rename to public/og-image/colour.jpg diff --git a/_assets/og-image/confusable-homoglyphs.jpg b/public/og-image/confusable-homoglyphs.jpg similarity index 100% rename from _assets/og-image/confusable-homoglyphs.jpg rename to public/og-image/confusable-homoglyphs.jpg diff --git a/_assets/og-image/cool-urls-dont-change.jpg b/public/og-image/cool-urls-dont-change.jpg similarity index 100% rename from _assets/og-image/cool-urls-dont-change.jpg rename to public/og-image/cool-urls-dont-change.jpg diff --git a/_assets/og-image/creating-a-less-file-watcher-in-phpstorm.jpg b/public/og-image/creating-a-less-file-watcher-in-phpstorm.jpg similarity index 100% rename from _assets/og-image/creating-a-less-file-watcher-in-phpstorm.jpg rename to public/og-image/creating-a-less-file-watcher-in-phpstorm.jpg diff --git a/_assets/og-image/creating-a-now-page-archive-with-11ty.jpg b/public/og-image/creating-a-now-page-archive-with-11ty.jpg similarity index 100% rename from _assets/og-image/creating-a-now-page-archive-with-11ty.jpg rename to public/og-image/creating-a-now-page-archive-with-11ty.jpg diff --git a/_assets/og-image/defending-wordpress-against-malicious-login-attempts-using-fail2ban.jpg b/public/og-image/defending-wordpress-against-malicious-login-attempts-using-fail2ban.jpg similarity index 100% rename from _assets/og-image/defending-wordpress-against-malicious-login-attempts-using-fail2ban.jpg rename to public/og-image/defending-wordpress-against-malicious-login-attempts-using-fail2ban.jpg diff --git a/_assets/og-image/defrag-like-its-1992.jpg b/public/og-image/defrag-like-its-1992.jpg similarity index 100% rename from _assets/og-image/defrag-like-its-1992.jpg rename to public/og-image/defrag-like-its-1992.jpg diff --git a/_assets/og-image/dependency-resolving-algorithm.jpg b/public/og-image/dependency-resolving-algorithm.jpg similarity index 100% rename from _assets/og-image/dependency-resolving-algorithm.jpg rename to public/og-image/dependency-resolving-algorithm.jpg diff --git a/_assets/og-image/draughts.jpg b/public/og-image/draughts.jpg similarity index 100% rename from _assets/og-image/draughts.jpg rename to public/og-image/draughts.jpg diff --git a/_assets/og-image/floppybox.jpg b/public/og-image/floppybox.jpg similarity index 100% rename from _assets/og-image/floppybox.jpg rename to public/og-image/floppybox.jpg diff --git a/_assets/og-image/freezetime-browser-based-roguelike.jpg b/public/og-image/freezetime-browser-based-roguelike.jpg similarity index 100% rename from _assets/og-image/freezetime-browser-based-roguelike.jpg rename to public/og-image/freezetime-browser-based-roguelike.jpg diff --git a/_assets/og-image/generating-random-numbers-over-a-range-in-go.jpg b/public/og-image/generating-random-numbers-over-a-range-in-go.jpg similarity index 100% rename from _assets/og-image/generating-random-numbers-over-a-range-in-go.jpg rename to public/og-image/generating-random-numbers-over-a-range-in-go.jpg diff --git a/_assets/og-image/go-git-archive.jpg b/public/og-image/go-git-archive.jpg similarity index 100% rename from _assets/og-image/go-git-archive.jpg rename to public/og-image/go-git-archive.jpg diff --git a/_assets/og-image/go-pixels-fight.jpg b/public/og-image/go-pixels-fight.jpg similarity index 100% rename from _assets/og-image/go-pixels-fight.jpg rename to public/og-image/go-pixels-fight.jpg diff --git a/_assets/og-image/go-space-mines.jpg b/public/og-image/go-space-mines.jpg similarity index 100% rename from _assets/og-image/go-space-mines.jpg rename to public/og-image/go-space-mines.jpg diff --git a/_assets/og-image/graphing-ping-response-times-in-windows-with-gping.jpg b/public/og-image/graphing-ping-response-times-in-windows-with-gping.jpg similarity index 100% rename from _assets/og-image/graphing-ping-response-times-in-windows-with-gping.jpg rename to public/og-image/graphing-ping-response-times-in-windows-with-gping.jpg diff --git a/_assets/og-image/happy-53rd-birthday-basic.jpg b/public/og-image/happy-53rd-birthday-basic.jpg similarity index 100% rename from _assets/og-image/happy-53rd-birthday-basic.jpg rename to public/og-image/happy-53rd-birthday-basic.jpg diff --git a/_assets/og-image/happy-new-year.jpg b/public/og-image/happy-new-year.jpg similarity index 100% rename from _assets/og-image/happy-new-year.jpg rename to public/og-image/happy-new-year.jpg diff --git a/_assets/og-image/how-to-install-azure-cli-via-node-on-windowslinux-and-osx.jpg b/public/og-image/how-to-install-azure-cli-via-node-on-windowslinux-and-osx.jpg similarity index 100% rename from _assets/og-image/how-to-install-azure-cli-via-node-on-windowslinux-and-osx.jpg rename to public/og-image/how-to-install-azure-cli-via-node-on-windowslinux-and-osx.jpg diff --git a/_assets/og-image/how-to-return-a-random-list-item-by-weight.jpg b/public/og-image/how-to-return-a-random-list-item-by-weight.jpg similarity index 100% rename from _assets/og-image/how-to-return-a-random-list-item-by-weight.jpg rename to public/og-image/how-to-return-a-random-list-item-by-weight.jpg diff --git a/_assets/og-image/how-to-set-composer-global-bin-path-in-windows.jpg b/public/og-image/how-to-set-composer-global-bin-path-in-windows.jpg similarity index 100% rename from _assets/og-image/how-to-set-composer-global-bin-path-in-windows.jpg rename to public/og-image/how-to-set-composer-global-bin-path-in-windows.jpg diff --git a/_assets/og-image/if-dos-game-dev-is-a-rabbit-hole-then-call-me-alice.jpg b/public/og-image/if-dos-game-dev-is-a-rabbit-hole-then-call-me-alice.jpg similarity index 100% rename from _assets/og-image/if-dos-game-dev-is-a-rabbit-hole-then-call-me-alice.jpg rename to public/og-image/if-dos-game-dev-is-a-rabbit-hole-then-call-me-alice.jpg diff --git a/_assets/og-image/installing-turbo-c-on-dosbox.jpg b/public/og-image/installing-turbo-c-on-dosbox.jpg similarity index 100% rename from _assets/og-image/installing-turbo-c-on-dosbox.jpg rename to public/og-image/installing-turbo-c-on-dosbox.jpg diff --git a/_assets/og-image/internet-explorer-is-dead-long-live-internet-explorer.jpg b/public/og-image/internet-explorer-is-dead-long-live-internet-explorer.jpg similarity index 100% rename from _assets/og-image/internet-explorer-is-dead-long-live-internet-explorer.jpg rename to public/og-image/internet-explorer-is-dead-long-live-internet-explorer.jpg diff --git a/_assets/og-image/is-rubber-ducky-debugging-using-sods-law-as-a-debugging-tool.jpg b/public/og-image/is-rubber-ducky-debugging-using-sods-law-as-a-debugging-tool.jpg similarity index 100% rename from _assets/og-image/is-rubber-ducky-debugging-using-sods-law-as-a-debugging-tool.jpg rename to public/og-image/is-rubber-ducky-debugging-using-sods-law-as-a-debugging-tool.jpg diff --git a/_assets/og-image/jzt-an-awesome-homage-to-the-dos-era-adventure-game-zzt.jpg b/public/og-image/jzt-an-awesome-homage-to-the-dos-era-adventure-game-zzt.jpg similarity index 100% rename from _assets/og-image/jzt-an-awesome-homage-to-the-dos-era-adventure-game-zzt.jpg rename to public/og-image/jzt-an-awesome-homage-to-the-dos-era-adventure-game-zzt.jpg diff --git a/_assets/og-image/kareltima-iii-the-self-beating-machine.jpg b/public/og-image/kareltima-iii-the-self-beating-machine.jpg similarity index 100% rename from _assets/og-image/kareltima-iii-the-self-beating-machine.jpg rename to public/og-image/kareltima-iii-the-self-beating-machine.jpg diff --git a/_assets/og-image/keep-blogging-fun.jpg b/public/og-image/keep-blogging-fun.jpg similarity index 100% rename from _assets/og-image/keep-blogging-fun.jpg rename to public/og-image/keep-blogging-fun.jpg diff --git a/_assets/og-image/laravel-registration-validator.jpg b/public/og-image/laravel-registration-validator.jpg similarity index 100% rename from _assets/og-image/laravel-registration-validator.jpg rename to public/og-image/laravel-registration-validator.jpg diff --git a/_assets/og-image/laravel-remember-uploads.jpg b/public/og-image/laravel-remember-uploads.jpg similarity index 100% rename from _assets/og-image/laravel-remember-uploads.jpg rename to public/og-image/laravel-remember-uploads.jpg diff --git a/_assets/og-image/ldpl-space-mines.jpg b/public/og-image/ldpl-space-mines.jpg similarity index 100% rename from _assets/og-image/ldpl-space-mines.jpg rename to public/og-image/ldpl-space-mines.jpg diff --git a/_assets/og-image/ldpl-spark.jpg b/public/og-image/ldpl-spark.jpg similarity index 100% rename from _assets/og-image/ldpl-spark.jpg rename to public/og-image/ldpl-spark.jpg diff --git a/_assets/og-image/like-pie.jpg b/public/og-image/like-pie.jpg similarity index 100% rename from _assets/og-image/like-pie.jpg rename to public/og-image/like-pie.jpg diff --git a/_assets/og-image/mirror-of-b2blogtimephp-by-sanjay-sheth.jpg b/public/og-image/mirror-of-b2blogtimephp-by-sanjay-sheth.jpg similarity index 100% rename from _assets/og-image/mirror-of-b2blogtimephp-by-sanjay-sheth.jpg rename to public/og-image/mirror-of-b2blogtimephp-by-sanjay-sheth.jpg diff --git a/_assets/og-image/mirror-of-blogtimesphp-by-matt-mullenweg.jpg b/public/og-image/mirror-of-blogtimesphp-by-matt-mullenweg.jpg similarity index 100% rename from _assets/og-image/mirror-of-blogtimesphp-by-matt-mullenweg.jpg rename to public/og-image/mirror-of-blogtimesphp-by-matt-mullenweg.jpg diff --git a/_assets/og-image/mission-mainframe.jpg b/public/og-image/mission-mainframe.jpg similarity index 100% rename from _assets/og-image/mission-mainframe.jpg rename to public/og-image/mission-mainframe.jpg diff --git a/_assets/og-image/nested-queries-in-laravels-query-builder.jpg b/public/og-image/nested-queries-in-laravels-query-builder.jpg similarity index 100% rename from _assets/og-image/nested-queries-in-laravels-query-builder.jpg rename to public/og-image/nested-queries-in-laravels-query-builder.jpg diff --git a/_assets/og-image/on-quitting-programming-for-carpentry.jpg b/public/og-image/on-quitting-programming-for-carpentry.jpg similarity index 100% rename from _assets/og-image/on-quitting-programming-for-carpentry.jpg rename to public/og-image/on-quitting-programming-for-carpentry.jpg diff --git a/_assets/og-image/php-rrdtool-helpers.jpg b/public/og-image/php-rrdtool-helpers.jpg similarity index 100% rename from _assets/og-image/php-rrdtool-helpers.jpg rename to public/og-image/php-rrdtool-helpers.jpg diff --git a/_assets/og-image/php-space-mines-an-api-is-born.jpg b/public/og-image/php-space-mines-an-api-is-born.jpg similarity index 100% rename from _assets/og-image/php-space-mines-an-api-is-born.jpg rename to public/og-image/php-space-mines-an-api-is-born.jpg diff --git a/_assets/og-image/php-space-mines-introduction.jpg b/public/og-image/php-space-mines-introduction.jpg similarity index 100% rename from _assets/og-image/php-space-mines-introduction.jpg rename to public/og-image/php-space-mines-introduction.jpg diff --git a/_assets/og-image/phpurls.jpg b/public/og-image/phpurls.jpg similarity index 100% rename from _assets/og-image/phpurls.jpg rename to public/og-image/phpurls.jpg diff --git a/_assets/og-image/pixel-mainframe.jpg b/public/og-image/pixel-mainframe.jpg similarity index 100% rename from _assets/og-image/pixel-mainframe.jpg rename to public/og-image/pixel-mainframe.jpg diff --git a/_assets/og-image/portcullis.jpg b/public/og-image/portcullis.jpg similarity index 100% rename from _assets/og-image/portcullis.jpg rename to public/og-image/portcullis.jpg diff --git a/_assets/og-image/porting-basic-space-mines-game-to-go.jpg b/public/og-image/porting-basic-space-mines-game-to-go.jpg similarity index 100% rename from _assets/og-image/porting-basic-space-mines-game-to-go.jpg rename to public/og-image/porting-basic-space-mines-game-to-go.jpg diff --git a/_assets/og-image/t-irc.jpg b/public/og-image/t-irc.jpg similarity index 100% rename from _assets/og-image/t-irc.jpg rename to public/og-image/t-irc.jpg diff --git a/_assets/og-image/the-command-pattern.jpg b/public/og-image/the-command-pattern.jpg similarity index 100% rename from _assets/og-image/the-command-pattern.jpg rename to public/og-image/the-command-pattern.jpg diff --git a/_assets/og-image/the-qb64-programming-language.jpg b/public/og-image/the-qb64-programming-language.jpg similarity index 100% rename from _assets/og-image/the-qb64-programming-language.jpg rename to public/og-image/the-qb64-programming-language.jpg diff --git a/_assets/og-image/the-robo-car-uprising.jpg b/public/og-image/the-robo-car-uprising.jpg similarity index 100% rename from _assets/og-image/the-robo-car-uprising.jpg rename to public/og-image/the-robo-car-uprising.jpg diff --git a/_assets/og-image/think-with-google-revisiting-googles-website-speed-testing-tool.jpg b/public/og-image/think-with-google-revisiting-googles-website-speed-testing-tool.jpg similarity index 100% rename from _assets/og-image/think-with-google-revisiting-googles-website-speed-testing-tool.jpg rename to public/og-image/think-with-google-revisiting-googles-website-speed-testing-tool.jpg diff --git a/_assets/og-image/think-with-google-website-speed-testing-tool.jpg b/public/og-image/think-with-google-website-speed-testing-tool.jpg similarity index 100% rename from _assets/og-image/think-with-google-website-speed-testing-tool.jpg rename to public/og-image/think-with-google-website-speed-testing-tool.jpg diff --git a/_assets/og-image/thinking-about-doscember-2022.jpg b/public/og-image/thinking-about-doscember-2022.jpg similarity index 100% rename from _assets/og-image/thinking-about-doscember-2022.jpg rename to public/og-image/thinking-about-doscember-2022.jpg diff --git a/_assets/og-image/thoughts-on-goaccess.jpg b/public/og-image/thoughts-on-goaccess.jpg similarity index 100% rename from _assets/og-image/thoughts-on-goaccess.jpg rename to public/og-image/thoughts-on-goaccess.jpg diff --git a/_assets/og-image/todoci.jpg b/public/og-image/todoci.jpg similarity index 100% rename from _assets/og-image/todoci.jpg rename to public/og-image/todoci.jpg diff --git a/_assets/og-image/toshiba-t5100.jpg b/public/og-image/toshiba-t5100.jpg similarity index 100% rename from _assets/og-image/toshiba-t5100.jpg rename to public/og-image/toshiba-t5100.jpg diff --git a/_assets/og-image/tuppence-boilerplate.jpg b/public/og-image/tuppence-boilerplate.jpg similarity index 100% rename from _assets/og-image/tuppence-boilerplate.jpg rename to public/og-image/tuppence-boilerplate.jpg diff --git a/_assets/og-image/tuppence.jpg b/public/og-image/tuppence.jpg similarity index 100% rename from _assets/og-image/tuppence.jpg rename to public/og-image/tuppence.jpg diff --git a/_assets/og-image/updated-content-list-layouts.jpg b/public/og-image/updated-content-list-layouts.jpg similarity index 100% rename from _assets/og-image/updated-content-list-layouts.jpg rename to public/og-image/updated-content-list-layouts.jpg diff --git a/_assets/og-image/useful-free-stock-photography-libraries.jpg b/public/og-image/useful-free-stock-photography-libraries.jpg similarity index 100% rename from _assets/og-image/useful-free-stock-photography-libraries.jpg rename to public/og-image/useful-free-stock-photography-libraries.jpg diff --git a/_assets/og-image/using-puppeteer-with-11ty-to-automate-generating-social-share-images.jpg b/public/og-image/using-puppeteer-with-11ty-to-automate-generating-social-share-images.jpg similarity index 100% rename from _assets/og-image/using-puppeteer-with-11ty-to-automate-generating-social-share-images.jpg rename to public/og-image/using-puppeteer-with-11ty-to-automate-generating-social-share-images.jpg diff --git a/_assets/og-image/week-24-in-review.jpg b/public/og-image/week-24-in-review.jpg similarity index 100% rename from _assets/og-image/week-24-in-review.jpg rename to public/og-image/week-24-in-review.jpg diff --git a/_assets/og-image/week-25-in-review.jpg b/public/og-image/week-25-in-review.jpg similarity index 100% rename from _assets/og-image/week-25-in-review.jpg rename to public/og-image/week-25-in-review.jpg diff --git a/_assets/og-image/week-26-in-review.jpg b/public/og-image/week-26-in-review.jpg similarity index 100% rename from _assets/og-image/week-26-in-review.jpg rename to public/og-image/week-26-in-review.jpg diff --git a/_assets/og-image/week-27-in-review.jpg b/public/og-image/week-27-in-review.jpg similarity index 100% rename from _assets/og-image/week-27-in-review.jpg rename to public/og-image/week-27-in-review.jpg diff --git a/_assets/og-image/week-28-and-29-in-review.jpg b/public/og-image/week-28-and-29-in-review.jpg similarity index 100% rename from _assets/og-image/week-28-and-29-in-review.jpg rename to public/og-image/week-28-and-29-in-review.jpg diff --git a/_assets/og-image/week-30-in-review.jpg b/public/og-image/week-30-in-review.jpg similarity index 100% rename from _assets/og-image/week-30-in-review.jpg rename to public/og-image/week-30-in-review.jpg diff --git a/_assets/og-image/week-31-in-review.jpg b/public/og-image/week-31-in-review.jpg similarity index 100% rename from _assets/og-image/week-31-in-review.jpg rename to public/og-image/week-31-in-review.jpg diff --git a/_assets/og-image/week-32-in-review.jpg b/public/og-image/week-32-in-review.jpg similarity index 100% rename from _assets/og-image/week-32-in-review.jpg rename to public/og-image/week-32-in-review.jpg diff --git a/_assets/og-image/week-33-and-34-in-review.jpg b/public/og-image/week-33-and-34-in-review.jpg similarity index 100% rename from _assets/og-image/week-33-and-34-in-review.jpg rename to public/og-image/week-33-and-34-in-review.jpg diff --git a/_assets/og-image/week-35-in-review.jpg b/public/og-image/week-35-in-review.jpg similarity index 100% rename from _assets/og-image/week-35-in-review.jpg rename to public/og-image/week-35-in-review.jpg diff --git a/_assets/og-image/why-i-built-a-tiny-php-framework-called-tuppence.jpg b/public/og-image/why-i-built-a-tiny-php-framework-called-tuppence.jpg similarity index 100% rename from _assets/og-image/why-i-built-a-tiny-php-framework-called-tuppence.jpg rename to public/og-image/why-i-built-a-tiny-php-framework-called-tuppence.jpg diff --git a/_assets/og-image/word-stats-plugin-for-eleventy.jpg b/public/og-image/word-stats-plugin-for-eleventy.jpg similarity index 100% rename from _assets/og-image/word-stats-plugin-for-eleventy.jpg rename to public/og-image/word-stats-plugin-for-eleventy.jpg diff --git a/_assets/og-image/writing-a-pixel-editor-in-javascript-part-five.jpg b/public/og-image/writing-a-pixel-editor-in-javascript-part-five.jpg similarity index 100% rename from _assets/og-image/writing-a-pixel-editor-in-javascript-part-five.jpg rename to public/og-image/writing-a-pixel-editor-in-javascript-part-five.jpg diff --git a/_assets/og-image/writing-a-pixel-editor-in-javascript-part-four.jpg b/public/og-image/writing-a-pixel-editor-in-javascript-part-four.jpg similarity index 100% rename from _assets/og-image/writing-a-pixel-editor-in-javascript-part-four.jpg rename to public/og-image/writing-a-pixel-editor-in-javascript-part-four.jpg diff --git a/_assets/og-image/writing-a-pixel-editor-in-javascript-part-one.jpg b/public/og-image/writing-a-pixel-editor-in-javascript-part-one.jpg similarity index 100% rename from _assets/og-image/writing-a-pixel-editor-in-javascript-part-one.jpg rename to public/og-image/writing-a-pixel-editor-in-javascript-part-one.jpg diff --git a/_assets/og-image/writing-a-pixel-editor-in-javascript-part-six.jpg b/public/og-image/writing-a-pixel-editor-in-javascript-part-six.jpg similarity index 100% rename from _assets/og-image/writing-a-pixel-editor-in-javascript-part-six.jpg rename to public/og-image/writing-a-pixel-editor-in-javascript-part-six.jpg diff --git a/_assets/og-image/writing-a-pixel-editor-in-javascript-part-three.jpg b/public/og-image/writing-a-pixel-editor-in-javascript-part-three.jpg similarity index 100% rename from _assets/og-image/writing-a-pixel-editor-in-javascript-part-three.jpg rename to public/og-image/writing-a-pixel-editor-in-javascript-part-three.jpg diff --git a/_assets/og-image/writing-a-pixel-editor-in-javascript-part-two.jpg b/public/og-image/writing-a-pixel-editor-in-javascript-part-two.jpg similarity index 100% rename from _assets/og-image/writing-a-pixel-editor-in-javascript-part-two.jpg rename to public/og-image/writing-a-pixel-editor-in-javascript-part-two.jpg diff --git a/_assets/og-image/writing-documentation-is-hard.jpg b/public/og-image/writing-documentation-is-hard.jpg similarity index 100% rename from _assets/og-image/writing-documentation-is-hard.jpg rename to public/og-image/writing-documentation-is-hard.jpg diff --git a/_assets/og-image/zero-config-rapid-vuejs-development-with-parcel.jpg b/public/og-image/zero-config-rapid-vuejs-development-with-parcel.jpg similarity index 100% rename from _assets/og-image/zero-config-rapid-vuejs-development-with-parcel.jpg rename to public/og-image/zero-config-rapid-vuejs-development-with-parcel.jpg diff --git a/quotes.njk b/quotes.njk index bb20f169..c0e27e41 100644 --- a/quotes.njk +++ b/quotes.njk @@ -1,4 +1,4 @@ -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Quotes' %} diff --git a/resources/index.njk b/resources/index.njk index cfb9ece7..074cb340 100644 --- a/resources/index.njk +++ b/resources/index.njk @@ -6,7 +6,7 @@ pagination: permalink: "resources/{% if pagination.pageNumber > 0 %}{{ pagination.pageNumber + 1 }}/{% endif %}index.html" --- -{% extends "../_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Resources' %} {% set titlePrefix = 'Index' %} @@ -15,7 +15,7 @@ permalink: "resources/{% if pagination.pageNumber > 0 %}{{ pagination.pageNumber
{% set displayResourceType = true %} - {% include "../_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}
{% if pagination.pages.length > 1 %} diff --git a/resources/types.njk b/resources/types.njk index 61cc0423..48b0b8fa 100644 --- a/resources/types.njk +++ b/resources/types.njk @@ -7,7 +7,7 @@ permalink: /{{ type.slug }}/index.html folder: [resource] --- -{% extends "../_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = type.title %} {% set titlePrefix = 'Resource' %} @@ -15,7 +15,7 @@ folder: [resource] {% block pageContent %}
{% set postsList = type.items %} - {% include "_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}
{% if type.totalPages > 1 %} diff --git a/stats.njk b/stats.njk index f8d54dba..11d5fcbe 100644 --- a/stats.njk +++ b/stats.njk @@ -1,7 +1,7 @@ --- folder: [writing] --- -{% extends "./_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = 'Content Stats' %} {% set titlePrefix = 'Writing' %} @@ -68,6 +68,6 @@ folder: [writing]
- {% include '_includes/components/hot-topics.njk' %} + {% include 'components/hot-topics.njk' %}
{% endblock %} diff --git a/topic.njk b/topic.njk index e160aceb..4f0e0600 100644 --- a/topic.njk +++ b/topic.njk @@ -3,7 +3,7 @@ title: All Topics titlePrefix: Index folder: [writing] --- -{% extends "_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% block pageContent %} {% endif %} - {% include '_includes/components/hot-topics.njk' %} + {% include 'components/hot-topics.njk' %} {% endblock %} diff --git a/types.njk b/types.njk index 915ef0d4..99ced2ac 100644 --- a/types.njk +++ b/types.njk @@ -7,7 +7,7 @@ permalink: /{{ type.slug }}/index.html folder: [writing] --- -{% extends "./_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set title = type.title %} {% set titlePrefix = 'Writing' %} @@ -26,7 +26,7 @@ folder: [writing]
{% set postsList = type.items %} - {% include "_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}
{% if type.totalPages > 1 %} @@ -39,5 +39,5 @@ folder: [writing] {% endif %} - {% include '_includes/components/hot-topics.njk' %} + {% include 'components/hot-topics.njk' %} {% endblock %} diff --git a/writing/archive.njk b/writing/archive.njk index e2678366..71fe2828 100644 --- a/writing/archive.njk +++ b/writing/archive.njk @@ -8,14 +8,14 @@ folder: writing titlePrefix: Index --- {% set title = yearMonth.title %} -{% extends "../_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% block pageContent %}
{% set displayContentType = true %} {% set postsList = yearMonth.items | reverse %} - {% include "../_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}
- {% include '../_includes/components/planting-times.njk' %} + {% include 'components/planting-times.njk' %} {% endblock %} \ No newline at end of file diff --git a/writing/index.njk b/writing/index.njk index 8ca17809..f12ac67f 100644 --- a/writing/index.njk +++ b/writing/index.njk @@ -1,4 +1,4 @@ -{% extends "../_includes/layouts/page.njk" %} +{% extends "layouts/page.njk" %} {% set allPosts = collections.post | excludeStubs | excludeTypes(['mirror', 'resource']) | reverse %} {% set postsByYear = allPosts | groupByYear %} @@ -15,14 +15,14 @@ {% set displayContentType = true %} {% set postsList = items %} - {% include "../_includes/components/post-list.njk" %} + {% include "components/post-list.njk" %}
{% endfor %} - {% include '../_includes/components/hot-topics.njk' %} + {% include 'components/hot-topics.njk' %} {% endblock %} From 8e4eb7999105fc68c7c1711fac5df9087ce7bc51 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 7 Nov 2023 13:05:15 +0000 Subject: [PATCH 2/8] refactor(#304): move files into src folder --- .eleventy.js | 12 ++++- lib/collections.js | 8 ++-- lib/filters.js | 4 +- lib/helpers/hashtags.js | 2 +- 404.njk => src/404.njk | 0 {_data => src/_data}/books.js | 0 {_data => src/_data}/bookwyrm.js | 2 +- {_data => src/_data}/build.js | 0 {_data => src/_data}/dadjokes.js | 0 {_data => src/_data}/eleventyComputed.js | 0 {_data => src/_data}/links.js | 0 {_data => src/_data}/lists-meta.js | 0 {_data => src/_data}/metadata.js | 0 {_data => src/_data}/movies.js | 0 {_data => src/_data}/people.js | 0 {_data => src/_data}/quotes.js | 0 {_data => src/_data}/themes.js | 0 .../_includes}/components/backlinks.njk | 0 .../_includes}/components/book-grid.njk | 0 .../components/book-layout-inspiration.njk | 0 .../_includes}/components/growth.njk | 0 .../_includes}/components/hot-topics.njk | 0 .../_includes}/components/months-of-year.njk | 0 .../_includes}/components/planting-times.njk | 0 .../_includes}/components/post-list-line.njk | 0 .../_includes}/components/post-list.njk | 0 .../_includes}/components/series-list.njk | 0 .../_includes}/components/tag-list.njk | 0 .../_includes}/components/wayback-machine.njk | 0 {_includes => src/_includes}/layouts/base.njk | 0 .../_includes}/layouts/blank-base.njk | 0 {_includes => src/_includes}/layouts/book.njk | 0 .../_includes}/layouts/bookmark-embed.liquid | 0 .../_includes}/layouts/embed.liquid | 2 +- .../_includes}/layouts/list-button-board.njk | 0 .../_includes}/layouts/list-default.njk | 0 .../_includes}/layouts/list-posts.njk | 0 {_includes => src/_includes}/layouts/now.njk | 0 .../_includes}/layouts/page-post.njk | 0 .../_includes}/layouts/page-resource-link.njk | 0 .../_includes}/layouts/page-resource.njk | 0 {_includes => src/_includes}/layouts/page.njk | 0 .../_includes}/layouts/project.njk | 0 about.njk => src/about.njk | 0 antilibrary.njk => src/antilibrary.njk | 0 blank.njk => src/blank.njk | 0 books.njk => src/books.njk | 0 breadcrumbs.md => src/breadcrumbs.md | 0 button-board.njk => src/button-board.njk | 0 colophon.njk => src/colophon.njk | 0 ...2022-09-02-updating-content-list-design.md | 0 .../colophon/2022-09-07-adding-favicon.md | 0 .../2022-09-08-cool-urls-dont-change.md | 0 ...22-09-16-adding-enhanced-opengraph-meta.md | 0 .../colophon/2023-01-20-adding-stats.md | 0 .../colophon/2023-01-27-stub-posts.md | 0 .../2023-02-13-marking-external-links.md | 0 .../2023-03-14-alphabetising-glossary.md | 0 .../content}/colophon/colophon.11tydata.js | 0 {content => src/content}/content.11tydata.js | 2 +- .../essays/2014-12-31-keep-blogging-fun.md | 0 ...2017-05-02-happy-fiftyth-birthday-basic.md | 0 .../essays/2023-01-30-the-small-web.md | 0 ...3-02-27-self-hosting-is-the-new-old-web.md | 0 .../content}/essays/2023-03-08-linkrot.md | 0 ...0-blogtimes-the-second-wordpress-plugin.md | 0 ...23-03-15-where-did-all-the-web-rings-go.md | 0 .../content}/essays/essays.11tydata.js | 0 .../content}/glossary/2022-03-16-growth.md | 0 .../glossary/2022-05-26-content-types.md | 0 .../glossary/2023-01-19-minimalism.md | 0 .../glossary/2023-01-20-rabbit-hole.md | 0 .../glossary/2023-03-01-yak-shaving.md | 0 .../glossary/2023-03-14-good-enough.md | 0 .../content}/glossary/glossary.11tydata.js | 0 ...ullenweg-wordpress-blogtimes-plugin-php.md | 0 .../2022-09-02-sanjay-sheth-b2blogtime-php.md | 0 .../content}/mirrored/mirrored.11tydata.js | 0 .../noteworthy/2007-04-20-time-since.md | 0 ...-kareltima-iii-the-self-beating-machine.md | 0 .../2009-06-10-mission-mainframe.md | 0 .../noteworthy/2015-02-15-pixel-mainframe.md | 0 ...graphing-ping-response-times-with-gping.md | 0 ...ested-queries-in-laravels-query-builder.md | 0 ...useful-free-stock-photography-libraries.md | 0 ...1-10-freezetime-browser-game-by-patrick.md | 0 ...-jzz-the-awesome-homage-to-the-zzt-game.md | 0 ...17-04-27-think-with-google-test-my-site.md | 0 ...-05-05-basic-space-mines-port-to-golang.md | 0 ...017-05-10-the-qb64-programming-language.md | 0 .../noteworthy/2017-05-12-bounce-in-qb64.md | 0 .../2017-05-15-thoughts-on-go-access.md | 0 ...-of-rimworld-a16-after-100-hours-ingame.md | 0 ...018-04-27-a-review-of-the-godville-game.md | 0 ...iting-google-website-speed-testing-tool.md | 0 ...-03-16-a-11ty-reading-time-plugin-quest.md | 0 ...2022-08-25-php-space-mines-introduction.md | 0 .../noteworthy/2022-09-01-blogtimes.md | 0 ...ating-random-numbers-over-a-range-in-go.md | 0 .../noteworthy/2023-01-01-toshiba-t1200.md | 0 .../noteworthy/2023-01-01-toshiba-t5100.md | 0 .../2023-01-23-defrag-like-its-1992.md | 0 .../noteworthy/2023-01-25-wiki-links.md | 0 ...-decentralised-minimalist-microblogging.md | 0 ...02-03-solving-logi-webcam-ripple-on-osx.md | 0 .../2023-02-12-my-publishing-workflow.md | 0 .../content}/noteworthy/2023-02-28-romvlvs.md | 0 .../2023-03-01-jzt-is-now-opensource.md | 0 ...03-20-writing-blogtimes-for-eleventy-js.md | 0 .../2023-03-31-lost-smiley-ascii-dos-games.md | 0 .../2023-04-30-space-mines-april-changelog.md | 0 .../2023-05-12-space-mines-introduction.md | 0 .../2023-05-15-space-mines-design-language.md | 0 ...3-05-17-space-mines-resource-extraction.md | 0 ...3-05-19-space-mines-resource-processing.md | 0 .../2023-05-22-space-mines-manufacturing.md | 0 .../2023-05-24-space-mines-research.md | 0 .../2023-05-26-space-mines-outfitting.md | 0 .../2023-05-29-space-mines-maintenance.md | 0 .../2023-05-30-space-mines-may-changelog.md | 0 .../2023-05-31-space-mines-crew-morale.md | 0 .../2023-06-02-space-mines-markets.md | 0 .../2023-06-05-space-mines-agents.md | 0 ...3-06-14-why-i-dont-visit-reddit-anymore.md | 0 .../noteworthy/noteworthy.11tydata.js | 0 .../basic-server-monitoring-with-rrdtools.md | 0 .../content}/projects/clover-coverage-cli.md | 0 .../content}/projects/code-coverage-info.md | 0 {content => src/content}/projects/colour.md | 0 .../projects/confusable-homoglyphs.md | 0 {content => src/content}/projects/draughts.md | 0 .../projects/eleventyjs-blogtimes-plugin.md | 0 .../eleventyjs-font-subsetting-plugin.md | 0 .../projects/eleventyjs-interlink-plugin.md | 0 .../projects/eleventyjs-word-stats-plugin.md | 0 .../content}/projects/floppy-box.md | 0 .../content}/projects/go-git-archive.md | 0 .../content}/projects/go-pixels-fight.md | 0 .../content}/projects/go-space-mines.md | 0 .../laravel-registration-validator.md | 0 .../projects/laravel-remember-uploads.md | 0 .../content}/projects/ldpl-space-mines.md | 0 .../content}/projects/ldpl-spark.md | 0 .../content}/projects/like-pie-net.md | 0 .../content}/projects/php-rrdtool-helpers.md | 0 {content => src/content}/projects/php-urls.md | 0 .../content}/projects/portcullis.md | 0 .../content}/projects/projects.11tydata.js | 0 .../content}/projects/space-mines.md | 0 {content => src/content}/projects/t-irc.md | 0 {content => src/content}/projects/todo-ci.md | 0 .../content}/projects/tuppence-boilerplate.md | 0 {content => src/content}/projects/tuppence.md | 0 .../bookmarks/2021-05-10-gereds-ramblings.md | 0 .../2021-06-23-tobias-girstmairs-website.md | 0 .../bookmarks/2021-08-06-john-mathews-blog.md | 0 .../2021-08-06-kyle-shooks-website.md | 0 .../bookmarks/2021-10-30-susams-blog.md | 0 .../2021-12-22-brad-taunts-brain-dump.md | 0 .../bookmarks/2021-12-22-jaana-dogans-blog.md | 0 .../2021-12-22-jacques-corby-tuech-website.md | 0 .../2021-12-22-mark-llobreras-blog.md | 0 .../2021-12-22-the-blog-of-andrew-stephens.md | 0 ...-12-22-the-computers-are-bad-newsletter.md | 0 .../2021-12-22-xe-christine-dodrill-blog.md | 0 .../bookmarks/2022-02-15-benjojos-blog.md | 0 .../bookmarks/2022-02-15-brents-blog.md | 0 .../2022-02-15-fabien-sanglards-website.md | 0 .../bookmarks/2022-02-15-lauren-tans-blog.md | 0 .../2022-03-16-alejandros-website.md | 0 .../2022-03-16-jake-howards-website.md | 0 .../2022-03-16-simon-willisons-weblog.md | 0 ...-03-16-the-ethically-trained-programmer.md | 0 .../2022-03-21-evan-boehs-website.md | 0 ...022-08-31-tom-critchlows-digital-garden.md | 0 .../2022-08-31-yuri-vishnevskys-website.md | 0 .../2023-02-02-caleb-hearths-blog.md | 0 .../2023-02-02-florin-lipans-website.md | 0 .../2023-02-02-tim-hareks-website.md | 0 .../2023-02-03-bjorn-staerks-website.md | 0 .../bookmarks/2023-02-07-andy-bells-blog.md | 0 .../2023-02-08-koos-looijesteijns-website.md | 0 ...martin-heinzs-personal-website-and-blog.md | 0 .../2023-02-09-travis-shears-personal-site.md | 0 .../2023-02-16-ivan-safrins-website.md | 0 ...t-calendar-with-github-actions-and-11ty.md | 0 .../bookmarks/2023-03-08-pile-of-hrefs.md | 0 .../2023-03-08-the-residual-media-depot.md | 0 .../2023-03-09-rach-smiths-digital-garden.md | 0 .../2023-03-10-jake-lazaroffs-website.md | 0 .../2023-03-10-tendigits-digital-garden.md | 0 ...23-03-19-activity-pub-vs-web-frameworks.md | 0 ...an-a-fungus-really-take-over-our-brains.md | 0 ...9-docker-is-deleting-open-source-images.md | 0 .../resources/bookmarks/2023-03-19-dreamm.md | 0 ...compelling-case-for-worst-human-of-2023.md | 0 .../2023-03-19-roguelike-simulator.md | 0 ...3-19-secret-colours-of-the-commodore-64.md | 0 .../bookmarks/2023-03-19-the-grind-a-day.md | 0 .../bookmarks/2023-03-19-vic-20-listings.md | 0 .../bookmarks/2023-03-19-webgbcam.md | 0 .../bookmarks/2023-03-19-weird-web-pages.md | 0 .../2023-03-20-im-a-very-slow-thinker.md | 0 .../2023-03-21-laying-out-a-book-with-css.md | 0 .../2023-04-02-ad-manager-for-laravel.md | 0 .../bookmarks/2023-04-02-bang-bang-con.md | 0 ...23-04-02-the-church-forests-of-ethiopia.md | 0 ...books-bookshop-org-thrives-amazon-world.md | 0 ...-04-16-how-hypercard-got-its-color-back.md | 0 .../bookmarks/2023-04-16-simple-icons-org.md | 0 ...dvanced-in-memory-caching-module-for-js.md | 0 .../2023-04-23-booting-modern-intel-cpus.md | 0 .../2023-04-23-console-log-on-screen.md | 0 ...application-on-aws-using-sst-serverless.md | 0 ...04-23-just-update-rules-between-neurons.md | 0 ...-low-code-software-development-is-a-lie.md | 0 ...ine-is-just-online-with-extreme-latency.md | 0 ...se-a-lot-more-damage-than-anyone-thinks.md | 0 ...why-developers-never-use-state-machines.md | 0 ...023-04-23-you-didnt-just-do-that-heroku.md | 0 .../2023-04-30-first-rom-shadowing.md | 0 ...3-04-30-why-is-oauth-still-hard-in-2023.md | 0 .../2023-04-30-windows-nt-on-bull-estrella.md | 0 ...023-05-05-are-we-making-lambda-too-hard.md | 0 ...r-parsing-and-manipulating-html-and-xml.md | 0 ...-matter-developers-the-unseen-99percent.md | 0 ...05-05-eyecandy-visual-technique-library.md | 0 .../bookmarks/2023-05-05-game-boy-camera.md | 0 ...private-class-fields-considered-harmful.md | 0 .../2023-05-05-procedural-planets.md | 0 ...xas-rocket-caused-a-big-mess-whats-next.md | 0 .../bookmarks/2023-05-05-vercel-markup.md | 0 ...2023-05-14-accu-conference-2023-bristol.md | 0 .../bookmarks/2023-05-14-bluesky-is-a-scam.md | 0 .../bookmarks/2023-05-14-c-dogs-sdl.md | 0 .../2023-05-14-creatures-that-dont-conform.md | 0 ...lding-stockfighter-our-programming-game.md | 0 .../2023-05-14-ian-bells-text-elite-page.md | 0 ...england-woodworking-and-power-tool-show.md | 0 ...3-web-development-conference-chicago-il.md | 0 ...05-14-recreating-windows-11-with-svelte.md | 0 ...cal-debt-and-softwares-gutenberg-moment.md | 0 .../bookmarks/2023-05-14-spacetraders-api.md | 0 .../2023-05-14-writing-on-your-palm.md | 0 ...-with-neo4j-openstreetmap-and-leafletjs.md | 0 .../2023-05-21-burning-down-the-house.md | 0 ...1-early-computer-art-in-the-50s-and-60s.md | 0 ...new-array-copying-methods-to-javascript.md | 0 .../bookmarks/2023-05-21-idle-dr-dos.md | 0 .../bookmarks/2023-05-21-php-perlin-noise.md | 0 ...gress-for-cp-mv-dd-formerly-known-as-cv.md | 0 ...ward-thinking-library-of-web-components.md | 0 .../bookmarks/2023-05-21-xstate-docs.md | 0 ...p-discover-files-in-need-of-refactoring.md | 0 ...-get-started-programming-with-dos-conio.md | 0 .../2023-05-28-halftone-qr-code-generator.md | 0 ...rsonalized-ai-assistant-written-by-rbot.md | 0 .../bookmarks/2023-05-28-laravel-pint.md | 0 ...fari-chrome-firefox-and-mobile-browsers.md | 0 .../bookmarks/2023-05-28-pop-calculator.md | 0 ...23-05-28-the-big-lie-of-good-fast-cheap.md | 0 ...nking-the-myth-of-dollar-cost-averaging.md | 0 ...oducing-utf-21-a-toy-character-encoding.md | 0 ...06-11-risc-v-cpu-core-written-in-ansi-c.md | 0 ...toot-that-browser-extension-for-firefox.md | 0 ...-and-district-model-engineering-society.md | 0 .../2023-06-18-an-america-less-internet.md | 0 .../bookmarks/2023-06-18-boing-directory.md | 0 ...s-8-bit-home-computer-with-just-5-chips.md | 0 ...nsert-spacers-when-command-output-stops.md | 0 ...description-of-command-line-interfaces.md" | 0 ...e-20-years-of-innovative-search-engines.md | 0 ...-party-leaders-have-undermined-politics.md | 0 ...8-pardus-free-browser-game-set-in-space.md | 0 ...ration-from-image-with-stable-diffusion.md | 0 .../bookmarks/2023-06-18-quic-to-mars.md | 0 .../2023-06-18-retro-forum-directory.md | 0 .../bookmarks/2023-06-18-retrotechnews.md | 0 ...php-using-raylib-snake-with-source-code.md | 0 .../2023-06-18-the-kingdom-of-loathing.md | 0 .../2023-06-18-timeline-of-the-far-future.md | 0 ...06-18-zeal-offline-documentation-viewer.md | 0 .../bookmarks/2023-06-25-blacknova-traders.md | 0 ...23-06-25-caching-inertias-ssr-responses.md | 0 ...5-etherdfs-the-ethernet-dos-file-system.md | 0 ...ssless-css-theme-with-dark-mode-support.md | 0 .../bookmarks/2023-06-25-improbable-island.md | 0 ...aravels-pagination-with-complex-queries.md | 0 ...ks-in-php-best-practices-and-techniques.md | 0 ...he-internet-to-test-your-web-dev-skills.md | 0 ...avel-app-by-caching-the-entire-response.md | 0 .../2023-06-25-the-kabal-invasion.md | 0 ...t-problem-is-getting-weird-with-chatgpt.md | 0 .../bookmarks/2023-06-25-wasabi-the-parts.md | 0 .../bookmarks/2023-06-25-xml-is-the-future.md | 0 ...-07-02-2200-forgotten-vintage-computers.md | 0 .../2023-07-02-id-software-open-source.md | 0 .../bookmarks/2023-07-02-regl-scatterplot.md | 0 ...2023-07-02-the-ladybird-browser-project.md | 0 ...organizing-your-digital-life-in-seconds.md | 0 .../2023-07-02-video-game-preservation.md | 0 .../resources/bookmarks/2023-07-09-2moons.md | 0 .../2023-07-09-a-286-running-like-a-386.md | 0 ...soffritti-in-never-buy-a-used-spaceship.md | 0 ...est-4000-a-game-based-on-tradewars-2002.md | 0 .../2023-07-09-enclosure-3-d-on-steam.md | 0 ...23-07-09-mastodon-powered-blog-comments.md | 0 ...scams-the-data-driven-advertising-grift.md | 0 .../bookmarks/2023-07-09-steem-nova.md | 0 ...023-07-09-til-in-is-not-the-same-as-any.md | 0 ...orlds-apart-trade-wars-2002-game-server.md | 0 ...023-07-09-wyesoft-tradewars-2002-server.md | 0 ...inting-needs-open-source-more-than-ever.md | 0 ...dvice-for-operating-a-public-facing-api.md | 0 ...2023-07-16-fediverse-network-statistics.md | 0 ...0m-in-3-years-by-not-going-to-the-cloud.md | 0 ...23-07-16-linear-interpolation-functions.md | 0 .../bookmarks/2023-07-21-sidebar-webring.md | 0 .../resources/bookmarks/2023-07-22-10nes.md | 0 .../2023-07-22-a-new-era-for-neopets.md | 0 ...-ambient-device-showing-nearby-aircraft.md | 0 ...-with-eleventy-devto-and-github-actions.md | 0 .../2023-07-22-awesome-looking-websites.md | 0 ...illion-software-error-at-knight-capital.md | 0 .../bookmarks/2023-07-22-chiptune-player.md | 0 .../2023-07-22-how-i-run-my-servers.md | 0 .../bookmarks/2023-07-22-jakemuseum.md | 0 ...23-07-22-jswm-javascript-window-manager.md | 0 ...-lazier-way-to-manage-everything-docker.md | 0 .../2023-07-22-merveilles-webring.md | 0 ...-22-minigpt4cpp-a-port-of-minigpt4-in-c.md | 0 .../bookmarks/2023-07-22-simply-parse-in-c.md | 0 ...ears-of-go-the-good-the-bad-and-the-meh.md | 0 .../bookmarks/2023-07-22-the-claw-webring.md | 0 ...2023-07-22-the-death-of-infosec-twitter.md | 0 .../bookmarks/2023-07-22-the-html-review.md | 0 ...d-and-fix-dangling-files-in-js-projects.md | 0 ...web-pages-weighing-less-than-1-kilobyte.md | 0 ...-of-web-pages-weighing-in-less-than-1mb.md | 0 ...history-and-ethos-of-the-digital-garden.md | 0 .../2023-07-23-brandur-leach-website.md | 0 ...3-07-23-maggie-appletons-digital-garden.md | 0 .../bookmarks/2023-07-23-the-arcade.md | 0 ...t-docker-image-to-serve-static-websites.md | 0 .../bookmarks/2023-07-23-xhtml-club.md | 0 ...iverse-accounts-about-geospatial-topics.md | 0 .../bookmarks/2023-07-30-camerons-world.md | 0 ...2023-07-30-curlie-the-collector-of-urls.md | 0 .../2023-07-30-existential-dread-inducer.md | 0 ...-nightwave-plaza-online-vaporwave-radio.md | 0 .../2023-07-30-star-trek-audioclips.md | 0 .../bookmarks/2023-08-02-anton-petrov.md | 0 .../2023-08-02-fallenshogun-gaming.md | 0 .../2023-08-02-graveyard-keeper-on-steam.md | 0 ...8-02-little-witch-in-the-woods-on-steam.md | 0 .../2023-08-02-prison-architect-on-steam.md | 0 .../bookmarks/2023-08-02-rimworld-on-steam.md | 0 .../bookmarks/2023-08-02-robot-cantina.md | 0 .../bookmarks/2023-08-02-splattercatgaming.md | 0 .../2023-08-02-stardew-valley-on-steam.md | 0 ...23-08-02-super-fantasy-kingdom-on-steam.md | 0 .../2023-08-02-travellers-rest-on-steam.md | 0 .../bookmarks/2023-08-04-dotage-on-steam.md | 0 ...f-the-classic-basic-computer-games-book.md | 0 ...95-microsoft-operating-system-for-linux.md | 0 ...ederated-social-groups-with-activitypub.md | 0 ...rld-of-credit-card-network-exploitation.md | 0 .../bookmarks/2023-08-06-mosaic-tetris.md | 0 ...08-06-my-journey-away-from-the-jamstack.md | 0 .../bookmarks/2023-08-06-openworm.md | 0 ...08-06-so-you-want-to-deploy-on-the-edge.md | 0 .../2023-08-06-space-wreck-on-steam.md | 0 ...textual-paint-ms-paint-in-your-terminal.md | 0 ...clicker-remote-were-a-mechanical-marvel.md | 0 ...the-proposal-to-enhance-gos-http-router.md | 0 .../bookmarks/2023-08-06-town-of-zzt.md | 0 .../2023-08-06-vintage-basic-games.md | 0 ...is-the-most-minimal-uk-address-possible.md | 0 ...8-06-worlds-tallest-wooden-wind-turbine.md | 0 .../2023-08-06-x86-is-dead-long-live-x86.md | 0 .../bookmarks/2023-08-11-em-reeds-website.md | 0 .../2023-08-11-fun-with-virtualization.md | 0 .../2023-08-11-low-tech-webring-directory.md | 0 .../bookmarks/2023-08-11-mindspike.md | 0 .../bookmarks/2023-08-11-sinewave.md | 0 .../2023-08-12-always-your-pal-melon.md | 0 .../bookmarks/2023-08-12-cinnis-oekaki.md | 0 .../2023-08-16-no-lab-coat-required.md | 0 ...2023-10-04-swords-of-freeport-on-itchio.md | 0 .../2023-10-06-crop-rotation-on-steam.md | 0 ...10-06-shadows-of-the-afterland-on-steam.md | 0 .../resources/bookmarks/bookmarks.11tydata.js | 0 .../resources/books/2021-06-23-OL4435177M.md | 0 .../resources/books/2022-08-24-OL28929668M.md | 0 .../resources/books/2023-03-13-OL21460217M.md | 0 .../resources/books/2023-03-13-OL27707384M.md | 0 .../resources/books/2023-03-13-OL27757581M.md | 0 .../resources/books/2023-03-13-OL27995439M.md | 0 .../resources/books/2023-03-13-OL28186418M.md | 0 .../resources/books/2023-03-13-OL29489155M.md | 0 .../resources/books/2023-03-15-OL28703772M.md | 0 .../resources/books/2023-03-15-OL9317753M.md | 0 .../resources/books/books.11tydata.js | 0 .../resources/jokes/2022-09-04-dad-joke-1.md | 0 .../resources/jokes/2022-09-04-dad-joke-2.md | 0 .../resources/jokes/2023-04-02-dad-joke-33.md | 0 .../resources/jokes/2023-04-16-dad-joke-34.md | 0 .../resources/jokes/2023-04-23-dad-joke-35.md | 0 .../resources/jokes/2023-04-30-dad-joke-36.md | 0 .../resources/jokes/2023-05-07-dad-joke-37.md | 0 .../resources/jokes/2023-05-14-dad-joke-38.md | 0 .../resources/jokes/2023-05-21-dad-joke-39.md | 0 .../resources/jokes/2023-05-28-dad-joke-40.md | 0 .../resources/jokes/2023-06-04-dad-joke-41.md | 0 .../resources/jokes/2023-06-11-dad-joke-42.md | 0 .../resources/jokes/2023-06-18-dad-joke-43.md | 0 .../resources/jokes/2023-06-25-dad-joke-44.md | 0 .../resources/jokes/2023-07-02-dad-joke-45.md | 0 .../resources/jokes/2023-07-09-dad-joke-46.md | 0 .../resources/jokes/2023-07-16-dad-joke-47.md | 0 .../resources/jokes/2023-07-23-dad-joke-48.md | 0 .../resources/jokes/2023-07-30-dad-joke-49.md | 0 .../resources/jokes/2023-08-06-dad-joke-50.md | 0 ...andra-bracken-everyone-pulls-a-bad-card.md | 0 ...phillip-k-dick-my-phone-is-spying-on-me.md | 0 .../quotes/2022-06-26-nintendo-quit-screen.md | 0 .../quotes/2023-04-02-weekly-quote-33.md | 0 .../quotes/2023-04-16-weekly-quote-34.md | 0 .../quotes/2023-04-23-weekly-quote-35.md | 0 .../quotes/2023-04-30-weekly-quote-36.md | 0 .../quotes/2023-05-07-weekly-quote-37.md | 0 .../quotes/2023-05-14-weekly-quote-38.md | 0 .../quotes/2023-05-21-weekly-quote-39.md | 0 .../quotes/2023-05-28-weekly-quote-40.md | 0 .../quotes/2023-06-04-weekly-quote-41.md | 0 .../quotes/2023-06-11-weekly-quote-42.md | 0 .../quotes/2023-06-18-weekly-quote-43.md | 0 .../quotes/2023-06-25-weekly-quote-44.md | 0 .../quotes/2023-07-02-weekly-quote-45.md | 0 .../quotes/2023-07-09-weekly-quote-46.md | 0 .../quotes/2023-07-16-weekly-quote-47.md | 0 .../quotes/2023-07-23-weekly-quote-48.md | 0 .../quotes/2023-07-30-weekly-quote-49.md | 0 .../quotes/2023-08-06-weekly-quote-50.md | 0 .../content}/resources/resources.11tydata.js | 0 .../2023-02-23-git-prune-local-branches.md | 0 ...awk-command-concat-txt-file-into-string.md | 0 .../2023-03-20-node-variable-length-hash.md | 0 ...6-is-rubber-ducky-coding-using-sods-law.md | 0 .../2015-06-23-a-revival-of-photogabble.md | 0 .../2016-01-03-happy-new-year-2015.md | 0 ...rer-is-dead-long-live-internet-explorer.md | 0 ...uilding-tuppence-the-pico-php-framework.md | 0 .../thoughts/2019-01-08-1-of-365-the-spark.md | 0 .../thoughts/2019-01-09-2-of-365-brain-fog.md | 0 ...-10-3-of-365-dumb-down-smart-technology.md | 0 ...19-01-11-4-of-365-its-a-van-life-for-me.md | 0 .../2019-01-12-5-of-365-exhaustion.md | 0 .../2019-01-13-6-of-365-green-fingers.md | 0 .../thoughts/2019-01-14-7-of-365-trunk.md | 0 .../2019-01-15-8-of-365-tilde-club.md | 0 .../thoughts/2019-02-14-9-of-365-hmm.md | 0 .../2019-02-15-10-of-365-velentines.md | 0 ...the-rabbit-hole-of-debugging-unit-tests.md | 0 .../2019-02-17-12-of-365-what-sparks-joy.md | 0 .../2019-02-18-13-of-365-tiny-homes.md | 0 ...019-02-22-14-of-365-thoughts-on-privacy.md | 0 ...-04-08-15-of-365-what-happened-to-march.md | 0 ...-16-of-365-mega-drive-the-addams-family.md | 0 .../thoughts/2019-04-11-17-of-365-noscript.md | 0 ...365-its-a-little-more-complex-than-that.md | 0 ...-19-of-365-html-is-by-design-accessible.md | 0 .../thoughts/2019-06-01-20-of-365-journeys.md | 0 ...-a-dystopian-future-humanities-best-bet.md | 0 ...2-22-of-365-grievances-with-writefreely.md | 0 .../thoughts/2020-10-11-a-revival-of-sorts.md | 0 ...dev-is-a-rabbit-hole-then-call-me-alice.md | 0 ...02-on-quitting-programing-for-carpentry.md | 0 .../2021-01-03-a-focus-on-birdsite-drama.md | 0 .../2022-02-15-the-robo-car-uprising.md | 0 .../thoughts/2022-06-18-wk-24-in-review.md | 0 .../2022-06-22-the-command-pattern.md | 0 .../thoughts/2022-06-26-wk-25-in-review.md | 0 .../thoughts/2022-07-03-wk-26-in-review.md | 0 .../thoughts/2022-07-10-wk-27-in-review.md | 0 .../thoughts/2022-07-24-wk-28-29-in-review.md | 0 .../thoughts/2022-07-31-wk-30-in-review.md | 0 .../thoughts/2022-08-08-wk-31-in-review.md | 0 .../thoughts/2022-08-14-wk-32-in-review.md | 0 .../thoughts/2022-08-28-wk-33-34-in-review.md | 0 .../thoughts/2022-09-04-wk-35-in-review.md | 0 ...022-09-06-thinking-about-doscember-2022.md | 0 .../thoughts/2022-09-11-wk-36-in-review.md | 0 .../thoughts/2022-09-18-wk-37-in-review.md | 0 .../thoughts/2022-10-02-wk-38-39-in-review.md | 0 .../2022-10-23-wk-40-41-42-in-review.md | 0 .../2022-11-13-wk-43-44-45-in-review.md | 0 .../thoughts/2022-11-20-wk-46-in-review.md | 0 .../thoughts/2022-11-27-wk-47-in-review.md | 0 .../thoughts/2022-12-04-wk48-in-review.md | 0 .../thoughts/2022-12-11-wk49-in-review.md | 0 .../thoughts/2022-12-18-wk50-in-review.md | 0 .../thoughts/2023-01-01-wk51-52-in-review.md | 0 .../2023-01-08-2023-wk-1-in-review.md | 0 .../2023-01-15-2023-wk-2-in-review.md | 0 .../thoughts/2023-01-21-near-future.md | 0 .../2023-01-22-2023-wk-3-in-review.md | 0 .../thoughts/2023-01-28-static-site-search.md | 0 .../2023-01-29-2023-wk-4-in-review.md | 0 .../2023-02-05-2023-wk-5-in-review.md | 0 .../2023-02-08-what-finished-looks-like.md | 0 .../2023-02-12-2023-wk-6-in-review.md | 0 .../2023-02-19-2023-wk-7-in-review.md | 0 .../2023-02-26-2023-wk-8-in-review.md | 0 .../2023-03-05-2023-wk-9-in-review.md | 0 ...-php-multiversion-install-with-homebrew.md | 0 .../2023-03-12-2023-wk-10-in-review.md | 0 ...ttp-handler-runner-working-with-phpunit.md | 0 .../thoughts/2023-03-17-why-netlify.md | 0 .../2023-03-19-2023-wk-11-in-review.md | 0 .../2023-04-02-2023-wk-12-13-in-review.md | 0 .../2023-04-16-2023-wk-14-in-review.md | 0 .../2023-04-23-2023-wk-15-in-review.md | 0 .../2023-04-30-2023-wk-16-in-review.md | 0 .../2023-05-07-2023-wk-17-in-review.md | 0 .../2023-05-14-2023-wk-18-in-review.md | 0 .../2023-05-21-2023-wk-19-in-review.md | 0 .../2023-05-28-2023-wk-20-in-review.md | 0 .../2023-06-04-2023-wk-21-in-review.md | 0 .../2023-06-11-2023-wk-22-in-review.md | 0 .../2023-06-18-2023-wk-23-in-review.md | 0 .../2023-06-25-2023-wk-24-in-review.md | 0 .../2023-07-02-2023-wk-25-in-review.md | 0 .../2023-07-09-2023-wk-26-in-review.md | 0 .../2023-07-16-2023-wk-27-in-review.md | 0 .../2023-07-23-2023-wk-28-in-review.md | 0 .../2023-07-30-2023-wk-29-in-review.md | 0 .../2023-08-01-23-of-365-project-revival.md | 0 ...-08-02-24-of-365-lk99-i-want-to-believe.md | 0 ...8-03-25-i-thoroughly-enjoy-grindy-games.md | 0 ...-26-of-365-pining-for-a-simple-internet.md | 0 .../2023-08-05-27-of-365-reboot-phobia.md | 0 .../2023-08-06-2023-wk-30-in-review.md | 0 ...ic-site-generation-why-i-wrote-tapestry.md | 0 .../2023-08-07-29-of-365-php-isnt-that-bad.md | 0 ...-more-bang-for-your-buck-with-dedicated.md | 0 .../thoughts/2023-08-09-31-of-365-code-rot.md | 0 ...2-of-365-cultivation-deflates-the-magic.md | 0 ...-365-saving-disk-space-used-by-mastodon.md | 0 .../content}/thoughts/thoughts.11tydata.js | 0 ...2009-06-11-installing-turbo-c-on-dosbox.md | 0 ...writing-a-pixel-editor-in-javascript-p1.md | 0 ...writing-a-pixel-editor-in-javascript-p2.md | 0 ...ate-privileged-properties-in-javascript.md | 0 ...writing-a-pixel-editor-in-javascript-p3.md | 0 ...setting-a-less-file-watcher-in-phpstorm.md | 0 ...how-to-set-composer-bin-path-in-windows.md | 0 ...-ansi-command-line-colors-under-windows.md | 0 ...malicious-login-attempts-using-fail2ban.md | 0 ...writing-a-pixel-editor-in-javascript-p4.md | 0 ...moji-support-to-your-website-or-project.md | 0 ...6-01-13-how-to-installl-azure-cli-tools.md | 0 ...17-05-01-weighted-random-number-picking.md | 0 ...o-config-vue-development-with-parcel-js.md | 0 ...ild-an-incremental-web-game-with-vue-js.md | 0 ...writing-a-pixel-editor-in-javascript-p5.md | 0 ...writing-a-pixel-editor-in-javascript-p6.md | 0 ...18-08-08-dependency-resolving-algorithm.md | 0 .../2021-06-21-sparklines-with-eleventy-js.md | 0 ...-17-creating-a-now-page-archive-in-11ty.md | 0 ...social-share-images-with-11ty-puppeteer.md | 0 ...-programatically-add-tags-posts-in-11ty.md | 0 .../tutorials/2023-02-03-normalising-tags.md | 0 .../2023-03-03-font-subsetting-with-11ty.md | 0 .../content}/tutorials/tutorials.11tydata.js | 0 dad-jokes.njk => src/dad-jokes.njk | 0 elsewhere.md => src/elsewhere.md | 0 feeds.njk => src/feeds.njk | 0 .../fonts}/iosevka-etoile-bold.subset.woff2 | Bin .../iosevka-etoile-bolditalic.subset.woff2 | Bin .../fonts}/iosevka-etoile-italic.subset.woff2 | Bin .../iosevka-etoile-regular.subset.woff2 | Bin {fonts => src/fonts}/vt323-regular.ttf | Bin glossary.njk => src/glossary.njk | 0 index.njk => src/index.njk | 0 .../legal}/affiliate-partnerships.md | 0 {legal => src/legal}/cookies.md | 0 {legal => src/legal}/privacy.md | 0 links.njk => src/links.njk | 0 {lists => src/lists}/film-and-tv.njk | 0 {lists => src/lists}/index.njk | 0 {lists => src/lists}/list.njk | 0 {lists => src/lists}/listened-to.njk | 0 newsletter.njk => src/newsletter.njk | 0 now.njk => src/now.njk | 0 {now => src/now}/2021-03-19.md | 0 {now => src/now}/2022-05-17.md | 0 {now => src/now}/2022-06-13.md | 0 {now => src/now}/2023-01-20.md | 0 {now => src/now}/2023-02-01.md | 0 {now => src/now}/2023-08-16.md | 0 {now => src/now}/now.11tydata.js | 2 +- projects.njk => src/projects.njk | 0 quotes.njk => src/quotes.njk | 0 {resources => src/resources}/index.njk | 0 {resources => src/resources}/types.njk | 0 robots.txt => src/robots.txt | 0 rss.njk => src/rss.njk | 0 special-thanks.md => src/special-thanks.md | 0 stats.njk => src/stats.njk | 0 styleguide.md => src/styleguide.md | 0 {styles => src/styles}/blank.css | 0 {styles => src/styles}/components/_books.css | 0 {styles => src/styles}/components/_button.css | 0 {styles => src/styles}/components/_figure.css | 0 {styles => src/styles}/components/_fonts.css | 0 {styles => src/styles}/components/_footer.css | 43 +++++++++++++++++- .../styles}/components/_post-list.css | 0 .../styles}/components/_review_list.css | 0 {styles => src/styles}/components/_table.css | 0 {styles => src/styles}/components/_themes.css | 0 {styles => src/styles}/main.css | 16 +++++-- topic.njk => src/topic.njk | 0 topics.njk => src/topics.njk | 0 types.njk => src/types.njk | 0 uses.md => src/uses.md | 0 {writing => src/writing}/archive.njk | 0 {writing => src/writing}/index.njk | 0 628 files changed, 76 insertions(+), 17 deletions(-) rename 404.njk => src/404.njk (100%) rename {_data => src/_data}/books.js (100%) rename {_data => src/_data}/bookwyrm.js (98%) rename {_data => src/_data}/build.js (100%) rename {_data => src/_data}/dadjokes.js (100%) rename {_data => src/_data}/eleventyComputed.js (100%) rename {_data => src/_data}/links.js (100%) rename {_data => src/_data}/lists-meta.js (100%) rename {_data => src/_data}/metadata.js (100%) rename {_data => src/_data}/movies.js (100%) rename {_data => src/_data}/people.js (100%) rename {_data => src/_data}/quotes.js (100%) rename {_data => src/_data}/themes.js (100%) rename {_includes => src/_includes}/components/backlinks.njk (100%) rename {_includes => src/_includes}/components/book-grid.njk (100%) rename {_includes => src/_includes}/components/book-layout-inspiration.njk (100%) rename {_includes => src/_includes}/components/growth.njk (100%) rename {_includes => src/_includes}/components/hot-topics.njk (100%) rename {_includes => src/_includes}/components/months-of-year.njk (100%) rename {_includes => src/_includes}/components/planting-times.njk (100%) rename {_includes => src/_includes}/components/post-list-line.njk (100%) rename {_includes => src/_includes}/components/post-list.njk (100%) rename {_includes => src/_includes}/components/series-list.njk (100%) rename {_includes => src/_includes}/components/tag-list.njk (100%) rename {_includes => src/_includes}/components/wayback-machine.njk (100%) rename {_includes => src/_includes}/layouts/base.njk (100%) rename {_includes => src/_includes}/layouts/blank-base.njk (100%) rename {_includes => src/_includes}/layouts/book.njk (100%) rename {_includes => src/_includes}/layouts/bookmark-embed.liquid (100%) rename {_includes => src/_includes}/layouts/embed.liquid (92%) rename {_includes => src/_includes}/layouts/list-button-board.njk (100%) rename {_includes => src/_includes}/layouts/list-default.njk (100%) rename {_includes => src/_includes}/layouts/list-posts.njk (100%) rename {_includes => src/_includes}/layouts/now.njk (100%) rename {_includes => src/_includes}/layouts/page-post.njk (100%) rename {_includes => src/_includes}/layouts/page-resource-link.njk (100%) rename {_includes => src/_includes}/layouts/page-resource.njk (100%) rename {_includes => src/_includes}/layouts/page.njk (100%) rename {_includes => src/_includes}/layouts/project.njk (100%) rename about.njk => src/about.njk (100%) rename antilibrary.njk => src/antilibrary.njk (100%) rename blank.njk => src/blank.njk (100%) rename books.njk => src/books.njk (100%) rename breadcrumbs.md => src/breadcrumbs.md (100%) rename button-board.njk => src/button-board.njk (100%) rename colophon.njk => src/colophon.njk (100%) rename {content => src/content}/colophon/2022-09-02-updating-content-list-design.md (100%) rename {content => src/content}/colophon/2022-09-07-adding-favicon.md (100%) rename {content => src/content}/colophon/2022-09-08-cool-urls-dont-change.md (100%) rename {content => src/content}/colophon/2022-09-16-adding-enhanced-opengraph-meta.md (100%) rename {content => src/content}/colophon/2023-01-20-adding-stats.md (100%) rename {content => src/content}/colophon/2023-01-27-stub-posts.md (100%) rename {content => src/content}/colophon/2023-02-13-marking-external-links.md (100%) rename {content => src/content}/colophon/2023-03-14-alphabetising-glossary.md (100%) rename {content => src/content}/colophon/colophon.11tydata.js (100%) rename {content => src/content}/content.11tydata.js (89%) rename {content => src/content}/essays/2014-12-31-keep-blogging-fun.md (100%) rename {content => src/content}/essays/2017-05-02-happy-fiftyth-birthday-basic.md (100%) rename {content => src/content}/essays/2023-01-30-the-small-web.md (100%) rename {content => src/content}/essays/2023-02-27-self-hosting-is-the-new-old-web.md (100%) rename {content => src/content}/essays/2023-03-08-linkrot.md (100%) rename {content => src/content}/essays/2023-03-10-blogtimes-the-second-wordpress-plugin.md (100%) rename {content => src/content}/essays/2023-03-15-where-did-all-the-web-rings-go.md (100%) rename {content => src/content}/essays/essays.11tydata.js (100%) rename {content => src/content}/glossary/2022-03-16-growth.md (100%) rename {content => src/content}/glossary/2022-05-26-content-types.md (100%) rename {content => src/content}/glossary/2023-01-19-minimalism.md (100%) rename {content => src/content}/glossary/2023-01-20-rabbit-hole.md (100%) rename {content => src/content}/glossary/2023-03-01-yak-shaving.md (100%) rename {content => src/content}/glossary/2023-03-14-good-enough.md (100%) rename {content => src/content}/glossary/glossary.11tydata.js (100%) rename {content => src/content}/mirrored/2022-09-02-matt-mullenweg-wordpress-blogtimes-plugin-php.md (100%) rename {content => src/content}/mirrored/2022-09-02-sanjay-sheth-b2blogtime-php.md (100%) rename {content => src/content}/mirrored/mirrored.11tydata.js (100%) rename {content => src/content}/noteworthy/2007-04-20-time-since.md (100%) rename {content => src/content}/noteworthy/2009-06-09-kareltima-iii-the-self-beating-machine.md (100%) rename {content => src/content}/noteworthy/2009-06-10-mission-mainframe.md (100%) rename {content => src/content}/noteworthy/2015-02-15-pixel-mainframe.md (100%) rename {content => src/content}/noteworthy/2015-05-13-graphing-ping-response-times-with-gping.md (100%) rename {content => src/content}/noteworthy/2015-05-18-nested-queries-in-laravels-query-builder.md (100%) rename {content => src/content}/noteworthy/2016-01-08-useful-free-stock-photography-libraries.md (100%) rename {content => src/content}/noteworthy/2016-01-10-freezetime-browser-game-by-patrick.md (100%) rename {content => src/content}/noteworthy/2016-01-15-jzz-the-awesome-homage-to-the-zzt-game.md (100%) rename {content => src/content}/noteworthy/2017-04-27-think-with-google-test-my-site.md (100%) rename {content => src/content}/noteworthy/2017-05-05-basic-space-mines-port-to-golang.md (100%) rename {content => src/content}/noteworthy/2017-05-10-the-qb64-programming-language.md (100%) rename {content => src/content}/noteworthy/2017-05-12-bounce-in-qb64.md (100%) rename {content => src/content}/noteworthy/2017-05-15-thoughts-on-go-access.md (100%) rename {content => src/content}/noteworthy/2017-05-17-a-review-of-rimworld-a16-after-100-hours-ingame.md (100%) rename {content => src/content}/noteworthy/2018-04-27-a-review-of-the-godville-game.md (100%) rename {content => src/content}/noteworthy/2018-05-02-revisiting-google-website-speed-testing-tool.md (100%) rename {content => src/content}/noteworthy/2022-03-16-a-11ty-reading-time-plugin-quest.md (100%) rename {content => src/content}/noteworthy/2022-08-25-php-space-mines-introduction.md (100%) rename {content => src/content}/noteworthy/2022-09-01-blogtimes.md (100%) rename {content => src/content}/noteworthy/2022-12-15-generating-random-numbers-over-a-range-in-go.md (100%) rename {content => src/content}/noteworthy/2023-01-01-toshiba-t1200.md (100%) rename {content => src/content}/noteworthy/2023-01-01-toshiba-t5100.md (100%) rename {content => src/content}/noteworthy/2023-01-23-defrag-like-its-1992.md (100%) rename {content => src/content}/noteworthy/2023-01-25-wiki-links.md (100%) rename {content => src/content}/noteworthy/2023-01-27-twtxt-decentralised-minimalist-microblogging.md (100%) rename {content => src/content}/noteworthy/2023-02-03-solving-logi-webcam-ripple-on-osx.md (100%) rename {content => src/content}/noteworthy/2023-02-12-my-publishing-workflow.md (100%) rename {content => src/content}/noteworthy/2023-02-28-romvlvs.md (100%) rename {content => src/content}/noteworthy/2023-03-01-jzt-is-now-opensource.md (100%) rename {content => src/content}/noteworthy/2023-03-20-writing-blogtimes-for-eleventy-js.md (100%) rename {content => src/content}/noteworthy/2023-03-31-lost-smiley-ascii-dos-games.md (100%) rename {content => src/content}/noteworthy/2023-04-30-space-mines-april-changelog.md (100%) rename {content => src/content}/noteworthy/2023-05-12-space-mines-introduction.md (100%) rename {content => src/content}/noteworthy/2023-05-15-space-mines-design-language.md (100%) rename {content => src/content}/noteworthy/2023-05-17-space-mines-resource-extraction.md (100%) rename {content => src/content}/noteworthy/2023-05-19-space-mines-resource-processing.md (100%) rename {content => src/content}/noteworthy/2023-05-22-space-mines-manufacturing.md (100%) rename {content => src/content}/noteworthy/2023-05-24-space-mines-research.md (100%) rename {content => src/content}/noteworthy/2023-05-26-space-mines-outfitting.md (100%) rename {content => src/content}/noteworthy/2023-05-29-space-mines-maintenance.md (100%) rename {content => src/content}/noteworthy/2023-05-30-space-mines-may-changelog.md (100%) rename {content => src/content}/noteworthy/2023-05-31-space-mines-crew-morale.md (100%) rename {content => src/content}/noteworthy/2023-06-02-space-mines-markets.md (100%) rename {content => src/content}/noteworthy/2023-06-05-space-mines-agents.md (100%) rename {content => src/content}/noteworthy/2023-06-14-why-i-dont-visit-reddit-anymore.md (100%) rename {content => src/content}/noteworthy/noteworthy.11tydata.js (100%) rename {content => src/content}/projects/basic-server-monitoring-with-rrdtools.md (100%) rename {content => src/content}/projects/clover-coverage-cli.md (100%) rename {content => src/content}/projects/code-coverage-info.md (100%) rename {content => src/content}/projects/colour.md (100%) rename {content => src/content}/projects/confusable-homoglyphs.md (100%) rename {content => src/content}/projects/draughts.md (100%) rename {content => src/content}/projects/eleventyjs-blogtimes-plugin.md (100%) rename {content => src/content}/projects/eleventyjs-font-subsetting-plugin.md (100%) rename {content => src/content}/projects/eleventyjs-interlink-plugin.md (100%) rename {content => src/content}/projects/eleventyjs-word-stats-plugin.md (100%) rename {content => src/content}/projects/floppy-box.md (100%) rename {content => src/content}/projects/go-git-archive.md (100%) rename {content => src/content}/projects/go-pixels-fight.md (100%) rename {content => src/content}/projects/go-space-mines.md (100%) rename {content => src/content}/projects/laravel-registration-validator.md (100%) rename {content => src/content}/projects/laravel-remember-uploads.md (100%) rename {content => src/content}/projects/ldpl-space-mines.md (100%) rename {content => src/content}/projects/ldpl-spark.md (100%) rename {content => src/content}/projects/like-pie-net.md (100%) rename {content => src/content}/projects/php-rrdtool-helpers.md (100%) rename {content => src/content}/projects/php-urls.md (100%) rename {content => src/content}/projects/portcullis.md (100%) rename {content => src/content}/projects/projects.11tydata.js (100%) rename {content => src/content}/projects/space-mines.md (100%) rename {content => src/content}/projects/t-irc.md (100%) rename {content => src/content}/projects/todo-ci.md (100%) rename {content => src/content}/projects/tuppence-boilerplate.md (100%) rename {content => src/content}/projects/tuppence.md (100%) rename {content => src/content}/resources/bookmarks/2021-05-10-gereds-ramblings.md (100%) rename {content => src/content}/resources/bookmarks/2021-06-23-tobias-girstmairs-website.md (100%) rename {content => src/content}/resources/bookmarks/2021-08-06-john-mathews-blog.md (100%) rename {content => src/content}/resources/bookmarks/2021-08-06-kyle-shooks-website.md (100%) rename {content => src/content}/resources/bookmarks/2021-10-30-susams-blog.md (100%) rename {content => src/content}/resources/bookmarks/2021-12-22-brad-taunts-brain-dump.md (100%) rename {content => src/content}/resources/bookmarks/2021-12-22-jaana-dogans-blog.md (100%) rename {content => src/content}/resources/bookmarks/2021-12-22-jacques-corby-tuech-website.md (100%) rename {content => src/content}/resources/bookmarks/2021-12-22-mark-llobreras-blog.md (100%) rename {content => src/content}/resources/bookmarks/2021-12-22-the-blog-of-andrew-stephens.md (100%) rename {content => src/content}/resources/bookmarks/2021-12-22-the-computers-are-bad-newsletter.md (100%) rename {content => src/content}/resources/bookmarks/2021-12-22-xe-christine-dodrill-blog.md (100%) rename {content => src/content}/resources/bookmarks/2022-02-15-benjojos-blog.md (100%) rename {content => src/content}/resources/bookmarks/2022-02-15-brents-blog.md (100%) rename {content => src/content}/resources/bookmarks/2022-02-15-fabien-sanglards-website.md (100%) rename {content => src/content}/resources/bookmarks/2022-02-15-lauren-tans-blog.md (100%) rename {content => src/content}/resources/bookmarks/2022-03-16-alejandros-website.md (100%) rename {content => src/content}/resources/bookmarks/2022-03-16-jake-howards-website.md (100%) rename {content => src/content}/resources/bookmarks/2022-03-16-simon-willisons-weblog.md (100%) rename {content => src/content}/resources/bookmarks/2022-03-16-the-ethically-trained-programmer.md (100%) rename {content => src/content}/resources/bookmarks/2022-03-21-evan-boehs-website.md (100%) rename {content => src/content}/resources/bookmarks/2022-08-31-tom-critchlows-digital-garden.md (100%) rename {content => src/content}/resources/bookmarks/2022-08-31-yuri-vishnevskys-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-02-caleb-hearths-blog.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-02-florin-lipans-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-02-tim-hareks-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-03-bjorn-staerks-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-07-andy-bells-blog.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-08-koos-looijesteijns-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-09-martin-heinzs-personal-website-and-blog.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-09-travis-shears-personal-site.md (100%) rename {content => src/content}/resources/bookmarks/2023-02-16-ivan-safrins-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-08-automating-advent-calendar-with-github-actions-and-11ty.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-08-pile-of-hrefs.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-08-the-residual-media-depot.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-09-rach-smiths-digital-garden.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-10-jake-lazaroffs-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-10-tendigits-digital-garden.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-activity-pub-vs-web-frameworks.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-can-a-fungus-really-take-over-our-brains.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-docker-is-deleting-open-source-images.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-dreamm.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-elon-musks-compelling-case-for-worst-human-of-2023.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-roguelike-simulator.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-secret-colours-of-the-commodore-64.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-the-grind-a-day.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-vic-20-listings.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-webgbcam.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-19-weird-web-pages.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-20-im-a-very-slow-thinker.md (100%) rename {content => src/content}/resources/bookmarks/2023-03-21-laying-out-a-book-with-css.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-02-ad-manager-for-laravel.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-02-bang-bang-con.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-02-the-church-forests-of-ethiopia.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-16-books-bookshop-org-thrives-amazon-world.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-16-how-hypercard-got-its-color-back.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-16-simple-icons-org.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-advanced-in-memory-caching-module-for-js.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-booting-modern-intel-cpus.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-console-log-on-screen.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-deploy-a-nuxt-3-application-on-aws-using-sst-serverless.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-just-update-rules-between-neurons.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-low-code-software-development-is-a-lie.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-offline-is-just-online-with-extreme-latency.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-spacexs-texas-rocket-is-going-to-cause-a-lot-more-damage-than-anyone-thinks.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-why-developers-never-use-state-machines.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-23-you-didnt-just-do-that-heroku.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-30-first-rom-shadowing.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-30-why-is-oauth-still-hard-in-2023.md (100%) rename {content => src/content}/resources/bookmarks/2023-04-30-windows-nt-on-bull-estrella.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-are-we-making-lambda-too-hard.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-cheeriojs-fast-flexible-and-elegant-library-for-parsing-and-manipulating-html-and-xml.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-dark-matter-developers-the-unseen-99percent.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-eyecandy-visual-technique-library.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-game-boy-camera.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-js-private-class-fields-considered-harmful.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-procedural-planets.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-spacexs-texas-rocket-caused-a-big-mess-whats-next.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-05-vercel-markup.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-accu-conference-2023-bristol.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-bluesky-is-a-scam.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-c-dogs-sdl.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-creatures-that-dont-conform.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-designing-and-building-stockfighter-our-programming-game.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-ian-bells-text-elite-page.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-north-of-england-woodworking-and-power-tool-show.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-php[tek]-2023-web-development-conference-chicago-il.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-recreating-windows-11-with-svelte.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-societys-technical-debt-and-softwares-gutenberg-moment.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-spacetraders-api.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-14-writing-on-your-palm.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-build-a-routing-web-app-with-neo4j-openstreetmap-and-leafletjs.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-burning-down-the-house.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-early-computer-art-in-the-50s-and-60s.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-es2023-introduces-new-array-copying-methods-to-javascript.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-idle-dr-dos.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-php-perlin-noise.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-progress-linux-tool-to-show-progress-for-cp-mv-dd-formerly-known-as-cv.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-shoelace-a-forward-thinking-library-of-web-components.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-21-xstate-docs.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-churn-php-discover-files-in-need-of-refactoring.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-get-started-programming-with-dos-conio.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-halftone-qr-code-generator.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-introducing-rbot-a-personalized-ai-assistant-written-by-rbot.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-laravel-pint.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-obsidian-web-clipper-bookmarklet-to-save-articles-and-pages-from-the-web-for-safari-chrome-firefox-and-mobile-browsers.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-pop-calculator.md (100%) rename {content => src/content}/resources/bookmarks/2023-05-28-the-big-lie-of-good-fast-cheap.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-11-debunking-the-myth-of-dollar-cost-averaging.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-11-introducing-utf-21-a-toy-character-encoding.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-11-risc-v-cpu-core-written-in-ansi-c.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-11-toot-that-browser-extension-for-firefox.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-admes-andover-and-district-model-engineering-society.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-an-america-less-internet.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-boing-directory.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-build-this-8-bit-home-computer-with-just-5-chips.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-cli-tool-to-insert-spacers-when-command-output-stops.md (100%) rename "content/resources/bookmarks/2023-06-18-docopt\342\200\224language-for-description-of-command-line-interfaces.md" => "src/content/resources/bookmarks/2023-06-18-docopt\342\200\224language-for-description-of-command-line-interfaces.md" (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-finding-stuff-online-20-years-of-innovative-search-engines.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-over-powerful-party-leaders-have-undermined-politics.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-pardus-free-browser-game-set-in-space.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-qr-code-generation-from-image-with-stable-diffusion.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-quic-to-mars.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-retro-forum-directory.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-retrotechnews.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-simple-php-game-in-php-using-raylib-snake-with-source-code.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-the-kingdom-of-loathing.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-timeline-of-the-far-future.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-18-zeal-offline-documentation-viewer.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-blacknova-traders.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-caching-inertias-ssr-responses.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-etherdfs-the-ethernet-dos-file-system.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-holidaycss-minimalist-classless-css-theme-with-dark-mode-support.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-improbable-island.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-improve-performance-of-laravels-pagination-with-complex-queries.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-running-long-running-tasks-in-php-best-practices-and-techniques.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-schnitzeljagddev-scavenger-hunt-on-the-internet-to-test-your-web-dev-skills.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-speed-up-your-laravel-app-by-caching-the-entire-response.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-the-kabal-invasion.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-twitters-bot-problem-is-getting-weird-with-chatgpt.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-wasabi-the-parts.md (100%) rename {content => src/content}/resources/bookmarks/2023-06-25-xml-is-the-future.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-02-2200-forgotten-vintage-computers.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-02-id-software-open-source.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-02-regl-scatterplot.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-02-the-ladybird-browser-project.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-02-the-para-method-the-simple-system-for-organizing-your-digital-life-in-seconds.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-02-video-game-preservation.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-2moons.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-a-286-running-like-a-386.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-clotilde-soffritti-in-never-buy-a-used-spaceship.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-conquest-4000-a-game-based-on-tradewars-2002.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-enclosure-3-d-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-mastodon-powered-blog-comments.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-scams-upon-scams-the-data-driven-advertising-grift.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-steem-nova.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-til-in-is-not-the-same-as-any.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-worlds-apart-trade-wars-2002-game-server.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-09-wyesoft-tradewars-2002-server.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-16-3d-printing-needs-open-source-more-than-ever.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-16-advice-for-operating-a-public-facing-api.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-16-fediverse-network-statistics.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-16-how-ahrefs-saved-usdollar400m-in-3-years-by-not-going-to-the-cloud.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-16-linear-interpolation-functions.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-21-sidebar-webring.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-10nes.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-a-new-era-for-neopets.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-aeronear-an-ambient-device-showing-nearby-aircraft.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-automate-syndication-of-your-content-with-eleventy-devto-and-github-actions.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-awesome-looking-websites.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-case-study-4-the-dollar440-million-software-error-at-knight-capital.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-chiptune-player.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-how-i-run-my-servers.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-jakemuseum.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-jswm-javascript-window-manager.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-lazydocker-the-lazier-way-to-manage-everything-docker.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-merveilles-webring.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-minigpt4cpp-a-port-of-minigpt4-in-c.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-simply-parse-in-c.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-ten-years-of-go-the-good-the-bad-and-the-meh.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-the-claw-webring.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-the-death-of-infosec-twitter.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-the-html-review.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-22-unimported-find-and-fix-dangling-files-in-js-projects.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-1kb-club-a-collection-of-web-pages-weighing-less-than-1-kilobyte.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-1mb-club-a-collection-of-web-pages-weighing-in-less-than-1mb.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-a-brief-history-and-ethos-of-the-digital-garden.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-brandur-leach-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-maggie-appletons-digital-garden.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-the-arcade.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-the-smallest-docker-image-to-serve-static-websites.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-23-xhtml-club.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-30-a-list-of-fediverse-accounts-about-geospatial-topics.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-30-camerons-world.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-30-curlie-the-collector-of-urls.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-30-existential-dread-inducer.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-30-nightwave-plaza-online-vaporwave-radio.md (100%) rename {content => src/content}/resources/bookmarks/2023-07-30-star-trek-audioclips.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-anton-petrov.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-fallenshogun-gaming.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-graveyard-keeper-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-little-witch-in-the-woods-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-prison-architect-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-rimworld-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-robot-cantina.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-splattercatgaming.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-stardew-valley-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-super-fantasy-kingdom-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-02-travellers-rest-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-04-dotage-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-an-updated-version-of-the-classic-basic-computer-games-book.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-chicago95-a-rendition-of-everyones-favorite-1995-microsoft-operating-system-for-linux.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-guppe-federated-social-groups-with-activitypub.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-how-i-discovered-the-underground-world-of-credit-card-network-exploitation.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-mosaic-tetris.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-my-journey-away-from-the-jamstack.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-openworm.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-so-you-want-to-deploy-on-the-edge.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-space-wreck-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-textual-paint-ms-paint-in-your-terminal.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-the-buttons-on-zeniths-original-clicker-remote-were-a-mechanical-marvel.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-the-proposal-to-enhance-gos-http-router.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-town-of-zzt.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-vintage-basic-games.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-what-is-the-most-minimal-uk-address-possible.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-worlds-tallest-wooden-wind-turbine.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-06-x86-is-dead-long-live-x86.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-11-em-reeds-website.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-11-fun-with-virtualization.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-11-low-tech-webring-directory.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-11-mindspike.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-11-sinewave.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-12-always-your-pal-melon.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-12-cinnis-oekaki.md (100%) rename {content => src/content}/resources/bookmarks/2023-08-16-no-lab-coat-required.md (100%) rename {content => src/content}/resources/bookmarks/2023-10-04-swords-of-freeport-on-itchio.md (100%) rename {content => src/content}/resources/bookmarks/2023-10-06-crop-rotation-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/2023-10-06-shadows-of-the-afterland-on-steam.md (100%) rename {content => src/content}/resources/bookmarks/bookmarks.11tydata.js (100%) rename {content => src/content}/resources/books/2021-06-23-OL4435177M.md (100%) rename {content => src/content}/resources/books/2022-08-24-OL28929668M.md (100%) rename {content => src/content}/resources/books/2023-03-13-OL21460217M.md (100%) rename {content => src/content}/resources/books/2023-03-13-OL27707384M.md (100%) rename {content => src/content}/resources/books/2023-03-13-OL27757581M.md (100%) rename {content => src/content}/resources/books/2023-03-13-OL27995439M.md (100%) rename {content => src/content}/resources/books/2023-03-13-OL28186418M.md (100%) rename {content => src/content}/resources/books/2023-03-13-OL29489155M.md (100%) rename {content => src/content}/resources/books/2023-03-15-OL28703772M.md (100%) rename {content => src/content}/resources/books/2023-03-15-OL9317753M.md (100%) rename {content => src/content}/resources/books/books.11tydata.js (100%) rename {content => src/content}/resources/jokes/2022-09-04-dad-joke-1.md (100%) rename {content => src/content}/resources/jokes/2022-09-04-dad-joke-2.md (100%) rename {content => src/content}/resources/jokes/2023-04-02-dad-joke-33.md (100%) rename {content => src/content}/resources/jokes/2023-04-16-dad-joke-34.md (100%) rename {content => src/content}/resources/jokes/2023-04-23-dad-joke-35.md (100%) rename {content => src/content}/resources/jokes/2023-04-30-dad-joke-36.md (100%) rename {content => src/content}/resources/jokes/2023-05-07-dad-joke-37.md (100%) rename {content => src/content}/resources/jokes/2023-05-14-dad-joke-38.md (100%) rename {content => src/content}/resources/jokes/2023-05-21-dad-joke-39.md (100%) rename {content => src/content}/resources/jokes/2023-05-28-dad-joke-40.md (100%) rename {content => src/content}/resources/jokes/2023-06-04-dad-joke-41.md (100%) rename {content => src/content}/resources/jokes/2023-06-11-dad-joke-42.md (100%) rename {content => src/content}/resources/jokes/2023-06-18-dad-joke-43.md (100%) rename {content => src/content}/resources/jokes/2023-06-25-dad-joke-44.md (100%) rename {content => src/content}/resources/jokes/2023-07-02-dad-joke-45.md (100%) rename {content => src/content}/resources/jokes/2023-07-09-dad-joke-46.md (100%) rename {content => src/content}/resources/jokes/2023-07-16-dad-joke-47.md (100%) rename {content => src/content}/resources/jokes/2023-07-23-dad-joke-48.md (100%) rename {content => src/content}/resources/jokes/2023-07-30-dad-joke-49.md (100%) rename {content => src/content}/resources/jokes/2023-08-06-dad-joke-50.md (100%) rename {content => src/content}/resources/quotes/2019-08-19-alexandra-bracken-everyone-pulls-a-bad-card.md (100%) rename {content => src/content}/resources/quotes/2019-08-19-phillip-k-dick-my-phone-is-spying-on-me.md (100%) rename {content => src/content}/resources/quotes/2022-06-26-nintendo-quit-screen.md (100%) rename {content => src/content}/resources/quotes/2023-04-02-weekly-quote-33.md (100%) rename {content => src/content}/resources/quotes/2023-04-16-weekly-quote-34.md (100%) rename {content => src/content}/resources/quotes/2023-04-23-weekly-quote-35.md (100%) rename {content => src/content}/resources/quotes/2023-04-30-weekly-quote-36.md (100%) rename {content => src/content}/resources/quotes/2023-05-07-weekly-quote-37.md (100%) rename {content => src/content}/resources/quotes/2023-05-14-weekly-quote-38.md (100%) rename {content => src/content}/resources/quotes/2023-05-21-weekly-quote-39.md (100%) rename {content => src/content}/resources/quotes/2023-05-28-weekly-quote-40.md (100%) rename {content => src/content}/resources/quotes/2023-06-04-weekly-quote-41.md (100%) rename {content => src/content}/resources/quotes/2023-06-11-weekly-quote-42.md (100%) rename {content => src/content}/resources/quotes/2023-06-18-weekly-quote-43.md (100%) rename {content => src/content}/resources/quotes/2023-06-25-weekly-quote-44.md (100%) rename {content => src/content}/resources/quotes/2023-07-02-weekly-quote-45.md (100%) rename {content => src/content}/resources/quotes/2023-07-09-weekly-quote-46.md (100%) rename {content => src/content}/resources/quotes/2023-07-16-weekly-quote-47.md (100%) rename {content => src/content}/resources/quotes/2023-07-23-weekly-quote-48.md (100%) rename {content => src/content}/resources/quotes/2023-07-30-weekly-quote-49.md (100%) rename {content => src/content}/resources/quotes/2023-08-06-weekly-quote-50.md (100%) rename {content => src/content}/resources/resources.11tydata.js (100%) rename {content => src/content}/resources/snippets/2023-02-23-git-prune-local-branches.md (100%) rename {content => src/content}/resources/snippets/2023-03-04-awk-command-concat-txt-file-into-string.md (100%) rename {content => src/content}/resources/snippets/2023-03-20-node-variable-length-hash.md (100%) rename {content => src/content}/thoughts/2015-04-16-is-rubber-ducky-coding-using-sods-law.md (100%) rename {content => src/content}/thoughts/2015-06-23-a-revival-of-photogabble.md (100%) rename {content => src/content}/thoughts/2016-01-03-happy-new-year-2015.md (100%) rename {content => src/content}/thoughts/2016-01-11-internet-explorer-is-dead-long-live-internet-explorer.md (100%) rename {content => src/content}/thoughts/2018-05-10-building-tuppence-the-pico-php-framework.md (100%) rename {content => src/content}/thoughts/2019-01-08-1-of-365-the-spark.md (100%) rename {content => src/content}/thoughts/2019-01-09-2-of-365-brain-fog.md (100%) rename {content => src/content}/thoughts/2019-01-10-3-of-365-dumb-down-smart-technology.md (100%) rename {content => src/content}/thoughts/2019-01-11-4-of-365-its-a-van-life-for-me.md (100%) rename {content => src/content}/thoughts/2019-01-12-5-of-365-exhaustion.md (100%) rename {content => src/content}/thoughts/2019-01-13-6-of-365-green-fingers.md (100%) rename {content => src/content}/thoughts/2019-01-14-7-of-365-trunk.md (100%) rename {content => src/content}/thoughts/2019-01-15-8-of-365-tilde-club.md (100%) rename {content => src/content}/thoughts/2019-02-14-9-of-365-hmm.md (100%) rename {content => src/content}/thoughts/2019-02-15-10-of-365-velentines.md (100%) rename {content => src/content}/thoughts/2019-02-16-11-of-365-down-the-rabbit-hole-of-debugging-unit-tests.md (100%) rename {content => src/content}/thoughts/2019-02-17-12-of-365-what-sparks-joy.md (100%) rename {content => src/content}/thoughts/2019-02-18-13-of-365-tiny-homes.md (100%) rename {content => src/content}/thoughts/2019-02-22-14-of-365-thoughts-on-privacy.md (100%) rename {content => src/content}/thoughts/2019-04-08-15-of-365-what-happened-to-march.md (100%) rename {content => src/content}/thoughts/2019-04-10-16-of-365-mega-drive-the-addams-family.md (100%) rename {content => src/content}/thoughts/2019-04-11-17-of-365-noscript.md (100%) rename {content => src/content}/thoughts/2019-04-24-18-of-365-its-a-little-more-complex-than-that.md (100%) rename {content => src/content}/thoughts/2019-05-10-19-of-365-html-is-by-design-accessible.md (100%) rename {content => src/content}/thoughts/2019-06-01-20-of-365-journeys.md (100%) rename {content => src/content}/thoughts/2019-08-29-21-of-365-is-a-dystopian-future-humanities-best-bet.md (100%) rename {content => src/content}/thoughts/2019-12-12-22-of-365-grievances-with-writefreely.md (100%) rename {content => src/content}/thoughts/2020-10-11-a-revival-of-sorts.md (100%) rename {content => src/content}/thoughts/2021-01-01-if-dos-game-dev-is-a-rabbit-hole-then-call-me-alice.md (100%) rename {content => src/content}/thoughts/2021-01-02-on-quitting-programing-for-carpentry.md (100%) rename {content => src/content}/thoughts/2021-01-03-a-focus-on-birdsite-drama.md (100%) rename {content => src/content}/thoughts/2022-02-15-the-robo-car-uprising.md (100%) rename {content => src/content}/thoughts/2022-06-18-wk-24-in-review.md (100%) rename {content => src/content}/thoughts/2022-06-22-the-command-pattern.md (100%) rename {content => src/content}/thoughts/2022-06-26-wk-25-in-review.md (100%) rename {content => src/content}/thoughts/2022-07-03-wk-26-in-review.md (100%) rename {content => src/content}/thoughts/2022-07-10-wk-27-in-review.md (100%) rename {content => src/content}/thoughts/2022-07-24-wk-28-29-in-review.md (100%) rename {content => src/content}/thoughts/2022-07-31-wk-30-in-review.md (100%) rename {content => src/content}/thoughts/2022-08-08-wk-31-in-review.md (100%) rename {content => src/content}/thoughts/2022-08-14-wk-32-in-review.md (100%) rename {content => src/content}/thoughts/2022-08-28-wk-33-34-in-review.md (100%) rename {content => src/content}/thoughts/2022-09-04-wk-35-in-review.md (100%) rename {content => src/content}/thoughts/2022-09-06-thinking-about-doscember-2022.md (100%) rename {content => src/content}/thoughts/2022-09-11-wk-36-in-review.md (100%) rename {content => src/content}/thoughts/2022-09-18-wk-37-in-review.md (100%) rename {content => src/content}/thoughts/2022-10-02-wk-38-39-in-review.md (100%) rename {content => src/content}/thoughts/2022-10-23-wk-40-41-42-in-review.md (100%) rename {content => src/content}/thoughts/2022-11-13-wk-43-44-45-in-review.md (100%) rename {content => src/content}/thoughts/2022-11-20-wk-46-in-review.md (100%) rename {content => src/content}/thoughts/2022-11-27-wk-47-in-review.md (100%) rename {content => src/content}/thoughts/2022-12-04-wk48-in-review.md (100%) rename {content => src/content}/thoughts/2022-12-11-wk49-in-review.md (100%) rename {content => src/content}/thoughts/2022-12-18-wk50-in-review.md (100%) rename {content => src/content}/thoughts/2023-01-01-wk51-52-in-review.md (100%) rename {content => src/content}/thoughts/2023-01-08-2023-wk-1-in-review.md (100%) rename {content => src/content}/thoughts/2023-01-15-2023-wk-2-in-review.md (100%) rename {content => src/content}/thoughts/2023-01-21-near-future.md (100%) rename {content => src/content}/thoughts/2023-01-22-2023-wk-3-in-review.md (100%) rename {content => src/content}/thoughts/2023-01-28-static-site-search.md (100%) rename {content => src/content}/thoughts/2023-01-29-2023-wk-4-in-review.md (100%) rename {content => src/content}/thoughts/2023-02-05-2023-wk-5-in-review.md (100%) rename {content => src/content}/thoughts/2023-02-08-what-finished-looks-like.md (100%) rename {content => src/content}/thoughts/2023-02-12-2023-wk-6-in-review.md (100%) rename {content => src/content}/thoughts/2023-02-19-2023-wk-7-in-review.md (100%) rename {content => src/content}/thoughts/2023-02-26-2023-wk-8-in-review.md (100%) rename {content => src/content}/thoughts/2023-03-05-2023-wk-9-in-review.md (100%) rename {content => src/content}/thoughts/2023-03-06-php-multiversion-install-with-homebrew.md (100%) rename {content => src/content}/thoughts/2023-03-12-2023-wk-10-in-review.md (100%) rename {content => src/content}/thoughts/2023-03-13-getting-laminas-http-handler-runner-working-with-phpunit.md (100%) rename {content => src/content}/thoughts/2023-03-17-why-netlify.md (100%) rename {content => src/content}/thoughts/2023-03-19-2023-wk-11-in-review.md (100%) rename {content => src/content}/thoughts/2023-04-02-2023-wk-12-13-in-review.md (100%) rename {content => src/content}/thoughts/2023-04-16-2023-wk-14-in-review.md (100%) rename {content => src/content}/thoughts/2023-04-23-2023-wk-15-in-review.md (100%) rename {content => src/content}/thoughts/2023-04-30-2023-wk-16-in-review.md (100%) rename {content => src/content}/thoughts/2023-05-07-2023-wk-17-in-review.md (100%) rename {content => src/content}/thoughts/2023-05-14-2023-wk-18-in-review.md (100%) rename {content => src/content}/thoughts/2023-05-21-2023-wk-19-in-review.md (100%) rename {content => src/content}/thoughts/2023-05-28-2023-wk-20-in-review.md (100%) rename {content => src/content}/thoughts/2023-06-04-2023-wk-21-in-review.md (100%) rename {content => src/content}/thoughts/2023-06-11-2023-wk-22-in-review.md (100%) rename {content => src/content}/thoughts/2023-06-18-2023-wk-23-in-review.md (100%) rename {content => src/content}/thoughts/2023-06-25-2023-wk-24-in-review.md (100%) rename {content => src/content}/thoughts/2023-07-02-2023-wk-25-in-review.md (100%) rename {content => src/content}/thoughts/2023-07-09-2023-wk-26-in-review.md (100%) rename {content => src/content}/thoughts/2023-07-16-2023-wk-27-in-review.md (100%) rename {content => src/content}/thoughts/2023-07-23-2023-wk-28-in-review.md (100%) rename {content => src/content}/thoughts/2023-07-30-2023-wk-29-in-review.md (100%) rename {content => src/content}/thoughts/2023-08-01-23-of-365-project-revival.md (100%) rename {content => src/content}/thoughts/2023-08-02-24-of-365-lk99-i-want-to-believe.md (100%) rename {content => src/content}/thoughts/2023-08-03-25-i-thoroughly-enjoy-grindy-games.md (100%) rename {content => src/content}/thoughts/2023-08-04-26-of-365-pining-for-a-simple-internet.md (100%) rename {content => src/content}/thoughts/2023-08-05-27-of-365-reboot-phobia.md (100%) rename {content => src/content}/thoughts/2023-08-06-2023-wk-30-in-review.md (100%) rename {content => src/content}/thoughts/2023-08-06-28-of-365-static-site-generation-why-i-wrote-tapestry.md (100%) rename {content => src/content}/thoughts/2023-08-07-29-of-365-php-isnt-that-bad.md (100%) rename {content => src/content}/thoughts/2023-08-08-30-of-365-more-bang-for-your-buck-with-dedicated.md (100%) rename {content => src/content}/thoughts/2023-08-09-31-of-365-code-rot.md (100%) rename {content => src/content}/thoughts/2023-08-10-32-of-365-cultivation-deflates-the-magic.md (100%) rename {content => src/content}/thoughts/2023-08-11-33-of-365-saving-disk-space-used-by-mastodon.md (100%) rename {content => src/content}/thoughts/thoughts.11tydata.js (100%) rename {content => src/content}/tutorials/2009-06-11-installing-turbo-c-on-dosbox.md (100%) rename {content => src/content}/tutorials/2015-01-21-writing-a-pixel-editor-in-javascript-p1.md (100%) rename {content => src/content}/tutorials/2015-01-28-writing-a-pixel-editor-in-javascript-p2.md (100%) rename {content => src/content}/tutorials/2015-01-30-public-private-privileged-properties-in-javascript.md (100%) rename {content => src/content}/tutorials/2015-02-04-writing-a-pixel-editor-in-javascript-p3.md (100%) rename {content => src/content}/tutorials/2015-02-18-setting-a-less-file-watcher-in-phpstorm.md (100%) rename {content => src/content}/tutorials/2015-02-27-how-to-set-composer-bin-path-in-windows.md (100%) rename {content => src/content}/tutorials/2015-03-02-ansi-command-line-colors-under-windows.md (100%) rename {content => src/content}/tutorials/2015-04-22-defending-wordpress-against-malicious-login-attempts-using-fail2ban.md (100%) rename {content => src/content}/tutorials/2015-05-08-writing-a-pixel-editor-in-javascript-p4.md (100%) rename {content => src/content}/tutorials/2015-06-05-adding-emoji-support-to-your-website-or-project.md (100%) rename {content => src/content}/tutorials/2016-01-13-how-to-installl-azure-cli-tools.md (100%) rename {content => src/content}/tutorials/2017-05-01-weighted-random-number-picking.md (100%) rename {content => src/content}/tutorials/2018-04-25-zero-config-vue-development-with-parcel-js.md (100%) rename {content => src/content}/tutorials/2018-05-03-build-an-incremental-web-game-with-vue-js.md (100%) rename {content => src/content}/tutorials/2018-06-06-writing-a-pixel-editor-in-javascript-p5.md (100%) rename {content => src/content}/tutorials/2018-06-11-writing-a-pixel-editor-in-javascript-p6.md (100%) rename {content => src/content}/tutorials/2018-08-08-dependency-resolving-algorithm.md (100%) rename {content => src/content}/tutorials/2021-06-21-sparklines-with-eleventy-js.md (100%) rename {content => src/content}/tutorials/2022-05-17-creating-a-now-page-archive-in-11ty.md (100%) rename {content => src/content}/tutorials/2022-09-14-automating-social-share-images-with-11ty-puppeteer.md (100%) rename {content => src/content}/tutorials/2023-01-30-programatically-add-tags-posts-in-11ty.md (100%) rename {content => src/content}/tutorials/2023-02-03-normalising-tags.md (100%) rename {content => src/content}/tutorials/2023-03-03-font-subsetting-with-11ty.md (100%) rename {content => src/content}/tutorials/tutorials.11tydata.js (100%) rename dad-jokes.njk => src/dad-jokes.njk (100%) rename elsewhere.md => src/elsewhere.md (100%) rename feeds.njk => src/feeds.njk (100%) rename {fonts => src/fonts}/iosevka-etoile-bold.subset.woff2 (100%) rename {fonts => src/fonts}/iosevka-etoile-bolditalic.subset.woff2 (100%) rename {fonts => src/fonts}/iosevka-etoile-italic.subset.woff2 (100%) rename {fonts => src/fonts}/iosevka-etoile-regular.subset.woff2 (100%) rename {fonts => src/fonts}/vt323-regular.ttf (100%) rename glossary.njk => src/glossary.njk (100%) rename index.njk => src/index.njk (100%) rename {legal => src/legal}/affiliate-partnerships.md (100%) rename {legal => src/legal}/cookies.md (100%) rename {legal => src/legal}/privacy.md (100%) rename links.njk => src/links.njk (100%) rename {lists => src/lists}/film-and-tv.njk (100%) rename {lists => src/lists}/index.njk (100%) rename {lists => src/lists}/list.njk (100%) rename {lists => src/lists}/listened-to.njk (100%) rename newsletter.njk => src/newsletter.njk (100%) rename now.njk => src/now.njk (100%) rename {now => src/now}/2021-03-19.md (100%) rename {now => src/now}/2022-05-17.md (100%) rename {now => src/now}/2022-06-13.md (100%) rename {now => src/now}/2023-01-20.md (100%) rename {now => src/now}/2023-02-01.md (100%) rename {now => src/now}/2023-08-16.md (100%) rename {now => src/now}/now.11tydata.js (80%) rename projects.njk => src/projects.njk (100%) rename quotes.njk => src/quotes.njk (100%) rename {resources => src/resources}/index.njk (100%) rename {resources => src/resources}/types.njk (100%) rename robots.txt => src/robots.txt (100%) rename rss.njk => src/rss.njk (100%) rename special-thanks.md => src/special-thanks.md (100%) rename stats.njk => src/stats.njk (100%) rename styleguide.md => src/styleguide.md (100%) rename {styles => src/styles}/blank.css (100%) rename {styles => src/styles}/components/_books.css (100%) rename {styles => src/styles}/components/_button.css (100%) rename {styles => src/styles}/components/_figure.css (100%) rename {styles => src/styles}/components/_fonts.css (100%) rename {styles => src/styles}/components/_footer.css (58%) rename {styles => src/styles}/components/_post-list.css (100%) rename {styles => src/styles}/components/_review_list.css (100%) rename {styles => src/styles}/components/_table.css (100%) rename {styles => src/styles}/components/_themes.css (100%) rename {styles => src/styles}/main.css (95%) rename topic.njk => src/topic.njk (100%) rename topics.njk => src/topics.njk (100%) rename types.njk => src/types.njk (100%) rename uses.md => src/uses.md (100%) rename {writing => src/writing}/archive.njk (100%) rename {writing => src/writing}/index.njk (100%) diff --git a/.eleventy.js b/.eleventy.js index 2c5f92af..daf2ef62 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -25,7 +25,7 @@ module.exports = function (eleventyConfig) { `./public/fonts/iosevka-etoile-bold.woff2`, `./public/fonts/iosevka-etoile-bolditalic.woff2`, ], - dist: './fonts', + dist: './src/fonts', enabled: process.env.ELEVENTY_ENV !== 'production', cache: new ObjectCache('font-subsetting'), }); @@ -35,7 +35,8 @@ module.exports = function (eleventyConfig) { similar: { 'Game Development': ['GameDev'], 'Retro Computing': ['RetroComputing'], - 'Node JS': ['Node'] + 'Node JS': ['Node'], + '365 Day Project': ['365DayProject'] }, slugify, }); @@ -124,4 +125,11 @@ module.exports = function (eleventyConfig) { eleventyConfig.setLibrary('md', require('./lib/helpers/markdown')); + return { + dir: { + input: "src", + output: "_site" + } + }; + }; diff --git a/lib/collections.js b/lib/collections.js index 36dac39e..23fa7195 100644 --- a/lib/collections.js +++ b/lib/collections.js @@ -1,7 +1,7 @@ const {setupMarkdownIt, parseCollectionHashtags} = require ('./helpers/hashtags'); const {chunk} = require('./helpers') const {slugify, padStart, specialTagMeta} = require("./filters"); -const listData = require('../_data/lists-meta'); +const listData = require('../src/_data/lists-meta'); // This function returns a reducer function for paginating custom taxonomy such as // the content types used in this digital garden. @@ -45,8 +45,8 @@ const md = setupMarkdownIt(require('markdown-it')()); module.exports = function loadCollection(eleventyConfig) { // Filter draft posts when deployed into production const post = (collection) => ((process.env.ELEVENTY_ENV !== 'production') - ? [...collection.getFilteredByGlob('./content/**/*.md')] - : [...collection.getFilteredByGlob('./content/**/*.md')].filter((post) => !post.data.draft) + ? [...collection.getFilteredByGlob('./src/content/**/*.md')] + : [...collection.getFilteredByGlob('./src/content/**/*.md')].filter((post) => !post.data.draft) ).map(parseCollectionHashtags(md, eleventyConfig.globalData.tagAtlas)); // Written for #20, this creates a collection of all tags @@ -176,7 +176,7 @@ module.exports = function loadCollection(eleventyConfig) { return carry; }, new Map()).values()); - const nowUpdates = (collection) => [...collection.getFilteredByGlob('./now/*.md') + const nowUpdates = (collection) => [...collection.getFilteredByGlob('./src/now/*.md') .filter((post) => !post.data.draft)]; const collectSpecialTaggedContent = (prefix, collection) => Array.from( diff --git a/lib/filters.js b/lib/filters.js index 33f36fd2..749b774e 100644 --- a/lib/filters.js +++ b/lib/filters.js @@ -1,6 +1,6 @@ const {toTitleCase, strToSlug} = require('./helpers'); -const metadata = require('../_data/metadata'); -const listData = require('../_data/lists-meta'); +const metadata = require('../src/_data/metadata'); +const listData = require('../src/_data/lists-meta'); const readingTime = require('reading-time'); const {DateTime} = require('luxon'); const path = require('path'); diff --git a/lib/helpers/hashtags.js b/lib/helpers/hashtags.js index 1ff45c76..30f210a8 100644 --- a/lib/helpers/hashtags.js +++ b/lib/helpers/hashtags.js @@ -9,7 +9,7 @@ module.exports = { }); md.renderer.rules.hashtag_open = (tokens, idx) => - ``; + ``; return md; }, diff --git a/404.njk b/src/404.njk similarity index 100% rename from 404.njk rename to src/404.njk diff --git a/_data/books.js b/src/_data/books.js similarity index 100% rename from _data/books.js rename to src/_data/books.js diff --git a/_data/bookwyrm.js b/src/_data/bookwyrm.js similarity index 98% rename from _data/bookwyrm.js rename to src/_data/bookwyrm.js index baa084af..6238c497 100644 --- a/_data/bookwyrm.js +++ b/src/_data/bookwyrm.js @@ -1,4 +1,4 @@ -const ObjectCache = require("../lib/helpers/cache"); +const ObjectCache = require("../../lib/helpers/cache"); const fetch = require("node-fetch"); const chalk = require("chalk"); diff --git a/_data/build.js b/src/_data/build.js similarity index 100% rename from _data/build.js rename to src/_data/build.js diff --git a/_data/dadjokes.js b/src/_data/dadjokes.js similarity index 100% rename from _data/dadjokes.js rename to src/_data/dadjokes.js diff --git a/_data/eleventyComputed.js b/src/_data/eleventyComputed.js similarity index 100% rename from _data/eleventyComputed.js rename to src/_data/eleventyComputed.js diff --git a/_data/links.js b/src/_data/links.js similarity index 100% rename from _data/links.js rename to src/_data/links.js diff --git a/_data/lists-meta.js b/src/_data/lists-meta.js similarity index 100% rename from _data/lists-meta.js rename to src/_data/lists-meta.js diff --git a/_data/metadata.js b/src/_data/metadata.js similarity index 100% rename from _data/metadata.js rename to src/_data/metadata.js diff --git a/_data/movies.js b/src/_data/movies.js similarity index 100% rename from _data/movies.js rename to src/_data/movies.js diff --git a/_data/people.js b/src/_data/people.js similarity index 100% rename from _data/people.js rename to src/_data/people.js diff --git a/_data/quotes.js b/src/_data/quotes.js similarity index 100% rename from _data/quotes.js rename to src/_data/quotes.js diff --git a/_data/themes.js b/src/_data/themes.js similarity index 100% rename from _data/themes.js rename to src/_data/themes.js diff --git a/_includes/components/backlinks.njk b/src/_includes/components/backlinks.njk similarity index 100% rename from _includes/components/backlinks.njk rename to src/_includes/components/backlinks.njk diff --git a/_includes/components/book-grid.njk b/src/_includes/components/book-grid.njk similarity index 100% rename from _includes/components/book-grid.njk rename to src/_includes/components/book-grid.njk diff --git a/_includes/components/book-layout-inspiration.njk b/src/_includes/components/book-layout-inspiration.njk similarity index 100% rename from _includes/components/book-layout-inspiration.njk rename to src/_includes/components/book-layout-inspiration.njk diff --git a/_includes/components/growth.njk b/src/_includes/components/growth.njk similarity index 100% rename from _includes/components/growth.njk rename to src/_includes/components/growth.njk diff --git a/_includes/components/hot-topics.njk b/src/_includes/components/hot-topics.njk similarity index 100% rename from _includes/components/hot-topics.njk rename to src/_includes/components/hot-topics.njk diff --git a/_includes/components/months-of-year.njk b/src/_includes/components/months-of-year.njk similarity index 100% rename from _includes/components/months-of-year.njk rename to src/_includes/components/months-of-year.njk diff --git a/_includes/components/planting-times.njk b/src/_includes/components/planting-times.njk similarity index 100% rename from _includes/components/planting-times.njk rename to src/_includes/components/planting-times.njk diff --git a/_includes/components/post-list-line.njk b/src/_includes/components/post-list-line.njk similarity index 100% rename from _includes/components/post-list-line.njk rename to src/_includes/components/post-list-line.njk diff --git a/_includes/components/post-list.njk b/src/_includes/components/post-list.njk similarity index 100% rename from _includes/components/post-list.njk rename to src/_includes/components/post-list.njk diff --git a/_includes/components/series-list.njk b/src/_includes/components/series-list.njk similarity index 100% rename from _includes/components/series-list.njk rename to src/_includes/components/series-list.njk diff --git a/_includes/components/tag-list.njk b/src/_includes/components/tag-list.njk similarity index 100% rename from _includes/components/tag-list.njk rename to src/_includes/components/tag-list.njk diff --git a/_includes/components/wayback-machine.njk b/src/_includes/components/wayback-machine.njk similarity index 100% rename from _includes/components/wayback-machine.njk rename to src/_includes/components/wayback-machine.njk diff --git a/_includes/layouts/base.njk b/src/_includes/layouts/base.njk similarity index 100% rename from _includes/layouts/base.njk rename to src/_includes/layouts/base.njk diff --git a/_includes/layouts/blank-base.njk b/src/_includes/layouts/blank-base.njk similarity index 100% rename from _includes/layouts/blank-base.njk rename to src/_includes/layouts/blank-base.njk diff --git a/_includes/layouts/book.njk b/src/_includes/layouts/book.njk similarity index 100% rename from _includes/layouts/book.njk rename to src/_includes/layouts/book.njk diff --git a/_includes/layouts/bookmark-embed.liquid b/src/_includes/layouts/bookmark-embed.liquid similarity index 100% rename from _includes/layouts/bookmark-embed.liquid rename to src/_includes/layouts/bookmark-embed.liquid diff --git a/_includes/layouts/embed.liquid b/src/_includes/layouts/embed.liquid similarity index 92% rename from _includes/layouts/embed.liquid rename to src/_includes/layouts/embed.liquid index 01940292..5e9fc4fb 100644 --- a/_includes/layouts/embed.liquid +++ b/src/_includes/layouts/embed.liquid @@ -1,4 +1,4 @@ -