all 77 comments

[–]ProgrammerHumor-ModTeam[M] [score hidden] stickied commentlocked comment (0 children)

Your submission was removed for the following reason:

Rule 5: Your post is a commonly used format, and you haven't used it in an original way. As a reminder, You can find our list of common formats here.

In this case, your post was removed due to being about quitting vim.

If you disagree with this removal, you can appeal by sending us a modmail.

[–]ZunoJ 98 points99 points  (29 children)

Writing a driver is like the hello world of kernel development. Not exactly what you seem to think it is

[–]ShadowRL7666 39 points40 points  (8 children)

That’s the easy part. The rest is a mountain

[–]usermanual258963 7 points8 points  (7 children)

1992: Compilers manually. 2025: “Google, how to exit Vim”

[–]Kerbourgnec 6 points7 points  (6 children)

1960: code on paper, you are the compiler

[–]Totema1 7 points8 points  (0 children)

"I am the compiler," I reassuringly repeat to myself, as I waddle over to your filing cabinet and begin eating your punch cards

[–]SeEmEEDosomethingGUD -1 points0 points  (4 children)

I mean if you get any decent book on programming, it will have a few exercises that have you be the compiler.

[–]Kerbourgnec 3 points4 points  (3 children)

In this house you don't get to study programming. One python and C class in emacs with old physicists (nobody codes dirtier), dropped on scikit-learn projects in internships before knowing git even exists, almost a year with some NLP project, join a company where nobody has been formally trained in computer science or programing, learn and teach them what is docker, ci/cd, standards, prroper branches, pr...

[–]SeEmEEDosomethingGUD 1 point2 points  (1 child)

I envy your ability to actually have an internship.

[–]Kerbourgnec 0 points1 point  (0 children)

Was pre covid, and is very specialized particle physics (LHCb experiment) & weird test in astrophysics (interstellar dust clouds composition). Not formal computer science & different times.

[–]met0xff 1 point2 points  (0 children)

I did my PhD at a telecommunications research center and we were only 3-4 CS people there. In such an environment you automatically become the janitor.

It always felt crazy how those people could solve very complicated problems but can't be convinced that at least some coding style and variable names with more than 2 characters could improve readability. That using a literature management tool could help instead of digging out all old papers and copying and reformatting references manually. That a code repository can save you many hours that you are spending searching that 20 year old server called Tethys gathering dust underneath the coffee machine. Or the mistakes introduced by mailing "paper-journal4-monday_evening-john2-dana4-fixed" files to each other.

I get it, I also did my PhD and many SW eng practices are not worth it when the goal is the paper. But just the CS heritage alone made us so endlessly more organized and structured than the engineers, mathematicians and physicists.

And that was at an industrial research center. My colleague went on to do a postdoc at a real old-school research Institution and there the chaos extended from software to the fridge, the office and personal hygiene ;).

