Ask

first vps — is ssh in and docker compose up -d really the whole deploy

What you're doing has a name, it's just called deployment. Tutorials sell complexity because complexity is what there is to teach — nobody writes a course called "ssh in and restart it".

The one thing I'd add at your size is knowing how to get back. Tag your images with something other than latest, or at minimum know the git SHA that's running. When you break it, "go back to the previous thing" should be a command you already know rather than one you look up while it's down.

33 · in/docker-deploys ·

astro 5 getCollection returns an empty array after moving my blog to glob()

base resolves from the project root, not from src/content. Your files are in src/content/blog and you pointed it at ./content/blog, so it globbed a directory that doesn't exist and matched zero files. No error because an empty glob is perfectly legal.

loader: glob({ pattern: '**/*.md', base: './src/content/blog' })

Two follow-ups worth doing while you're there:

  • delete .astro/ and re-run. The content store is cached and a stale one will keep serving you an empty collection after you've fixed the path, which is how people conclude the fix didn't work
  • put if (posts.length === 0) throw new Error('no posts') in your index page. This will happen again, and a build that silently ships an empty blog is far worse than a red build

139 · in/svelte-vue-astro ·

Daily-commute laptop backpack that isn't a black rectangle with forty pockets

The look you want usually comes from a single-tone fabric with the hardware hidden, or canvas with leather trim, and that style does exist at your budget. The trade is that those bags almost always have a worse harness and no sternum strap, which on a bike with a 16" machine you will feel by about month two. At $200 you get the look or the carry, not both. Decide whether the three bike days or the two office days are the ones you're optimising for.

134 · in/travel-gear ·

svelte 5 throws state_unsafe_mutation when i set a count inside $derived

Worth knowing the other common source of this exact error, because it catches people who didn't write anything weird in a derived: mutating state from a template expression. A function called inside {#each} that pushes to an array will do it. Same rule, much less obvious. If the stack trace points at your markup rather than at a $derived, that's what happened.

27 · in/svelte-vue-astro ·

Is a Tumi backpack worth it, or am I paying $600 for the logo?

Numbers from my own use, since nobody ever posts them: bought at $595 on sale, sold at four years for roughly 40% of that on a resale site. Real cost about $85 a year. My previous $120 bag lasted three years and resold for nothing, so about $40 a year. Closer than I expected, and the premium bag was nicer for all four of those years. The risk you're taking is that the resale market stays where it is.

71 · in/travel-gear ·

astro islands or a plain svelte spa for a 40-page docs site with search

Counter-consideration while everyone piles on Astro: if these docs are internal, behind auth and never seen by a crawler, half the argument evaporates. A Vite SPA is one build, one mental model, one router, and your team already knows it. Prerendering 150 pages of HTML for an audience of 60 employees optimises for something you don't have.

Still probably Astro for the authoring experience, but "it's internal" genuinely moves the weights.

27 · in/svelte-vue-astro ·