Live data from Hacker News

We have used too many levels of abstractions

unixsheikh.com

291–300 of 564 posts

Re: We have used too many levels of abstractions

#291
post #261

I think there is one interesting angle to this problem. I am someone who grew up with the technology, as the levels of abstractions were being added. I am now benefiting from all those accumulated decades of knowledge. As the IT / development world was changing, I had enormous privilege and comfort to learn the things at the pace they were happening. Being able to assimilate changes over long decades. Be a witness to…

Excellent point. Giving my perspective as a relative newbie (~5 years) to the industry with no comp. sci. background. It was around the year 3-4 mark that I decided to knuckle down and try to improve my fundamentals (data structures, algorithms, memory models, concurrency, CPU architecture and some network fundamentals) by reading popular papers and literature and writing all of my personal projects in C and C++. I’m…

> What I’ve also noticed is that, while I understand a lot more about what the CPU is doing, memory manipulation and how to write more efficient programs, I haven’t found it be particularly beneficial to my daily work

I think this is because of the effect OP is describing: no matter how much time you spent studying, the odds that you learned about the specific thing that will make the difference in your work this week are slim because the technology is so broad and deep. Odds are that what you choose to intentionally study is irrelevant to your work.

You've picked a slice to learn about, but those who were working on it as it got layered know it all. Once you have that kind of knowledge, the odds of being able to explain some unexpected behavior approach 100%, but acquiring that knowledge took decades.

I've found a method that does work pretty well is to dig really deep into the topics that come up in your actual work. Instead of a random sample of fundamentals, find the parts of your job that feel like magic and explain that magic. Skipping over V8 and straight to the CPU might not be useful for a JavaScript dev very often, but a deep understanding of V8 is relevant more often than you might think.

Re: We have used too many levels of abstractions

#292
post #259

Earlier quoted context omitted.

> they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. When I was teaching programming, I had a fun party trick whenever we got to HTTP. I'd fire up netcat (in listen mode), then connect from a web browser and "serve" a website by hand. I'd show the students the HTTP request that came in, and just manually type out a simple HTTP response and they'd see it appear live in the b…

You can probably still do that by having a local proxy and communicate with it via good old HTTP/1.1 and let TLS and HTTP 2 and 3 be handled by the proxy.

You can just `openssl s_client en.wikipedia.org:443`.

Re: We have used too many levels of abstractions

#293
As a systems administrator who has been doing this for a while, I can attest to this becoming more and more of a problem.

I've worked with CUDA programmers who weren't aware of what "architecture" means in the context of computing until I asked them to consider running binary code meant for NVIDIA on AMD GPUs.

I've worked with network administrators who couldn't conceive of the simple math behind something like single IP, 64k ports and approximate memory per entry in a NAT state table to figure out that it's actually not impossible to have NAT states that persist indefinitely.

I've worked with people to whom I've had to explain that bits are bits, and just as in the audiophile world where there's a huge amount of money and energy spent to try to convince people that pricey bits are somehow better than cheap bits, so unless you process them differently, they're bits and are exactly the same.

There's this tendency to believe and follow trends, even when there'e ample evidence of how these trends aren't much more than marketing fluff and more often than not lead to dead ends. It's fine if others want to believe the marketing fluff, but when they want me to change my workload to support something because it's "all the rage", I have to put it in terms they understand ("You love Go? Great. Now what if I told you to use Rust because it's all the rage, and I expect you to rewrite everything in Rust?")

It's unfortunate that students aren't taught more history of computing. If they were, they'd likely learn that computing is computing, and that things don't really change that much, and that if you make and use things that aren't different for gratuitous reasons, they'll still be around and relevant years from now.

Re: We have used too many levels of abstractions

#294

I think there is one interesting angle to this problem. I am someone who grew up with the technology, as the levels of abstractions were being added. I am now benefiting from all those accumulated decades of knowledge. As the IT / development world was changing, I had enormous privilege and comfort to learn the things at the pace they were happening. Being able to assimilate changes over long decades. Be a witness to…

You can actually see this with new frontend devs. They know only full SPA frameworks, they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. Hell, many of them don't know you can have fully functional websites with zero JS, including payment, video, login, etc. I started to write an HTMX tutorial ( https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1 ) because I noticed a l…

I have worked with interns and young devs just out of school who are sharp as tacks. I had an intern a few years ago, the first task we paired on was to figure out why our MySql connections from Qt were misbehaving. We stepped through the application code, the Qt code, found where it was failing, and ended up backporting a Qt patch from upstream to fix it. Yes, I gave him some guidance, but once he caught on he was able to navigate this complex mess of C++ code across a few technology stacks and effectively reason about it and make changes.

A lot of CS skills are generalizable. Knowledge is one component you pick up with time. A good education, self-taught or otherwise, should allow you to drop into any sort of code and be effective without much spin-up. College covers CPU architecture, assembly, networking, operating systems, web, algorithms. This is not esoteric stuff, it is very standard and you can get it all in class or from textbooks free online!

