Any thoughts on how this performs vs deoplete? I've really enjoyed deoplete. It makes my coding quite a bit faster. However I've recently become pretty frustrated with all the gocode forks and go module interaction, so there's definitely room for improvement.
Tabnine and something like deoplete are not directly comparable in my opinion. Deoplete is a completion framework (with dictionary based language specific systems) and tabnine is an intelligent language-agnostic completion system. You could theoretically have Tabnine support deoplete (it is currently YCM based). As the author mentioned in an other reply, dictionary based completion systems are good for api exploratio…
Show HN: TabNine, an autocompleter for all languages
181–190 of 193 posts
Re: Show HN: TabNine, an autocompleter for all languages
#182Earlier quoted context omitted.
> Finally, TabNine will work correctly if you deny it network access (say, by blacklisting update.tabnine.com). Just to clarify - would it still work if I deny network acess for the TabNine binary, _after_ validating my license key? Or is the key validation invoked on every launch (hence requiring network access)?
Yes, it will still work. (License key validation requests go to tabnine.com, so you should blacklist that too if you want to deny all network access.)
Re: Show HN: TabNine, an autocompleter for all languages
#183Holy shit.
Re: Show HN: TabNine, an autocompleter for all languages
#184Earlier quoted context omitted.
Python installs its packages system-wide with pip, so you'd never be able to commit those. The default for Ruby gems is also system-wide (although it seems like members of the community are starting to shift away from that). Node installs packages locally to the project itself. This was partially a direct response to languages like Ruby and Python; the early community felt like system-wide dependencies were usually b…
>Python installs its packages system-wide with pip Standard practice atm is to install packages locally to a project by using venv, or rather pipenv. Afaik, lockfiles remain sufficient. I assume ruby is in a similar state, but im not familiar with its ecosystem >And at the time, there weren't a ton of resources for hashing a dependency I suppose that’d be a big reason, but isn’t that basically equivalent to version p…
Thanks for letting me know. This is a good thing to know, it makes me more likely to jump back into Python in the future.
I suppose it is to a certain point an indictment of NPM, certainly I expected more people to start doing this after the left-pad fiasco. But it's also an indictment of package-managers in general.
So let's assume you're using modern NPM or an equivalent. You have a good package manager with both version pinning and (importantly) integrity checks, so you're not worried about it getting compromised. You maintain a private mirror that you host yourself, so you're not worried that it'll go down 5-10 years from now or that the URLs will change. You know that your installation environment will have access to that URL, and you've done enough standardization to know that recompiling your dependencies won't produce code that differs from production. You also only ever install packages from your own mirror, so you don't need to worry about a package that's installed directly from a Github repo vanishing either.
Even in that scenario, you are still going to have to make a network request when your dependencies change. No package manager will remove that requirement. If you're regularly offline, or if your dependencies change often, that's not a solved problem at all. A private mirror doesn't help with that, because your private mirror will still usually need to be accessed over a network (and in any case, how many people here actually have a private package mirror set up on their home network right now?) A cache sort of helps, except on new installs you still have the question of "how do I get the cache? Is it on a flash drive somewhere? How much of the cache do I need?"
If you're maintaining multiple versions of the same software, package install times add up. I've worked in environments where I might jump back forth between a "new" branch and an "old" branch 10 or 15 times a day. And to avoid common bugs in that environment, you have to get into the habit of re-fetching dependencies every checkout. When Yarn came out, faster install times were one of its biggest selling points.
I don't think it's a black-and-white thing. All of the downsides you're talking about exist. It does bloat repo size, it does mess with Github stats (if you care about those). It makes tools like this a bit harder to use. Version conflation doesn't seem like a real problem to me, but it could be I suppose. If you're working across multiple environments or installing things into a system path it's probably not a good idea.
But there are advantages to knowing:
A) 100% that when someone checks out a branch, they won't be running outdated dependencies, even if they forget to run a reinstall.
B) If you checkout a branch while you're on a plane without Internet, it'll still work, even if you've never checked it out before or have cleared your package cache.
C) Your dependency will still be there 5 years from now, and you won't need to boot up a server or buy a domain name to make sure it stays available.
So it's benefits and tradeoffs, as is the case with most things.
Re: Show HN: TabNine, an autocompleter for all languages
#185I'm trying it out for a bit now, I'm really intrigued. If I buy it, can I use it at work and at home? Also how do you enter in VSCode that you purchased the pro extension?
Re: Show HN: TabNine, an autocompleter for all languages
#186Earlier quoted context omitted.
>Python installs its packages system-wide with pip Standard practice atm is to install packages locally to a project by using venv, or rather pipenv. Afaik, lockfiles remain sufficient. I assume ruby is in a similar state, but im not familiar with its ecosystem >And at the time, there weren't a ton of resources for hashing a dependency I suppose that’d be a big reason, but isn’t that basically equivalent to version p…
> Standard practice atm is to install packages locally to a project by using venv, or rather pipenv. Thanks for letting me know. This is a good thing to know, it makes me more likely to jump back into Python in the future. I suppose it is to a certain point an indictment of NPM, certainly I expected more people to start doing this after the left-pad fiasco. But it's also an indictment of package-managers in general.…
Although one factor I just realized is that pip also ships pre-compiled binaries (wheels) instead of the actual source, when available. Which would generally be pretty dumb to want in your repo, since its developer-platform specific; assuming js only has text files, it would be a more viable strategy in that ecosystem to have as a common case
Regarding B and C, its not like you’re wiping out your libraries every commit; the common case is install once on git clone, and only again on the uncommon library update. A and C is a bit of an obtuse concern for most projects; I can see it happening and being useful, but eg none of my public project repos in python have the issue of A or B(they’re not big enough to have version dependency upgrades last more than a day, on a single person, finished in a single go) and for C, its much more likely my machine(s) will die long before all the pypy mirrors do;
Which I’m pretty sure is true of like 99% of packages on pypy, and on npm; which makes the divergent common practice weird to me. It makes sense in a larger team environment, but if npm tutorials are also recommending it (or node_modules/ isn’t in standard .gitignores), its really weird.
And now that you’ve pointed it out, I’m pretty sure I’ve seen this behavior in most js projects I’ve peeked at (where there’ll be a commit with 20k lines randomly in the history), which makes me think this is recommended practice
Re: Show HN: TabNine, an autocompleter for all languages
#187First impression is that this is insanely fast and is actually giving recommendations based on context, without setting up additional files. So, it's doing exactly as advertised. I'm using this in Vim and would like to know if there's a way to configure it such that the dropdown does not show up until I hit or ? I realize that this is supposed to be a zero-config tool, and I'm asking for a configuration! Great job wi…
I've written a vim plugin for people who use deoplete and YCM would conflict: https://github.com/tbodt/deoplete-tabnine
Re: Show HN: TabNine, an autocompleter for all languages
#188Earlier quoted context omitted.
Think of it like "I couldn't have done it without you" when people accept awards. Sure they could have, it's just an expression of appreciation. He might also not have chased the project if he weren't working in an ecosystem he particularly liked, so who knows, maybe it wouldn't have happened without Rust.
I disagree. I believe most people accepting awards really wouldn't have done it without other people. Actors do not win Oscars doing great performances in bad movies. Scientists do not win Nobel prizes working alone or in bad work conditions. I always take these appreciations at face value.
That said, not trying to undercut anyone's appreciative statements, especially the one from OP in his repo towards Rust! Obviously people (and programming languages, for that matter) aren't simple drop-in replacements for each other in real life. You have to be inspired and empowered by them.
That personal motivation or rapport component is probably what was being missed in the post to which I replied.
Re: Show HN: TabNine, an autocompleter for all languages
#189> Why is it called TabNine? > When using the Sublime Text client for TabNine, the keyboard shortcut to select the ninth suggestion is Tab+9. Before reading that I thought it was loosely named after the old T9 (Text on 9 keys) predictve system for mobile phones with numeric keypads only. That being said, while I'm still passively learning to code and may not need a full license yet, it's a well-priced gift idea for fr…
I'm curious if this explanation is needed on HN
Re: Show HN: TabNine, an autocompleter for all languages
#190I'm trying it out for a bit now, I'm really intrigued. If I buy it, can I use it at work and at home? Also how do you enter in VSCode that you purchased the pro extension?
Looks like you can: License keys may be used on multiple computers and operating systems, provided the license key holder is the primary user. https://tabnine.com/eula