Vector vs Keyword Search: Why You Should Care
Search has been around for a while, to the point that it is now considered a standard requirement in many ...
Senior Machine Learning Engineer
Search has been around for a while, to the point that it is now considered a standard requirement in many ...
Senior Machine Learning Engineer
With the advent of artificial intelligence (AI) technologies enabling services such as Alexa, Google search, and self-driving cars, the ...
VP Corporate Marketing
It’s no secret that B2B (business-to-business) transactions have largely migrated online. According to Gartner, by 2025, 80 ...
Sr. SEO Web Digital Marketing Manager
Twice a year, B2B Online brings together industry leaders to discuss the trends affecting the B2B ecommerce industry. At the ...
Director of Product Marketing & Strategy
This is Part 2 of a series that dives into the transformational journey made by digital merchandising to drive positive ...
Benoit Reulier &
Reshma Iyer
Get ready for the ride: online shopping is about to be completely upended by AI. Over the past few years ...
Director, User Experience & UI Platform
Remember life before online shopping? When you had to actually leave the house for a brick-and-mortar store to ...
Search and Discovery writer
If you imagine pushing a virtual shopping cart down the aisles of an online store, or browsing items in an ...
Sr. SEO Web Digital Marketing Manager
Remember the world before the convenience of online commerce? Before the pandemic, before the proliferation of ecommerce sites, when the ...
Search and Discovery writer
Artificial intelligence (AI) is no longer just the stuff of scary futuristic movies; it’s recently burst into the headlines ...
Search and Discovery writer
Imagine you are the CTO of a company that has just undergone a massive decade long digital transformation. You’ve ...
CTO @Algolia
Did you know that the tiny search bar at the top of many ecommerce sites can offer an outsized return ...
Director, Digital Marketing
Artificial intelligence (AI) has quickly moved from hot topic to everyday life. Now, ecommerce businesses are beginning to clearly see ...
VP of Product
We couldn’t be more excited to announce the availability of our breakthrough product, Algolia NeuralSearch. The world has stepped ...
Chief Executive Officer and Board Member at Algolia
The ecommerce industry has experienced steady and reliable growth over the last 20 years (albeit interrupted briefly by a global ...
CTO @Algolia
As an ecommerce professional, you know the importance of providing a five-star search experience on your site or in ...
Sr. SEO Web Digital Marketing Manager
Hashing. Yep, you read that right. Not hashtags. Not golden, crisp-on-the-outside, melty-on-the-inside hash browns ...
Search and Discovery writer
We’re just back from ECIR23, the leading European conference around Information Retrieval systems, which ran its 45th edition in ...
Senior ML Engineer
Oct 5th 2017 engineering
The desire to automate everything is pretty common, especially with developers: why should I waste my time doing the same operation countless times?
That desire is at the base of the process that led to the making of our Atom plugin: an autocomplete that allows importing packages from NPM quickly, with a few keystrokes. On top of this, the plugin will prompt the user to save the selected package as a project dependency if a `package.json` is present.
We published the extension on the Atom Package Registry and open-sourced the code on GitHub, and here is the story about how we built it.
Many of us use JavaScript and Node daily for a variety of different tasks: scraping data, slackbots, contacting APIs, indexing content… you name it. Luckily, there are plenty of open source libraries on NPM which we can leverage to perform any task in the simplest and fastest way.
We really wanted to solve two main productivity issues in the process of building tools:
Let’s make a contrived example: let’s say we’re writing a small terminal script which needs to add padding to a string, and we don’t want to re-implement this functionality from scratch.
We would normally start by researching the library on NPM or Yarn’s Website, querying for “pad” and evaluating each library by looking at the number of downloads and GitHub stars, and checking if it’s maintained or not.
After selecting our library, we need to explicitly require it in our project dependencies using the command line:
Finally, we can get back to our text editor to actually require the package:
The number of required steps in order to install a simple library is definitely high and requires to hop from your text editor of choice to a browser and to the terminal – all that for just one library.
While installing a one-shot library is not a problem, doing this operation frequently can lead to a frustrating experience. We didn’t want to waste time researching libraries or running the same instructions again and again. We rather wanted to spend our time focusing on solving our functional problems and creating product features.
One of the first pain points we wanted to solve with our extension was to reduce the need to switch to a browser in order to search for a library. On top of that, we wanted to contextually provide useful information for exploring different options.
In order to provide a selection of the most relevant packages, we’re using an Algolia index with custom ranking which takes into account the number of downloads from NPM in the last 30 days, in conjunction with a Boolean attribute `popular` computed at indexing time, which sorts the most popular results to appear first.
In short, having contextual help (in this case, importing JS modules) is tremendously helpful compared to using 3-4 separate tools.
After researching and finding the best suited package for our task, we still need to install it locally on our laptops and track in our project that we’re using that dependency.
Normally, this is automatically handled by NPM or Yarn by using their CLI; that said, the Atom extension will detect if the package is missing and will prompt the user to save it:
The different options come down to different types of dependencies handled by NPM and Yarn, `dependencies` and `devDependencies` being the most used ones for developing a project.
The idea for Algolia Atom autocomplete was born in front of a coffee machine on a rainy Parisian morning. My colleague Raymond (the author of Vue InstantSearch, amongst other things) and I discussed how we could leverage Algolia to build something that may prove useful to other developers.
We remembered that Haroen, another fellow Algolian, built a really nice search UI for Yarn:
🎉 https://t.co/BdkV4mw8Vg 🎉 check out the new search available everywhere pic.twitter.com/IvorEaCzN1
— Haroen (@haroenv) February 25, 2017
As this implementation is using indexed packages from NPM, most of the job was already done: we just needed to display results where it made sense the most. Chatting by the steaming cup of coffee for 10 minutes, we figured out that we could use a package autocomplete inside a text editor to automatically require packages, the lazy way.
After moving the project to our desks, we choose to go with Atom because its simple JavaScript API layer allowed us to go very fast: from the concept to the first working prototype it took less than a couple hours (also thanks to Ray’s superhuman developer skills). The idea of also saving the dependency came the day after, in a pair-programming session on our lovely couch.
Since it was a fun hack project we didn’t do any promotion of it at the time. Until today, the only proof that we actually released it was this rather embarrassing tweet.
Building something quick but useful that could also be useful to other developers feels great. I had a fun time building this project, and I also had an insight or two in the process:
If there’s enough interest around our Atom Plugin, we will consider porting it to other text editors (DEVisual Studio Code, Sublime Text and all the rest), and work a little bit more on cross-platform support (Windows, I’m looking at you).
If you have any feedback about this project or want to share something you built using Algolia feel free to leave a comment here, join us on Discourse or ping @algolia, @proudlygeek & @rayrutjes on Twitter.
Create a full-featured search experience in no time.
Powered by Algolia Recommend