Mine is that the useState hook is an actual plague on the entire React ecosystem. Regardless of your opinions of React, if you wanna use something then use it right.
I’ve talked about it before, but I really hate PDFs. Specifically the things PDFs are used for. If you aren’t planning to print something and will only ever look at it on a screen, HTML is better. It’s so frustrating when you’re going to a website, you know, a thing that serves content in HTML, and then some piece of information is in a PDF.
Linux should be forked at a pre-ai date.
If you don’t prematurely optimize your code you’ll never optimize your code.
I know people are advised against premature optimization because it risks you wasting time on something that ends up unused.
But let’s be honest, once you get something into a working state will you ever be afforded the time to go back to it? Even if you are, are you really gonna choose to uproot code and do a refactor on it and potentially everything relying on it?
Rather than waiting until your hacks and workarounds run out and you absolutely have to do a refactor, I would prefer spending more time upfront to make sure it is efficient and flexible before moving on.
The
unlesskeyword is an abominationI just got out of an interview where they pretty much told me they will ask me to vibe coded the tool they’re working on. LLMs do not make your code faster, and you are not more productive using it. I will never change my mind. We coded for 70+ years without it. You’re gonna end up with some subtle hard to reproduce bugs that are intermittently reproducible, and code that is nearly unmaintainable, and nobody knows what it does or how it works.
Good luck with that.
Object oriented programming is dogshit.
You should definitely look at how your time related code works and not trust the libraries.
Because most of the time your assumptions about how your library works will be wrong. And the rest of the time your library will be riddled with bugs.
I like local LLMs. I got to try one recently and it felt different using open ones than corporate ones.
Rust is a fusion of the worst parts from Javascript and c++.
Async/await turns the concepts from the [CSP] (https://en.wikipedia.org/wiki/Communicating_sequential_processes) that are useful into an overcomplicated mess in every language that implements it, and golang is a prime example of how clear and intuitive an implementation aligned with CSP can be without requiring arcane typing and language infrastructure that comes with async/await approaches.
My masochistic tendencies brought me back to say:
One reason python is a great language is that most LLMs are particularly good with it
This is gonna make me sound crazy, but always pass functions when possible, and use case statements for how the passed-in functions are applied.
As a simple example, imagine you want to take the average of a set of numbers. Instead of doing sum(numbers)/len(numbers), do:
Quotient_reduce(sum, lambda x,y: x+1, numbers)
then, inside the definition of quotient_reduce,
Def quotient_reduce(accumulate_by, normalize_by, list):
If accumulate_by==sum and normalize_by==(lambda x,y:x+1):
return [some efficient implementation of average]Else:
Return reduce(accumulate_by, list)/reduce(normalize_by, list)I know it must look insane, but it generalizes normalization, mean, geometric mean, etc, and on the outside there’s no taste of the horrible concrete implementation!
Apologies about formatting, I’m on my phone.
Using LLMs are not the same as using intellisense or compilers and there are a myriad number of reasons not to use it that could fill an entire book and I will look down on any company or freelance developer that uses it.
Yes I’ll fight Linus over this and yes I’ll be right.
Fight me (Not literally) LLMs used to give garbage output but nowadays they are actually good and if given in the hands of right person, it can increase the productivity.
You might say productivity increases but salary dosent but that is a mangement issue and does not make LLMs bad.
No one’s salary went up when we obsoleted all the people calculating stuff. Actually I’m pretty sure salaries go down when work is automated
They have to go down, it increases the supply of workers, reduces the bargaining strength of people seeking work
Every issue I have with the tech has nothing to do with how “useful” it is.
I’d even argue it’s only useful in the short term, and extremely harmful in the long term. Not just because of it’s fascist origins, but because developing it further is accelerating climate change unnecessarily when we direly need to do the opposite. Climate change will rapidly undo any of the good LLMs manage to accomplish.
Isn’t this the most common layman’s opinion?
It’s also the opinion of people who don’t make a habit of drinking the special koolaid.
It’s the most common internet opinion, but IRL people use it without a second thought, and will get annoyed if you call them out on it.
EDIT: I don’t think this post was talking about laymen to begin with.
There’s a reason.
Yup, and I don’t care about that reason. It’s still an irresponsible technology.
I dunno, I see a lot of people defending Linus even on Lemmy.
It as in LLMs or it as in intellisense?
Most likely LLMs. Most people only warn against intellisense for initially learning coding, or if they work in academia.
Why would anybody be against intellisense? Even for those use cases, it’s helpful. (Excluding the code completion from LLMs included ofc)
Not sure tbh, but they exist 😅
Getters and setters are ridiculous
I don’t like working with them any more than you do, but they’re necessary to enforce read/write-level security. Without them, there’d be no differentiation between reading a variable and writing variable from an external class, which kinda defeats the point.
From a development standpoint, they’re an extra hurdle to clear. From a security standpoint, they’re a necessary evil.
Moreso correctness, not security. In the end, your user is shooting themselves in their foot, if they mutate a variable that they shouldn’t, and by making the variable private and only offering a getter, we document that.
Having said that, there’s also big differences between languages and paradigms, though.
In object-oriented / garbage-collected languages, you often pass around references to an object into so many places that you need to code defensively versus your own codebase. That’s why getters/setters were taught religiously during the height of OOP.In other paradigms, you often just have one place that uses an object and then you can …simply not shoot yourself in the foot there. When you control both the definition and the access, you don’t need to protect yourself from yourself. In particular, you would probably think twice before mutating an object anyways.
Damn, I was gonna disagree but you bring up some good points.
I really need to get into functional programming.
Functional programming is definitely worth a look in this regard as well, but what really drove this home for me is Rust.
Its ownership+borrowing concept is exactly that, it enforces that you’ve got one place where an object is managed and in particular mutating can only be done in at most one place.
Obviously, there’s also ways to get out of that, in case you do want some memory managed centrally, but it just isn’t the default.
That’s why people invented properties / auto generated getter/setter - in at least 95% of cases they are just busywork.
YES
Oh my god. I’m not the only one who thinks this!
-
C++ is an awful language overall.
-
Linus is just some guy with good programming skills and not an authority over anything tech.
-
There aren’t any good text editors in the wild. VSCode is awful apart from extension support. Kate is close to being perfect but lack of extensions are pulling it back. Vim, Helix, Emacs, NeoVim are all flex toys.nvm just tried zed with AI disabled -
AI bad
All authorities are just some guy with good programming skills. The giants on whose shoulders we stand were mostly rich guys who had the privilege of screwing around. I prefer the original definition of genius - not a quality that a person possesses, but an external spirit that comes and visits you.
Upvoting because I disagree with every word of what you wrote.
That’s the point lol
Linus is just some guy with good programming skills
I somewhat agree. Most celebrated personalities in tech aren’t programming geniuses - they were in the right area at the right time and had some luck. Zuckerberg is a good example.
I think kernel maintainers and rendering engines (browsers and others) have a higher base skill level. Like some web developers are clever and some are stupid, but I don’t think there are stupid kernel maintainers.
The thing with Linus is that he’s been involved, and at the pointy end, for decades. You or I may not agree with him on every issue, but you can acknowledge that he has experience and he has connections.
I have massive respect for the guy. He did so much for the open source community. But for some reason everything he says is interpreted as inarguable truth by most tech guys.
For example his opinions on AI are pure trash and bootlickery. Which is fine anyone can think anything. We just have to think for ourselves a little.
I agree that everyone needs to think for themselves, absolutely.
However, I struggle with this and it’s kind of what I’m getting at:
his opinions on AI are pure trash and bootlickery
Firstly, you’ll be hard pressed to find someone who hate’s AI more than me. It literally keeps me awake at night. I hate the environmental impact. I hate the people it’s enriching. I hate the work it’s stealing. I don’t often use the word “hate” but it really does apply here.
That said, I always try to defer to the opinions of people with more experience than me, and as regards kernel maintenance and Linus, that’s certainly true.
You’ve probably heard of the Dunning-Kruger effect. I know a bit about code, a bit about FOSS, a bit about linux, AI, and communities. So it’s easy to underestimate the yawning chasm of experience and knowledge between myself and Linus.
That doesn’t mean we have to blindly accept the opinions of others (I honestly haven’t accepted Linus’ opinion myself), but I’m aware of the profound discrepancy between my opinion and his and it concerns me.
All that aside, is it possible to acknowledge that something is the correct course of action even if it’s not the ideal? I haven’t been following the Linus / AI thing, but as I understand it a project like that kinda has to allow AI bug reports because threat actors will certainly be using AI to find exploitable bugs.
With the greatest respect, responding to this comment would be to engage in a discussion of whether Linus is right in this particular instance. I’m not willing to do that because I’m sure that’s a conversation that’s been had a billion times.
I was / am happy to talk about how we injest the opinions of experts in a more general way.
it gets down to whether experts are experts at everything. Linus is not an expert at anything outside of kernel maintenance. His opinions on whether we should use LLMs are null and void considering the massive effect on the planet. It’d be like if a nuclear engineer said we should be building more nuclear bombs for everyone to use, just so they could use nuclear engineer more freely. Like, their opinions about nuclear energy might be fine, but their opinions that have an effect on the entire planet are completely wack.
That’s a really good point. There’s loads of examples of this, like doctors don’t give good nutrition advice, et cetera.
He doesn’t really need any latitude to offer an opinion on whether these tools should be used on the Linux kernel.
Whether you should use an LLM to plan your shopping list, or understand your toddlers behavior, is not something you should listen to Linus about.
injest
Could you be serious, though?
My argument against Linus would be that the non-LLM tooling is auditable and known. I know I can trust all the tooling below it and only read your code, but with LLMs they are explicitly trying to replicate good looking code and can generate a ton of it, so it becomes incredibly difficult to actually audit.
Again this is part of the discussion about Linus decisions which has been had ad-nauseum.
Zed is actually a pretty good editor IMO. Miles ahead of Code at least
I just tried out Zed and the way it does extensions and services is so awful from both a security and configurability standpoint I ended up immediately switching back to Helix. At least Gram is an option if you want one that’s GUI-first and it doesn’t automatically download random shit.
I thought zed was just a slop focused Code fork like Cursor?
Not a slop fork, they wrote their own rust graphics compositor, 10/10 will shill until they go shit heel
It really is remarkably better than Code. Single-window, multi-repo, multi-worktree support? Not a problem. Want a closer look at the diff? Why stop there, you can maximize every single panel. The Git integration is also so much better, no extensions required. Lots more stuff is integrated, yet less setup is required and somehow it is still much faster than Code.
You can really tell that a ton of thought went into this IDE
I’ve not even gone that deep with it, just writing code to keep my trash can purring along. It’s smoooth, responsive, everything is intuitive, and the language server support is 🤌
Nope. It’s written from scratch in rust. Not a fork at all.
If you do not want the AI, gram editor is a fork that works well
I like Nano :)
Well yes obviously; Nano is perfection but is normally left out to give the other text editors a chance.
I find it so weird that vi and/or vim is included (at least what I have seen so far) everywhere but not nano.
vi is so not intuitive
Give micro a shot
What makes it better/different?
Just try it
Found the differences and am intrigued.
Now I’d just need to unlearn some muscle memory ;)
That information about text editors is out of date - we now have Zed. Just ignore the “AI integration” bs, it’s entirely optional
Also checkout Gram on Codeberg, it’s Zed with all the AI trash and telemetry removed.
Do they collect data though? This is important. If not I might give it a shot.
And also when you don’t use AI, can you disable all AI UI features.
Zed is totally open source, and the AI “features” are optional. When you set it up - at least when I did - it’s one checkbox to disable. I don’t remember about the telemetry you will have to have a look, I’m usually ok with that myself.
I came from VSCode and haven’t found anything I miss. I especially don’t miss the poor performance of VSCode, Zed is extremely lightweight!
I miss C# support, but I also think vscode’s solution for that was shit too
It’s opt-out telemetry sadly. I’ve been tempted to make a PR to make it op-in
Right now I use Helix and I’m trying to decide whether to switch to Zed. Because it almost looks like a better editor at this point, except its configuration is not as declarative as I’d like and its AI service uses a bunch of closed providers.
VSCode is like the worst fauxpen source ever.
Unrelated, but I absolutely adore your pfp.
Thanks!
I wouldn’t say that vscode is awful. It’s not good though. Even while being the best.
To add: jetbrains IDEs are awful
Yeah bloated privacy nightmares.
Linus is just some guy with good programming skills and not an authority over anything tech.
Isn’t he the authority that approves what gets into the kernel? Or used to be at least.
Zed sucks in many of the ways that modern editors suck.
Autocompleting on characters that appear in code, and autocompleting in a way that overwrites the code you have already written are two incredibly stupid decisions that put a mark over any tool that adopts any one of them.
But then, Zed almost working, but in a way that still sucks was enough to motivate me into setting my Emacs properly, in a way that doesn’t suck. So Zed gave me a good editor.
What makes you think C++ is awful?
The intention of C++ was to be C’s replacement by adding objects into the programming language while also maintaining the fast compilation and runtime that came with C. In the end it resulted in longer compilation and runtime times (from the millisecond scale to seconds scale), which made it generally unappealing for embedded systems.
On a production code standpoint, if were comparing it to something like python, it is debatable, but there’s just a large learning curve associated with the language that could otherwise be avoided with a different OOP language. By trying to accomplish everything, it fails to implement everything well to compete with other languages.
It’s painful to learn and set up. Looking at other people’s code is horrifying. I looked at a portion of Godot code and the amount of headers defined is actually retarded. A lot of the c++ function names are a remnant of not well thought out ideas. It’s also normal to have thousands of lines of code for a small portion of a small project?? The only way I see it being used is through vibe coding. You can’t tell me it’s easier to look at someone’s C++ than their Python project.
Don’t most people who use it try to avoid like 90% of the core language features
based
Agree with half of that. C++ is last century stuff and should be replaced. Any new code in C and C++ is immediately a vulnerability.
Atleast C is easy to understand which makes it easier to find and fix vulnerabilities. C++ feels like it’s duct tape holding it together.
C is easy to understand and find vulns? AI is uncovering decades of vulns in C code that humans hadn’t seen since the code’s inception. And they aren’t logic errors but memory management errors. Not a single day goes by without a CVE in a C/C++ project about memory management.
Both languages are walking vulnerabilities.
Embedded programmer here: C/C++ is not going away any time soon. Rust just isn’t ready yet (on microcontrollers anyway)
-
















