Where the fuck did we go so wrong with modern software? (Tantrum) -

Kosher Dill

Potato Chips
True & Honest Fan
kiwifarms.net
I'll give you a hint, though: the common culprit across all software types is off-the-shelf libraries.
I don't think the issue is usually too many libraries for a given design (barring extreme cases like NPM). Rather, it's that including libraries is so easy now and covers such a vast range of features that it enables bad design. I'm thinking in particular of Internet features, from HTTP connections on up to infinity.
 

Ledj

kiwifarms.net
Iterate that over 15 years, and you get modern software. It's dependencies all the way down. It's why all the major apps on iOS crashed yesterday because they include the Facebook SDK, even when they made no calls to it, even when they commented out the code referencing it.

I completely agree with you about dependencies and Javascript hell. The other problem with dependencies is that they often negate the need for programmers to understand what it is they're actually accomplishing. There's a common notion in the well-marketed game engines that you don't need a good handle on math to make games; it's only superficially true. It's the same problem with web developers who don't even have to have an abstract notion of the stack / heap, sockets, and so on. Furthermore, the languages used by the majority of programmers don't even give them the ability to control memory allocations, which leads me to the other major contributing factor.

Memory-bound problems are the actual demons that are everywhere. We are now reaping the benefits of 20+ years of well defined algorithms / data structures that were designed to alleviate CPU-bound problems. (Sure, the true bottleneck has always been the system bus but the CPU-bound stuff was more salient (or actually just easier to solve!) early on.) I've never been through a single book on algorithms where their abstract model against which O notation is leveraged has a pragmatic notion of memory. O notation is rarely helpful for a variety of reasons but it's primarily useless because it's predicated on counting instructions. We'll need to wait quite some time before we have an array of algorithms and data structures that are more hardware oriented. In the meantime, the majority of software will be built upon dated, antipatterns that are doomed to slog even when properly executed. Now, add in the fact that the majority of the people building the designs don't have a good handle on math, computer hardware, or even the language they're using and the result is our glorious browser experience. Let's be fair, though, desktop applications and OSs in general have been reduced to sludge as well.

The hope that compilers and Moore's law could just offset bad programmers is not working out. Also, all these clever hardware tricks are working against us. In the bowels of systems programming now you have to work against the hardware as much as you have to work with it. Branch prediction is not your friend. Caches demand simple and contiguous memory. It is hilarious to watch the new hardware oriented style emerge in languages like C++ because it turns almost every de facto "solution" into an antipattern. Don't use unordered_map, use two synchronized vectors and brute force linear search; linked lists are a distant vestige (just shift a vector); whenever possible, favor array. And keep in mind at all times: the heap is your greatest enemy.
 

Jack O'Neill

Fuck
kiwifarms.net
I completely agree with you about dependencies and Javascript hell. The other problem with dependencies is that they often negate the need for programmers to understand what it is they're actually accomplishing. There's a common notion in the well-marketed game engines that you don't need a good handle on math to make games; it's only superficially true. It's the same problem with web developers who don't even have to have an abstract notion of the stack / heap, sockets, and so on. Furthermore, the languages used by the majority of programmers don't even give them the ability to control memory allocations, which leads me to the other major contributing factor.

Memory-bound problems are the actual demons that are everywhere. We are now reaping the benefits of 20+ years of well defined algorithms / data structures that were designed to alleviate CPU-bound problems. (Sure, the true bottleneck has always been the system bus but the CPU-bound stuff was more salient (or actually just easier to solve!) early on.) I've never been through a single book on algorithms where their abstract model against which O notation is leveraged has a pragmatic notion of memory. O notation is rarely helpful for a variety of reasons but it's primarily useless because it's predicated on counting instructions. We'll need to wait quite some time before we have an array of algorithms and data structures that are more hardware oriented. In the meantime, the majority of software will be built upon dated, antipatterns that are doomed to slog even when properly executed. Now, add in the fact that the majority of the people building the designs don't have a good handle on math, computer hardware, or even the language they're using and the result is our glorious browser experience. Let's be fair, though, desktop applications and OSs in general have been reduced to sludge as well.

