Skip Navigation

Posts
2
Comments
396
Joined
1 yr. ago

  • Sure, Notepad transfers to other GUI programs better than Nano transfers to Vim or EMacs. But that has little to do with Notepad and more to do with GUIs typically supporting similar shortcuts. Like I said, it's an imperfect analogy.

    I think you missed my original point. Most people wouldn't describe themselves as "good" or "bad" at Notepad or Nano. They're simple programs designed for simple editing. The learning curve is very low for both. Advanced editors have differing learning curves, but they're all a lot more steep.

    And my original point was that, because many people do only simple editing in a CLI and more advanced editing in a GUI, it makes sense that Nano became the most popular for CLI due to its shallow learning curve.

  • Nano is to EMacs/Vim as Notepad is to Notepad++ or VSCode (Nano has features Notepad doesn't, but you get the point).

    I don't do a ton of code editing directly on the CLI. I do things like change parameters in config files or open a file to read it quickly. If I'm doing more heavy editing, I'll use a GUI editor (with an SFTP extension if I'm working on a headless server). So programs like Vim and EMacs have never been useful for me.

    To each their own (and I have all the respect for anyone who knows how to exit Vim without looking it up) but I'm guessing the majority of people have a similar experience.

  • Satan called and said that seems a little over the top.

  • They're right.

  • Taking the community name in a more literal direction, are we?

  • YoU wOuLdN't DoWnLoAd A kErNeL

  • "No prison or gender can contain me!"

  • Deleted

    Permanently Deleted

    Jump
  • I have two types of servers I join: 1) small servers with friends where we voice chat while gaming, and 2) organizations where discord is their primary media method (e.g., Harbour Masters). It works great for both of those things.

  • Two reasons:

    1. The feature likely won't work as well as you might think. What happens when you leave for 10 minutes to get some lunch, and that's when your boss's boss checks your location and it says you're working from home or something. And now you get written up because you're supposed to be in the office three days per week. I get this is a specific and convoluted example, but stuff like this happens--a feature is released, and management is too stubborn to take things with a grain of salt (or they otherwise won't consider the limitations).
    2. You're assuming they're only using your location data to update your in/out status. Neither MS nor your employer will ever be content to only use limited information when they have access to more. And while it would be somewhat limited if it were only on work devices, understand that a lot of employers expect people to install this shit on their personal devices (I was the only holdout in my department who wouldn't/couldn't install MS authenticator on my phone, it was a whole thing).
  • Your friend is gay and he's not okay with it.

  • Employees who fail our phishing test will have anchovies thrown at them

  • People were a lot less emotionally literate or aware of mental health issues. Autism and ADHD went undiagnosed if you were able to compensate half decently (you were just treated like you were being difficult on purpose). And kids were more brutal to each other.

    The music was on point, though. I still enjoy me some Goldfinger.

  • I've only had one exposure with a multi-head printer, and it was incredibly messy. No matter what settings I used, there ended up being drips from the unused nozzle.

    My most recent printer is an Anycubic Kobra Max 3, and I'd take the wasted filament over the sloppy prints any day. It's a bed slinger, so maybe not what you had in mind, but they do make one with an enclosure.

  • Assemblers can come from the CPU manufacturer, but they can also come from a third party. They're most often bundled into the compiler, since it's rare to need to compile without also assembling (many compilers skip the assembly step and convert directly to machine code). There's actually a third tool involved I didn't mention, which is a Linker (takes pieces of machine code and combines them together, so you can separate your software into different parts).

    Some CPUs are more niche, and the assemblers/compilers for them sometimes are created by the manufacturer. But there are a few "standard" processor architectures that many CPUs follow, and because they're common between many brands of CPU (and the architectures are published and well known), the compilers are often created by third parties. And there are some compilers (like gcc) that can compile to dozens of different architectures.

    As an example, you might have heard terms like x86, x86_64, armv7, or RISC-V -- these are all processor "architectures", which means that any processor that meets a particular architecture can run machine code built for that architecture. Currently, x86/64 architectures are common among desktops and most laptops (Intel and AMD processors), while ARM architectures are common for tablets and phones and some laptops (Snapdragon processors, for example).

  • It might be helpful to understand the connection between hardware and software better. There are various ways we can create something that a machine can interpret that have evolved over time. We group these into "generations."

    Generation 1: writing machine code directly. Either using things like punch cards, or typing in the 1s and 0s directly (more likely hex code, but close enough). This is difficult and error prone, because it's hard for us to make sense of it. So we came up with...

    Generation 2: human-readable machine instructions (aka assembly). We write code in something that's easier for us to understand, but it's still explicit instructions to the processor. Then we use a software tool (an assembler) to convert that to machine code. Assembly is still specific to the processor and requires knowledge of exactly what registers are available and such. And then we thought: what if we could write software in a generic way that could work on any processor? So we came up with...

    Generation 3: procedural code. With this, we create a new language that is independent of any processor, which means we're not giving direct instructions anymore. Instead, we specify a general procedure, and that generic code is passed through a new tool (a compiler) which converts the generic code to processor-specific instructions. When people say "I'm a programmer" they usually mean Gen 3 programming.

    There are additional generations, but this should help provide a background as to why a language like C exists and how it relates to the actual hardware.

    A statement like while (1) might not seem terribly elegant, but that's because it probably wasn't anticipated to be a common use case when the language was created. A normal while loop would likely be converted into something like a jnz (jump if not zero) instruction, checking the result of the argument, but any modern compiler would likely convert while(1) to a simple jmp (jump, no conditions) instruction.

    I understand your fascination with the point where software and hardware meet. I did my undergrad in electrical engineering, and there was one class where we used a simulator to take transistors (the simplest eletrical "switches"), build logic gates from the transistors, then build processor components like registers and a math processor from the logic gates, then finally a simple calculator out of those components. Super cool.

  • As a Canadian who recently moved back to Canada from the US, I'm gonna throw my anecdotal evidence around and say this is horseshit. Even my tax person has said she's never seen so many returning Canadians in her decades of work.

  • I use Proton, but I use their other services as well (drive, vpn) so it's worth it for me.

  • Me, a programmer who indexes from zero: 🫤

  • Programmer Humor @programming.dev

    alias SimonSays="sudo"

  • memes @lemmy.world

    Here I go lamping again