11 ms·
Show HN: Carbide – A New Programming Environment
- monkmartinez 10y agoCool looking site/project... However, the web page kicked the fans on my laptop into jet mode. Is this like Jupyter or built with Jupyter tech?
- tholford 10y agoSame, Chrome task manager says 126% CPU for that tab :) Nonetheless, congrats on the launch!
- scottmf 10y agoI must be missing something. Link to download or Github?
- aljones 10y agoThere is an examples section which also has a link to create a new empty notebook. http://alpha.trycarbide.com/new http://alpha.trycarbide.com/new
- elliotec 10y agoSeems like that'd be more prominent considering the URL is "trycarbide"
- GlueChemist 10y agoSeconded, I had to search this thread to find out how to try it...
- hibbelig 10y agoHow does this compare to LightTable?
- wodenokoto 10y agoLooks interesting, but the website is so ressource intensive that I practically can't scroll down on it. I gave up reading what it is.
- bvanslyke 10y agoSame here, on a current-gen MBP.
- sbuttgereit 10y agoI loaded the page and the fans on my laptop started to rev up. Unfortunately, my laptop can overheat and shutdown... Closing page and things quieted down. Resource intensive indeed!
- antar 10y agoLooks limiting.
- jc4p 10y agoThis 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. There's... a lot happening here though. What does: > Comments live in a Rich Text sidebar #LiterateProgramming mean? I played around with some samples and it seems that there's a method for displaying text or something? 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. What does: > Imports modules automatically from NPM or GitHub 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??
- flukus 10y agoWhen did rich text and literate programming become synonymous? It seems to have been very recently. The best literate programming environment around is emacs org mode and it's plenty text. I'm pretty sure Bjarne Stroustrup would be a plaint text kind of guy.
- kasajian 10y agodafuq!
- not_a_codfish 10y agoWe really needed yet another editor that "revolutionizes" programming by adding sliders to variables. Thank goodness!
- fake-name 10y ago"A new programming environment" for javascript. Welp, there goes my interest.
- outworlder 10y agoNot only for javascript. Scroll down.
- elliotec 10y agoYes it is. > We haven't launched support for other programming languages yet (rest assured it's on our roadmap).
- catshirt 10y agopretty short sighted to have no interest in a novel/progressive IDE because it doesn't support your language yet.
- TeMPOraL 10y agoGood for playing around with and exploring the idea. But for practical usage, IDE in a browser is generally a Bad Idea.
- catshirt 10y ago"Good for playing around with and exploring the idea." my point, for the most part. :)
- TeMPOraL 10y agoYou know, my first instinct was - "oh my god, another web IDE, this sucks", but this thought was immediately replaced by "if that's what is the best way to rapidly develop a prototype and distribute it to large audience, then so be it". Someone later (or they themselves) may steal those ideas and redo them in a more "production-quality" environment, but what we need right now is ideas and prototypes to test and explore.
- outworlder 10y agoThe terminology is interesting. "Notebooks", "Kernels"... So, Jupyter-like?
- elliotec 10y agoBut, why? Like whats the purpose of using this as opposed to vim and a browser? And what do they mean that it requires no installation or setup? Is it not a native program? How does one use this to give it a try? None of this was clear after a few reads through that page.
- RhodesianHunter 10y ago>And what do they mean that it requires no installation or setup? This almost always means that it's entirely in-browser.
- corysama 10y ago> How does one use this to give it a try? http://alpha.trycarbide.com/new http://alpha.trycarbide.com/new
- euyyn 10y ago> whats the purpose of using this as opposed to vim and a browser? Developer experience.
- _prototype_ 10y agoTheir neural network example is broken
- nostrademons 10y agoI think that something like 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. 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. 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.
- fossuser 10y agoReminds me a lot of this article from a while back: http://worrydream.com/#!/LearnableProgramming http://worrydream.com/#!/LearnableProgramming Some really good ideas in there - I was pretty impressed.
- sz4kerto 10y ago> I think that something like this will probably be the future of programming Wait, no, that can't be. Maybe the future of programming for a subset of tasks (like UI programming). What I'm doing in 95% of my time does not benefit at all with 'visual programming'. Displaying values when you stop the debugger is completely different and also quite limited in my case, because I'm working with distributed systems, heavily multithreaded programs, etc. -- as many-many other devs. In these cases, this kind of visual programming doesn't make too much sense (or I can't see how it would). Visualization is a very 'local' thing, it helps you understand the narrow context of what you're working on, but when working with large systems, you need to have the map in your head. Or something like that. (Note: I think this is cool, I'm just arguing with the notion that this is the future of programming. It's a bit like saying that the future of mathematics is gnuplot. :) )
- nostrademons 10y ago
- pmontra 10y agoThe 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. But saving to public gists, no thanks.
- antimatter15 10y agoHey 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.
- jomamaxx 10y agoFirst - super cool. 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. Maybe you could add a section that takes a much more 'basic' introductory approach? Again, great work.
- ergest 10y agoVery cool! Seems similar to what Brett Victor demos here: https://vimeo.com/36579366 https://vimeo.com/36579366
- electriclove 10y agoLol, I wrote the same exact comment (just 2 hours later)!
- goldenkey 10y agoThat was very experiential and life changing. Thank you for linking Brett's manifesto!
- chriswarbo 10y agoLooks 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: $ 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
- outworlder 10y agoWell, if the browser segfaulted, it is not the page's fault. It is the browser's. No ifs or buts. I'd suggest enabling core dumps and sending those to the Conkeror team, assuming there's no bug filed for that.
- deleted 10y ago[deleted]
- pmontra 10y agoI know how this line of defense plays out with my customers if their customers' browsers segfault on a page I wrote... I fix the page ASAP to prevent the segfault and then file a bug to the browser developers. If I don't, I lose the customer and somebody else will fix the page anyway, maybe not filing the bug because it doesn't make money.
- zubat 10y agoOK. 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. 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.
- hugozap 10y agoThis 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 ).
- pavlov 10y agoNokia used to make an IDE for the Symbian operating system called Carbide: https://en.wikipedia.org/wiki/Carbide.c%2B%2B https://en.wikipedia.org/wiki/Carbide.c%2B%2B The memory of Symbian C++ makes me shudder.
- tellarin 10y agoI recognise the feeling. I have to say that there are also some nice memories from that time mixed in too. At least in my case. :) BTW, there were also Carbide.j and Carbide.ui
- fiatjaf 10y agoSeems 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.
- rch 10y agoSeems 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.
- stockkid 10y agoFeedback: 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. Maybe 'try out an example' button at the top?
- RBerenguel 10y agoEvery 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). 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. For now, Apache Zeppelin is almost there in terms of what I want, and has spark in it so...
- infinite8s 10y agoI've had that dream as well, although skipping the multi-language part. Something like an RStudio for python combined with Tableau like interactivity on manipulating and visualizing data (why would you limit yourself to static graphs on a computer, especially when the system already has access to the data!!). If you can share, what was the shinier thing you found?
- RBerenguel 10y agoThe closest to production-ready dynamic graph-style is Apache Zeppelin, which is pretty nice and I use almost daily at work in EMR clusters. And from time to time I still think how I'd redesign my own thing from scratch yet again.
- sebastianconcpt 10y agoI 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.
- Waterluvian 10y agoThis looks perfect for live demos and interactive gists of relatively straightforward code.
- rkho 10y agoOn 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.
- electriclove 10y agoVery cool! Some of this reminds me of the talk that Bret Victor gave at CUSEC 2012: https://vimeo.com/36579366 https://vimeo.com/36579366
- rajington 10y agohttps://alpha.trycarbide.com/new https://alpha.trycarbide.com/new 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.
- pbreit 10y agoLooks interesting. What sorts of use cases were you envisioning? Would it work or make sense for ad hoc mongo querying?
- gnuvince 10y ago> Requires no installation or setup This is not 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.
- estefan 10y agoI'd probably forget about it for that reason too. I mean, literally forget. My bookmarks and bookmark toolbar are littered already. If I could download it I'd have more of a chance of being reminded to see it and use it. Plus I'd feel it'd be more secure, and I'd be able to work when offline (e.g. commuting/travelling), so I wouldn't use it for those reasons. It looks like it has some interesting ideas though (I especially like the look of the nested debugging thing with probes).
- didibus 10y agoIs it only a notebook style environment? Or can it be used as a modern IDE for real programming?
- taneq 10y agoWow, the back-propagation thing is very cool! Although it would take me a long time to trust something like that enough to use it. 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.)
- cercatrova 10y agoOpen source?
- cercatrova 10y agoOpen source?
- NarcolepticFrog 10y agoI'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. 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?
- NarcolepticFrog 10y agoI read further down the page - they use a quasi newton method to find inputs that minimize the (squared?) distance between the desired output and the output of the guessed input. I guess this can only really be expected to work well when there is a input that perfectly matches the output in a convex neighborhood of the starting point. Pretty cool! Looks like they also have support for a few other types of data, but it's not described in the documentation. Apparently there is support for the backwards computations on strings, nested objects, and you can declare inverses for functions. There's also something mysterious called "cascading approaches". I'm super interested to know more about how this works!
- partycoder 10y agoReminds me of the "manipulate" package for R. This takes the concept really further though.
- rezashirazian 10y agoThis is feels somewhat similar to Swift's playground. 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.
- kbart 10y agoThe 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 what 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.
- Elrac 10y agoSimilar sentiment here. If I understood the not-very-explicit description correctly, it's an IDE for Javascript, and Javascript only, right? It's hard to believe, but somewhere in the world are developers using languages other than Javascript.
- helb 10y ago"We haven't launched support for other programming languages yet (rest assured it's on our roadmap)" "Our roadmap" is a link, but does not work… There however is a "Future" section near the page bottom, with screenshots that indicate support for Python, MIT Scheme, and something called Watlab.
- Elrac 10y agoI missed that! Thanks.
- athenot 10y agoIt seems that the author addressed that in the very first bullet point on that page: > Carbide is a new kind of programming environment which (as obligatory in this day and age): > • Requires no installation or setup (It's also followed by the mention of Javascript and all the browser screenshots reinforce the point.) The first analogy that came to my mind is that this is a similar environment to Wolfram Alpha but more focused on experimenting around with programming concepts.
- rasjani 10y agoThere is, or was IDE with the same name: https://en.m.wikipedia.org/wiki/Carbide.c%2B%2B https://en.m.wikipedia.org/wiki/Carbide.c%2B%2B
- tellarin 10y agoThere was. Basically dead for a while. That Carbide was exactly what I thought of when I read the tile. Many mixed memories from my kind-of-later Nokia days. ;) Kudos to the team behind the current one though. Looks great so far! PS: Not only .c++, but also .j and a theme editor, Carbide.ui
- kiliancs 10y agoThe site skyrocketed Firefox's CPU usage, unfortunately.
- pjmlp 10y agoCarbide was the name of the latest IDE version that Nokia produced for Symbian. Have you researched the name?
- prance 10y agoI 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. 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. 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.
- polskibus 10y agoWould love to see an example on how to use it with D3. Live refresh is very useful when working on d3 visualizations scripts.
- peternicky 10y agoAwesome work!! Please release the source!
- donretag 10y agoAm I the only that thinks of Union Carbide (and the disaster) when they see the word carbide?
- MadWombat 10y agoThis seems like a really cool idea. Sort of like Jupyter notebooks the way they should be done. 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? 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.
- joshkpeterson 10y agoCan see how this would be great for creative coding :)
- skorkmaz 10y agosorry for pointless comment but looks really cool
- nikki93 10y agoThis is awesome! 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? 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? 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."