Oh networking is easy first you go to linkedin Then... You run
Programmer Humor
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
The problem with networking is debugging it. The worst is debugging iptables and nftables. Figuring out which chain they are going to is a massive hassle. How come we don't have any graphical tools whatsoever for this work?
There's nothing to debug, it's fucking DNS again, you know it is.
And then, even when it's not DNS, it's probably DNS.
As for iptables, doesn't -j tell you where the packets are going? Or do you mean what their destination addresses and ports are? For that, on Linux, I use ss or lsof. I have never used it myself, but doesn't ufw have some GUI?
Reading the iptables dump is not for beginners. Far from it. A packet can go through all tables and chains or none. And allowing a packet in one chain then begs the questions which is the next table or chain. There are maybe 100 flags and nobody can memorise them all.
Ufw just allows adding rules, ss doesn't trace packages as they go through the firewall, it can show you open ports and established connections, but it can show you which tables and chains a packet went through. lsof is even more rudimentary than ss and literally means "list open files". Since everything is a file in linux, that's a lot of files. Again, no tracing.
Somebody will say "just tcpdump". Again, no that doesn't trace which tables and chains a packet goes through. The entire firewall is a blackbox to tcpdump. At least to my knowledge. All it sees is which packets arrived and which were sent on the selected interfaces, and whether they was successful or not.
Nothing I know of traces a packet through the firewall and presents in a TUI nor GUI. I know that it's possible to make copies of packets and send then to custom chains that can log the chain and packet it came from. There might even be a way of generating a trace by adding a rule to a chain, which means adding it to every chain, but I'm not sure I've seen something do that.
I'm struggling to think of a situation where you'd be trying to get to that level of granularity of how a single packet is flowing end-end. Can you give an example of why you want to do that?
In all my years I've never needed to do that, which is probably pretty common, which I'd guess is why there isn't an available solution for that.
I digress. The documentation on iptables alone is an arduous read at best and requires dedication to get through and to understand. With that said, while you "cannot" (loosely said) follow any one singular packet from an iptables listing, using tcpdump will at least let you know wherefrom ~~it~~ connections originate and where they are terminating. Again, it is a hard read, not very beginner friendly, but I think it is also enough for the majority of threat models.
Question: does the person that feels that reading and understand iptables listings and tcpdumps really need to know - through an easy to read/understand UI - what chains and tables any one specific packet has traversed? What scenario/threat model/situation would that be? I'm all for discussing and widening my point of view, so don't hold back! 😊
Regarding your question, I've had trouble multiple times with docker (and other software) that required trying to find out just where a packet was getting stuck. The worst thing is when you open a port in the container to 0.0.0.0, send a request to it (HTTP, telnet, or otherwise) from the host via the container's IP and the packet doesn't arrive. Then you have to run through the gamut of:
- are the interfaces up?
- is it the IP address that's wrong?
- is the the port wrong?
- is the network mask correct?
- is the gateway IP correct?
- is the firewall somehow interfering?
There might be other things I'm missing, but once I get to the firewall stage, most of the time I just give up, put the service into a VM and try accessing it from there - if I really really care. Otherwise, I drop it and move on.
I did just find this Network address translation part 1 – packet tracing which allows tracing a packet through the firewall via xtables-monitor. It's in my notes now, so if I run into the problem again, I might have a place to start next time.
But still, that's just on my machine. Once things happen on the network and there are routers and other things involved, it's very difficult for me to debug.
"networking" in the social sense or in the administration/programming sense?
Good one 🤣 I don't think I have ever used the word to mean "managing social networks" or the likes 🤣
It's a trick question anyway, most programmers are probably bad at both Ü
I am so going to start to use computer networking terminology when talking about social networking from now on.
ACK
ARP ARP ARP ARP ARP
(like a socially acceptable seal)
Cicadas be like
SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN SYN
I would ping her, but I have no handler in the event of NACK
I proposed to that girl, she sent me a 403 code
And my boss shattering all with mean comments. Not letting me explain my code but still tearing it all down, removing all security features like checking for directory existing, connection is open aso. and then saying im not qualified for the job! Good thing i got already laid off. Bad that i'll still have to spend 3 months at this company
Ah man sorry to hear that. Trust in your skills, now it's actually a good time to make something.
I'm so sorry about your job. :(
Do you mean that you were trying to write network conscious/safe code and your boss disagreed and laid you off for that reason?
No. This whole laying off story is bigger and longer Shortly said. Last year i did a project, alone, for a customer. I didn't know that the version i gave him for review, was supposed to be the finished polished version. For me it was the rough work that he could have a look at, if the UI and functions roughly are as he expected them and whether he wants other changes. That brought the stone rolling.
Then the best friend of the only senior dev in this small company got into the position of team lead. There he constantly changed things up but i thought yeah what ever i write the texts differently. That was in december 2025. But the big issues then came in january and stronger in february. He bickered at how i named my variables, saying they werent accurate, leaving classes empty (just like the structure he build up was and i wanted to emulate it because i thought 'well it got to have a reason why he did it that way'). For example the variable for a list for a table of employee time entries i called "employeesheet". He marked it as completely wrong and that this isnt appropriate, giving as example that one of the translation of the word into german is "time note" and i should rather call it just "employeecollection". I argued, that it does fit because sheet also can be used for a listing and this not being a collection could lead to confusion with wrongful expectations and this is only being a list to be displayed and printed. And asked for better clarification why he thinks that would be a better name. I never got that. Note that all other classes and lists were called "sheet" and not "collection" He also was constantly passiv aggressiv and i cant even recall all of it because its some time ago and lot has happened since then. During a "meeting" to clarify things. He got loud, mad and angry that the bosses didnt read the emails he send them complaining about me. This person had a history and i wasnt the first to be feeling his power tripp. Another collegue felt it at the same time and one even before it. We went to the bosses. This was all due to unclear communication. I even offered to write them a manial on how to phrase things so i understand it better. Got told it was not neccessary. I did it anyways after senior developer asked in an email exchange between me and the ass-leader
Then i was tasked to do a version 2.0 for that customer project. Alone. As the project began i was on the verge of ending up on the street and had to juggle housing search, my grandma (and mother figure) being diagnosed with end stage Thyroid cancer and my dad suddenly landing in hospital due to a huge cepsis. Due to all that stress i oversaw something major for the project. That i then ofc admitted to be my fault and worked hard to fix it all. Then i noticed (after having done this fix just in time) that without telling me this project got given to the senior developer instead.
What a motivation booster. At the time i also got told (end of june) that i'll be laid off due to the financial situation. But in the case for the states approval (im 50% disabled meaning they have to get the states approval first) they stated "lack of skills for the position" as reason. In my statement i wrote how it all went down and that it was not due to lack of skill but due to stress in private that i oversaw that thing for the project.
Then the last few weeks i got tasked to programm something for a technologie which hasnt been in use since the 90s! And therefor ofc barely any documentation. I programmed it all regardless to the best of my abilities, having never interacted with Paradox (.px) database files or Oracle OR Borland Software before. Did it all dynamic, as i was taught in traite school, how i was always told to do things, even here). This still somehow was wrong lol. The safety things were: check that the repository exists before calling it. If not exists create it. Before trying to send a SQL Query to the Database, check that the connection is established and open.
Both i got told (along with gas lighting that apperently the call i had with my boss last friday according to him didnt happen) were unnecessary because "the folder will always be there". I told him "nobody can gurantie that!". He told me to shut up. I did for the rest of the call. He used the word "clone files" not "copy files" which in my book are 2 different things. And then got upset that i didnt copy the files but created new once from the templates. He treated me litterly like i never programmed. Didnt give me a few minutes to find the connections and how i arranged the methods, in the code i didnt touch in a week. It's all so frustrating.
And yes they were aware from before they hired me that i have adhd and autism
The whole thing is obviously fucked up, but one thing that stuck out to me was this:
one of the translation of the word into german is "time note"
Technical names being oriented around specific localisations are one of my pet peeves. Particularly when I'm trying to explain something to an international colleague who doesn't speak German and can't find the relevant, unintuitively named objects. Bonus points when the name itself is in German.
The safety things were: check that the repository exists before calling it. If not exists create it.
I could see an argument here, depending on your business context, that a missing repository shouldn't be a "silent" fail in order to catch potential data entry errors. If the assumption is that the folder will always be there, it might be worthwhile to throw if that assumption turns out to be false.
I had a "silent" fail logic built into one of my products that ended up heavily distorting the results when it eventually turned out that the input data was heavily skewed due to sloppy human work.
Of course, given the general situation, I assume that your solution was sensible in your case. The response of "shut up" doesn't exactly sound like "there is a good reason we want this to fail if it isn't there".
Before trying to send a SQL Query to the Database, check that the connection is established and open.
Uhhhhh... So, like, basic SQL connection handling? And they took issue with that?
If ever anyone brings up the stereotype of Germans being hyper-accurate to the point of being anal, I think that company is the counterexample.
In one college class we had to reimplement TCP in our own code on top of real UDP sockets. That was a fun class.
Why use UDP sockets when you can use raw Linux sockets with no encapsulation at all?
Fun, sarcasm?
I had a class where we did a similar thing, except it was re-inmplementing basic forms of internet and transport protocols on top of the link layer
And it was a really really fun class imo, no sarcasm
If it helps, I'm from the other side of networking and infra. You could swap the labels and make the meme accurate for me.
In the mid 1980s I learn the BASIC programming command GOTO and fell in love for a lifetime. If you look any anything I used to write in Ruby script or today in Python you'll see my love affair with "if" "elfi" and "else" continues. My universe is nested "if" statements all the way down.
As a network engineer myself... python if/elif, and nested for loops are all you need
/s
If you like if statements, you'll love the python case statements for pattern matching
Ohhh nice! I could see replacing dozens of nested if statements with dozens of nested case statements!

I was like this 5 years ago. Networking a lot is still effort for me, but it is just another learnable skill, and it has lots of benefits (depending on your aims, I guess)
Edit: hah, just realised this is about connecting computers, not about talking to people...
I may actually be the other way around. I'm probably better at networking than programming? Not sure, I love them both but do neither professionally.
Only computer thing I still needed to call dad about as an adult.
Only wizards can configure iptables for ipv4 and ipv6 port forwarding. Only wizards.