HN user

drbaba

104 karma
Posts0
Comments66
View on HN
No posts found.

Why would you continue to subscribe to a bullshit company that does this?

They said they subscribed which could mean that they have since unsubscribed. I think they’re texting them because they want them back as a customer - it makes no sense to pester your currently paying customers.

Some of the packages are included, all of them have to be turned on and configured

I see where you're coming from, but I think this is a bit exaggerated as well.

For some concrete examples:

- Git: Emacs does have a built-in `vc-mode`, which can be used without any prior configuration by pressing `C-x v`. Or you can go to `Tools > Version Control` in the menu bar (if you haven't disabled it). Many people prefer to install Magit, but the built-in package is actually quite decent (the UX is a bit similar).

- You brought up LSP. Emacs now has a built-in `eglot` mode which connects to LSP servers, and is pre-configured to work with many of the open-source ones. You can turn it on by pressing `M-x eglot`, or go to `Tools > Language Server Support (Eglot)` in the menu bar. Many people prefer to install LSP-mode, but I think many people have also migrated to Eglot after it landed officially in Emacs.

Every Emacs config starts by turning on the same minor modes hooked to prog major modes for simple stuff like bracket matching and line numbers. Every config sets the same early-init.el params to stop emacs from being slow.

I agree with you that the defaults should be modernized. For example, I think most people would appreciate if the defaults were updated to e.g. use one of the `modus` themes, automatically switch to a dark theme if the OS has it enabled, and enable a fuzzy-finder like fido-vertical-mode without configuration. All of these capabilities are already bundled with Emacs, just not turned on by default. I'd also advocate for disabling the blinking cursor and the bell - who wants that?

Just as a counter-example though, I don't have any of the specific settings you mentioned enabled:

- I dislike line numbers (they look weird if you work with soft-wrapped prose and they take up space)

- I don't like bracket matching (they don't work well with modal editing).

- I don't use the early-init garbage collector optimizations (Emacs anyway starts in a second as I use few packages, and leave it open all day so it doesn't matter).

Emacs is now nothing more than a glorified Org editor

I must admit that if it wasn’t for Org, I as a long-time Vim user wouldn’t be using Emacs :)

terminals whose keyboards lacked the keys vim users use to navigate in modal editing, and there's no reason for it anymore.

Vim keybindings really are more comfortable if you struggle with RSI. I’ve had such issues despite having used Caps Lock as Ctrl for years, and despite pressing it with my ring finger instead of pinkie. In my case, I have big hands and often have to work from small laptop keyboards for my job, which likely makes it worse.

The 3 times I’ve tried to go all-in on Emacs keybindings, I’ve after 1-2 months developed pain in my left forearm that then took months to heal. I developed some similar pains when I tried to use Sublime Text keybindings as well, but it was worse with Emacs. I blame this on excessive chording.

Except these excursions into other keybinding sets, I’ve used mainly Vim keybindings for nearly two decades now. I never had arm pains using Vim or Evil.

All this is to say: “There is no reason for it anymore” is too dismissive. The original reason Bill Joy wrote Vi the way he did was those constraints, but it has benefits today for other reasons.

If you are running servers passing passwords as command line arguments in that device, they have all that.

I make a point out of never doing that. It’s way too easy to accidentally expose things. For instance, doing a live demo with an audience, and using Ctrl-R out of muscle memory? Suddenly you flashed your password in front of everyone.

Generally, I’d recommend using a tool like Unix `pass` or your default OS keyring to store your secrets, then you can run `command1 --password=$(command2)` to feed a password from one command to another. If I really have to type something sensitive, I prefix the whole shell command with a space, which in many shells can be configured to mean that it doesn’t enter history. If you do so by accident, the shell history file can be edited in vim.

I don’t know Pyjion, but I have used Numba for real work. It’s a great package and can lead to massive speed-ups.

However, last time I used it, it (1) didn’t work with many third-party libraries (e.g. SciPy was important for me), and (2) didn’t work with object-oriented code (all your @njit code had to be wrapped in functions without classes). Those two has limited for which projects I could adopt Numba in practice, despite loving it in the cases it worked.

I don’t know what limitations the built-in Python JIT has, but hopefully it might be a more general JIT that works for all Python code.

Polars 3 years ago

You'd really have to be a complete data engineering newbie to not understand it I think?

I do occasionally use Pandas in my day job, but I honestly think very few programmers that could have use for a data frame library would describe themselves as a “data engineer” at all.

In my case, for example, I’m just a physicist - I don’t work with machine learning, big data, or in the software industry at all. I just use Pandas + Seaborn to process the results of numerical simulations and physical experiments similarly to how someone else might use Excel. Works great.

Polars 3 years ago

