HNHacker News
TopNewBestAskShowJobs

mjlbach

150 karma · joined February 20, 2021

submissionscomments
mjlbach··on Show HN: A resume filtering puzzle running on a VM running in browser via WASM
I'm definitely stealing this hack, what a great way to filter for high potential people.
mjlbach··on Show HN: Infinity – Realistic AI characters that can speak
I understand your implication, however I’m not behind any brigading.
mjlbach··on Show HN: Infinity – Realistic AI characters that can speak
We have a sign-up because we ensure users accept our terms of service and acceptable use policy before creating their first video, which affirms they understand how their data is used (legally required in most US states) and will not use our technology to cause harm.
mjlbach··on Show HN: Infinity – Realistic AI characters that can speak
I welcome competition, but they have made disingenuous claims about being first after having chatted with our team (in person), are using celebrity deepfakes for their advertising, and have 1-1 copied our UI down to the three panel mobile layout and autocrop button.
mjlbach··on Show HN: Infinity – Realistic AI characters that can speak
FYI dang they kinda ripped off our product down to copying the UI (Hedra.com). Our model is about 12x faster and supports 4 minute long videos…
mjlbach··on Show HN: Infinity – Realistic AI characters that can speak
hedra.com
mjlbach··on Show HN: Infinity – Realistic AI characters that can speak
Michael from Hedra, your choice is not novel :)
mjlbach··on Ask HN: Did Twilio abandon SendGrid?
Super curious if you're evaluating options what you're finding on the market we (hedra.com) are evaluating options right now and the cost is astronomical when you go above 500,000 contacts. We're exploring Brevo (FKA sendinblue which allows unlimited contacts) vs. Salesforce.
mjlbach··on Why LSP?
> That's a bold claim. Migrating from NCM + clangd integration is absolutely slower.

You'll have to define slower (time to diagnostics, time to completion, are you really talking about the performance of nvim-cmp instead, etc.) preferably in a bug report with benchmarks. I've done several rounds of performance optimization since 0.5, and I haven't heard any complaints since 0.6 when I swapped out our json decoder.

mjlbach··on Why LSP?
> My experience is now much buggier, slower

You'll have to file a bug report, because none of the built-in LSP stuff should cause any performance degradation.

> syntax highlighting just stops working randomly

This has nothing to do with LSP.

> files get spewn all over my repositories that I have to .git/info/exclude

Neovim does not automatically create files in your repositories.

mjlbach··on Neovim 0.7 Released
lspconfig maintainer here, minor info dump:

Lspconfig currently has 3 parts, the default settings for the servers, an implicit project detector to trigger when to launch the servers (conditioned on filetypes and some patterns), and the infrastructure to manage launching/shutting down/attaching buffers to servers as you open files within the same project.

Eventually we'd like parts 2 & 3 to be in core as a "projects" module, leaving separate "project patterns" and "server settings" as mostly metadata containing repositories.

That would open the door for third party plugins to create customized project templates which map keybindings, set formatexpr, pass custom server settings, etc. similar to how coc.nvim has coc-pyright, coc-gopls, etc. These plugins could also handle installing language servers automatically should they choose to offer that.

There's also nvim-lsp-installer, but I really don't like the approach it takes of hijacking lspconfig's setup.

