u/samplekaudio
samplekaudio
samplekaudio
But they've been compressed to hell and back and look/sound like dogshit on anything other than a 14-inch laptop.
samplekaudio
You're asking like 5 distinct questions.
In your case, I suggest you go for something straightforward, like a Shopify storefront website. They have a builder you can use without knowing any code, there's a huge ecosystem around it, and if you want to hire someone there is no shortage of developers available at reasonable rates. Running your site this way and letting shopify handle everything will simplify a lot so you can just focus on the content and sales. You will pay a monthly fee to Shopify but I don't think it's very much.
As for ranking, you're asking about SEO, which is a big topic. You can read guides like this one, this one, and this one. Since you're just starting out, don't overcomplicate it. Just follow advice in these guides and improve as you go.
Many people will try to sell you expensive services. Unless you're pulling many thousands of dollars per month in revenue already and want to scale, in my opinion it is not necessary. Focus on getting a fast, functional site with basic SEO best practices and go from there.
samplekaudio
Bro leave her alone, I've never had a woman in China try to guilt or compare me to an ex like this. It's super demeaning.
I'm married now, but I was always pretty generous while dating (paying for most dates, etc) because I made a relatively good salary. However, I was never made to feel that it was expected and I never just flat-out gave cash except one or two times when the girl was in a pinch and we were in a serious relationship. Every woman, whether casual or serious, made an obvious effort to contribute and keep things as fair as possible.
My wife, when we were dating and first moved in together, was actually hellbent on paying a proportionate share of the rent, because it was important to her to maintain a sense of agency. Even when we lived in housing provided by my job, she wanted to pay the bills because she didn't want to feel totally dependent on me.
There are literally millions of smart, attractive, independent women in China. You don't need this one in your life lol.
"Not a single penny remained in our account" -- like that's actually stupid as hell. She thinks this guy being irresponsible and spending every yuan he has on her is indicative of a good partner. Her priorities are way out of whack. Most women (and men) want someone financially stable, sure, but also responsible and capable of long-term planning.
samplekaudio
I think you may have some misunderstanding about what SSG and SSR mean, or at least the tradeoffs of each.
You are right that OP will have an e-commerce backend that will store the products, probably help process payments, store order information, and so on (I'll just call it the CMS from here on). But using SSR doesn't mean we have "2 backends".
Maybe this example will help:
Let's take product pages for example, like say we have a route /products/{product\_id}.Each product should have its own unique page at that route. We also have a root page /products/, which has links to all of our products and would look like /products/index.astro in an astro project.
SSR and SSG are just the rendering method for those pages. SSG would mean that we pull the data from the CMS at build time and generate every single page ahead of time. These pages are, obviously, very fast to serve. The page will load very very quickly. Similarly, our /products/ page just calls the CMS for a full list of all the products in it at build time, builds the page, and serves that page with whatever product links were available at build time.
However, it has some major shortcomings, like not being able to check info about the user's session before we render the page (to display a cart for them, or see if they're logged in). We also can't see any updated information until we build again. Those shortcomings are because we aren't able to run any code on the server when the page is loaded. The user just gets whatever was built at build time.
SSR would mean that we dynamically render each of those pages on request. For example, let's say we've added a new product in the CMS with ID 1002. With SSR, we make a call to the CMS every time we load /products/, so we get the new product and link immediately. The user clicks the new link and goes to /products/1002, which renders the page by calling the CMS and asking for the data for the product with ID 1002. It uses this data to fill in our page template. Voila, we have instant content updates without having to rebuild the site.
Other advantages of SSR for this type of site is that you can run some code on every request, like seeing if the user has a cart, checking their authentication status, or whatever else to give them a more personalized experience. It also makes things like payments easier to handle securely since you don't have to run all the code on the client.
SSR isn't really that slow. Both SSG and SSR are quite fast. The major block here is network latency, which is why you always place your CMS and your web server close together geographically. Of course SSR is slightly slower than serving a statically pre-generated page, but we're talking about like 100-200ms max for a very large page. The network speed between web server and CMS and whether your assets are optimized are far more important.
You are right that we can not do a dynamic route with a statically generated page at runtime, we can only do it at build time. With SSR, we can do it at runtime.
SSR is absolutely a first-class feature in Astro since around 3.0, and it was available well before that. SSR (whether with Astro or any other framework) is by far the more common rendering strategy for e-commerce sites for all the reasons I listed above.
Besides the core choice, you can freely mix and match strategies, for example you could immediately stream most of the product page to the client while using a server island to load info from the CMS, choose different hydration strategies for framework components depending on their role, and so on and so on, all to fine-tune the experience and increase perceived speed. But this is already a long comment.
samplekaudio
Yes, I think this whole "it's called a pellicle, the SCOBY is in the liquid" is backlash against the misconception that ends up propagating another misconception.
The biofilm is produced by a few different acetic acid bacteria that are capable of producing bacterial cellulose. This is a natural part of the colonization done by those bacteria in conjunction with all the other constituents of the SCOBY. To quote this paper:
Biofilm formation is the principal process associated with the formation of SCOBY. The production of bacterial cellulose by the representatives of genus Komagataeibacter in kombucha is essential for the formation of cellulosic biofilm that further can support the growth of all microbial components of the SCOBY, creating a stable environment for the fermentation process
While the biofilm is not the entire SCOBY, it does play a significant role in regulating the environment, and many bacteria and yeast live on it.
The biofilm is, in fact, part of the SCOBY, and it's so common to colloquially refer to the biofilm as the SCOBY that it seems pedantic to correct people when they say this.
Including the old biofilm, assuming it is still alive and has a decent concentration of bacteria and yeast living on it, is not a bad or even useless practice.
While a new biofilm will always form in a successful fermentation, regardless of whether a previous one is present, the fact that old biofilms will often fuse with new ones should be a hint that it is more than just a by-product
samplekaudio
I made gistra.io, my first user came from a reddit comment. I've been making about 2-3 stealth comments a day trying to genuinely answer people's questions and only subtly point them to my product while also evaluating pros and cons of other methods. That's mostly to avoid violating subreddit rules and downvotes.
The one user did join the discord server, so I hope they intend to stick around.
Some of the reddit comments only get a few views, the use came from one that got closer to 50. I need to work on my timing and picking the threads I comment in to get a bit more out of what I'm putting in. I'm selecting good, high-intent posts but obviously less popular posts will result in fewer views of my comment.
The feature I'm going to add is a RAG-based chat/generation tool so you can work more easily with many videos at once.
What about you?
samplekaudio
You can use a lot of default AI tools/chats for some things, but there are lots of tools that will integrate things like youtube videos or files you upload.
For working with youtube videos/playlists, I have used gistra.io, since you can extract all the transcripts from an entire playlist or channel and then generate things like flashcards and "chat" with a video to ask questions, or just watch and read at the same time while adding annotations to the transcript in the app. It has a free tier that works well for a handful of videos a month.
There are other tools like turbo.ai and notegpt that don't have as many features around youtube videos but can handle user-uploaded content like PDFs.
And of course you can just use plain old ChatGPT, Gemini, or Notebook LM (also a google product), but those don't usually let you get the actual transcript itself for reference (notebook lm does, but there are no timestamps and you can't annotate it), they'll just summarize.
samplekaudio
I use Youtube for Chinese immersion/studying sometimes. Often I think it's good just to let it wash over you, but occasionally if a video has lots of vocabulary that feels relevant or interesting to me I'll spend more time studying it.
I've used gistra a few times since it specifically has a language-learning flashcard generation tool and is free up to a point. You paste in the video URL and it'll pull all the captions into the app, then you can generate flashcards and add additional instructions like vocabulary to target, whether to include example sentences, and so on.
But yeah I don't think it's a substitute for more structured materials and I will just watch/listen to the video probably 90% of the time.
samplekaudio
I am super fascinated by a lot of the topics your answer touched on, could you recommend some further reading?
samplekaudio
I'll refer you to the [docs](https://docs.astro.build/en/reference/directives-reference/#isinline) for that one. Astro will optimize bundled stuff, but not explicitly inline tags. this is helpful if you really need that script to be exactly where you wrote it at runtime.
In practice you will rarely need it, but it's something you can try if you run into issues. For example, you can use it to import a file from outside your src directory. TBH, if you're just starting, I suggest you just wait until you run into a weird problem and then see if that fixes it, then try to figure out why. Let the opportunity to learn create itself lol.
I also encourage you to read the docs thoroughly when more questions come up, since most of them are written clearly and explain all of the things I've mentioned here.
samplekaudio
I hope this comment is permitted. I'm not a scholar, but I have a relevant academic reading recommendation.
This is the subject of The Origin of Satan by Elaine Pagels, an authority on the topic.
samplekaudio
There was literally a leaked memo from Amazon in which they detail how they can build associations with social justice groups and use DEI initiatives as a smokescreen for their union busting.
samplekaudio
I have a very similar setup with an Astro site in SSR mode and a .NET backend.
You could set cookies like the other user suggested, using middleware, since this will always run before the page is sent to the user's browser.
Alternatively, you could proxy your backend requests through astro endpoints, which is what I'm doing. I have not had any problems with cookies and have full access to the astro runtime api.
The flow is like this.
login.astro makes a fetch post request to /api/login.ts (an astro endpoint) ->
/api/login.ts passes auth credentials onward to the backend server ->
backend server validates the request and returns tokens in the response ->
api/login.ts sets the tokens as httpOnly cookies and redirects user ->
login.astro receives the response from /api/login.ts, at which point the cookies have been set and it's safe to load the next page.
That's the basic structure of all my backend API calls.
Do note that if you want to make astro api calls from the frontmatter of an SSR page, you'll have to pass in the absolute URL of your astro api endpoint, because the code runs before the page has been rendered, it can't automatically resolve the URL. However, instead of hard-coding it, you can do this programmatically:
const currentUrl = new URL(Astro.request.url);
const origin = currentUrl.origin;
const apiUrl = `${origin}/api/confirm-email? email=${encodeURIComponent(email)}&token=${encodeURIComponent(token)}`;
const response = await fetch(apiUrl, {
method: 'GET',
});
This example is from the code fence of my confirm-email page, so it needs to get query params from the callback URL and then pass all of that to the /api/confirm-email.ts endpoint before the page is ever loaded. The main thing is to use `Astro.request.url` and get the origin from that.
The key thing here is that you need to be executing things like setting and reading cookies on the server, whether in middleware or an endpoint. Doing either lets you do everything you need to before your page is rendered and sent to the browser.
There may be a way to make this work without middleware or an endpoint, but I know for sure that the latter two approaches work.
samplekaudio
Is there a source for this? It's a cool anecdote but I'm wondering how this private episode was transmitted to us and how widespread the norm was?
I'm assuming this is a native ad for "Cisin", since you name dropped them as if everyone has already heard of this weird-ass company that has a terribly ugly website.
They have a ton of extremely strange "testimonial" videos that feature people apparently reading from a teleprompter at gunpoint, shot on a webcam from 2012.
There are obviously fake and even blatantly incorrect text reviews towards the bottom of the page, including one that starts with "Our motorcycle brand" but is credited to someone with the title "Real Estate Company".
Overall very strange