Hey HN!<p>I'm one of the creators of Carbide, and I'm really excited to share it with you all.<p>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.<p>One of the areas we'd appreciate help with is adding support for different languages— Python, Scala, Haskell, Rust, etc.<p>Other than that, general feedback / questions welcome.<p>We've scrabling to turn off jet-engine mode on the website :)
The page is surprisingly uninformative. It took me good 5 minutes of looking for "download" button before realizing that it's an in-browser IDE. A big "Try it now" button on top of the page would do wonders. A short, one sentence description of <i>what</i> it is would also be helpful, because "new kind of programming environment" reminds something from managers' meeting slides. Anyway, good job and thanks for making it available to us, I was looking for something like this few months back, I'll sure give it a try.
Looks like a cool project, but I can't scroll very far down the site before my browser crashes. I've reproduced this several times, here's the terminal output if it helps:<p><pre><code> $ conkeror https://alpha.trycarbide.com
......
JavaScript strict warning: https://alpha.trycarbide.com/, line 603: SyntaxError: test for equality (==) mistyped as assignment (=)?
JavaScript strict warning: https://alpha.trycarbide.com/, line 604: SyntaxError: test for equality (==) mistyped as assignment (=)?
JavaScript strict warning: https://alpha.trycarbide.com/, line 605: SyntaxError: test for equality (==) mistyped as assignment (=)?
JavaScript strict warning: https://alpha.trycarbide.com/, line 606: SyntaxError: test for equality (==) mistyped as assignment (=)?
JavaScript strict warning: https://eponymous-labs.github.io/carbide-splash/static/main.js, line 162: SyntaxError: in strict mode code, functions may be declared only at top level or immediately within another function
JavaScript strict warning: https://eponymous-labs.github.io/carbide-splash/static/main.js, line 201: ReferenceError: assignment to undeclared variable diff
Console error: [JavaScript Warning: "window.controllers is deprecated. Do not use it for UA detection." {file: "chrome://conkeror/content/window.js" line: 331}]
Category: DOM Core
Segmentation fault</code></pre>
I think that something <i>like</i> this will probably be the future of programming, but Carbide itself needs to dial it back and focus on which data visualizations give the biggest bang for the least obtrusiveness.<p>Apple's been moving in a similar direction with Swift playgrounds, and recent Java IDEs (IntelliJ, and I think Eclipse) will display the values of variables next to the line of code when you pause in the debugger. These are both useful features. They get cluttered really quickly, though, and in the playground case take you out of your normal development flow.<p>If you want this to be impactful, focus on delivering information at your fingertips without delivering information overload. The core idea of being able to inspect & manipulate run-time values alongside the code that generates them is sound. The implementation - with lots of fancy gadgets that overshadow the code itself - needs some design love.
> Requires no installation or setup<p>This is <i>not</i> something I want; if a product I use is available only via a web site and the company goes under, the product goes away with it. If it's installed on my hard drive, I can keep using the product.
This looks like it could be cool. I'm mostly a plaintext editor kind of programmer but a IDE that helps me get my job done better would obviously be the better solution.<p>There's... a lot happening here though. What does:<p>> Comments live in a Rich Text sidebar #LiterateProgramming<p>mean? I played around with some samples and it seems that there's a method for displaying text or something?<p>I was hoping it'd be an inline `// yeah I know doing +1 looks wrong but it's because` --> automatic transcribing over to a sidebar but I don't know what's actually happening.<p>What does:<p>> Imports modules automatically from NPM or GitHub<p>mean? Does it mean "import" in the sense that you don't have to write the import statement, or in the `npm install` sense? What happens if I misspell a package name and there is a malicious package under that name? Will it auto install and auto run the post install scripts??
I was pretty excited about LightTable (which has some similar ideas) when it started out, but then Chris Granger went on to another project and LightTable was left hanging. They open-sourced it, but developer uptake was slow initially and there wasn't much progress. Commits/pull requests seem to be better now (2 years on), but e.g. the blog is still very much inactive, and the last release is more than half a year ago.<p>So for me, I'd only try yet another IDE if I have enough confidence that it will live long enough. The commitment of the original team is of course a big factor, but as was seen with LightTable and other projects, that can change quickly. So I would require that either
- it is commercial and has enough investment/backing,
- it is open-sourced and gets enough dev uptake quickly, or
- I believe so much in the concept that I'd try it even if the other two points are not satisfied.<p>Speaking of functionality, however, there isn't any mention of refactoring capacities. To me, that's probably the #1 feature why I'd use an IDE instead of just an editor in the first place. I'd consider the in-place partial debugging display only as a nice add-on, but nothing I would throw out a mature IDE with proper refactoring, search (for definitions, references) and other typical IDE functionality for.
There is, or was IDE with the same name: <a href="https://en.m.wikipedia.org/wiki/Carbide.c%2B%2B" rel="nofollow">https://en.m.wikipedia.org/wiki/Carbide.c%2B%2B</a>
I'm curious about how the backwards computations work - how do you detect when the backwards computation can be easily calculated? For example, if we hash some input string and then change the value of the hash, it should be very difficult to do the backwards computation.<p>Does it literally do gradient descent on the input to try to match the output (as is suggested by the backpropagation terminology?) Can it handle discrete valued outputs?
First - super cool.<p>Second - I'm at a loss for exactly what it does. Sorry. I get the 1000 mile-high view, and I get some of the super specific examples. But I'm not sure how it applies to most js progamming which is much more mundane than the very specific examples given.<p>Maybe you could add a section that takes a much more 'basic' introductory approach?<p>Again, great work.
But, why?<p>Like whats the purpose of using this as opposed to vim and a browser?<p>And what do they mean that it requires no installation or setup? Is it not a native program?<p>How does one use this to give it a try?<p>None of this was clear after a few reads through that page.
<a href="https://alpha.trycarbide.com/new" rel="nofollow">https://alpha.trycarbide.com/new</a> is the link to try it out. Not sure why it's getting so much hate, the widgets are just icing on the cake, it's like tonic.dev on steroids. You only need to look at the Python community to see how powerful notebooks can be.
This seems like a really cool idea. Sort of like Jupyter notebooks the way they should be done.<p>I agree with the sentiment that the website could be a bit more comprehensive. I saw "requires no installation" immediately, but then I started looking for a link to actually try it out and couldn't find it. And only then I realized that you can only try it on example notebooks. Or can I write my own code and I just didn't find the way to do it?<p>I tried a couple of example notebooks and unfortunately it was painfully slow to do anything. XOR network cell took some 5 seconds to process. Typing code was laggy, sliders took really long time to update etc. The C-Enter shortcut didn't work, I had to click the button with my mouse. So it seems like you have an awesome project, but it still needs some work.
Very cool! Seems similar to what Brett Victor demos here: <a href="https://vimeo.com/36579366" rel="nofollow">https://vimeo.com/36579366</a>
Wow, the back-propagation thing is very cool! Although it would take me a long time to trust something like that enough to use it.<p>Is there any way to use it offline? (I guess if it's open sourced then at the least, you could run it on a local web server.)
Every time I see a project in this space I wonder why I never got to finish a similar (in spirit) one I had. Multi-language REPL (with "data translation" across languages for specific data types, so you could pass a javascript array to APL, or load a CSV file as a function in APL and send a column as a Javascript array) and built in visualisations for standard types (a matrix could show a heatmap, for instance, vectors barplots or sparklines, specific arrangements of JSON were chord plots).<p>The goal was just to make a tool where small-scale data munching was easy (so you could get a plot of a small timeseries right now, no matplotlib, no ggplot2, no gnuplot: just having the variable on the screen meant the graph was there automatically) and as painless as possible. Of course, I didn't advance much because I needed to rewrite everything that I had working so it was easy to extend, and I found another shinier thing to work on... But that still sits in my "someday" code folder.<p>For now, Apache Zeppelin is almost there in terms of what I want, and has spark in it so...
This is awesome!<p>One of the things I've been thinking about lately is what are the languages that lend themselves to "true" livecoding. Like what if you want to change the class hierachy while you're already in a game and the objects are moving around? What if you wanna move a door in the in game editor mid-level but merge this edit back at the start of the level?<p>Turns out livecoding and live property editing interfaces are an entry into thinking about the next question: what are the abstraction and logic storage models that allow for very radical live coding changes as your app is still running and help you explore?<p>So far I have liked the idea of prototype inheritance but with the objects stored in a reduxy immutable situation. It seems to get at both the functional and OO side of the "expression problem."
This is feels somewhat similar to Swift's playground.<p>I think every language should have something like this. Now that we've been compiling and highlighting errors in real time for such a long time, it only makes sense to do the same at run time and provide real time visualization of the program in action.
I love instant feedback, it really changes the way you can create code because your cognitive system is unloaded of many assumptions to rely on real results (in-place evaluated feedback). For someone that used to work in Smalltalk this is a move in the right direction in IDE design.
Nokia used to make an IDE for the Symbian operating system called Carbide:<p><a href="https://en.wikipedia.org/wiki/Carbide.c%2B%2B" rel="nofollow">https://en.wikipedia.org/wiki/Carbide.c%2B%2B</a><p>The memory of Symbian C++ makes me shudder.
Very cool! Some of this reminds me of the talk that Bret Victor gave at CUSEC 2012:
<a href="https://vimeo.com/36579366" rel="nofollow">https://vimeo.com/36579366</a>
On a mobile webview I noticed that the auto play video took over the screen and opened several instances that I had to keep closing one after another. I didn't get much further after that.
OK. I don't know if Carbide was designed for this or not but I suddenly had a vision of a data viewer widget that is just an entire notebook system with a custom initial state. That would be pretty handy and I could imagine folks chucking it into a web page without extensive work.<p>For applications I have no expectations that these kinds of systems scale up or give the touted wins. But they are great for easing the exploration process.
This is great. Tools like this are useful when exploring a problem, it's very handy to have the instant feedback. Using the widgets to tweak things is also very cool, I could definitely integrate this into my workflow ( if I can install it locally ).
Feedback: I did not want to read all the texts (it's too much) and just wanted to try it out. But I couldn't easily find out a way to try. After scrolling down a lot, I finally found some example notebooks.<p>Maybe 'try out an example' button at the top?
The most interesting feature is how it computes the inverse of the program to yield the inputs that produce a given output. I'm not sure if it's useful but it's cool.<p>But saving to public gists, no thanks.
Seems like this would be a great foundation for building a CMS backend interface. I'd try it in that context before calling it a programming environment.
Seems awesome. I will probably never use it because it is not flexible enough to run anywhere and on VPSes without friction, but I sincerely hope you succeed.