Re: We have used too many levels of abstractions

#295
post #139

> Power steering is yet another level of abstraction that further improves the driving experience. I am a pretty firm believer that antilock brakes are a bad abstraction that might cause fewer accidents, but often more dangerous accidents than they prevent. They avoid a class of accident caused by the brake’s locking limiting your ability to steer. They cause a whole class of accidents where you hit things at a highe…

On tarmac you slow down faster with ABS. The friction is higher when the tires are _not_ sliding. Fastest deceleration happens just at the point before tires would start to slide. On gravel/snow, ABS perfoms worse. But 99% of the time you likely are not in such a context.

Indeed, the friction coefficient is different in case of static (stiction) and sliding contacts: https://en.wikipedia.org/wiki/Friction

I was curious about your statement, so I looked it up:

> ABS increases stopping distances on surfaces covered with gravel, snow, or other loose materials. In such situations, a locked tire digs into the snow or gravel, pushing it forward and forming a wedge in front of the tire, which brings the vehicle to a stop

Source: https://itstillruns.com/do-brakes-work-ice-snow-6162289.html

Re: We have used too many levels of abstractions

#296

I think there is one interesting angle to this problem. I am someone who grew up with the technology, as the levels of abstractions were being added. I am now benefiting from all those accumulated decades of knowledge. As the IT / development world was changing, I had enormous privilege and comfort to learn the things at the pace they were happening. Being able to assimilate changes over long decades. Be a witness to…

>We, people who really understand the technology that the world runs on, are a slowly dying breed. We are still here as tech leads, managers, directors, business owners. But there will be a point in time when we will go on retirement and there will be only precious few people who had perseverance to really understand all those things by diving into obscure, historical manuals. I'm gonna guess this same message, in di…

[deleted]

Re: We have used too many levels of abstractions

#297

I think there is one interesting angle to this problem. I am someone who grew up with the technology, as the levels of abstractions were being added. I am now benefiting from all those accumulated decades of knowledge. As the IT / development world was changing, I had enormous privilege and comfort to learn the things at the pace they were happening. Being able to assimilate changes over long decades. Be a witness to…

I totally relate to your point of view and experience. I'm so happy to ignore all the software related to the attention economy. What I find left over is the computing environment that I dreamt of when I was 12. I marvel that it took a whole generation of man hours to get to this point.

I think we are real inflection point between an analog world and a digital world. I also think that the Bronze Age never went away and analog techniques will just develop into craftsmanship.

I haven't posted a link to these Autonetics parts in while so I will do so again.

What I love about Autonetics is that they were solving the inertial guidance problem in whatever computing form they could get a hold of.

I'm working on a proper website but the images linked here represent the inertial guidance problem being solved with discrete components arranged in circuits and later those circuits integrated in silicon.

https://en.wikipedia.org/wiki/Autonetics

https://www.icloud.com/sharedalbum/#B0YG4TcsmGWIVSf

Some Nixdorf 820 photos

https://www.computerhistory.org/revolution/memory-storage/8/...

https://www.icloud.com/sharedalbum/#B0Y59UlCqNHCjx

Re: We have used too many levels of abstractions

#299

Earlier quoted context omitted.

You can actually see this with new frontend devs. They know only full SPA frameworks, they have never seen a dump of an HTTP message, headers and verbs are abstract things to them. Hell, many of them don't know you can have fully functional websites with zero JS, including payment, video, login, etc. I started to write an HTMX tutorial ( https://www.bitecode.dev/p/a-little-taste-of-htmx-part-1 ) because I noticed a l…

This is not a FE thing. Plenty of BE devs who don't know HTTP from their arsehole.

Don't forget us over in hpc and embedded! What are these web things, and why do have stacks of them? But more seriously, I'm a very experienced systems programmer but I like stuff like eframe and trunk because it lets me serve up a gui I write in rust like it was a native app as a wasm page without having to know anything at all about web stuff or how many stacks to put the web thingies in. Perhaps someday the wasi will bypass all the js and html deep magic I don't understand, but not yet.

I rarely do any of that, usually my abstractions are container layers, a libc, and then a kernel between me and registers and dma. But that is a lot more layers than you'd think. I can't even understand the boot process on a modern machine with tpm. And i have no clue how many processors or controllers are in my computer. Every usb controller has an entire arm core in it, mice and keyboards have 8051 running c-ish code someone somewhere wrote, there is no bottom to the complexity.

Re: We have used too many levels of abstractions

#300

As a systems administrator who has been doing this for a while, I can attest to this becoming more and more of a problem. I've worked with CUDA programmers who weren't aware of what "architecture" means in the context of computing until I asked them to consider running binary code meant for NVIDIA on AMD GPUs. I've worked with network administrators who couldn't conceive of the simple math behind something like singl…

[dead]
Post reply on HN