5 ms·
Hey HN! I'm one of the creators of Carbide, and I'm really excited to share it with you all. We're thinking of releasing Carbide as open source in the coming
by antimatter15 10y ago
Hey HN!
I'm one of the creators of Carbide, and I'm really excited to share it with you all.
We're thinking of releasing Carbide as open source in the coming weeks if there's a community interested in building stuff on top of it.
One of the areas we'd appreciate help with is adding support for different languages— Python, Scala, Haskell, Rust, etc.
Other than that, general feedback / questions welcome.
We've scrabling to turn off jet-engine mode on the website :)
- antimatter15 10y agoWe've turned off the crazy scrolling effects, so hopefully your laptops won't be supersonic anymore.
- nhaliday 10y agoAny comments on how your project compares to https://tonicdev.com/home https://tonicdev.com/home? It looks like y'all are really aiming for Bret Victor-style direct manipulation, which is a bit more ambitious, but Tonic has incorporated some similar ideas, including time-traveling debugging, and it seems like there's a lot of overlap around the more basic features, like the automagical approach to packaging and the data visualization stuff.
- antimatter15 10y agoI think Tonic is great, and the stuff they've done with CRIU for pausing resuming computation is really clever. On the surface, Tonic is meant for building NodeJS services, whereas Carbide is focused on things which run in the browser. One aspect of Tonic that I find really interesting is the attention they've paid to reproducibility. Traditional notebook programming environments (Mathematica and Jupyter) are sensitive to the order of execution of the cells, which often makes it kinda hard to reproduce results. This stems from the fact that cells are used for two things— controlling what gets executed, and as a means for visualizing output. As far as I'm aware, Tonic is designed so that there is only one way that a program can execute, so there's any notebook is automatically trivially reproducible. This has the side effect of making every notebook essentially equivalent to a single file which is evaluated in-order. Essentially, they've made it so cells only mediate what output is displayed, and not what gets executed. Carbide takes the opposite approach— leaving cells to only control what gets executed, and introducing something else (probes) to visualize output within a cell.
- greenspot 10y agoIs Carbide kind of a JSFiddle Pro?
- zdrummond 10y agoThis looks great. I really love tonicdev [1], but I'm reluctant to use it on production data because it's SaaS [2]. If you open-sourced this and I can run it "behind the firewall", that would be awesome. [1] https://tonicdev.com https://tonicdev.com [2] I don't want to share production keys with Yet Another SaaS
- finkelwink 10y agoI know it sounds crazy, but hear me out. I would love to hack on adding VR support to something like this. A real Minority Report development environment is something I've always dreamed of having. No promises, but I can't get experimenting without source. Wink :).
- corysama 10y agoWhen you get something working, be sure to share your results over in https://www.reddit.com/r/HMDprogramming/ https://www.reddit.com/r/HMDprogramming/
- ramon 10y agoThis is something I dreamed about it too, another thing I dreamed about was speaking what I wanted and the computed programmed it for me. I think I might be closer to telling the computer what to develop and have it open up in Carbide then the first idea, because I'll probably need a Unity behind the Carbide and I don't want that, will be heavy as hell.
- fizx 10y ago> We're thinking of releasing Carbide as open source in the coming weeks if there's a community interested in building stuff on top of it I'll be hitting refresh until you do :)
- iheartmemcache 10y agoRE: Other languages this distinction is what you're looking for : https://github.com/Microsoft/language-server-protocol https://github.com/Microsoft/language-server-protocol Completely separating the tool layer from the language layer. Red Hat, Eclipse, etc have already implemented tons of languages like https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations https://github.com/Microsoft/language-server-protocol/wiki/P... Haxe, Java, C#, C++ (! probably the most impressive of the list). If you conform to the API you can leverage all of those pre-existing backends.
- antimatter15 10y agoA lot of Carbide's widgets depend on having access to a program's parse tree, which (to the extent of my understanding) a lot of these protocols (Jupyter/MS's Language Server Protocol) don't provide. In order to inspect an expression, we have to be able to take the document, parse it into an abstract syntax tree, determine branches which are expressions, and annotate them so that a code generator can wrap it in some log invocation. It'd be great if it were possible to apply "one simple trick" and support a hundred different languages all at once, but in this case I don't think the existing abstractions really suffice.
- deleted 10y ago[deleted]
- sushisource 10y agoOne of the comments I always have when I see environments like this is that it looks really neat to have all these adjustable sliders and partial debugging and whatnot, but when you attempt to apply this to any truly useful program (ie: Anything that performs side effects) it really starts to break down if that side-effect isn't idempotent, like writing a file to a disk, or making a network call you really only want to make once, etc. Do you have any strategies for that, or is the idea that these features are really only for testing functions that don't cause those sorts of side effects?
- deleted 10y ago[deleted]
- rtpg 10y agoOne way to work around this is to write programs that work in memory and have a button that manually triggers side effects So you do all your manipulations and then hit a "Save" button at the bottom which triggers the save to disk. Similarly if your input depends on a side effect (web resource?) You place a button on the top which will "start" your program. Of course, the programming environment can offer primatives (debouncing and the like) to help make this stuff easier.
- voltagex_ 10y agoI wonder if the debugger could be combined with a really good mocking framework. That seems like a good idea for a "live" testing framework. Maybe that's something that could be used to help prototype unit tests themselves.
- chvid 10y ago(First congrats on a great looking project and really good copywriting/teaser.) I think this sort of highly interactive environment is best suited for languages without side effects at all. I.e. purely functional language as you see it in a spreadsheet. Allowing any language (JS, Python and so on) gives problems with how to handle errors, show variable values that change over time, how to handle programs that take a long time to evaluate (or never evaluates), how to handle programs that modify the environment (i.e env.x = env.x + 1) and so on.
- qwertyuiop924 10y agoThis feels very inspired by Smalltalk's IDE. Not entirely, but there's certainly some traces in things like probes and inspection. What's involved in writing language support? I'm probably sticking with Emacs for the day-to-day, but I might be interested in writing Scheme support.
- suyash 10y agoDude congratulations! Please write a blog post on : 1. Who invested this product? 2. What are it's key features that are missing today in IDE's? 3. What was your primary motivation etc. It will be nice to hear the backstory.
- carapace 10y agoI'm normally pretty cynical about these sorts of efforts but this seems pretty compelling. One pet peeve about the site, please consider adding a "Who" section or note. One of the first things I look for in an interesting site or project is the "human face" of it, so to speak.
- adelarsq 10y agoFor Rust? Keep going! Would be so cool!
- hoodoof 10y agoWhat is your business model, how will you make money? What is the need that it meets or problem that it solves? Who are the first champion users who will feel compelled to use this?
- altern8 10y agoNo support for ES6? That's what everyone's using nowadays...
- throwaway394587 10y agoThis looks great but how much of the concept and implementation are actually from yourselves? Asking because you guys are, unfortunately, known for your plagiarism at HackMIT 2014 https://www.youtube.com/watch?v=eX7Rrhe2vJk&t=2910s https://www.youtube.com/watch?v=eX7Rrhe2vJk&t=2910s
- deleted 10y ago[deleted]
- xyzxyz998 10y agoYou've done a wonderful job. It takes courage to think in completely new directions, actually do something about it and then give it away- like a Buddha. Sorry about the naysayers. Please remember that most of us on this forum are wannabes trying to one-up each other to make up for our failures. Don't blame us, we're all humans... :(
- ramon 10y agoGreat job, I think the idea of adding different languages or widgets should have an "App" concept were people plugin technologies. That way there can be various githubs of projects separate from the main project were people contribute at free will, that would be really awesome and great for the project. Best Regards,
- kragen 10y ago> We're thinking of releasing Carbide as open source in the coming weeks if there's a community interested in building stuff on top of it. I'm really interested in things like Carbide, and I'm finding it inspirational as a user interface experiment. But I'll be sticking with Jupyter for the time being on my current project — I think we would be kind of dumb to build stuff we cared about on top of it if it's not open source; without open source, you don't have a community, you just have consumers. FWIW the jet-engine mode is still active on my laptop now.