

Is there a lot of computation-intensive code being written in pure Python? My impression was that the numpy/pandas/polars etc kind of stuff was powered by languages like fortran, rust and c++.
Is there a lot of computation-intensive code being written in pure Python? My impression was that the numpy/pandas/polars etc kind of stuff was powered by languages like fortran, rust and c++.
And it powers a lot of phones. People generally don’t like it when their phone needs to charge all the freaking time.
And battery costs, including charging time, for a lot of devices. Users generally aren’t happy with devices that run out of juice all the time.
As if anyone cared if they had to wait a total of 3 seconds in a workday.
That depends on when it appears. Some tasks kind of have to feel instantaneous, and there might be a pretty slim margin between okay and frustrating.
But yeah, that’s the kind of savings that mostly matter on the scale of regional or national grid planning.
Most engineers already write bloated, abstracted, glacial code that burns CPU cycles like a California wildfire. Clean code? Ha! You’re writing for other programmers’ academic circlejerk, not the hardware.
It’s interesting that everybody else preaches ‘Write for the human first, for the machine second’.
Yeah, the author seems to lean too hard into the “programming is electronics” model, where the opposing end is “programming is math and formal logic”; most of us take some mixed view. And most of us have higher correctness requirements than what a reasonable effort in memory unsafe languages like C and C++ gives us, so we trade away some machine efficiency. In the authors parlance, most of us aren’t interested in the demoscene circlejerk; we need to make tradeoffs between maintainability and everything else. Write-once code isn’t good enough.
There have been attempts at establishing a third pole of “promptgramming is natural language” or whatever ever since COBOL promised programming in plain English, but the ambiguity of natural language when used to encode a business logic machine means that a “sufficiently advanced compiler” will have to be extremely advanced, on the order of including the manager and the entire engineering methodology.
I’ve been using neovim for years (and the vim family for decades), and I guess with LSP it’s pretty much an IDE these days.
It’s also likely a bit of cost-benefit analysis for self-hosting vs using a managed service.
Codeberg would be more in line with Mozilla’s ideals IMO, but GitHub is a pragmatic choice anyway.
Phabricator was an alternative for a development platform of sorts; development ceased in 2021. They’re still running here and there, but I expect them to be in the process of being deprecated.
Må innrømme at jeg ikke er kjent med uttrykket. Er det en dansk eufemisme for tysk?
Itt’s æ fønn mim, bøtt Ai ålwejs fil lajk thej kudd hæv dønn æ better dsjåbb åv the juropien spelling. In eni kejs, itt’s æ veri nais søbreddit, æn Ai kip fårgetting iff ther’s wan ån Lemmy.
Yeah, I think my sway config is around five years old now. The Wayland experience hasn’t been entirely without warts, but as someone who kind of just uses the desktop to drive a browser and a bunch of terminals, there’s not a whole lot of problems to run into either.
Also not having used Java for decades I’ll not comment on the state of their abstractions, but
IMO at the extreme being unable to shed the past means negatively hindering progress. I think modern Java versions show a budding shift in mentality
both reminds me of similar complaints against C++ (and with a sizeable amount of users wishing for an ABI break), and how weird it is to get both complaints like that and over the fact that so many shops are on ancient versions. They’ve moved slowly, but it doesn’t seem like anything was slow enough for a lot of shops, which indicates they likely could’ve moved faster without changing which versions users would be at today.
This sounds like the antithesis to parse, don’t validate. It is possible to use just maps and strings and get a “stringly typed” program, but there’ a bunch of downsides to it too:
dict[str, Any]
; most of us want the typechecker to help us write correct code.get
from a map is Optional
; you need to be constantly checking and handling that rather than being able to have methods that return T
, or even direct field accessUltimately while Hickey has a good point in the distinction between easy
and simple
, his ideals don’t seem particularly aligned with the programming world at large: For one thing, Clojure remains pretty small, but even other dynamic programming languages like Javascript and Python have been moving towards typechecking through Typescript and typing in Python.
Doing a json.load
into some dict[str, Any]
is simple, but actually programming like that isn’t easy. Apparently a lot of programmers find value in doing the extra work to get some stdlib or pydantic dataclasses. Most of us get a confidence boost from using parsed data, and feel uneasy shuffling around stuff that’s just strings and maps.
If ssh has a security issue and you permit root logins then hostiles likely have an easier time getting access to root on the machine than if they only get access to your user account—then they need multiple exploits.
Generally you also want to be root as little as possible. Hence sudo, run0, etc.
Isn’t that sort of just the cost of doing business in C? It’s a sparse language, so it falls to the programmer to cobble together more.
I do also think the concrete example of emails should be taken as a stand-in. Errors like swapping a parameter for an email application is likely not very harmful and detected early given the volume of email that exists. But in other, less fault-tolerant applications it becomes a lot more valuable.
It is pretty funny that C’s type system can be described pretty differently based on the speaker’s experience. The parable of the Blub language comes to mind.
Parsing is a way of “validating early”. You either get a successful parse and the program continues working on known-good data with that knowledge encoded in the type system, or you handle incorrect data as soon as it’s encountered.
I used Ratpoison for well over a decade, and only replaced it with sway once I had a new machine and figured it was time to try Wayland. Apparently that’s some 4-5 years ago already.
I feel I gotta point out it’s a pretty funny example—email comes up so frequently as a thing that you’re recommended to neither parse nor validate, just try to send an email to the address and see if it works. If you need to know that it was received successfully, a link to click is the general method.
But “parse, don’t validate” is still a generally good idea, no matter the example used. :)
Yeah, and Android has had some 16 years of “optimize later”. I have some very very limited experience with writing mobile apps and while I found it to be a PITA, there is clearly a lot of thought given to how to not eat all the battery and die in the ecosystem there. I would expect that kind of work to also be done at the JVM level.
If Windows Mobile had succeeded, C# likely would’ve been lower as well, just because there’d be more incentive to make a battery charge last longer.