Details
-
AboutChief Procrastination Officer, Keeper of The Keys to My Father's Flat, proud holder of a mediocre BSc. Analytical fundamentalist Manufactured: Budapest, 2001 Calories: 70,000 May contain traces of other viewpoints Matrix: @lbfalvy.matrix.org
-
SkillsTypescript, C#, Rust, Orchid, goofy altlangs, group theory
-
LocationBudapest, HU
-
Website
-
Github
Joined devRant on 5/18/2018
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API

From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
-
@12bitfloat Oh I saw that one! My friend in uni tried to offload some crypto stuff from Erlang into a Rust NIF, and this was the point where he decided to use C instead because learning everything there is to know about advanced Rust type system tricks wouldn't fit in the schedule.
-
I started off with Chumsky but pretty quickly switched over to a manual parser; I think with all the functional-ish features of Rust libraries struggle to justify their existence so they try really hard to be zero-cost which is just miserable beyond a certain level of complexity.
-
Finder's strategy isn't even that strange, the idea is basically that you should only read a hidden file if you're looking for that specific hidden file. All that's required to support it perfectly is to skip hidden files in all processes that are based on directory enumeration. It's not hard to design a dev toolchain that works like this.
-
I just feel like if you take the stance that creating arbitrary hidden files in every directory is acceptable, then you should design your tools to skip arbitrary hidden files in directories.
-
"Finder information not allowed" then why is it there!? It's the same fucking vendor! Why do they ship tools that break each other? Who buys this crap?
-
@retoor Police cars are almost always bought at a massively discounted price because it's good for marketing. The - catastrophically underfunded and understaffed - UK police rejected an offer of a few hundred free top-of-the-line Audis recently presumably because they felt it would create this exact kind of false image.
-
@AvatarOfKaine I forgot to answer your question. I don't think most of the kernel needs to be rewritten. We can cover 99% of the risks by writing Rust abstractions for every core API and writing all _new_ modules in Rust and rewriting only orphaned ones so that the expectations of skill and effort from new module authors can be lower. Rust has excellent C interop, there is minimal additional effort in a safe wrapper beyond directly describing how the C API can be safely used.
-
@AvatarOfKaine "good devs make it work" kind of applies to all languages I think. The excellent devs at another branch of my company managed to make Fortran 77 work in 2010, but it took them so long that the automation department got scaled down in the end, it's practically impossible to hire anyone to work on it, and the fact that it "works" is about the best thing that can be said about the product.
Functionality doesn't exist in a vacuum, and on all other metrics C is failing. It hasn't been entirely replaced yet because it does, in fact, work, so there's no specific isolated momentary problem that could not be fixed cheaper through changing the C code than through switching to a language where that problem could not have happened. -
@AvatarOfKaine The Linux kernel gets tested to hell and back on every release to catch the slew of bugs, and every patch is reviewed by a council of domain experts. It would be stable if it was written in Befunge.
-
I also like sticky scroll. I actually don't mind enabling features by default, I probably wouldn't have tried sticky scroll if it wasn't automatically enabled for me because I didn't know what it is. Also I think a big reason why OSS struggles to gain popularity is that the default value for settings is always chosen to avoid disrupting existing setups so OOTB they come with a batshit config that looks a lot like the modern tool trying very hard to look like its 50 year old ancestor.
There definitely should always be an option to disable everything however, and Windows' tendency to conveniently forget user decisions that don't align with Microsoft's vision is inexcusable. -
I guess you can put the value in a box since most nodes would not have one and lookups don't read it on any node except the last.
-
A Rust Trie would be something like
struct Trie<T> {
value: Option<T>,
cont: HashMap<char, Trie<T>>,
}
values inline, continuations in a map and inline in the map. -
I'll grant you that's a very pretty trie and the Rust version would probably be similar to what you have, as I already said when you wrote it.
edit: actually nevermind, why in the nine hells is the continuation set a linked list and not an array? That is so many unnecessary cache misses -
@retoor that is a trie, not a BTree. Trie is a fairly specific datastructure that is only generic on data it doesn't interact with, so it's C's strong suit, whereas an arbitrary map which needs to use a keytype-specific comparison function is both vastly more common and absolutely disgusting in C.
-
@retoor Shorter statements are neither more accurate nor more useful, not even in a statistical sense.
-
By the way, C can't have destructors because there's no way to track, statically or dynamically, whether the value physically held in a field actually corresponds to a meaningful object. This is why for the longest time C was the only language in its niche, because to do this correctly you need to establish a lot of abstractions which, even if you have an excellent optimizer like C++ and ML, leave you with essentially two different languages for performant and easy code which interoperate well but require different skills to write.
The unique feature of Rust that makes things a lot easier is that because lifetimes are compile-time, performant code ends up working very similarly to easy code. -
That would've been the bare minimum 30 years ago. Rust does a lot more than that.
-
@jiraTicket time for an absurdly well equipped and funded coup d'état
-
Rust's new trait solver is now invoked by default. This changes nothing hopefully, but it's indicative that the trait solver refactor is irreversibly marching towards completion, and once it's complete, two dozen feature requests will be unblocked at once.
-
I think devrant benefits from the economies of the smolnet. It's cheap to run and will probably remain cheap forever, it lacks moderation, the content is never presented inline on another website and rarely linked so the cultural norms of other sites don't apply. In particular, I think activitypub, AT and other protocols that encourage taking posts out of the context of the in-group don't benefit old forums that have a culture of their own.
An ActivityPub app will always have the shared culture of Mastodon to some extent limiting its own. Unless it doesn't federate with anyone, but then what's the point. -
It's to tick boxes on audits.
-
@jestdotty I defined my own namespacing rules, and they're not even particularly tricky.
-
and that's why you don't let a single company design every element of a toolbox; the manager who likes and cares about mobile games should not be directly promoted into making decisions about a launcher, Bluetooth handshake flow, or voice control.
-
Why are they in a basilica? I thought everyone used reptilians as a euphemism for jews?
-
At least use a dedicated placeholder, like int_by_default
-
@retoor I tried to learn Nushell but it doesn't really improve things over JS and it has way worse DX, yet it also can't spawn arbitrary programs like a shelll, so I didn't really see the value add.
-
@retoor If I want to store a command for reuse I write a program, initially in a clumsy scripting language and the second time I need to modify it I switch to a proper language. On Linux or cross-platform, JS then Rust, on Windows, PowerShell then C#.
-
I'll take anything over stringly typed shells
-
especially because you know others trusted it more so the odds that someone spots an issue are much lower.
-
If you don''t save the project, the language server and the compiler will believe that the relationship exists, but the build system will ignore it, queue the two projects in unspecified order, and any files passed by copying and not by compiler parameters will be missing more-or-less at random.