Echo JS 0.11.0

<~>

tracker1 comments

tracker1 6 days ago. link 1 point
Updated title to more closely match the link and github repo description.  Tend to frown on submissions with the term "free" attached, or sensationalist titles.

Package seems interesting enough, would recommend also scanning uploads and extracted archives with ClamAV in addition to this tool.

I'm only slightly concerned about the distribution size of the delivered package from npm, not particularly bad as it's a server-side only package, but still on the heavy side.  In practice, you might want to use a worker instead of in-process inspections, similarly may even want to use an event sync/worker (Lambda/Function/Worker) as opposed to even in the same application in practice.

Would be nice to see performance testing for the checks in question... Would be nice if the site listed self-hosted and prominent cloud alternatives as well as some performance metrics.
tracker1 13 days ago. link 1 point
One thing that I found interesting, is that Bun's FFI interfaces are blocking only... Deno's supports having the execution and responses async, which can help.  I wound up having to use koffi for Node and Bun because of this limitation in order to improve performance.

I do wish that koffi's interfaces were supported in the box for Node, though NAPI is pretty stable, I feel that a straight up FFI approach can be better for some types of library integrations.

On the article itself, it's really conflating a lot of issues that can be performance issues that are well outside your runtime itself.  Database utilization, tuning and even connections in environments where you may be horizontally scaling can be a serious issue.

Beyond this, database drivers are not all the same... depending on the driver itself and how connections are handled, for the promise.all, it could be serializing the requests on a single connection, or it could be acquiring several connections from the same pool.  Hard to know for sure.  That doesn't even get into connection gateways for things like PostgreSQL, CRDB, etc. that have expensive connections, which can be problematic combined with worker services like Lambda, Cloudflare or Vercel, where you may not want to have larger pools of connections.  Which is an entire other area not even discussed.
tracker1 13 days ago. link 1 point
Definitely throwing a lot of different concepts at the wall in a less than coherent way.
tracker1 13 days ago. link 1 point
Generally, we really don't support posts regarding crypto currencies at all, and limit the posts on AI utilization in order to keep quality higher.

I'm leaving this post up, just letting you know so that you keep posts for similar tools to a minimum and that future posts may or may not remain up.

Personally, I find a lot of it interesting, but it's too easy to spiral into a morass of attempts at viral content with abusive financial incentives.
tracker1 16 days ago. link 1 point
I don't think .env.example is the only way to document available environment variables... and for libraries or frameworks is almost absolutely the wrong way.  That's what configuration documentation is for.

IMO, a framework shouldn't even load .env on its' own, it should rely on the upstream application to load its environment as appropriate.  For that matter, depending on your orchestration, you might not use .env files at all, you may inject parameters from a secrets repo as part of k3s/k8s...

Now, you should document environment variables that are meant to be modified by users, but even that isn't always the case as outlined in the articles... sometimes they're for testing.

For something I've been working on the past month or so, I have specific tests that will only work in Windows and with native database install (not via Docker)... so there are environment variables to test those scenarios separately.  These aren't meant to be used downstream at all.
tracker1 18 days ago. link 1 point
Nice... and I hope it works out for you as a passive income source.. I'm working on a software package myself intending to sell up-feature editions.

I would note that you can definitely hit cold start issues in Cloudflare if your site/service isn't called often enough for a given region... It's not too bad, just worth being aware that it can happen.

I worked at a SaaS startup for a while, where there was a very heavy demand to do a lot of work under 100ms "always" including the RTT, so in practice we'd need to be in the 30-50ms range, which included a few parallel database calls and a custom AI model.
tracker1 18 days ago. link 2 points
While interesting, you posted this just over a week ago... Posting more frequently than every other month or so gets really noisy here and a lot of users tend to actively dislike that activity over time.

I'm glad to see you've added some usability features in place.  As a stretch goal, may want to look into publishing the entire package as an SVG based color font using the nerd font code points that match the logos, for the logos that overlap.  Though, in doing that, you might, or may not, want to also include or incorporate a nice svg emojii set.  Then you can be used as a fallback font for color iconography altogether.
tracker1 18 days ago. link 1 point
I was kind of curious about the JS payload to the browser, and maybe how the dom node rendering was handled, or if any used canvas/wasm, etc.

I build an expandable Gantt chard for a job in 1999-2000 that was pretty tough going, had to work in NN4.x and IE4/5.  It worked, but with NN, you pretty much need to cover the area with a solid ILayer otherwise it'll give someone a seizure with the repaint flickering.  Today is so much nicer.

Depending on the level of interactivity, I'd probably try leaning into Rust+WASM with Canvas... As much as I love JS, been running a couple projects playing with Rust WASM and Canvas interactivity and it's been pretty nice.  You of course do lose some accessibility though, so that may be an issue depending no your needs.
tracker1 18 days ago. link 1 point
Cool tool... I tend to be pretty anal about making all options available via command line parameters or via environment and search up from working and executable path(s) for a .env file.

I'm not always the best myself at keeping the example up to date, I usually locate my active .env a directory above my project, so I can reset --hard without losing my .env ... I don't know how often OP is cycling in and out new devs though.
[more]