Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

You sound like some computer illiterate that can only understand the Internet as a series of tubes(when it comes to your understanding of what is going on under the streets). Rather than seeing communication protocols, physical networking, social/actual contracts, and whatever else.

Just spend 20 minutes looking at/reading ladder diagrams, an organizational method electrical control systems. You'll learn that you pretty much 1 for 1 programming logic (that first motor controller you look at is the same as hello world, and algorithmically it's somewhere between 6 and 12 if statements).



sort by: page size:

I've been a software engineer for 18 years, but this amazing post reminded me how little I know about how the internet works lol. Going to read this a few times for sure!

There's a big difference between saying "This is good / bad; I've configured X and you have to put up with Y." and an empty "Fuck spanning tree".

You have knowledge. I could learn stuff from you. I learn almost nothing from your comment "fuck spanning tree".

This kind of behind the curtain stuff is mysterious to many people. I would welcome something that taught me more about it. I'd especially welcome informed insights from someone who works with the technology.


A big part of this is actually learning some hardware and networking basics. If you understand how CPUs and memory works, if you understand how TCP/IP works, if you understand how compilers (or JIT/GC environments) work, you can reason out a lot of functionality that will cut across all sorts of frameworks. Otherwise, you get back to #1, where you are doing stuff but you don't really know why it works.

It appears to me that a lot of folks are actually incapable of stopping and thinking how stuff might even plausibly work. As soon as you rephrase the question in terms of fundamentals, it becomes clear, but people allow themselves to get confused by all the high-level whizbang stuff, without remembering that there is no magic.


And what exactly do they do that I don't understand?

> There is a hell of a lot of manual work in running any sizeable network even within a single organisation.

I'm not trying to say they do everything, and no manual work is required. I'm trying to say machines are already doing part of it. OP believes that give a world where machines can code, they can't design or maintain networks, which I find truly ridiculous, since machines are pretty far from doing any kind of "coding" today, but they do networking and network protocols pretty well.


Can’t speak for OP, but there are a lot of things people do out there, not just web apps.

People building games, robots, trading systems, distributed databases, CDNs, etc could be really limited in their capability if they didn’t grok networking concepts on a deeper level. It also tends to tie in heavily to other systems concepts (things like zero-copy, or even basic elements like ring buffers).

I think you might also underestimate just how little knowledge a lot of people have. You went to a legit uni and took a legit course.

The interview question OP asks is an old favourite I used to ask too. A lot of people answered something like “clicky-linky-page-rendery!” So a bit of education on the many layers below that doesn’t hurt.


Okay great. Well, you go ahead and hack up your project in assembler, making sure to build everything (including the network stack) from scratch. Let's have a race. If only all of our competitors were as misled and arrogant as you. :)

I have implemented many networking applications from Ethernet to application protocols. I am also particularly aware of how HTTP and all the related stack works.

So your thinking appears to be inaccurate.


Surprised, computer networks and protocols are not listed. Isn't that knowledge essential?

How would one start with learning those concepts first? I've been wanting a good way to learn networking that I can code along to in my preferred language

Are you a programmer? Because that doesn't sound helpful. If I didn't have internet at home, I basically wouldn't learn.

> The answers I get have taught me that most programmers don't have a basic understanding of how the internet works outside of their narrow specialty. This lack of a rudimentary mental model is one of the largest contributors to wasted time and effort in web application development.

I'm curious what specific mistakes you're thinking of that application developers make when they don't understand computer networks. In my limited experience, the rudimentary abstraction "messages are sent, they're not instant and connection can be lost" has generally been sufficient, aside from DNS issues. I took a networking class (CS241 at UIUC) a few years ago and it was really interesting, but I feel I've forgotten almost everything from lack of use. Maybe I've done terrible things as a result. I think I and many others could really benefit from a list of common pitfalls by networking newbs.


My gut says you did not intend for this to be a textbook example of what I was referring to.

I would ask that in the future you get to know me a little better before you call me a dipshit. I have only been doing the online thing since the 80s, so there are plenty of things I have yet to learn. Thankfully I have finally forgotten how to configure UUCP, though.


I guarantee you theres tons of engineers with backgrounds in O.S./Networking that could learn those things very quickly.

I bet most people working in it learned on the job. The certainly dont teach every single specific detail of the entire tech industry in universities.

This is just gaslighting.


I'm a programmer and I have no idea what OPs comment means. I keep meaning to learn about networking stuff, but there is always so many other things to learn and since I don't work with devops or networking stuff it hasn't really been a priority.

No one understands protocols. No one understands the Eight Fallacies of Distributed Computing. No one understands the CAP theorem, and therefore they don't realize that they are trading away data integrity. No one realizes that the architecture of TCP tacitly assumes that all networks are wired. No one understands idempotency. Today's networks are all semiconnected, which is the worst possible case. Mastery of these topics is an absolute precondition for writing working software, but they are not taught.

Having done almost all of these - I still feel like I know about 2% of how networking actually works :laugh: VPCs are just so unnecessarily complicated!

I was referring to understanding (more or less) the whole stack, down to the hardware. Getting started is probably easier today (because of the Internet) than how it was... back in the day, where you need to have some kind of physical contact and where you lived mattered a lot. But anyway, this wasn't my main point.

I ask this sincerely: how much understanding of internet protocols did you have going into this project?

I am not sure why networking and could computing is in this thread. This is certainly the last thing you want to try or use (except for Internet access and all its learning resources) when learning to program. And it won't let you become as familiar with common computers logic as programming, say, a Tetris.
next

Legal | privacy