“AREPL lets you quickly try out small pieces of Python code without the hassle of debugging.”
Python is currently one of the most popular programming languages around, so it’s no surprise there are many Python extensions for Visual Studio Code. We spoke to Caleb Collins-Parks about his extension AREPL, which pops up in the search results as one of the top Python extensions.
The extension AREPL was developed for usage with the popular programming language Python in Visual Studio Code. We spoke to developer Caleb Collins-Parks about how his extension can be applied, what you need to install it, and for which use cases he recommends it. He also went into detail about initial marketing troubles with his now-popular extension that has been installed over 80,000 times.
JAXenter: You developed a VS Code extension with Python support. What exactly does your extension do?
Caleb Collins-Parks: AREPL lets you quickly try out small pieces of Python code without the hassle of debugging. Whenever you finish typing, the code is automatically executed and the result (print output, variables, or errors) is displayed. The idea is a seamless development experience where you can see what you’re programming, rather than guessing the results and running into nasty surprises later on.
In a demo gif, you can see AREPL in action.
JAXenter: We’d like to hear more about your reasons for coming up with this extension – were you working on a specific project or did you have a certain use case in mind?
Caleb Collins-Parks: I had been using C#’s LINQPad and wanted something similar for Python. LINQPad has an extremely convenient variable viewer that makes it easy to quickly prototype your script. You can see this in the screenshot:
The closest thing Python has to that is Jupyter Notebook, but that’s meant for scientific computing. I wanted something more generalized, that anyone could easily pick up and use.
At the same time I was also inspired by Light Table and Bret Victor’s talk on Learnable Programming. That’s where the real time aspect came from. And lastly I might not have created the project if Shideh Naderi hadn’t told me to follow my dreams.
JAXenter: In which types of situations do you believe your extension can be most useful?
Caleb Collins-Parks: It’s most useful when creating small scripts or snippets of code for larger programs. For example, at my work I’ve used it to write code that involves regexes. Regexes are very sensitive and take a lot of fiddling around to get them right. By developing in AREPL, I can get instant feedback on whether my code works. As long as your code completes in under three seconds (ages in computer time), programming in AREPL is a breeze.
JAXenter: Did you run into certain difficulties in developing the extension, and if so, how did you deal with them?
Caleb Collins-Parks: Marketing was (and still is) the hardest part. I had experience with programming, but none with marketing. When I had an Electron app, I had a very hard time getting downloads. Reddit posts, meetups, IRC, none got me very far. Even after a lightning talk at PyCon, I still barely got any downloads. Eventually, I migrated to a Visual Studio Code extension, put it in the marketplace, and then I started getting some hits.
At that point it was a very slow uphill climb through the search rankings. I got multiple 5-star reviews, but the extension was still stuck around 30 results down. One day I changed my title to optimize for the search algorithm, and it turned out that step was all I needed! AREPL shot up to #2 on the VS Code search rankings for “Python”. Now I have plenty of curious users, so the challenge is making my app good enough to retain those users and grow the user base.
JAXenter: When using the extension, can you think of anything specific to watch out for?
Caleb Collins-Parks: Long-running programs or Web requests can make real-time evaluation awkward and slow. But real-time evaluation is optional – you can set AREPL.whenToExecute to onSave (on save) or onKeyBinding (on keyboard shortcut) instead. AREPL also has the ability to cache data, which can speed things up. If you run into a problem or have feedback, create an issue and I can help you out. 🙂
JAXenter: What are the requirements for installing the extension?
JAXenter: Thank you very much!