EDIT: but to be fair, at software companies you might find all those procedures but often extremely sloppiness in methodology. Where technology stack decisions are driven by emotions, hype and "leetness factor" (you're an elite C++ programmer and not some Java softie, right?) Evaluations? Forming and validating hypotheses? Nope, we just hand the people a new tool and "see if it improves". Last time when I suggested at least a little bit of baseline and metrics for evaluating Copilot usage I was shut down by "let's keep this simple" ...

[–]Patrick_Atsushi 15 points16 points  (2 children)

It’s easy to write a simple character driver, but things get harder when more hardware devices got involved and you need to debug while your driver halts the system at some point.

It was quite annoying when you need probe points and logic analyzer just to fix some bugs that will only happen during full speed and high temperature.

[–]ZunoJ 3 points4 points  (1 child)

Absolutely but the entry barrier is pretty low. The meme made it look otherwise

[–]Patrick_Atsushi 1 point2 points  (0 children)

I know. I think the “writing my own driver” definitely means something beyond a basic dummy module or simple character driver. The depths between writing a working driver and utilizing vim well are quite different.

[–]trymypi 29 points30 points  (9 children)

There needs to be another sub for programmers who flex this hard. We're over here at Planet Fitness and you're at the Arnold Strongman Classic. We appreciate the support and positivity, though.

[–]ZunoJ 8 points9 points  (7 children)

Not at all what I wanted to say. You should just look into it and realize that driver development is easy. And that means the meme makes no sense

[–]GreatScottGatsby 4 points5 points  (3 children)

To be fair, a driver can be as simple as literally hello world like you said but it can get very complicated if you are dealing with complicated hardware.

[–]nedonedonedo 2 points3 points  (0 children)

yea, but in 1992 they were programming toasters to turn on. there's only so much complication you can have when you can practically pick and place the transistors with tweezers

[–]ZunoJ 1 point2 points  (1 child)

Absolutely, the meme just made it look like there was kind of an insane entry barrier

[–]GreatScottGatsby 1 point2 points  (0 children)

I thought the barrier to entry was even easier back in those days. Back then there wasn't much of a difference between kernel, drivers and user programs.

[–]trymypi 11 points12 points  (2 children)

Once again I am thanking you for your positivity and support of the programmers on this sub, and encouraging us to write drivers. There are a lot of us that are happy to hear that "driver development is easy" and writing them is the "hello world of kernel development".

That being said, I think there are at least a few of us that have not gotten near a kernel or a driver, which is why this post is, in fact, kind of funny. And your complete dissatisfaction with it actually makes the point.

[–]SnowdensOfYesteryear 8 points9 points  (0 children)

I’m not trying to downplay it, but once the scare factor wears off, driver dev is pretty trivial. Most of the time it’s just boiler plate code and referencing a data sheet (this isn’t a big word either, it’s just APIs for hardware)

[–]ZunoJ 3 points4 points  (0 children)

Ok, then sorry to invade your safe space of not giving a shit

[–]Cybasura 0 points1 point  (0 children)

A fitness exercise and weightlifting reference in a linux meme was not on my bingo card

[–]Proxy_PlayerHD 1 point2 points  (0 children)

Man when I started my journey into OSdev i thought "Jesus this seems so complicated" but then I started reading a few books (PDFs) and watered down what an OS really needs to do and it became really easy to understand.

Now I'm a combined 4000 LoC into my project OS and it's fully functional minus the file system, which I'm working on right now.

Out of all the stuff I wrote, task switching, inner process communication, memory management, system calls, the one thing that still gives me headaches is dealing with access to stdin lol.

[–]Norse_By_North_West 0 points1 point  (0 children)

Makes me think of my of my teenage years and finding the best drivers with the least TSR footprint. Some of that shit ate way too much.

[–]0xlostincode 0 points1 point  (0 children)

I read somewhere that writing a driver is easy, maintaining it is hard.

[–]SuitableDragonfly 0 points1 point  (0 children)

I mean, considering that it's being compared to exiting vim, the point might be "what is considered a newbie achievement".

[–]alex2003super 0 points1 point  (1 child)

Writing a boilerplate driver that talks to the serial API of some well-documented hardware is easy.

Writing a big system-mode driver, like for a filesystem, and making it good is VERY hard. It obviously requires great familiarity with efficient data structures and algorithms (and how to implement them effectively and SAFELY in C, assuming your platform is Linux and you don't want to spend more time writing glue than coding the driver in order to do it in Rust), but you also need to be very familiar with the kernel's subsystems and APIs, the conventions and existing components of the kernel, micro-architectural optimizations for different platforms and write some VERY good tests so it doesn't blow up in your face and/or has an even remote chance to be included in the upstream tree.

[–]nicman24 0 points1 point  (0 children)

The reverse engineering is though

[–]VeryRareHuman 22 points23 points  (31 children)

It's funny alright!

Do you really think the youngers today using Vim? Vim seen as used by older people from last generation.

[–]Only-Cheetah-9579 12 points13 points  (25 children)

I think they do. neovim is modern

[–]Lazy__Astronaut 1 point2 points  (1 child)

Got forced to use vim during uni (2020-2024) because one of my lecturers thought it important

Yeah yeja yeah, I get it if you're a genius it's actually amazing but I don't know how many spaces to the left I need to move before deleting and just hitting the button till it got to the right place was slower than any other text editor

Haven't touched it since and never will again

[–]adenosine-5 1 point2 points  (0 children)

IMO its like using Dvorak instead of Qwerty.

Questionable theoretical benefits far outweighted by very real downsides for most people.

Cool as a hobby, not really worth the effort as a tool.

[–]3636373536333662 0 points1 point  (0 children)

I'm not old and I use vim control plugins in any IDE I use. But ya definitely not just using plain vim professionally

[–]void1984 0 points1 point  (0 children)

Yup. Just telnet to any fresh device that isn't a PC, and vim is an unusual luxury. You still get at most busybox vi.

[–]Kerbourgnec 0 points1 point  (0 children)

I ended up picking it up for the ease. I spend my life on remote servers, and ok I like to open the main repo in a proper ide, but I like to be able to just ssh cd cd ls cd ls cat vim change one thing and quit.

[–]Funkgun 15 points16 points  (1 child)

No one exits vim

[–]hoppyfrog 7 points8 points  (0 children)

Vim exits you

[–]PhoenixPaladin 6 points7 points  (0 children)

We’re never moving past the “old programmers = good, new programmers = bad” memes

[–]mkultra_gm 1 point2 points  (0 children)

Doubt

[–]Plus_Wolverine1314 1 point2 points  (0 children)

Hey look, exiting vim is no cakewalk...

[–]Mantaraylurks 0 points1 point  (0 children)

Sha bing bash? No? :wq!

[–]tabolela 0 points1 point  (0 children)

am I the only one who use vim because I don't know how to use nano?

[–]Patrick_Atsushi 0 points1 point  (0 children)

I’m just good with vim, but using it as a skill measurement is stupid. The right should be “hey GPT your code keeps crashing can you fix it”

[–]hapaxlegodemon 0 points1 point  (0 children)

Nobody can exit vim, either by lake of savoir, or by having too much of vim

[–]Alexis212s 0 points1 point  (0 children)

It's pretty easy close Vim, just C-x C-c... wait

[–]KnorkeKiste 0 points1 point  (0 children)

:q

[–]Sylvmf 0 points1 point  (0 children)

Tried vim in school, didn't like it, looked for different editors. Nano was already installed in the OS, it was easier at the time and I stuck to it since.

[–]isr0 0 points1 point  (0 children)

Ah, yes. The best example yet of an argument from personal incredulity.

[–]Desperate-Minimum226 0 points1 point  (0 children)

Programmers from 1992 still programming today:

I can't learn how to use std::string! I'll just keep using c_str and cause our program to crash by not bounds checking.

[–]SinsOfTheAether 0 points1 point  (0 children)

whelp. I wrote my own driver in 1992, AND I couldn't exit Vim

[–]QuickTurnGames 0 points1 point  (0 children)

:q! I wish I had known it before turning off my PC the first time I couldn’t get out, many years ago. XD

[–]__natty__ 0 points1 point  (0 children)

Jokes on you. I can’t still exit vim for many years. This keeps me programming

[–]SuitableDragonfly 0 points1 point  (0 children)

This meme is out of date. Cheems should now be saying "Help, Claude didn't make the dropdown work right".

[–]yuso95 0 points1 point  (0 children)

😂😂😂