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
-
Also ignore the SQL injection, that is not the point right now and only about 100 people are supposed to have access to the endpoints that can exploit it.
-
If I'm not mistaken, this is the slowest possible way to build strings in C#
-
beard is warm and sweaty even if I clean it daily. Also I think you're the minority; most people who are into men prefer a clean shave or possibly stubble.
-
Yeah React Native DX is what happens when you combine the performance of the Java SDK, the coherence of the Node ecosystem and the portability of systems programming.
-
No particular reason why it has to be either, their design is probably just slow because they want to make sure it works in weird configurations. They could check for the simple case and use SFTP
-
damn you, this is clever
-
What a relief! My father will be delighted to hear that long-covid can end, he's been trying to make peace with never regaining his intellect.
-
@12bitfloat More dynamic typing, but imagine if JS had Result but no types, and you had to unwrap or forward the error every time you tried to index an object in case it wasn't actually an object.
Actually you don't need to imagine, that is exactly what it looks like when you have to operate on JS values via the bindings from WASM Rust. -
@BordedDev Nobody does anything with selector magic in libraries because it's absurdly sensitive to the infinitely composable element tree of HTML, in addition to being a pain in the ass to read and write on the CSS side. Also all library-provided classes are prefixed with the library name like we're in the 80s to make up for CSS' lack of namespacing.
-
@BordedDev It doesn't though; Tailwind parses everything and generates rules with very simple selectors keyed by the very specific class-names you write. Any magic is either compile time or via CSS variables, and any connections are explicitly referenced on at least one end.
-
@BordedDev Tailwind looks silly but it actually fixes this problem by abstracting away CSS classes. You're not generally meant to think about the classes in tailwind, 99% of the logic is done in variables or macros. You only use manually defined classes as the last layer of abstraction, and only these classes have to be maintained by you so only their structure matters. It's also sidestepping the stigma around inline styles, because it's better in exactly the situations where inline styles are better, but it's popular because it doesn't look like inline styles.
-
@BordedDev Those features are tangential to composition, though I also hate clever selector magic for unrelated reasons. My programming language "ctrl+c,ctrl+v-s" logic when I call a function inside another, properties when I use a struct as a field type, values when I use a variable in an expression. It's normal. It's standard. It has a billion use cases, including less magical and more predictable alternatives to clever selector magic. CSS classes are less for not having this feature.
-
@BordedDev Yeah and those CSS variables can then be used in inline styles. CSS variables have nothing to do with this conversation (just like JS doesn't have anything to do with it). CSS CLASSES can't be composed into higher structures, let alone into more specific classes. They can be combined in use, but all of them have to be listed individually, any kind of structure between them cannot be expressed in the code. Therefore separating styles from the HTML is meaningless unless the specific class that you choose to define represents something more general than both the style(s) it applies and the element(s) it is applied to, and its styles are also never involved in layout math, which is a manually upheld invariant that would be obscured by abstraction.
-
@antigermanist how are layout and client-side interactivity even remotely connected problems within the realm of web-development?
-
CSS is far more limited in terms of organization than TC languages, even C, so extending code quality intuition to it isn't always a good idea. In code it is _usually_ a good idea to define a variable for magic values because then you can use that variable in the definition of other variables that logically depend on that value, and now there's a lot less repetition. You can't do this with CSS classes.
-
@BordedDev And CSS classes have a lot of additional limitations over variables, for example, they're global and can't compose. Want to change all 20px margins to 25? Turns out grepping for margin-20 is incorrect because whenever it was going to be applied to an element that also had a more specific class, margin: 20px was just added to that class too. So either way the only correct way to enumerate all occurrences of something you want to change is to search for the style command in both CSS and HTML.
-
@BordedDev no really, why should I use a variable? Sure it allows me to name the value, but it also forces me to take it out of its context within the expression. Maybe I can't give a value a meaningful name, because it derives its value from other values within the same expression. It's the same reason why lambdas are so popular; sometimes a value has no meaningful name besides what's obvious from its relation to other values in the expression. Often the combined benefit of shorter code and the value being visible in context is more useful than whatever limited benefit a name could provide. Styles are also subject to layout math where the only way to deal with them is to visually verify that the layout is still correct and tweak the numbers as necessary. In these cases having all the numbers at hand exactly where the HTML is can be a huge benefit.
-
@iiii Right, but that's not a direct argument against inline styles, it's a much more advanced strategy that is better than inline styles. Absent such a strategy, I'm still not convinced that inline styles are worse than classes that are either designed to fit a single element or a single style rule, and thus can't be changed without arbitrary breakage (and rendering their name meaningless).
-
@antigermanist I have opinions too, so do my coworkers. I was asking for arguments.
-
Every dev knows deep down that their code quality best practices are thumb rules derived in a specific context from some hard to define universal attributes of good code, and at a bit of pressure they are willing to open a discussion about the best practices. The undesirability of inline CSS is one of very few rules that are enshrined as unquestionable, and attempting to discuss them evokes hostility.
-
Does lobotomy actually fix that? I tend to assume that much like degenerative brain diseases, the specifics are forgotten but general feelings don't change.
-
I once accidentally tried to build Java from source six times, and because the app itself was also hybrid java/c++ and massive, each time it took me a bit to notice that the names flying by have weirdly liittle to do with the problem domain and are mostly abstract utilities for parsing.
-
Sounds like you're accidentally building Chromium from source. That tends to happen to me every few months.
-
React in an exercise in bad API design because besides the concrete algorithms employed to solve two tasks, DOM diffing and update scheduling, it can have exactly one correct implementation, and that implementation is fucking slow.
-
@kiki React requries 10 times the engineering effort to improve because they lack a compiler and they navigated themselves into a corner where they can't build one because they must remain compatible with Babel and co. They don't get to decide when they create datastructures for state or context because the moment they find out that you have some is the same synchronous moment that they have to give you the initial value and the setter. They diff the dom! You literally encode it in custom syntax, the exact set of values it depends on, and the ways in which it depends on them are declaratively stated, but because they committed to JSX and others rely on it too, that information is locked away from them.
-
Finally they found a way to make the combined layout objectively worse than the separated one; Teams are now displayed below ALL chats, not in recency order, and there's a button at the bottom of the screen that would let me scroll past the screenfuls of dead chats with random people, so it effectively functions like a separate tab but one that's not included in the tab stack and only accessible via a dedicated button.
-
@retoor I remembered this today; I'm delighted to see that Aurelia is using ES modules and not some goofy dynamic module loading logic.
-
@BordedDev she has another, it's just much weaker
-
Alerting should not be an internal system. Neither should the incident response team's ticketing, messaging and knowledge management system, for that matter.
-
@antigermgerm that's why I mentioned that I got this from someone who's both qualified to speak about systemic oppression and a native member of the culture being criticized, but still just one person, so while her opinion holds weight, it's still one opinion. I think that was an appropriate way to present this perspective.