Yeah, I believe Pandas was inspired by similar functionality in R.

Polars 3 years ago

Above that it says “DataFrames for a new era” hidden in their graphics. I believe it’s a competitor to the Python library “Pandas”, which makes it easy to do complex transformations on tabular data in Python.

Based on e.g. [this classic](https://youtu.be/a9xAKttWgP4?si=oMQQVbIziq60Cd1F), it seems people are fluent and productive in APL in a way I doubt anyone can become in Brainfuck.

But I would also like to know from APL aficionados whether it is a “write-only” power tool akin to a “Perl for math”, or if it’s also easy to read other people’s APL code once you get used to the most common symbols in APL.

I switched to Ubuntu back in 2008, and have used it on and off since then. When it first arrived, it was IMO significantly better than Debian for end users:

Debian was notoriously out of date. Debian Stable mostly contained packages that were several years out of date, and even Debian Testing often didn't have e.g. recent drivers and browser versions in its repo. Debian Unstable, on the other hand, was too unstable due to being rolling release. My subjective experience was that things like getting MP3 codecs to work or nVidia drivers installed was also a huge hassle. Ubuntu was based on Debian, but ensured that the latest versions of all these things either just worked, or could be easily enabled.

Secondly, I remember Debian as being largely a "do it yourself" option, not so different from what an Arch user today might be after. You used a curses-based installer, selected what packages to install manually, customized everything from the terminal, and so on. Ubuntu offered a cohesive desktop experience - it gave you a pre-configured Gnome desktop with all apps and drivers an everyday user might need, and slapped on a (subjectively) aesthetic and coherent theme. The installer itself was also a friendly GUI that even non-techie friends could use. If you wanted to install it, you didn't even need to know how to flash an ISO, you just put your address on the Ubuntu website and they literally mailed you a CD containing the installer - and nearly anyone could install Linux using it.

I think "peak Ubuntu" was around 2012, after that they became too large and things started going downhill. They split the Gnome user base by creating Unity instead of contributing to Gnome Shell, they split the post-X11 development by pushing Mir instead of contributing to Wayland (I think related to the failed "Ubuntu Phone"), they added Amazon ads (with privacy concerns) in the default desktop experience, then they started pushing Snaps, etc. It's been largely downhill since then, but they had already become the "default Linux distribution" targeted by companies like e.g. Steam, so they kept chugging along.

Personally, I still think Ubuntu works quite well if you want something Debian-like that is release-based (not rolling release) but updated more frequently. But I in that case prefer using Ubuntu Server edition and installing my own packages via apt, that way you get all the Ubuntu compatibility of running a mainstream distro, but you avoid most of the clutter in the default distribution. There's many forks like PopOS and Mint that can be used instead though if you want something that continues in the original spirit of Ubuntu.

I actually like the concept of foot pedals or thumb cluster keyboards, which sound like two of the most ergonomic ways to use modifier keys.

The main issue is that due to my work I have to regularly work on a laptop, and anything that deviates too much from a standard keyboard will cause too much friction as I switch back and forth. It would have been easier to go all in on custom hardware if I worked at one desk all day.

I used to do exactly the same. But then I developed RSI in my left forearm, which I blame on overusing it for all modifier keys (including CapsLock as my only Ctrl and only using left shift).

Afterwards, I used a Karabiner Elements script to completely block myself from pressing a left-hand modifier and left-hand letter key simultaneously, forcing myself to learn proper two-hand typing of modifiers. My arm feels better now, and I’ve actually finally appreciating having a Caps Lock key precisely due to the struggle you describe - I’m convinced that two-hand chording is healthier than pressing multiple keys simultaneously with one hand, but at the same time typing e.g. TODO out is then unbearable without a real caps lock key.

Yes. You can think of it as: If you’re surrounded by an equal amount of mass in every direction (because you’re at the center of a set of spherical mass shells), then the gravitational force in every direction will cancel out.

This is a valid point. I’m a big fan of Python the language myself, but packaging and distribution is quite the mess.

I honestly wish we at least got first-class support for adding say “import numpy-1.31” to the code, such that you could safely install multiple versions of a package in parallel in the global PYTHONPATH without issues.

1Password (password manager), iCloud+ (cloud storage), Arq (backup software), BackBlaze B2 (backup hosting), various streaming services (switching from month to month).

I have also paid for e.g. Sublime Text 4, not sure if that counts as a sub. I used to pay for email (KolabNow), but recently switched to a free email provider.

I would pay for Dropbox if they offered a reasonably priced tier between 2GB and 2TB (similarly to Apple’s 200GB tier), since Dropbox handles Git repos well compared to Google Drive/iCloud/OneDrive.

In general, Vim on an iPhone (via iSH, a-Shell, or iVim) works surprisingly well. I thought the idea was ridiculous until I gave it a proper try (even though I was already a Vim user on “real” computers), since it doesn’t really leverage the touch interface for e.g. cursor movement and scrolling.

However, Vim’s design gives you maximum expressive power per key you press - and since pressing each key on an iOS keyboard is a bit inconvenient, this design philosophy ends up working really well on a soft keyboard. Moreover, most common actions can be done without special keys (i.e. arrow keys, ctrl/meta modifiers, etc.) which I usually find awkward to use on augmented mobile keyboards. With Vim, you can get quite far using just a standard iOS with an added Esc key (all of the apps I mentioned above adds an Esc key).

If you use Vim on desktop/laptop but haven’t tried it on iOS, I’d recommend giving it an hour of trial sometime, at least if you sometimes want to edit code on the go. (Personally, I rarely do that, but I like that I can.)

Unpopular opinion: Your problem isn’t Vim, it’s the NeoVim ecosystem. I know because I’ve had the same time sink problem after the Lua ecosystem took off, and have been much happier after I switched to Vim 9 and went back to my good old VimScript config. (Since Vim 9, the config syntax itself is a bit more pleasant.)

It’s stable, it’s minimalist, and it mostly just works. It’s not a full-blown terminal IDE like NeoVim is trying to be - Vim has a different vision, being first and foremost just an editor, and leaving you to use the terminal as the IDE. (I’m not saying you can’t configure Vim as an IDE, but it’s honestly bad at that.)

If you haven’t yet, I would recommend giving good old Vim with a Vim9Script config a try. Install as few plugins as possible, to get familiar with the core editor before adding extra stuff. I would recommend starting with only two plugins: ALE provides plug-and-play LSP support (e.g. install pyright into $PATH and ALE will use it), FZF.vim provides a useful fuzzy searcher for navigating projects. Once you’re a bit more familiar with the core editor, I’d try out some language-agnostic useful plugins like rsi.vim, vim-sandwich, targets.vim, and maybe some language-specific plugins to e.g. enhance markdown or latex highlighting. But the core idea is that you don’t really need many plugins if you learn to use Vim as an editor. For instance, Git support? Just try to work with Git from the terminal first, and only install a plug-in for it if you feel like it is really useful to you.

IMO, part of why Vim has been an efficiency boost for me (before I started trying Emacs+Evil, NeoVim with the Lua ecosystem, etc.) is how little time I needed to spend configuring it. If you learn to use its built-in features right, it’s extremely stable, and after a decade you don’t need to spend much time thinking about it or maintaining it even if you frequently switch languages.

The eMacs ones are a bit more common in more applications

I think it depends on your platform? On macOS, nearly all apps support a (very small) subset of Emacs keybindings. On all platforms, Readline and friends default to Emacs keybindings (but do support Vi).

On the other hand, many classic UNIX utilities - for instance `less` - also implement Vi-like keybindings for navigation and search. There’s lots of third-party TUI applications that copied some keybindings from Vim. Many GUI applications (e.g. Sublime, VSCode, Firefox, Chrome, Google Docs, Obsidian, …) have support for Vim keybindings either as a popular plugin or bundled.

My guess would be that more apps support Vim keybindings than Emacs keybindings, simply because Emacs users would prefer to implement their needs (email, notes, …) inside Emacs instead of going to a third-party app. But I don’t have statistics to back that up, just subjective observations :)

Keep in mind that there is a subtle difference between Ctrl-C and Ctrl-[. The latter is equivalent to Esc, but I think the former will for example prevent abbreviation expansion and block some plugins, which can lead to weird bugs if you’ve customized your Vim a bit.

I think you can however `inoremap <C-c> <esc>` locally to make it a bit safer, and just use the default Ctrl-C remotely (if your vimrc is not there then there’s probably no plugins or abbreviations to worry about).

Personally, I prefer caps lock for ctrl. I don’t really mind reaching for esc to switch modes (maybe I just got used to it?), but things like Ctrl-D, Ctrl-], and Ctrl-O in normal mode are quite unergonomic with the default position of Ctrl.

There is also the J language [1], which I understand to be a GPL reimplementation of APL. Since they went with pure ASCII, you presumably have to hold down modifier keys less.

I never used either language, so can’t comment on how useful they are. But I’ve always been fascinated with APL as an idea, especially after watching this [2] person implement Game of Life as a compact one-liner in APL! (With that compact code, maybe you press modifiers less overall than when writing more traditional/verbose languages?)

[1] https://en.m.wikipedia.org/wiki/J_(programming_language)

[2] https://m.youtube.com/watch?v=a9xAKttWgP4