On a thinkpad keyboard, my thumbs fall naturally on the space bar (well, rather between the space bar and the left trackpoint button), so hitting the alt next to it implies an uncomfortable bending motion of my left thumb. Also, the x is just over that key, so doing M-x in Emacs would be a weird pinch-like move. Maybe it's a matter of habit, but using CAPS as Ctrl/Esc is literally a 2mm move of the pinky to the left from my home position.
I've used LaTeX for about as long as I've used Emacs, and really, the thought of editing LaTeX from my browser is rather painful. You can still use Overleaf via git, though admittedly the experience isn't as smooth.
The position next to the spacebar seems more awkward than to the left of "a", especially if you use Emacs or otherwise a lot of Ctrl presses. I currently have the CAPS key mapped so that it's Esc on tap, and Ctrl on hold. Works great.
Actually, Slashdot's system was the best, with Flamebait/Troll/Funny/Informative/Insightful options, with only a limited number of votes (they called it "moderation points") available on a given day (this was more complex, you didn't get mod points every day), and a meta-moderation system allowing to rate the way people voted on any given comment.
The distance that needs covering to fly from northern Morocco to Spain is just a few km... probably would be a waste of energy to get it to 2km altitude
The nice thing about org is how seamless it is to do all this. I do think that vim-style modal editing is the best way to go, but Emacs is to me a much better text manipulation platform than Vim is, and you can still get the Vim experience with evil mode.
I spent some 16 years in academia, so I understand your context... It's very easy to fall in the "quick hack" trap, and end up with a terrible mess.
On the other hand, much of the code you do while doing research is truly throw-away stuff. What I found helped me (especially when coming back to my code later on), was to use literate programming (in org-mode) to record my thought process along with the (often polyglot) code.
AoC is amazing, but I don't think it's a good fit for what the OP needs. The solutions tend to be algorithmically hard, but for the most part quite short, and don't really require SW Engineering chops (as opposed to "programming" chops).
Working on a real, larger-scale code base, in a context where good SWEng practices are required is probably a better learning path. An internship, as suggested by Jakobeha above is probably the best way.
If an internship is not feasible, and existing projects seem too daunting, it might be easier to start one (or rather several) of your own. As with most things, practicing helps.
I'd add Crux to this... it's document-oriented, but still generates attribute-level indices, and is also Datalog based. It can be used on top of RocksDB, LMDB, or many other (more scalable) backends (Kafka being the canonical one).
It's really awesome, and the team behind it are super responsive and helpful.
In fairness, Brazilians often also struggle to understand Portuguese as spoken in Portugal. I (native Spanish speaker from South America) can understand Brazilian Portuguese pretty well, even if I've never studied it. Portuguese from Portugal, I cannot really understand when spoken. It sounds very similar to Galician, which I also can't really understand.
I've recently built a Dactyl Manuform [0], which is still a bit of work in progress (cf. the rubber bands :D ), but it's the most relaxed typing I've had so far. I used Gateron browns for this one, and they're really nice. I get a very relaxed typing position, and my fingers need to move very little. On the downside, there's a bit of a learning curve (ortholinear + layers)...
Same here. I built a Dactyl Manuform, and it was definitely worth the hassle. I do agree with the OP that the stuff you see on the MK subreddit and similar sites is ridiculous, and mostly rip-offs.
To be honest, it seems like the author has never tried Clojure, for example. You get most of Java's ecosystem and JVM benefits (and if performance becomes an issue, you can drop down to Java), while being way more expressive and easier to write.
I'm no longer using Macs for work, but while the option key does enable useful stuff, you can do even better with Karabiner elements and a Compose key there as well :)
I mostly write in English (plus Clojure, shell, and C#), but often also in Spanish, French and Finnish. I've found that a standard QWERTY/US layout with a Compose key is the best option. It gives you a decent layout for coding and shell related characters, and all diacritics (and plenty more) are a 3 keystroke chain away (with no chording). Even when writing French, which requires a lot of accents, I find it more fluid than needing to switch to (the completely awful) AZERTY layout.
> but I find it's easier to write readable Java code than it is to write readable Lisp.
I think that depends a bit on the style. Pattern-heavy, "clean" Java is a mess of boilerplate that makes it very hard to find where things actually happen, let alone get an"idea at a glance" of what the code is about. Concise code might be harder to get started with, but in the end tends to be easier (for me, at least) to grok.
In any case, the main difference here, beyond the languages, is Norvig being a genius.
Well, I think Bob Martin promoting Clojure is a bad thing for Clojure... The Clojure community is really awesome, and so is the language, there's no need to have a self-declared (and under-substantiated) guru promoting it. I don't particularly care which languages other people use, but I do care about the ones I use (and, in my case, Clojure is the first one I reach for unless I have very specific requirements that would prevent me from doing so).