If there is one thing you can change about Lemmy, what would it be?
jeffhykin @ jeffhykin @lemm.ee Posts 13Comments 343Joined 2 yr. ago
Showing an equal number of posts per community instead of letting the big ones dominate both "hot" and "top"
I'm actually the opposite, I'm glad I can leech off reddit and use it to kickstart communities but I see where you're coming from.
I would disagree.
There's more to software than big corporate websites or massive FOSS projects. I've made tons of little one-html-file sites, like an inflation-adjusted income calculator, a scheduling app I've used every week for 4 years, a chemistry converter/calculator for a class I was in, even my resume site is just a single html file. Not only that but most of my published deno modules are nothing more than a main.js, a readme, and a gitignore (no package.json, no node_modules, no install step).
You don't need tests, and a linter, and babel, and tree shaking, and JSX, and typescript, and souce maps just to make a resume site, or an infographic, or a one-off internal dashboard, or a simple blog, or a restraunt menu. Modern ES http imports and modern JS tooling is enough.
Sure, all I'm saying is every layer has major cost, and JS development has a lot of layers. Corporate websites can financially and time-wise afford that complexity cost when the benefits are scaled across millions of users.
But its a problem when the first result of YouTube tutorials for a one page To-do app uses a pipeline as conceptually* deep as:
- name resolution (node modules and unpinned versions)
- then compiling uncompiled dependencies
- then Vue/Sevlte to TS or JS + source maps
- then TSX to TS
- then TS + config options + feature flags to JS+source map
- then JS transpile CommonJS to ES imports
- then JS through babel for polyfills (and more source maps)
- then JS through tree shaking
- then JS through an uglifier (and more source maps)
- then combine JS into one file of JS (more source maps)
- then hydration for SSR
- then start a hot reloading dev server
- then user can render
I think OP is asking if it's possible for a good (no jQuery, no global varnames, etc) Todo app to work without needing all that.
When there's no build step, all the time is spent coding. None of it is spent configuring or setting up.
The hardest part of any software class in my experience is the triple combo of:
- installation
- "well it works on my machine" and
- "well this code worked for last semester's class"
When I have students start off editing one html file using pinned URL imports, the reliability is just insane. People might claim "installing typescript is reliable" but doesn't even come close to the reliability of not having a build step at all. No build step Just Works™, no M1 Mac edgecases, no npm audit, no rm rf node_modules.
I actually want to know more about this. It sounds like you know what you're talking about. If you've got any good YouTube videos or links (or feel compelled to talk about it yourself); I grew up in rural areas and simple farms, but I don't know the first think about feed mills and industrial agriculture.
A while ago I explored a rabbit hole about farming without ammonium nitrate and I was shocked how basically the whole world (minus the island of Java) depends on ammonium nitrate for food.
Is there a good way of notifying the user about what happened when their post/comment was blocked/banned?
I've had times on other services where my comment keeps disappearing and I think; okay is it my VPN? is it a bug? Is it my account? Is it that all URL's are banned? Is it a keyword? It's extremely infuriating to try and guess-and-check when no explanation is given. So I'm hoping there's some kind of feature for that.
We can both agree the solution is not larger cities! Its about more frequent smaller cities (villages/towns).
- Smaller schools that spread out instead of busing everyone within a 50mile radius
- Changing zoning rules so grocery stores, small hardware shops, etc can be near houses
While I agree cars/trucks make sense in rural areas, your great grandparents likely lived in rural extremely rural conditions without a car. It has been done for the majority of human existence, and the Amish still do it today.
Almost, but you bring up an important point about other language support.
The code includes an install script for one language, and the second part about "any language" isn't quite right. There is an alternative way to get any-language support but the current approach requires a language to have a syntax that is compatible with bash/powershell. For example I abuse the hell out of multi-line strings and multi line comments in javascript to make it be interpreted as a do-nothing bash/powershell script.
Python specifically might be possible because of its triple-quote strings, I haven't spent a long time trying but I did try a bit. However in general I don't think languages, like Haskell or Elixr, can work in this form because their syntax is incompatible.
However, if you don't care about being able to edit the script, it should be possible to mangle code from other languages, like converting Haskell code to hex or some other escaped format (can't be binary because that's not valid bash/powershell). We'd need to handle unpacking that hex with shell/powershell, but it could be done. And in that case, yes it would work with any portable language. (And many are more portable than Deno, which struggles to run on old stuff like Ubuntu 16.04!)
If you're interested in the hex unpacking let me know. I'm working on an offline bootstrapping script for deno, which involves embedding the runtime binaries of all OS's as hex into the script itself. Once I make it, it should be a lot easier to get this kind of thing working for other portable runtimes.
It can run compiled wasm! So you could write a bootstrap script in rust, compile it to wasm, embed that wasm into a deno installer script using https://deno.land/x/binaryify and then ship that as a universal executor.
Agreed hahaha. I thought I'd enjoy the day my code golf skills would be used to solve a legit problem but instead it just feels kinda gross 😆
Honestly it's really dissapointing we don't just have an agreed-upon universal pre-installed language. And it's beyond ironic (more like the universe is laughing at us) that JS, the web language that gets used for every not-web-thing, is also the language with a syntax that allows it to become the effectively universal no-preinstall language.
Actually I've been thinking of starting a Youtube/Peertube channel for a while so this will be a good place for me to start!
I'll come back and post a response once I've uploaded it! It'll probably take a week or two.
I write a lot of bootstrapping scripts, and I have a solution thats probably something you and others in this thread have never seen before. You can write a single script in a full/normal language, no compilation step, and it works on systems that only have bash/sh. It doesn't compile to bash, or at least not in the way you might think/expect it to, but it should do what you want.
(guillotine because it's a universal executor) https://github.com/jeff-hykin/deno-guillotine
This^ one uses Deno/JavaScript, but in principle it might be possible to do with other languages. It definitely requires some explanation, so I'll try to give that here;
As another person said, shells are not nearly as standardized as we need them to be. Mac uses zsh, Ubuntu uses dash, neither store a posix bash exectuable in the same place, and both have ls
and grep
differences that are big enough to crash common scripts. Even if you're super strict on POSIX compliance, common things will still break if you write a big script (or trying to compile a big program to bash).
I hate JS as much as the next guy, but it is possible to write a single text file that is valid bash/dash/zsh/powershell and valid JavaScript all at the same time. It sounds impossible, but there is enough overlapping syntax that actually any javascript program can be converted into a valid bash script without mangling the JS code. It might be possible to do for python as well.
POSIX is good enough for making a small, carefully-crafted well-tested OS-detecting caveat-handling script. So that's exactly what we do; use a small shell script at the top to ensure that the JS runtime you want is installed (auto install if missing). Then the script executes itself again using the JS runtime. It wasn't easy but I a made a library that explains how it's possible and gives a cli tool that automates it for the Deno runtime (the link I posted above).
After that, I just recreated tools that feel like bash, but this time they are actually cross platform. Ex:
js
let argWithSpaces = "some thing" run`echo hello ${argWithSpaces}`
I picked Deno because it auto installs libraries (imports directly from URL so users don't have to install anything)
The killer feature (IMO) is automatic conversion of C code to Zig code (transpiling). E.g. take a C project, convert it all to Zig, and even if you don't transpile, you still get really nice compat (include C headers just like a normal input without converting). Getting a medium sized C project converted to Zig in 1 day or 1 week, then incrementally improving from there, is really enticing IMO especially considering the alternative of rewriting in Rust could be months of very hard conversion work. Transpiling isn't perfect but it seems to be a 97% soltuion.
The second advantage seems to be easy unsafe work.
BTW I don't really use Zig, and I still prefer Rust, but those are the reasons I think it has a niche of its own. Does rust already fill this space? Yeah kinda, but that's why I'd call in a niche
The killer feature (IMO) is automatic conversion of C code to Zig code (transpiling). E.g. take a C project, convert it all to Zig, and even if you don't transpile, you still get really nice compat (include C headers just like a normal input without converting). Getting a medium sized C project converted to Zig in 1 day or 1 week, then incrementally improving from there, is really enticing IMO especially considering the alternative of rewriting in Rust could be months of very hard conversion work. Transpiling isn't perfect but it seems to be a 97% soltuion.
The second advantage seems to be easy unsafe work.
BTW I don't really use Zig, and I still prefer Rust, but those are the reasons I think it has a niche of its own.
I also prefer Rust, but I saw a pretty good argument for Zig (and actually a pretty big hole/problem with Rust) when it comes to unsafe stuff. The title of this is clickbait but the content is really good: https://www.youtube.com/watch?v=CbQVR4v5PZw
good bot
Yes some people are using it! I think this video gives a good idea of adoption since its about a company's experience using zig: https://www.youtube.com/watch?v=wxx5_Xaw7zU
I considered Zig and Nim as kind of irrelevant given Rust is being adopted, but this video, specifically the C compat, changed my mind, at least for Zig.
Maybe a hashtag feature for communities would be a quick start at this