The hope that compilers and Moore's law could just offset bad programmers is not working out. Also, all these clever hardware tricks are working against us. In the bowels of systems programming now you have to work against the hardware as much as you have to work with it. Branch prediction is not your friend. Caches demand simple and contiguous memory. It is hilarious to watch the new hardware oriented style emerge in languages like C++ because it turns almost every de facto "solution" into an antipattern. Don't use unordered_map, use two synchronized vectors and brute force linear search; linked lists are a distant vestige (just shift a vector); whenever possible, favor array. And keep in mind at all times: the heap is your greatest enemy.

One thing I would like to mention is people think object orientated programming is good, when it's clearly not. My programming is data oriented to take advantage of the CPU cache, and not hog up memory like OOP does.
 

Ledj

kiwifarms.net
One thing I would like to mention is people think object orientated programming is good, when it's clearly not. My programming is data oriented to take advantage of the CPU cache, and not hog up memory like OOP does.

Traditional OOP gets a lot of flak (and it's deserved), but I'd like to also point out that FP is equally mad and for whatever reason the programming community likes to pretend it isn't.
 

Jack O'Neill

Fuck
kiwifarms.net
Traditional OOP gets a lot of flak (and it's deserved), but I'd like to also point out that FP is equally mad and for whatever reason the programming community likes to pretend it isn't.
I absolutely DESPISE functional programming. It's just stupid. I have trouble understanding why functional programming is "so good". It would be nice if programmers wrote their code to work well with the hardware they are working with. Not invent a new language every fucking year to solve a "problem" that no one can give a straight answer to.
The problem is incompetent programmers. The fact I have to side with a mentally ill man, proves this mess. "An idiot admires complexity. A genius admires simplicity." - Terry Davis.
 
Last edited:

Ledj

kiwifarms.net
I absolutely DESPISE functional programming. It's just stupid. I have trouble understanding why functional programming is "so good"."An idiot admires complexity. A genius admires simplicity." - Terry Davis.

Haskell is "mathematically correct" which translates to "pretends it isn't running on hardware" which is why mathematicians are so in love with the paradigm. (I bring up Haskell because it's one of the only true FP languages I know of -- any language that allows mutable lvalues is not "true" FP) It's easier to write proofs for stuff like that. Declarative programming is a myth; any programming is declarative provided you're making calls to a library that is written imperatively. Higher-order functions are good but achievable in any paradigm.

Finally, it gets a lot of credit for "solving" the issue of concurrency because of its focus on immutability. Sure, I guess that's a solution in the same way that eliminating gravity would have solved the problem of how to get humans to fly, but it's not elegant and it sure as hell isn't pragmatic in performance critical stuff.
 

mindlessobserver

True & Honest Fan
kiwifarms.net
All you engineers need to ask the black pilled liberal arts major what happened. I can tell you exactly what happened. Your problem is you assume the goal of the powers that be is to create ever better, ever more efficient systems. That the fact something works better and longer being a clearly mathematically provable good somehow means it should and will be universally adopted.


Ignoring of course the simple truth that these things are too useful. Especially if given to the peasants. And the last thing the people in power want is for the peasants to have access to the same tools they do. Or a system that removes them from their control for extended periods of time. Why make a crap operating system that needs to be replaced every two years? Because you will have to buy the new one every two years. Why build apps and programs that deliberately overclock your CPU and run up your data plans? Because you will be forced to buy new computers and new data plans. Why put glaring security flaws in these systems? So you have no defense if they want to spy on you.

What modern tech companies are doing is no different then what Napoleon II did in France when he built all those nice wide avenues in French cities. He didnt build his systems that way to make things better and more efficient. He built them that way so his soldiers would have a clear line of sight for shooting peasants who got uppity.
 

Chad Nasty

Optimus Faggot
True & Honest Fan
kiwifarms.net
All you engineers need to ask the black pilled liberal arts major what happened. I can tell you exactly what happened. Your problem is you assume the goal of the powers that be is to create ever better, ever more efficient systems. That the fact something works better and longer being a clearly mathematically provable good somehow means it should and will be universally adopted.


Ignoring of course the simple truth that these things are too useful. Especially if given to the peasants. And the last thing the people in power want is for the peasants to have access to the same tools they do. Or a system that removes them from their control for extended periods of time. Why make a crap operating system that needs to be replaced every two years? Because you will have to buy the new one every two years. Why build apps and programs that deliberately overclock your CPU and run up your data plans? Because you will be forced to buy new computers and new data plans. Why put glaring security flaws in these systems? So you have no defense if they want to spy on you.

What modern tech companies are doing is no different then what Napoleon II did in France when he built all those nice wide avenues in French cities. He didnt build his systems that way to make things better and more efficient. He built them that way so his soldiers would have a clear line of sight for shooting peasants who got uppity.
I actually didn't think of this. I have one rub with this, most of the really useful stuff tends to have an open source counterpart. It's all available usually free to change and free to download sans hardware. The micro computers today are insanely juiced and not unaffordable in most cases. I've been miffed that all these faggots whining about shit just don't actually read anything. Like 80% of the time, the information is out there. There are classes to teach you. They just don't want to work to make what they want, they want to push an agenda and leave the implementation to someone else.
 

mindlessobserver

True & Honest Fan
kiwifarms.net
I actually didn't think of this. I have one rub with this, most of the really useful stuff tends to have an open source counterpart. It's all available usually free to change and free to download sans hardware. The micro computers today are insanely juiced and not unaffordable in most cases. I've been miffed that all these faggots whining about shit just don't actually read anything. Like 80% of the time, the information is out there. There are classes to teach you. They just don't want to work to make what they want, they want to push an agenda and leave the implementation to someone else.

These things are much like the rogue printing presses of renaissance europe. They blasted out truly useful information, but were useless without people capable of reading them. You say you are miffed about people who just dont read an educate themselves. Many politically active individuals in Europe with a printing press felt the same way. Even as the powers that be moved in to arrest them, smash their presses while simultaneously extolling the virtues of the presses they controlled.

What is happening now is nothing new. The tools have changed but human nature has not.
 

Chad Nasty

Optimus Faggot
True & Honest Fan
kiwifarms.net
These things are much like the rogue printing presses of renaissance europe. They blasted out truly useful information, but were useless without people capable of reading them. You say you are miffed about people who just dont read an educate themselves. Many politically active individuals in Europe with a printing press felt the same way. Even as the powers that be moved in to arrest them, smash their presses while simultaneously extolling the virtues of the presses they controlled.

What is happening now is nothing new. The tools have changed but human nature has not.
I'm miffed because they keep forcing themselves into the spaces and shitting on everything. They aren't illiterate. If they are worried about getting arrested don't slap a purpose on it. These are tools. Can I do a bunch of really shitty things with wireshark, nmap and aircrack? Absolutely. They don't have a specific purpose, they are tools. Doing grey area work is always general purpose. I've made faraday cages to demo, completely legal.

EDIT: Here's an example of why I am miffed with people that force themselves into places. I'm not trying to endorse node, but this probably will bring some clarity. JS is a meme language now,
 
Last edited:

Milkis

New feeling of soda beverage
kiwifarms.net
I have like 8 tabs open and somehow this requires 2 GIGABYTES of ram. Why???
They are like 7 tabs mostly text and 1 youtube tab.

Virtual space or resident set size? I read a batshit article from the Twitch team once where they overcame some behavior in Golang's GC (besides, you know, not using Go) by allocating 10GB of empty pages to fool the Go runtime into doing some non-Rob-Pike compliant bullshit. But, you know, it was all empty pages, and MMUs lazy-load empty pages, so there was no effect on actual memory pressure.
 

Bill The Fucker

BOTH OF 'EM
kiwifarms.net
A big chunk of it is growing pains. HTML wasn't originally designed with app development in mind, and javascript wasn't originally designed for more than the most basic of scripting needs. Over the years, we've just added in enough duct tape to turn a car into a submarine.
You also have to deal with the fact that a lot of the "old guard" of web developers were really designers with very limited scripting knowledge, hence the current mindset of "just plug in another dependency and don't worry about it".
 

AnaV

I fell for bait and should get capital punishment
kiwifarms.net
If only life worked out for him, we could’ve avoided all of this.
7ED86714-4F7D-4342-8809-D035EC4C2287.jpeg
 
Tags
None