Hahahahahaha, omg that’s a brilliant read. Thank you, I will be sharing it with my technical friends (any kind of technical will get it, one friend is in hydraulics and boy, the stories are so like mine in IT).
Also, the bridge was designed as a suspension bridge, but nobody actually knew how to build a suspension bridge, so they got halfway through it and then just added extra support columns to keep the thing standing, but they left the suspension cables because they’re still sort of holding up parts of the bridge.
Idk if I’ve laughed this hard in a while 😂
Once a week my coworker is like, this code has been working for years so we don’t touch it
Most people don’t even know what sysadmins do, but trust me, if they all took a lunch break at the same time they wouldn’t make it to the deli before you ran out of bullets protecting your canned goods from roving bands of mutants.
The lowest level is transistors, which are electronic switches that have an on and off state. In other words, they are binary and can represent 0 and 1
Those get combined into gates of two inputs. An “and” gate outputs 1 if both its inputs are 1. An “or” gate outputs 1 if either of its inputs are 1. And Xor gate outputs 1 if and only if one of its inputs is 1.
A bunch of other complicated shit happens
Boom assembly. Don’t try and read or write it, because it will make you wanna quit computers
C comes into play. Designed to unfuck, assembly so you can actually write readable code. Just don’t forget to release your memory
More complicated shit. Something about kernels and GNU. Userland vs kernel land? Idk
ARM might be different since it can run process outside of userland and kernel I think? Something about secure compute/marketing BS
Inside of user land, we have the web browser. This is there the cool shit happens.
The browser runs JavaScript, CSS and HTML. JavaScript is a single threaded, but nonblocking language with an even loop and microtask queue.
Inside of the browser we run React. React is a framework where UI is a function of state and the data flows in one direction. It can also be used to slam your CPU.
Now that we’re into high level languages, it would only be fun if it looped back around to the beginning. So we invoke some C code that has been compiled to web assembly. Mmmm how efficient
Edit: I tried to do this all off the top of my head. After writing this, I think I meant user space vs kernel space. Idk if user land is a word
I guess between C and assembly there’s abstract syntax trees and maybe LLVM, which is probably also written in C. Idk I skipped compilers in college.
I also know the networking stack has a bunch of layers, but that felt like its own separate thing to “computers”. I think UDP makes more errors than TCP but UDP also go brrrrr
Hehe, llvm is a compiler framework, basically provides all the utilities for processing an AST.
ASTs have various flavors but they’re all the same thing an intermediate representation for a program that optimizers and linkers use to create binaries.
The network stacks meh, 6 or 7 layers depending on what protocol you use but in brief: physical, transport, application. More and more functionality has moved into the transport in the name of efficiency, see quic. But in general not worth worrying about most of the abstraction was nonsense anyways.
And you missed out compilers was one of the most useful classes in cs circulums since it teaches you how languages work.
Transistors are only on and off switches when run in saturation. This is relevant to CPUs in the sense that the rising/falling edge and jitter affect the setup and hold times and thus the maximum clock rate. End pedantry.
There’s an active region between on and off where the current from the collector to emmiter is proportional to the base current. This can be used in other applications like amplifiers. But in digital applications that active region is the transition time between low and high states.
In order to obtain a deterministic outcome the rising edge must be predictable and it must stay at a logic level 1 for long enough to account for propagation delay. These considerations are known as setup and hold. The higher the frequency the clock runs, the tighter these constraints become.
My impression of C++ is that’s it’s actually C++++++++ as in, how many more decades of features can we cram into this language before it explodes
What’s a CD player /s
Fun fact about a random CD player. The USB-A external CD player Apple sold after removing the internal CD player kinda abused the USB standard. I believe it needed more current than was allowed by USB, so Apple found some way to make this specific device draw more power than the USB standard supported at the time. Today, I believe USB-C includes a handshake that negotiates power requirements, but at the time, USB-A didn’t support this.
Tbh, I don’t really know where assembly ends and machine code starts. But do know that assembly is tied to your specific architecture
Machine code is just the numbers, assembler is mnemonics and stuff and needs an “interpreter” to turn it into useful machine code (a C++ compiler also spits out machine code BTW).
Spot on about USB standards, no idea if apple did what you saulid though, wouldn’t doubt it!
I have a Proxmox server with a random assortment of hard drives and SSDs of various capacities {8TB, 2TB, 2TB, 240GB, 240GB}. I want to create a CephFS filesystem spanning them, using erasure-coded pools in order to maximize capacity (kind of like RAID 5 except without requiring same-sized drives). How do I configure my CRUSH Map in order to accomplish this?
Lol, you lost me there. I’ve read up on the various RAID configurations. I’ve heard about CephFS. I don’t know much about it, but I get the sense it’s the new kid on the block.
I actually have a RAID question for you. I want to setup a little RAID array starting with 2 mirrored drives and add more drives later. But it seems there is no easy way to migrate RAID versions? Let’s say I want to start with 2, then 3, than 4 drives as stuff fills up. I always want some level of redundancy. And I don’t want to use any additional drives aside from the 2, 3, then 4 in the array. Is this possible? Either with RAID or with CephFS?
Funny you should mention that, because it’s what got me thinking about Ceph in the first place. My other Proxmox node has a 2-drive mirrored ZFS pool, and I went to add a third drive to it and realized that I’d have to move all the data off and rebuild it from scratch, so I started looking for other solutions.
So yeah, I think Ceph can add to an array after-the-fact like that (in addition to the not-waste-capacity-of-random-assorted-disks thing), but I haven’t figured it out enough yet to be sure.
Let’s settle this once and for all.
I’m Gen Z. Quiz me on how computers work.
Edit: I bet I can run circles around some of you millennials :)
Oh you know computers? Name every group policy.
Fuck you Windows
Damn, you’re good. Enjoy your lifetime of trimming Satan’s pubic hair!
Hahahahahaha, omg that’s a brilliant read. Thank you, I will be sharing it with my technical friends (any kind of technical will get it, one friend is in hydraulics and boy, the stories are so like mine in IT).
Idk if I’ve laughed this hard in a while 😂
Once a week my coworker is like, this code has been working for years so we don’t touch it
Same.
Chmod
How does computers work?
Edit: I tried to do this all off the top of my head. After writing this, I think I meant user space vs kernel space. Idk if user land is a word
Did a solid effort.
I guess between C and assembly there’s abstract syntax trees and maybe LLVM, which is probably also written in C. Idk I skipped compilers in college.
I also know the networking stack has a bunch of layers, but that felt like its own separate thing to “computers”. I think UDP makes more errors than TCP but UDP also go brrrrr
Hehe, llvm is a compiler framework, basically provides all the utilities for processing an AST.
ASTs have various flavors but they’re all the same thing an intermediate representation for a program that optimizers and linkers use to create binaries.
The network stacks meh, 6 or 7 layers depending on what protocol you use but in brief: physical, transport, application. More and more functionality has moved into the transport in the name of efficiency, see quic. But in general not worth worrying about most of the abstraction was nonsense anyways.
And you missed out compilers was one of the most useful classes in cs circulums since it teaches you how languages work.
I KNOW! My biggest mistake in college was worrying about my GPA and that worry keeping me from taking harder classes. But I did learn about ASTs.
Transistors are only on and off switches when run in saturation. This is relevant to CPUs in the sense that the rising/falling edge and jitter affect the setup and hold times and thus the maximum clock rate. End pedantry.
This is the content I’m here for! Please continue I want to learn more
There’s an active region between on and off where the current from the collector to emmiter is proportional to the base current. This can be used in other applications like amplifiers. But in digital applications that active region is the transition time between low and high states.
In order to obtain a deterministic outcome the rising edge must be predictable and it must stay at a logic level 1 for long enough to account for propagation delay. These considerations are known as setup and hold. The higher the frequency the clock runs, the tighter these constraints become.
Nice 👍🏽!
Machin code comes to mind, and “more” high level languages like C++, template metaprogramming and other horror stories 💀
And CD players!
Cheers 😋
My impression of C++ is that’s it’s actually C++++++++ as in, how many more decades of features can we cram into this language before it explodes
What’s a CD player /s
Fun fact about a random CD player. The USB-A external CD player Apple sold after removing the internal CD player kinda abused the USB standard. I believe it needed more current than was allowed by USB, so Apple found some way to make this specific device draw more power than the USB standard supported at the time. Today, I believe USB-C includes a handshake that negotiates power requirements, but at the time, USB-A didn’t support this.
Tbh, I don’t really know where assembly ends and machine code starts. But do know that assembly is tied to your specific architecture
You’re not wrong about C++ 😋
Machine code is just the numbers, assembler is mnemonics and stuff and needs an “interpreter” to turn it into useful machine code (a C++ compiler also spits out machine code BTW).
Spot on about USB standards, no idea if apple did what you saulid though, wouldn’t doubt it!
Spicy rocks
I have a Proxmox server with a random assortment of hard drives and SSDs of various capacities {8TB, 2TB, 2TB, 240GB, 240GB}. I want to create a CephFS filesystem spanning them, using erasure-coded pools in order to maximize capacity (kind of like RAID 5 except without requiring same-sized drives). How do I configure my CRUSH Map in order to accomplish this?
Lol, you lost me there. I’ve read up on the various RAID configurations. I’ve heard about CephFS. I don’t know much about it, but I get the sense it’s the new kid on the block.
I actually have a RAID question for you. I want to setup a little RAID array starting with 2 mirrored drives and add more drives later. But it seems there is no easy way to migrate RAID versions? Let’s say I want to start with 2, then 3, than 4 drives as stuff fills up. I always want some level of redundancy. And I don’t want to use any additional drives aside from the 2, 3, then 4 in the array. Is this possible? Either with RAID or with CephFS?
Funny you should mention that, because it’s what got me thinking about Ceph in the first place. My other Proxmox node has a 2-drive mirrored ZFS pool, and I went to add a third drive to it and realized that I’d have to move all the data off and rebuild it from scratch, so I started looking for other solutions.
So yeah, I think Ceph can add to an array after-the-fact like that (in addition to the not-waste-capacity-of-random-assorted-disks thing), but I haven’t figured it out enough yet to be sure.
I also totally was mixing up Ceph with ZFS. Linux tech mentions ZFS a lot. That’s the source of most of my RAID knowledge lol