13 ms·
Show HN: Scripton – Python IDE with built-in realtime visualizations
Hey HN, Scripton (https://scripton.dev https://scripton.dev) is a Python IDE built for fast, interactive visualizations and exploratory programming — without the constraints of notebooks.
Why another Python IDE? Scripton hopes to fill a gap in the Python development ecosystem by being an IDE that:
1. Focuses on easy, fast, and interactive visualizations (and exposes rich JS plotting libraries like Observable Plot and Plotly directly to Python)
2. Provides a tightly integrated REPL for rapid prototyping and exploration
3. Is script-centric (as opposed to, say, notebook-style)
A historical detour for why these 3 features: Not so long ago (ok, well, maybe over a decade ago...), the go-to environment for many researchers in scientific fields would have been something like MATLAB. Generating multiple simultaneous visualizations (potentially dynamic) directly from your scripts, rapidly prototyping in the REPL, all without giving up on writing regular scripts. Over time, many switched over to Python but there wasn't an equivalent environment offering similar capabilities. IPython/Jupyter notebooks eventually became the de facto replacement. And while notebooks are great for many things (indeed, it wasn't uncommon for folks to switch between MATLAB and Mathematica Notebooks), they do make certain trade-offs that prevent them from being a full substitute.
Inner workings:
- Implemented in C++ (IDE <-> Python IPC), Python, TypeScript (UI), WGSL (WebGPU-based visualizations)
- While the editor component is based off Monaco, the IDE is not a vscode fork and was written from scratch. Happy to chat about the trade-offs if anyone's interested
- Uses a custom Python debugger written from scratch (which enables features like visualizing intermediate outputs while paused in the debugger)
Scripton's under active development (currently only available for macOS but Linux and Windows support is planned). Would love for you to try it out and share your thoughts! Since this is HN, I’m also happy to chat about its internals.
- InDubioProRubio 2y agoKinde of like https://r-graph-gallery.com/ https://r-graph-gallery.com/ of rstudio?
- somesun 2y agois this a AI editor like Cursor?
- giancarlostoro 2y agoThis looks beautiful, I don't do data viz in Python so I don't have a use for this. I do mostly web dev in Python, but wow it looks amazing! I'm really surprised (and almost not) to hear the UI is in TypeScript, did you use a specific web framework like React by chance? The UI looks really nice to me.
- nightcraft 2y agoThanks! The initial prototype did use React, but the overhead in certain cases soon became an issue. It got replaced by a custom virtual dom implementation (coincidentally quite similar to Atom's Etch), but debugging complex updates remained an issue. Eventually, it ended up in a place quite similar to vscode: no frameworks and a handful of "core components" (eg: a virtualized list view)
- Woshiwuja 2y ago[dead]
- KeplerBoy 2y agoCan it visualize PyTorch Tensors without an additional memory copy? I.e. mapping it directly to a texture which is then displayed? I know this is not much of a concern on a system with unified memory (all recent apple computers).
- nightcraft 2y agoNot yet. Some internal prototypes did try using IOSurfaces on macOS to go with the zero copy route, but there were a fair number of limitations. That said, the IPC minimizes copies and is actually fairly efficient at handling large numerical arrays.
- andsoitis 2y agoDo you plan on selling copies (vs only subscription)?
- nightcraft 2y agoThe plan for now is just subscriptions. However, I would like to eventually have something like Jetbrains' "perpetual fallback license" where you can keep using up to a particular version after, say, a year of subscription.
- ayhanfuat 2y agoHow does Observable Plot work here? Do you translate the code to JavaScript?
- nightcraft 2y agoThe scripton Python library internally transforms many common Python data formats (regular arrays and dicts, numpy arrays, data frames, ...) to an intermediate format. These are transferred to the IDE when you call the plotting functions, and then auto-translated into the JS equivalent. Your Python plotting code ends up looking like this: https://docs.scripton.dev/api/plot/orion/overview https://docs.scripton.dev/api/plot/orion/overview
- paddy_m 2y agoWhat are your plans for a data table UI? Shameless plug: I created the open source Buckaroo table for jupyter (embeddable in other contexts) with histograms, summary stats, search... I love talking tables if you want to get in touch.
- nightcraft 2y agoCoincidentally, one of the first components I wrote for Scripton was a virtualized table for handling million+ row dataframes with Tufte-esque inline visualizations (in a much evolved form, it currently backs the REPL). The data table got deferred to focus on the visualization bits for the initial release, but it's definitely planned!
- paddy_m 2y agoDid you write your own table? Million+ row handling is nice. Once I figured out window based display of tables, documentation and a bunch of other pieces of architecture became simpler. Previously I sent the whole dataset or a sample of it. -- Is Scripton user extendable? Do you expect ipywidgets/anywidgets based projects to plug in?
- nightcraft 2y agoYup, it was written from scratch. Yeah, having a flexible virtualized table certainly makes it easier to build more complex things on top (a lesson I initially learned from NSTableView/UITableView). Currently, it's not user extendable. While it does support some IPython features (eg: Python classes that implement IPython's rich outputs also work in Scripton), ipywidgets are currently not supported.
- matt1285 2y agomore like SubScripton
- pzo 2y agoLooks beautiful so congratulation for the launch. Not sure if today this is enough though without any kind of AI chat assistant. Trae [0] is based on VSCode and Jetbrains Fleet are good looking as well. Visualization is definitely a big plus but there is also alternative like using rerun [1] and dearpygui [2] or some VSCode plugins (Python Image Preview, AREPL for Python)- might be hard to compete with those free alternatives on a subscription model IMHO but good luck! [0] https://trae.ai/ https://trae.ai/ [1] https://www.rerun.io/ https://www.rerun.io/ [2] https://github.com/hoffstadt/DearPyGui https://github.com/hoffstadt/DearPyGui
- nightcraft 2y agoThanks! GitHub Copilot support is actively under development.
- DrBenCarson 2y agoYou should look into Roo and offer subscribers some # of OpenRouter credits in exchange for subscribing
- deleted 2y ago[deleted]
- erichocean 2y agoIf you want this in Clojure, check out Clerk. [0] As a bonus, you can continue to use whatever IDE you already use. [0] https://github.com/nextjournal/clerk https://github.com/nextjournal/clerk
- upghost 2y agowell, I didn't know I could use clerk with my IDE. Thanks for pointing that out!
- roger_ 2y agoThis looks incredible, but I’m not a fan of the subscription pricing. How about a hobbyist rate at least?
- kaboomshebang 2y agoWhat happens when I would stop my subscription? The scripton lib is open source and the lyra orion plot functions can output image files without refactoring? (Or do I have to reactivate my subscription?) (Congrats on your product launch btw :)
- whalesalad 2y agoDoes anyone know the name of the typeface/font used in the example images?
- sangeeth96 2y agoLooks like JetBrains Mono.
- whalesalad 2y agoI think that you are right, thanks!
- ckastner 2y agoIn a similar vein: https://www.spyder-ide.org/ https://www.spyder-ide.org/ (MIT-licensed)
- 999900000999 2y agoThanks for sharing. The OP posted a cool project, but 20$ a month for a nice VS code fork is absurd. Plus it's Mac only now.
- _blk 2y agoWhy is 20$/month absurd for something that boosts productivity? What does matlab coat nowadays? Sounds like he'd like to be able to improve it further and clients invest in that. Absurd is people paying 80$+/month for yt tv so they can watch ads.. My opinions.
- sneilan1 2y agoI don't want to pay $20/month for something that is probably going to be mostly unchanged after I purchase. That's like paying rent for tooling. I want to own my tools not rent them.
- vunderba 2y agoAgreed. The visualizations are very nice. I'd consider purchasing a copy for $150-$200 if it would give me one year of free updates, but I simply don't do subscription models without any kind of fallback license anymore. I really dislike the idea of justifying eternal subscription cost models because of "ROI". Every tool has an ROI, but you don't see photographers paying a monthly fee to use their camera, you don't see electricians paying a monthly fee to use their oscilloscope, you don't see carpenters paying a monthly fee to use their table saw, etc. And this isn't Kickstarter - I'm not interested in investing in features/upgrades that the application might get at some point in the future, I buy software based on the feature set that it currently has.
- the__alchemist 2y ago
- MattDaEskimo 2y agoI would've enjoyed trying this out but the subscription fee is an immediate turn off. My biggest concern with this project is expertise and potential burn-out. There's a lot of writing from scratch that really begs to go through the gauntlet of open source.
- keyle 2y agoSame for me, I would prefer a one off fee, or a subset of features for free. I like owning my tools though.
- deleted 2y ago[deleted]
- zipy124 2y agoFantastic product and props to the creator on it! Though Mac only and a subscription price of this magnitude for an IDE is a hard sell, given the availability of other options, which aren't neccesarily $20 a month worse. Never the less I'll keep my eye on this project.
- garyfirestorm 2y agowhy not go down vscode extension path?
- nightcraft 2y agoThe vscode extensions path, unfortunately, would have been too restrictive for many of Scripton's features/technical requirements (tightly coupled REPL, minimal IPC overhead, ...)
- bangaladore 2y agoThis is very frequently mentioned by people when they decide to fork vscode / build their own editor. Its not a huge deal here (in theory) as this is a python IDE. One of the biggest issues I've seen with other editor forks / whatever is some first party Microsoft extensions (dotnet iirc, cpp) will not function outside Microsoft's vscode release. Does your editor support vsix extensions? I assume no as you are just using monoco. Again, could be a dealbreaker for many.
- the__alchemist 2y agoThe price doesn't make sense in conjunction with PyCharm's pricing IMO.
- deleted 2y ago[deleted]
- CyberDildonics 2y agoCongratulations on your advertisement. I personally won't be paying to have free and open source software rented back to me as a monthly subscription, but I wish you the best of luck.
- mixmastamyk 2y agoFreedom, not beer.
- Maelcum 2y agoAs far as I'm concerned, the subscription model is an instant showstopper, just like web-based UIs.
- screye 2y agoOP, you're selling your tool to the wrong people. HN is not the crowd. This is for core-engineers who want to get value out of coding. Find people who pay the $1000/yr to use 1 tool in Matlab, and start pulling them away.
- lolinder 2y agoThere are plenty of that type of person here on HN, we're not all engineers.
- keyle 2y agoPlease don't try and box the user base of a web community. It's exclusive rather than inclusive. You have no idea who is reading these pages.
- screye 2y agoIt is less so OP's tool, and more so the way they presented it. I won't discourage them away from SWEs. Instead, I want to encourage them to sell to core engineers. I was a MechE for the longest time too. And this is a great Matlab alternative. In fact, I was exactly that MechE who was using HN to feel like a part of the tech community. The top post is phrased as a sell. But, if I'd read it during my MechE days then it would've gone right over my head.
- deleted 2y ago[deleted]
- alsodumb 2y agoI am a robotics engineer/scientist and I do shit ton of visualization of all kind of high-fidelity/high-rate data, often in a streaming setting - time series at a few thousand Hz, RGB/depth images from multiple cameras, debugging my models by visualizing many layer outputs, every augmentation, etc. For a long time, I had my own observability suite - a messy library of python scripts that I use for visualizing data. I replaced all of them with rerun (https://rerun.io/ https://rerun.io/) and if you are someone who think Scipton is exciting, you should def try rerun too! I use cursor/vscode for my development and add a line or two to my usual workflows in python, and rerun pops up in it's own window. It's a simple pip installable library, and just works. It's open source, and the founders run a very active forum too. Edit: One slightly related tid-bit that might be interesting to HN folks. rerun isn't that old, and is in active development, with some breaking changes and new features that come up every month. And it means that LLM are pretty bad at rerun code gen, beyond the simple boilerplate. Recently, it kind of made my life hell as all of my interns refuse to use docs and try using LLMs for rerun code generation and come to me with a messy code spaghetti. It's both sad and hilarious. To make my life easier, I asked rerun folks to create and host machine readable docs somewhere and they never got to it. So I just scrape their docs into a markdown file and ask my interns to paste the docs in their prompt before they query LLMs and it works like a charm now.
- rcpt 2y agoFor magnet levitation project I am dumping data to a csv on a rpi and then reading it over ssh onto matplotlib on my desktop. It works but it choppy. Probably because of the ssh. Could I drop rerun into this to improve my monitoring? https://youtube.com/shorts/Y1LGSMFisDc https://youtube.com/shorts/Y1LGSMFisDc
- alsodumb 2y agoYes! Rerun can definitely make your life a lot easier! Rerun natively supports the server and the viewer being on different devices (https://rerun.io/docs/reference/sdk/operating-modes https://rerun.io/docs/reference/sdk/operating-modes). In your case, in the script you are dumping data into csv, I'd add the relevant lines to log data to rerun. On the desktop side, you can spawn a viewer that can listen to the stream and visualize it.
- helboi4 2y agoThis looks really really cool but I do hate everything being subscriptions. Everyone trying to be a digital landlord out here. Just sell me something.
- resters 2y agothis is very cool!
- nickserv 2y agoI've been doing Python development for a long time, since when 2.4 was the hottest thing. I've used the language for all sorts of things: web apps, web APIs, GUI tools, image manipulation, data processing and visualization, some data science, machine learning more recently. I've used many IDEs over the years, currently on PyCharm. Just to qualify the feedback. Pros: - It looks very pretty. - Some nice time saving features. Cons: - Mac only. - Subscription business model. - Having to tie the code to the IDE. Any one of the con's would be a deal breaker for me. Overall I'm not sure what the target market is. Maybe I'm just too used to having free and/or libre tooling.
- lolinder 2y ago> currently on PyCharm. ... Cons: Subscription business model. ... Any one of the con's would be a deal breaker for me. I'm curious to understand this better (as a fan of JetBrains): do you currently use PyCharm Community or does the JetBrains model not count as a subscription for you?
- vunderba 2y agoChiming in here, Jetbrains is a subscription model, but with a very important qualifier in the form of a perpetual fallback license once you stop paying. It's an important distinction, and I wish more businesses would follow this model.
- markus_zhang 2y agoIs the Jetbrain model basically the pricing model of early era (pre 2000s) IDEs? I remember back then developers had to pay for editors and compilers, which usually came with a huge amount of manuals. And then they could install patches until a new major version rolled out. I'm actually OK with that model, if they still ship manuals in paper.
- vunderba 2y agoYeah, I think it's pretty similar. I definitely remember purchasing copies of the software like Borland C++ / Visual Studio / etc. that would essentially cover the major version number and all patch related updates. Although personally, I don't know if jetbrains offers an actual physical copy (give me back the big box!).
- mft_ 2y agoOh, this looks really grea... oh, it's another $20/m subscription...
- markus_zhang 2y agoI wonder who are the target users. I do use a lot of Python but never had the need to plot outside of Notebooks. I guess anyone who plots a lot in Python? Maybe electronics engineers?
- for_i_in_range 2y agoThis reminds me of Light Table from a decade ago: https://news.ycombinator.com/item?id=3836978 https://news.ycombinator.com/item?id=3836978
- menelaus 2y agomake it a neovim plugin and I'll bite!
- BiteCode_dev 2y agoI like the idea, but it should be a separate product, not an IDE. Make it a Python runner with a visualization tool and independent from an IDE. You will not have to catch up with the big IDEs, no need to maintain the IDE code, you get people using different IDEs to adopt your products and they can keep their tooling.
- hakube 2y agoWhy is everything a subscription? This world is going nuts!
- zwieback 2y agowait a while and there will also be advertising every time you boot up and at random other times
- nomel 2y agoDevelopers enjoy sustained income, and "worth", at least in a professional context (which tool developer who enjoy money will target), is much more about value/time.
- deleted 2y ago[deleted]
- hoistbypetard 2y agoThis looks very nice. Good job shipping it! For me personally, though, it's a hard sell. Since I just paid my JetBrains renewal, I am currently very aware that I'm paying $173/year for *all* of their IDEs, and PyCharm Pro is very good. Just from looking through the site for this one, while it does some *SUPER* nice things, it doesn't replace everything I use from just PyCharm Pro, let alone from the other JetBrains tools that I also use and get in that subscription. So it costs more than my current subscription, and wouldn't let me replace it even if the Linux version suddenly shipped today. I love the competition in this space and wish you good luck. But, as someone who's obviously willing to pay for tools in this space, the only ways I could suggest that you could get my business would be: 1. Grow your feature set to the point that I could replace my JetBrains subscription with yours. 2. Become a JetBrains add-on, and reduce your price to something less than $10/mo. Both of those look like tough roads... I hope you succeed wildly, even so.
- nightcraft 2y agoThanks, appreciate the feedback! While the initial focus is on visualization capabilities, the missing IDE features are actively under development. Beyond cross-platform support, which PyCharm features would you consider essential and would like to see the most?
- hoistbypetard 2y agoIt's a long list. Most prominent lately, for me: * uv/poetry detection and environment use * refactoring * unittest/pytest support * docker compose service support (e.g. if I have a docker-compose.yml file in my project directory with redis and postgres services, pycharm lists the services in a UI and lets me start/stop/restart them easily from the IDE.) * django app/model detection and completion from those models as I'm building things that query them * "compound" runners, so I can start a npm watcher and a python watcher at the same time, and bounce them together as I iterate * The debugger is really, really good. And it's practically automatic to jump from the PyCharm debugger to the Clion debugger when I'm dealing with a python package that has C++ modules. * django and jinja template support as I build out things that present my results. * ability to connect it to a data source and query/explore using sql directly against that, and see tabular results to help guide my other explorations * Vim emulation in the editor... IdeaVim is a really good vim implementation, and I find I hate working without vim movements and commands.
- decide1000 2y agoIt looks nice but I like my Jetbrains. Why not integrate it? Also Mac only doesn't make sense for me. I use linux only.
- deleted 2y ago[deleted]
- loic-sharma 2y ago> While the editor component is based off Monaco, the IDE is not a vscode fork and was written from scratch. Interesting! What are the trade-offs here?
- nightcraft 2y agoIMO, VSCode's codebase is excellent and quite well designed with most functionality abstracted out into injectable services. However, the interaction of these services and other bits of architecture do impose certain limitations that are tricky to workaround. One option is to fork vscode, write your own services, alter the architecture as necessary. You're then faced with keeping this in sync with the rapidly changing upstream code. Another alternative is to implement it as an extension, but that has a fair number of restrictions. For certain projects, forking/extending may be the right call. However, for the degree of customization required for Scripton, writing from scratch turned out to be the more viable path (vs attempting to workaround/rewrite yet another component in vscode). The trade off here, of course, is that you lose out on the familiarity and ecosystem that VSCode has built over nearly a decade. The hope is that Scripton remains sufficiently familiar (eg: Search / CMD+P / etc work similar to vscode) while being compelling enough in its own right.
- ei625 2y ago20$ is cheap for people actually need, it might be better to sell to manager levels while explaining ROI.
- dinkblam 2y agoHold Command-Q to quit? Please don't do that! Shortcuts are meant to be pressed and not meant to be held for a second...
- nightcraft 2y agoSome folks do like hold-to-quit to avoid accidentally quitting (similar to Chrome's default behavior). However, point taken - it'll be configurable in the next update.
- kali_00 2y ago[dead]
- randomcatuser 2y agowhoa this is so cool!! Can you tell us a bit more about the C++ part? I don't get it
- nightcraft 2y agoThanks! The C++ bit comes in for the IPC (inter-process communication) between the IDE and Python. There are a few different ways for the Python process to communicate (send data over for visualization, receive/transmit commands, etc) with the IDE. For instance, you could communicate over HTTP. Depending on the use case, that can have an appreciable performance overhead. Instead, Scripton uses a lower-level mechanism with a protocol optimized for sending binary payloads (eg: large numpy arrays, images, etc). This communication and processing is implemented in C++ as a native multithreaded node module. It effectively enables very low latency and high throughput visualizations.
- levocardia 2y agoBut does it have a variable explorer? Somehow this simple feature, available in MATLAB and RStudio, is sorely lacking in many Python IDEs. I put up with an unbelievable amount of crap in Spyder because I can actually inspect dataframes, matrices, etc.
- alsodumb 2y agoVanilla vscode has some version of this in the debugging mode, you'd perhaps need to install their Python extensions but that's about it.
- nightcraft 2y agoIt does show you the active variables (and bits of details like shapes and dtypes for numpy arrays, torch tensors, dataframes, etc): https://scripton.dev/assets/images/lib-symbols@2x.png https://scripton.dev/assets/images/lib-symbols@2x.png However, I'm assuming you want to drill down further into these (and have them displayed as a table for instance)? While the current version doesn't have that, it's definitely planned.
- insane_dreamer 2y agoPyCharm does this well
- daft_pink 2y agoI find a lot of my pain points with python have to do with deployment. I’m going to try and study webassembly this year in the hopes that it will make it easier to deploy code without a server to an non-programmer end user.
- zxie 2y agoVery sleek UI. Don't mind the subscription pricing -- keeps all parties aligned. The UI toolkit is especially exciting, been looking for something to replace streamlit.
- nightcraft 2y agoThanks!
- merillecuz56 2y ago[flagged]
- gcanyon 2y agoThis looks really nice! I currently use LiveCode (which isn't Python-based) for my daily "I have a bunch of data I'm looking to filter/transform/clean up" tasks. I'm always on the lookout for a similar tool, which for me means: 1. Text inputs (table/spreadsheet inputs?) 2. Text outputs 3. Buttons 4. Menus 5. Sliders 6. Checkboxes/radio buttons And bonus points for: 7. bundle it up and give it to someone else to run I think out of that list you have 2, 3, and 5? https://docs.scripton.dev/api/interact/user-interfaces/widgets https://docs.scripton.dev/api/interact/user-interfaces/widge... Any chance you'll push further into the build-a-UI-to-muck-with-data realm?
- nightcraft 2y agoThanks! That's correct: 2, 3, and 5 are currently available. This initial set was intended as a minimal (albeit limited) set that demonstrates the UI capabilities. More widgets/controls (including the ones you've mentioned) are definitely coming. 7 is something I've considered (along the lines of a redistributable "Scripton runtime" that packages up the scripts and bundles a portable Python distribution). However, that's currently much further down on the todo list.
- gcanyon 2y agoThat is exciting news. I will check out Scripton in greater depth, and with the right set of interface widgets I would be in the heart of your target market.
- hackermanai 2y agoThis looks very nice! How long have you been working on this? I will be releasing hackerman.ai text editor later this year (or ASAP), also somewhat niche product with support for creating/editing lexers (eg for your own languages), able to customize almost everything, set key bindings to use self-defined functions (scripting), and ofc integrated AI features, which can also be customized and added as commands etc. Built on top of Qt framework.
- gogasca 2y ago[dead]
- peme969 2y agocool project :)
- man4 2y ago[dead]
- Sweepi 2y agoMy personal wish: Linux version, please. My advice: Get the [planned] Windows version to shipping asap. Best of luck :)
- croemer 2y ago> And while notebooks are great for many things, they do make certain trade-offs that prevent them from being a full substitute. Please elaborate on this. What are the tradeoffs? I use VSCode and just add a magic comment #%% to split my Python script into cells and then I can run them as a notebook cell.
- dcreater 2y agoLooks cool. A subscription to use it? Hard pass.