mjlbach··on Neovim 0.7 Released
Of course :) Lspconfig adds an autocommand that does this for you when it detects the filetype, and includes the start commands (that's it, all the other functionality is in core.
mjlbach··on Neovim 0.7 Released
> is much less reliable version-to-version

Source? We have an extremely extensive test suite for the built-in client that must pass for every merge, and we currently have ~30 open issues on the issue tracker (with a good chunk of those being feature requests).

mjlbach··on Neovim 0.7 Released
If you're having a powershell issue, you can file an issue. I'm not a Windows user or powershell user, but when I tested the PR (before merging it) I was able to get it running in a minute.
mjlbach··on Neovim 0.7 Released
> completion, snippets

This is fine in the nvim-cmp world, there's a config example in the lspconfig wiki, it's about 5 lines for the integration. The recommended lspconfig configuration (included snippets and autocompletion) has less lines of code than the example in the readme for coc.

> formatting

This is built-in to neovim's LS client (vim.lsp.buf.formatting()), adding an external formatter can be done with formatexpr (built-in)

mjlbach··on Neovim 0.7 Released
I think currently Helix targets a different audience. Helix does not have a plugin system (there is an ~1 year old proposal to use WASM but until it is functional the point is moot) or embedded scripting language, so your ability to customize it is extremely limited.
mjlbach··on Neovim 0.7 Released
> The last time I tried neovim the LSP kept crashing for me on random occasions, some plugins had considerable performance issues, some things weren't async, and so forth.

Any issues with the language server I doubt are client side, and every request/response is "async".

For a minimum setup it is:

1. Install the language server via opam:

  opam pin add ocaml-lsp-server https://github.com/ocaml/ocaml-lsp.git

  opam install ocaml-lsp-server
2. Add lspconfig, the plugin

3. Add the following to your init.lua

  require'lspconfig'.ocamllsp.setup{}
4. That will give you basic linting, you can add keybindings/omnifunc integrations by copying out our configuration examples from `:help lspconfig` or the lspconfig wiki.

We're not trying to target vscode users, so if the above is too many steps that is ok, you just aren't our target audience.

mjlbach··on Neovim 0.7 Released
nvim-cmp has been the dominant plugin for about a year now, and I keep the lspconfig wiki (mostly) up to date +/- a few days if anything changes
mjlbach··on Neovim 0.7 Released
> Cause we can siphon from the huge man-hours of development and polish that M$ has put on VSCode.

Anything done on the language server side is already coc/built-in client agnostic (since communication is done over json-rpc, except for tsserver which MS has not yet exposed via the LSP, so we rely on the typescript-language-server-wrapper), anything on the client side is marginally useful at best.

mjlbach··on Neovim 0.7 Released
Neovim does bundle an LSP client.You can launch and attach with ~6 LoC. See `:help lsp`

https://paste.sr.ht/~mjlbach/1a1df5cd61627e87ea4c4355a0473bf...

mjlbach··on Neovim v0.6.0 Released
Random neovim maintainer here:

These are just my top 5.

* vim.diagnostic (see gpanders talk at https://www.twitch.tv/videos/1220189913?t=00h58m27s)

* vim.json (api-fast safe json deserialization with vendored lua-cjson)

* virtual lines (https://github.com/neovim/neovim/pull/15351)

* lua bindings to xdiff (https://github.com/neovim/neovim/pull/14536)

* a million bugfixes as you say :)

I personally worked on fixing utf handling around the built-in language server client, rewriting the incremental sync algorithm, vim.json (the built-in language server client is now fine with typescript-language-server thanks to the deserialization improvements), amongst various other small improvements.

mjlbach··on Linux on the Framework Laptop
I have a framework. Battery life varies between 2 (physics simulation + opengl rendering), 3 (zoom meetings on Wayland), 5 (netflix on firefox), 7 (local streaming with mpv), 8 (casual browsing with an adblocker), and 12 (coding/reading in a TUI) hours.

Note, I use sway but don't notice much of a battery difference on gnome or plasma.

mjlbach··on Neovim v0.5
That's an interesting idea! It's for sure possible, it would just take some conditionals/functions to reset diagnostics in your init.vim/init.lua. I personally turn off virtual_text in my private config. I think our current APIs already facilitate this, so I'm happy to answer questions on our discourse or on matrix about how users can do this.

The only thing that pops up by default right now is diagnostics.

mjlbach··on Neovim v0.5
Hi, I'm a maintainer. I think this is a huge mischaracterization of the team. We definitely are aware (and inform users) the current state using the theia wrapper lags coc.nvim and vscode. We've never said anything disparaging about coc.nvim, and the built-in client is still seeing rapid development.

We provide a client, not language servers, so we're kinda at the mercy of whatever language servers exist. We offer a configuration in lspconfig for https://github.com/theia-ide/typescript-language-server which wraps tsserver, but there is hope that microsoft could implement lsp protocol directly for tsserver https://github.com/microsoft/TypeScript/issues/39459#issueco... at which point the experience should be more comparable to coc.nvim.

On a different note, we have made upstream requests to MS, worked with language server authors, and generally try to contribute positively to the language server ecosystem. Neovim users will always be free to use coc.

If you have actionable items for improving the client, please reach out on our discourse or on our matrix channel. Thanks!

mjlbach··on Neovim v0.5
I understand the frustration (making neovim more cohesive is definitely a goal). It sounds like coc provides the UI you are used to, so there's no harm in sticking with that!

Many of our users explicitly don't want automatically called functions that would slow down the editor (autocommands that map signature requests to the language server, for example), so by nature neovim's core implementation is extremely conservative.

One thing I would like to do, is make the automatic pop-ups for signature easier to implement with our current handler, which means a plugin like signature-x could use our upcoming lsp.config option to configure it's borders (https://github.com/neovim/neovim/pull/14681), and match the rest of the UI.

I also have another project I was working on before the 0.5 stabilization phase (https://github.com/mjlbach/neovim-ui). The goal with this is to have composable/overridable UI elements built into core (which we would use for our internal lsp functions), that can be used (or overridden) by UI plugins.

In summary, I think the likelihood of autocompletion (and generally auto-anything) being built-into core is very small, but providing the APIs in neovim core to make snippets - autocompletion - automated UI elements easier for plugin authors is a high priority.

mjlbach··on Neovim v0.5
Hi, neovim core member here.

Which UI plugins do you need? We've done a lot of work leading up to 0.5 in improving the built-in handlers, so you shouldn't need a UI plugin. I think the main plugins people install (in addition to lspconfig):

* nvim-compe (autocompletion)

* vim-vsnip (snippets)

* lsp_signature.nvim (automatically pop up signature window, note signature_help is built-into core, just manually triggered)

Some people use lspsaga.nvim, but borders are already merged into the core handlers (and our floating windows now provide better markdown styling than lspsaga), so the main utility of lspsaga is in the different way of interacting with code actions, which I personally do not prefer.

Anyways, please open an issue or PR if you have concrete suggestions (or start a discussion on our discourse)! I'm personally very invested in improving the UX around the built-in language server client, and it has really improved leading up to the 0.5 release.

mjlbach··on Neovim 0.5 is overpowering
I'm not sure I'd say that it beats vim/neovim, but I agree with your point about ergonomics. I would say the vim manual is a fantastic resource, I've never felt the need to reference outside material.

Neovim has already integrated many of the "obvious defaults" (see :help nvim-defaults), but if you're a user and feel that something is missed you should file an issue.

I personally don't mind that the defaults may not be what I'd like, as once they are set, I spend very little time modifying my system configuration. I realize this can be a barrier to new users though.

mjlbach··on Neovim 0.5 is overpowering
Sure, although this is fairly "batteries included". Very rough numbers:

- 34 lines to set up plugin manager/install plugins

- 43 for keybinds

- 35 for documentation

- 50 for autocompletion

- 20 for customizing one language server for plugin development (sumneko)

It adds up for sure, and neovim/vim/emacs are not ever likely going to be as plug & play as vscode/intellij, but I would argue the target user for vim/neovim/emacs is someone who wants more customization, which is almost always going to mean the configuration is more verbose.

If you have concrete suggestions on cutting down this config in particular, you can file an issue/PR. The main reason I created this, was because we (core neovim team) get a lot of "I just want something that works" type feedback (which to many includes autocompletion and default keybinds, which are almost 1/3 of the config)

mjlbach··on Neovim 0.5 is overpowering
Have you tried https://github.com/nvim-treesitter/nvim-treesitter-textobjec...?
mjlbach··on Neovim 0.5 is overpowering
Have you filed your issues on our issue tracker (neovim/neovim, not neovim/nvim-lspconfig)? If not, please do! I haven't run into these issue myself, but if you can provide a minimal repro happy to take a look.
Page 1 of 2Next →