It’s a tool with a medium-high skill floor and incredibly high skill ceiling. It rewards investment and is something that is able to accommodate one’s growth in skills rather than holding them back with limitations like typical editors do. Its built-in scripting is a big part of that and is something that really sets it apart from editors like vscode. And it’s much, much faster and lighter weight/less memory-intensive than other editors.
- 0 Posts
- 212 Comments
It’s not as big of a deal as you might think. You still have a lot of your muscle memory from regular keyboards. It might take a little while to adjust when switching between the two, but it’s not that bad.
If you switch between the two enough, you can actually type on both equally well.
A lot of mechanical keyboards these days are programmable using QMK Firmware. I actually use https://www.caniusevia.com/ instead though, which uses (a subset of) QMK under the hood but allows programming the keyboard via a Web app on the fly.
For my layout, I have the standard QWERTY layout for the unmodified layer (layer 0, holding no keys). Then I can hold down a thumb key for switching to a different layer, which has things like symbols, F1-F12, Home, End, etc. The layout I use isn’t too far off the default Iris layout, just a few tweaks here and there (like one that allows me to hold a key for control, or tap that key for escape).
Vim has an entire dedicated scripting language built right into the editor and accessible while editing.
Even without plugins, sometimes certain things can be too slow and you want to stop them.
Ctrl-Cabsolutely should not exit. There’s plenty of times you want it in vim to interrupt something in the editor.As others have said, it’s on the screen if you open vim without a file. Otherwise, it’s a tool for people that bother to learn how to use it. As someone who has been using it daily for the last 10 years, I would find it incredibly obnoxious to have a bunch of useless screen clutter telling me basic things that are easily learned.
It’s simply muscle memory. You think of the action and your fingers do it faster than you can consciously think of where they need to go. But I also use a split ergonomic keyboard (the Iris) and have symbols accessible from home row behind a layer. Though I can switch to a standard keyboard as needed too.
Been using it for all of my software development for the last 10 years. It’s fantastic.
That’s what happens when you start using LLMs for all of your software development. Garbage code all day long.
Because they vibe code the shit out of everything now. Insane shit is bound to happen.
Nope, we call it master. The hand-wringing over the name was and still is absolutely asinine.
I’ve done that. It sucks.
expr@programming.devto
ShowerThoughts@sh.itjust.works•Do techbros that complain on the Fediverse about people hating on AI realize it isn't just here that hates AI?
2·20 days agoEvery time at work “I asked Gemini and here’s what it said…” No. Shut the fuck up.
expr@programming.devto
ShowerThoughts@sh.itjust.works•Do techbros that complain on the Fediverse about people hating on AI realize it isn't just here that hates AI?
4·20 days agoThe funny thing is, LLMs can be useful for exactly one thing: certain kinds of linguistic tasks. For example, if you were inventing a fictional language, it’s probably pretty good for that.
But using it as a general-purpose problem solving tool is beyond stupid.
expr@programming.devto
Programmer Humor@programming.dev•Computer Science Courses that Don't Exist, But Should
41·21 days agoIf your experience with FP is as limited as you say, then, respectfully, you lack the requisite experience to compare the two. It’s an entire paradigm shift that requires you to completely change how you think if you’re accustomed to OOP, and really requires one to program in a language designed for it. The features that OOP languages have cribbed from FP languages are very surface-level and not at all representative of what it actually is (and I’d say they largely miss the point of FP).
I have been writing Haskell professionally for the last 5 years over the course of 2 jobs developing database-backed web services for web and mobile apps, and spent about ~5 years before that developing in OOP/imperative languages. I have a good deal of experience with both paradigms.
OOP is more useful as an abstraction than a programming paradigm.
It’s a very poor (and leaky) abstraction, and you can achieve much more powerful abstractions with FP languages (especially Haskell, which has a type system that is far more powerful than any OOP language is capable of). This is evidenced by the fact that a whole slee of design patterns exist to solve problems created by OOP itself. FP languages, on the other hand, have little need for design patterns, because useful patterns are easy to abstract over and turn into libraries.
Real, human, non-computer programming is object-oriented, and so people find it a natural way of organizing things.
I have no idea what this even means. Programming is taking input and producing output. That, at its core, is a function. Pure and simple. Many useful ideas are quite difficult to express as a noun, which is how you end up with a whole array of super awkwardly named classes that try to “noun-ify” verbs (think classes named like
Serializer,Resolver,Initializer, and so on).It makes more sense to say “for each dog, dog, dog.bark()” instead of “map( bark, dogs)”.
This entirely misses the point of FP. What data is actually being transformed here? It’s a nonsensical example.
A good use case for OOP is machine learning. Despite the industry’s best effort to use functional programming for it, Object oriented just makes more sense.
Not really sure what you’re talking about. No one uses functional programming for machine learning outside of research. To be clear, Python is not functional programming. The reasons for that having nothing to do with the paradigm and everything to do with social reasons and inertia. Python was already used by a lot of academics for some ecosystem reasons, and the ecosystem has grown since then. Had the history of things been different, functional programming absolutely would have excelled at it and would have been a much better fit, because machine learning is fundamentally a pipeline of transformations on data.
You want a set of parameters, unique to each function applied to the input. This allows you to use each function without referencing the parameters every single time. You can write “function(input)” instead of “function(input, parameters)”.
This is trivial to do in functional programming languages with a variety of methods. Commonly this is done with the Reader Monad, or even simply partial application of functions (also known as closures).
expr@programming.devto
Programmer Humor@programming.dev•Computer Science Courses that Don't Exist, But Should
7·21 days agoI mean, I have an OOP background. I found FP as a result of my dissatisfaction with OOP. In fact, I used to teach OOP languages to new students and saw the same mistakes over and over again, mistakes that are simply not possible in FP. It’s a very similar story for everyone I work with, too. We all had jobs in various OOP languages before we managed to get jobs writing Haskell.
Oh, and I’m currently teaching Haskell to someone at work who has a CS degree and has only done OOP languages (and C), and while it’s different than what he’s used to, he’s still picking it up very quickly (working towards making him a junior engineer, which I think shouldn’t take too much longer). In fact, just the other day we pair programmed on a bug ticket I have and he was not only following along with the code, he spotted issues I hadn’t seen yet. Part of it is certainly that’s he smart (which is why I’m doing this in the first place), but part of it is also that, with a bit of familiarity, FP languages are incredibly easy to read and follow. The primary difference is that FP does everything explicitly, whereas OOP encourages a lot of implicit (and hidden) behavior. When you organize code around functions, there’s necessarily more explicit arguments and explicit return values, which makes it far, far easier to follow the flow of logic of code (and test!). Recently I was trying to read through our Kotlin codebase at work (for our Android app), and it was so much harder because so much is implicit.
expr@programming.devto
Programmer Humor@programming.dev•Computer Science Courses that Don't Exist, But Should
5·22 days agoI was required to take an ethics class, but it was a complete joke. Guy just wasted a bunch of time on very surface-level, Philosophy 101 stuff like talking about who Aristotle was. I’m not sure we even had homework actually. Real ethics were nowhere to be found.
expr@programming.devto
Programmer Humor@programming.dev•Computer Science Courses that Don't Exist, But Should
98·22 days agoFP has been around a long time, and yes, it is outright better than OOP. Sorry. I write Haskell professionally, and never have I ever felt like something would be easier done in an OOP language. Quite the opposite.
Unrestricted mutation makes programming really hard, and OOP and mutability go hand-in-hand. If you try to make immutable objects, then you’re just doing FP with worse ergonomics.
No one can, because they (LLMs) are fundamentally not suited to the tasks people try to use them for.
Eh, it’s just different. Other languages are hard in other ways. Haskell’s at least have very good reason behind them.
I write Haskell professionally and and am teaching to people without any experience, and it’s really no different than anything else. Though I will say that my experience is that university professors are often pretty clueless about the language and don’t teach it well.

That’s why vim is so great: it has a ton of power built right into it without customizations, and it’s already installed on basically any unix-like system. Unlike, say, vscode, it can do a ton of stuff out of the box without any plugins at all.