@@fasterthanlime I watched this (and loved it) but feel like the magical "look mom no CI" (or rather "look mom in-app CD") bit is really worth talking about :-D
It's a really nice experience. A long while ago I did deploys from the CLI, then I graduated to a separate admin page, then I just slapped that button + floating logs on every page when I started tackling like 60 issue reports on various pages at once.
I really thought that video will be about Cargo feature flags. Was wondering what is there that interesting that they deserved a separate video here. (-:
Not going to lie, seeing the way your blog is managed makes me retrospect about my site/setup and how much less professional it feels by comparison 😭 - getting there though!
I know just enough CSS that I wonder if you could've gotten the 3rd h2 with `.page-section.main-content h2:nth-of-type(3)` or if pseudoclasses don't work in queryElement. Also would be an interesting question to ask whether this or just array indexing is "faster" and why.
My bet is that performance is largely the same! Except maybe for very large documents, were building the NodeList would be expensive? I have a feeling benchmarking this would yield different results over time, as browser updates come in.
Quick tip, DOMContentLoaded fires after all images and other things you'd consider optional loads. `defer` might be a better option for injection scripts like this
I don't think defer works for inline scripts, otherwise it'd be a neat option. edit: Oh also, in production, images have `loading="lazy"` set so I _think_ I'm in the clear here.
Speaking of DOM crimes. runs only ever so slightly before DOMConetentLoaded and you don't need an extra level of indent to use a listener. Is that a good idea ... Probably not, but if it was would it be a DOM crime?
MDN says: Warning: This attribute (defer) must not be used if the src attribute is absent (i.e. for inline scripts), in this case it would have no effect. So I'm afraid it's a no-go here.
I've been only using liquid for injecting globals into html but it seems really powerful. Do you have the source for your blog public by any chance? I would love to learn from it
Unfortunately no, I don't want to maintain it "for everyone", my full-time activity is content creation, not maintaining these projects. There's a lot of shortcuts that work for me, but wouldn't for others. I have sent tarballs to people by e-mail on request though.
There's a server-sent events (SSE) connection established, and a message is sent when it switches to a new deploy, which is handled in JavaScript and calls window.reload - it's relatively straightforward! Some frameworks do something fancier called Hot Module Reload (HMR) which only reload the parts that changed, but it's often brittle.
There's a huge luck component involved: right niche, right time. And of course tons of work. But there's no recipe for success here and anyone who tells you otherwise is a liar.
@@fasterthanlime for sure, I understand the effort and luck it requires. But I'm curious about whether you used other platforms to promote your patreon, like Reddit, or maybe a blog? I hope I'm not bugging you too much with my questions 🙏
I did start out with a blog, and I did start a subreddit, which has almost 2K members now (www.reddit.com/r/fasterthanlime/). I think Twitter, HackerNews, and Reddit (but other, bigger subreddits, like /r/rust, /r/programming, etc.) helped me the most. But it'd be hard to replicate on today's Twitter, for example. Or today's Mastodon. In the same way that you can no longer just make a RUclips channel with Minecraft gameplay videos and get millions of subscribers. You have to find your own thing!
I've been enjoying some Javascript myself lately even with the spaghetti nonsense, but the lack of typing makes me puke, while on the Typescript side of things, it is a mess to setup
@@fasterthanlime I want to write only Typescript in a way that is still compatible with the default tsc stack (slow), so there's always a fallback option, when I want to add an incompatible library or something. Ts-node is also kinda really slow. I've found swc-node, which is able to transform Typescript on the fly and do it fast as I want, aaaand it's buggy. Then there's this ESM vs CJS flamewar, where the first one is better, yet it's also slower.
Haha I had the exact same thought when seeing this - that would be good feedback for DevCycle, as it's how it looks on their site. I'm not sure the server-side tokens give you any more access than the client ones though? Definitely worth exploring
@@fasterthanlime i think the bblur looks nice, maybe they could have dummy keys that they blur, so it looks like they blurred the keys but really they're not there at all. or maybe that's what they allready do, i dont know bc i havent' checked !
These days I have a habit of setting my scripts that are expected to be touching the DOM to type="module" which ensures the DOM is ready once they are loaded because ESM modules are automatically deferred. Then with TLA (top level await) there is no need for the top-level DOMContentLoaded handler or the async function within it. I think this should work for your youtube-promo.js.liquid file. WDYT?
@@fasterthanlime It does, for personal projects (vanilla HTML/JS) I use ESM exclusively for a few years now and it works really nicely. In professional capacity, there is still a lot of pain when it comes it interfacing with the NPM ecosystem but it is slowly getting better as well.
Testing new features on German people will surely become the industry standard.
To be fair, their issue reports are exemplary.
Laughed out louder than I should (being German myself)
I can't believe I got paid to brag about my website. They also sponsored a video about Rust+WASM? Bingpot.
Whoa, your deploy system is really cool! I hope you explain it to us one day :-)
It's very similar to what I do in Silly Fast Fresh Deploys with Rust: ruclips.net/p/PLxV2db94vuXkvZuZrx-iBvrO13dtIQ91k
@@fasterthanlime I watched this (and loved it) but feel like the magical "look mom no CI" (or rather "look mom in-app CD") bit is really worth talking about :-D
Watching Amos being payed to geek on cool stuff is so good
Not gonna lie, I had to turn a couple sponsors down, but then the right ones showed up 😎
really nice video. the fast deploy button is really cool
It's a really nice experience. A long while ago I did deploys from the CLI, then I graduated to a separate admin page, then I just slapped that button + floating logs on every page when I started tackling like 60 issue reports on various pages at once.
I really thought that video will be about Cargo feature flags. Was wondering what is there that interesting that they deserved a separate video here. (-:
Not going to lie, seeing the way your blog is managed makes me retrospect about my site/setup and how much less professional it feels by comparison 😭 - getting there though!
5:55 I would instead use Array.from(document.querySelectorAll(...)).map() because its more readable (IMO)
Subscribed because this person actually codes instead of talks 😂
Thank you, really nice video, but it could have a little Rust! :D Take care and be well :3
The next one has Rust!
I love the 35k sub celebration!
🎉
You should hire someone to wear one of those cheesy mascot costumes and play Cool Bear in these videos
That's certainly a stretch goal idea for my GitHub Sponsors 🐻❄️
I know just enough CSS that I wonder if you could've gotten the 3rd h2 with `.page-section.main-content h2:nth-of-type(3)` or if pseudoclasses don't work in queryElement. Also would be an interesting question to ask whether this or just array indexing is "faster" and why.
My bet is that performance is largely the same! Except maybe for very large documents, were building the NodeList would be expensive? I have a feeling benchmarking this would yield different results over time, as browser updates come in.
It does indeed work with querySelector; I was wondering the same thing & gave it a try.
Quick tip, DOMContentLoaded fires after all images and other things you'd consider optional loads. `defer` might be a better option for injection scripts like this
I don't think defer works for inline scripts, otherwise it'd be a neat option.
edit: Oh also, in production, images have `loading="lazy"` set so I _think_ I'm in the clear here.
Speaking of DOM crimes. runs only ever so slightly before DOMConetentLoaded and you don't need an extra level of indent to use a listener. Is that a good idea ... Probably not, but if it was would it be a DOM crime?
MDN says: Warning: This attribute (defer) must not be used if the src attribute is absent (i.e. for inline scripts), in this case it would have no effect.
So I'm afraid it's a no-go here.
I thought this video was going to be about rust/cargo's features. [cfg(feature = "confused")]
I've been only using liquid for injecting globals into html but it seems really powerful. Do you have the source for your blog public by any chance? I would love to learn from it
Unfortunately no, I don't want to maintain it "for everyone", my full-time activity is content creation, not maintaining these projects. There's a lot of shortcuts that work for me, but wouldn't for others. I have sent tarballs to people by e-mail on request though.
Hey great video, but your javascript liquid file can use `const` instead of `let`.
i love your blog
I hope you're doing well.
Great video.
What a facy Blog engine! How do Blog engines even the auto-refresh when a file is locally changed in Rust?
There's a server-sent events (SSE) connection established, and a message is sent when it switches to a new deploy, which is handled in JavaScript and calls window.reload - it's relatively straightforward! Some frameworks do something fancier called Hot Module Reload (HMR) which only reload the parts that changed, but it's often brittle.
Man, I had no idea you had a RUclips channel! (I lied)
It was right under your nose this whole time!
Is the deploy buttob connected to a bash script? If not would you please explain what it triggers locally?
Hey there, I'm interested in starting and growing a patreon like you have. May I know how you promoted yourself & started off?
There's a huge luck component involved: right niche, right time. And of course tons of work. But there's no recipe for success here and anyone who tells you otherwise is a liar.
@@fasterthanlime for sure, I understand the effort and luck it requires. But I'm curious about whether you used other platforms to promote your patreon, like Reddit, or maybe a blog? I hope I'm not bugging you too much with my questions 🙏
I did start out with a blog, and I did start a subreddit, which has almost 2K members now (www.reddit.com/r/fasterthanlime/). I think Twitter, HackerNews, and Reddit (but other, bigger subreddits, like /r/rust, /r/programming, etc.) helped me the most. But it'd be hard to replicate on today's Twitter, for example. Or today's Mastodon. In the same way that you can no longer just make a RUclips channel with Minecraft gameplay videos and get millions of subscribers. You have to find your own thing!
You can also do [...document.querySelectorAll(".page-section.main-content h2")].map(...) 👀
Oh of course, but we need the parent for insertBefore later!
@@fasterthanlime Ah that makes sense!
I was actually wondering where did mac come in?
Just before cheese
@@fasterthanlime damn, then mac was always around, just waiting for the right comment…
How did you update the sub count on my computer?
How many gallons of oestrogen are you on?
I've been enjoying some Javascript myself lately even with the spaghetti nonsense, but the lack of typing makes me puke, while on the Typescript side of things, it is a mess to setup
JSDoc is sort of a happy middle. Also TypeScript isn't quite as annoying to set up as it once was - I'm not sure what you ran into specifically?
@@fasterthanlime I want to write only Typescript in a way that is still compatible with the default tsc stack (slow), so there's always a fallback option, when I want to add an incompatible library or something. Ts-node is also kinda really slow. I've found swc-node, which is able to transform Typescript on the fly and do it fast as I want, aaaand it's buggy. Then there's this ESM vs CJS flamewar, where the first one is better, yet it's also slower.
13:25 brb im firing up my anti-blur program to steal all your tokens >:) i will juice them like i juice the oranges i use to make orange juice.
Haha I had the exact same thought when seeing this - that would be good feedback for DevCycle, as it's how it looks on their site. I'm not sure the server-side tokens give you any more access than the client ones though? Definitely worth exploring
@@fasterthanlime i think the bblur looks nice, maybe they could have dummy keys that they blur, so it looks like they blurred the keys but really they're not there at all. or maybe that's what they allready do, i dont know bc i havent' checked !
Ooh that'd be really smart.
Deploying to german people is kinda smart because we will just blame our isp, but you wont get feedback because of it ^_^
Seriously, CEEQL? 😿
These days I have a habit of setting my scripts that are expected to be touching the DOM to type="module" which ensures the DOM is ready once they are loaded because ESM modules are automatically deferred. Then with TLA (top level await) there is no need for the top-level DOMContentLoaded handler or the async function within it. I think this should work for your youtube-promo.js.liquid file. WDYT?
Possibly, if type="module" works with inline scripts? (ie. no src attribute)
I guess I really do have old habits haha.
@@fasterthanlime It does, for personal projects (vanilla HTML/JS) I use ESM exclusively for a few years now and it works really nicely. In professional capacity, there is still a lot of pain when it comes it interfacing with the NPM ecosystem but it is slowly getting better as well.
Nice! I know there's been some controversy around ESM modules, but I'm personally excited about it.