9 ms·
Natto.dev – A Canvas for JavaScript
- patates 5y agoI need something like this but open-source so I can run it locally...
- d--b 5y agoI am building https://www.jigdev.com https://www.jigdev.com which runs observable hq as a canvas locally. It's not open source as of now but there'll be a always free version for it.
- deleted 5y ago[deleted]
- ricklamers 5y agoAlthough Orchest was built for Data Science the graph based visual editor could be what you want. And you can run it on your machine locally https://github.com/orchest/orchest https://github.com/orchest/orchest
- lgrebe 5y agoReminds me of observablehq.com
- wcerfgba 5y agoReminds me of Pure Data
- nkmnz 5y agoPlease don’t prevent people from leaving your site using browser navigation. It’s impossible to get back to hackernews by swiping back on iOS.
- sudoankit 5y agoExactly. Safari on MacOS has the same problem too.
- notum 5y agoI don't believe that was intentional, he hijacks the back button so he can use it as an undo internally. It's just an unfortunate design choice which should have been avoided.
- nkmnz 5y ago„he hijacks the back button so he can“ - sounds pretty much intentional. No one would argue against an alert asking you if you want to leave without saving you work or sth similar, though.
- MartinodF 5y agoYou should complain to you browser vendor, not the website owner. Swiping back works just fine on Android.
- js4ever 5y agoNot in chrome/android on my side ... I had to long press the back arrow and select HN to come back here
- sdeframond 5y agoNot on FF on my device...
- volgar1x 5y agoFirefox 78.9.0esr on Debian Buster has the same problem
- 5y ago
- trungdq88 5y agoWarning: this website hijack your browser back button
- mrtksn 5y agoVery cool. A few years back I was trying to build something similar, my intention was to create a canvas for visually programming cryptocurrency bots. I thought that it would be cool to be able to follow the data transformation visually, so I focused on rate limiting on the code execution and expressive animations on changes to the data so that a human can visually follow the data flow and transformations(when I switch to bullet mode, a delay is introduced between each data transformation and a visual feedback indicates what changed). My prototype was not as neat and at some point I got convinced that it's actually easer to reason over algorithms when written in code and this visual style of programming works well as long as you deal with algorithms on very high level with no implementation detail considerations. When implementation details need to be part of the work, i.e. you need to think about how to fetch and transform a JSON file and match it with a CSV data it's actually easier to learn how to code and build your logic procedurally. Maybe people are not good at visually following large number of active objects and I think it's not only me because I'm sure that people get exponentially more confused with the addition of a new button or number to the scene. When you don't have a simple enforced structure like "instructions execute from top to bottom" the visual freedom becomes yet another thing that you need to think. I find that the most visual processing tools that are helpful are spreadsheets, they have a good and simple structure to follow for storing and representing data and powerful features enabling calculations on that data. Google Docs also has data fetching functionality(not sure about Excel), making it a very interesting data processing software.
- danpeddle 5y agoVery neat, and seconding impression of reminding of observable, but much more freeform. Here's a dumb little demo of appending some divs to a dom element, with random heights. https://natto.dev/@dazld/7168773775bd401481366b7d62d14e8c https://natto.dev/@dazld/7168773775bd401481366b7d62d14e8c It's quite fun to think about the restrictions of this - getting an animation loop going, for example.
- Trufa 5y agoThis site's negativity/nit picking is sometimes incredible. This is an incredibly cool product that is by their own words "very alpha" and people jump to "OMG i know what hijacking is so I'll point it out" for attention. It's kind of a tired trope. This is obviously not an intentional hacking of users but rather a quite harmless bug in the implementation of an undo/permalinking feature. Great job to the devs and I hope I can find a utility for this product in the future, it's kind of a javascriptable excel concept, really cool.
- wccrawford 5y agoWarning people that they won't be able to get back to this site is not an overreaction.
- vanderZwan 5y ago> they won't be able to get back to this site I hate it when sites break the back button, but that's really not the same thing
- adamhp 5y agoI'm picturing users instantaneously teleported to some mythical labyrinth where they're forced to fight their way back to Hacker News.
- mcintyre1994 5y agoFWIW: In every desktop browser I've used and in Safari on iOS, long pressing the back button for a few seconds will bring up a list of recent history and allow you to get back when the button is hijacked by a page.
- deleted 5y ago[deleted]
- kingsloi 5y agoI think I've automatically double-clicked the back button every back-button click since the back button could be hijacked, like years ago. Same with iOS. I try to use my iPhone less, so I uninstalled all apps, and access everything through Safari. It's the absolutely worst experience and I love it. Reddit is practically unusable unless you visit the `www.` site, but by far the worst thing is visiting a site that hijacks the back button.
- xcambar 5y agoThis is incredibly useful, a lot of my peers will certainly love it for quick prototyping data manipulation and exploration. I know I will. This is a very clever/usable implementation of flow-based programming (FBP), which is dear to many people's heart in HN and out. FBP matches very easily the mental model of data flow and calls for quick mouse- or touch-based manipulation. Coming up with a usable UX for such paradigm is not trivial though, and your project seems on a good track. I can only encourage you to take the (harsh) criticism in this comments' section with the necessary distance, and keep working on the project, because it's very good! Well done!
- dvaun 5y agoFlow-based programming is also what came to mind when I explored the site. For interested readers there is a decent article[0] and previous discussion[1] a few months back which discusses this topic. [0]: https://jpaulm.github.io/fbp/index.html https://jpaulm.github.io/fbp/index.html [1]: https://news.ycombinator.com/item?id=25848542 https://news.ycombinator.com/item?id=25848542
- Robin_f 5y agoTried to play around with some JSX but unfortunately it keeps throwing the error that React is not defined. Looks cool though!
- pimterry 5y agoThe author published a working React & JSX example here that might be useful: https://natto.dev/@paul/1dcbeb7583624bf19d69b9942271a703 https://natto.dev/@paul/1dcbeb7583624bf19d69b9942271a703. Some background on Twitter too: https://twitter.com/_paulshen/status/1380292393291841541 https://twitter.com/_paulshen/status/1380292393291841541
- pjmlp 5y agoDoesn't seem to work on Firefox, had to switch to Chrome for testing it, the new normal.
- the_gipsy 5y agoFor starters, this site's JavaScript hijacks history and won't let you navigate back.
- f-word 5y agoWhile this is indeed amazing I think it suffers from not being a PWA. Being able to stuff it on its own little instance with no "back" to go to would allow people getting a cursory look at it to divert attention from the whole usability etiquette and concentrate on the thing itself, plus there might be some interesting gains in doing so too. One other thing I'd love to have is an interactive tutorial, I'd love to be able to follow some steps to understand the thing better.
- itsbits 5y agoIt would be more awesome if we can convert a given code into different panels and link them automatically...
- throwaway888abc 5y agoThis looks great!
- paulshen 5y agoHi all! Developer here before first coffee I'm actively working on natto.dev and it really is in "preview". I'm excited about the future of programming and having a canvas to explore it on. still looking for "crazier" ideas - my favorite current one is dragging a column out of a table. https://twitter.com/_paulshen/status/1366801887341649924 https://twitter.com/_paulshen/status/1366801887341649924 The more I work on it, the more confident I am that there's something there. If you try it, I'd love to hear your feedback! natto takes inspiration from a whole lot of work. non-exhaustive list: Yahoo Pipes, Excel, design tools (Figma), Observable, darklang, GToolkit, SmallTalk (repl-driven), http://joshuahhh.com/projects/pane/ http://joshuahhh.com/projects/pane/, http://www.lamdu.org/ http://www.lamdu.org/, https://futureofcoding.org/catalog/ https://futureofcoding.org/catalog/ As much as I love natto (the food), I'll likely rename it at some point. Pronunciation hit rate has been 0%
- shepardrtc 5y agoVery cool site! You should be proud!
- jp555 5y agoI'm a very visual thinker, and this is very cool! Thank you very much for making it!
- onli 5y agoThe Yahoo Pipes inspiration is obvious I think - which is a good thing. How do you judge the changes between your service and it? As far as I can see, you picked the code heavy approach, while Pipes was more "here is a block that does X". Natto feels to me more like programming, with Pipes being more about composing fixed functions to manipulate data. Conscious choice? Worth the complexity? Do I judge that wrong?
- paulshen 5y agoYes, very intentional! I'm taking a JavaScript-first approach. I know JavaScript, you probably know JavaScript, and the browser runs JavaScript. It's not the perfect language but here we are. It has lot of nice qualities! I consider natto a much?-code approach in realm of no/low-code. Instead of building abstractions (no-code), what if we built new environments and UI for code? I'm spending most time building UI and trying to keep execution abstractions as minimal as possible.
- pruett 5y agoThis is killer! Awesome work.
- mbar84 5y agoI think it would be very useful if there were a way to box other boxes, possibly designating specifc ones as the input/outputs of the big box. Bonus: if you collapse a box, it becomes a black box.
- paulshen 5y agoyes! This is what I'm exploring next, composability. One idea is to make "big boxes" like you describe. The other approach is to make canvases have special input/output pane and the ability to reference/run other canvases.
- bkyan 5y agoAlthough my interface doesn't wire nodes together, you might find the way I embedded spatial interfaces within each other (recursively) at https://beta.mindcast.com https://beta.mindcast.com to be of interest for your exploration.
- CuriousSkeptic 5y agoCheck out Tangible Functional Programming by Conal Elliott for an interesting take on this approach http://conal.net/papers/Eros/ http://conal.net/papers/Eros/
- b1llyhoyle 5y agothis is awesome, great job. by the way, i'm the creator of the API you're using for the nba example :)
- purplecats 5y agoI'm surprised no one's mentioned Node.red yet, something this reminds me on and could see evolving as a competitor to.
- mbar84 5y agoRequest: Zoom with Ctrl+Scroll. I imagine this might be quite useful to understand data-flow, but I worry that it would be tedious to manage the connections via positions during development. It would be cool to have an auto-format/auto-layout: - data flowing left to right - draw pipes like yahoo pipes used to - minimize crossing pipes. When in the programming loop, could the connections be established automatically via references? Name each output and then reference it somewhere else, which implicitly establishes the connection. Then click "auto-layout" (or just hit save) and as Steve would say "BOOM".
- Fergusonb 5y agoWow, this is a really cool project. I'd really like to see something like this in browser developer tools someday.
- m1117 5y agoNeat!
- bartq 5y agoAnother similar tool: https://www.youtube.com/watch?v=fQvWMoOjmQk https://www.youtube.com/watch?v=fQvWMoOjmQk
- verifex 5y agoI really like how it looks. Here's my only ideas for improving it: * Some navigation buttons for zooming and panning quickly, maybe the mousewheel or a minimap? * I like how you can drag arrows around to different windows, I think the icon there isn't super intuitive but that's a minor gripe! :) I think one of the examples is broken, but dang you should add more examples, I like this kind of tool!
- paulshen 5y agoThanks for feedback! Mousewheel should pan! You can hold down spacebar to pan anywhere (also dragging). Clicking the 100% in the toolbar lets you zoom. Some more shortcuts here https://twitter.com/_paulshen/status/1381744260945379331 https://twitter.com/_paulshen/status/1381744260945379331 Which example isn't working for you? and I plan to add more examples (maybe community?) and interactive tutorial in the future!
- verifex 5y agoI've seen a number of tools like this recently, and I was wondering if there is a moniker for this type of tool? I saw one a few weeks ago that was all about JS widgets with code that you could tie together in pipelines. I remember Yahoo Pipes was a version of this tool, Node Red, there are a ton of them out there. Anyone have a name for this category of tool so I can look out for them when I see them?
- high_byte 5y ago"Visual Scripting" perhaps. someone else mentioned "flow-based programming (FBP)"
- ibdf 5y agoReminds of nodered but without the form fields, which might actually be better.
- mtm7 5y agoOne thing I really appreciate about this is the design! It feels so calm and friendly – like a lot of care went into it. I love how everything snaps to the grid, and that it's achieved via CSS transforms.
- paulshen 5y agoThanks for the kind words :)
- varispeed 5y agoThis fascinates me. I cannot use such layout, graphs etc. I can only analyse something if it is in a list - even if it is a complex algorithm - I will understand it fine. If it was exploded to a graph there is no way I'll get it. That leads me to a question - do you find yourself naturally understanding the information in a graph format and not getting lists or is it something that you learn to make sense of?
- lattay 5y agoYou might be based by the fact you learned programming and the associated ”linear" thinking a long time ago... I am not very efficient reasoning on graphs, but I remember how HARD it was when I started programming and this does not seem even close.
- voceboy521 5y agoi love that people are working on this stuff. for some reason it always fails. although i guess unreal blueprints are successful
- smusamashah 5y agoRelated https://nodered.org/ https://nodered.org/
- pineconewarrior 5y agoOh man this is cool! I wish someone would make one for Magento - feels like I have 100 files open just to change a tiny thing
- somishere 5y agoamazing! thinking of something to use it for. v. minor bug, +/- keys zoom in and out even when editing a field :)