This week, after almost three years of drafts, revisions and demos, I’ve released NodePen, a platform for creating, sharing, and exploring Grasshopper scripts online:
This started as a curiosity (“now that we have Rhino Compute, what would it take to run Grasshopper from the web?”) and has grown to the point I’m trying to give it more sunlight. Grasshopper is the software that got me into software, and I’m stoked to finally share NodePen here, with some of the people who know Grasshopper best and use it the most.
On NodePen, you can:
Create new scripts, with native Grasshopper components, and run them from your browser (or touchscreen device, if you’d like)
Download the .gh for any of your scripts, or scripts shared by other users
Open a script in multiple tabs, so you can have one open to the model and one open to the script, just like with Rhino/Grasshopper
And if you share the script with others, you get these neat little thumbnails of your work (I’ve always wanted visual Grasshopper thumbnails)
There is still a lot of work left to do, and a number of limitations (missing components, shortcuts, etc), but I’m hoping after a bit of time in the sun I’ll have a clearer idea of where to go next.
Please enjoy, and reach out here any time to share your thoughts or something neat you managed to make with the components available!
I just have to make sure I’m handling GH types correctly in all the steps between the browser and the rhino compute server. So once all of a component’s types are covered, the component should come “for free” BUT I’m constantly tripping on how some types get converted within components.
So for now, I’m testing them all by hand, and am just waiting to get a sense of which of the missing ones to bring in next. Requests are always welcome!
It’s the same story with plugins, but I want to cover all of the native grasshopper components first. I can add any plugin that can be installed with Yak. And if they use custom types, I’ll need to test those out too.
100% it’s all there. Sorry should have been more clear that this is a “my architecture” problem and not a limitation with Grasshopper at all. Right now I do too much manual work instead of leaning on C# ToJson() and the rhino3dm CommonObject.decode(). Trying to find the simplest way forward before digging myself into a deeper hole by covering more types with a bad approach.
That was a fun release! Thanks to all who’ve tried things out. The main fires are all put out now, though, and now I’m thinking about what’s next.
What sort of things would you expect to see from Grasshopper, if it lived on the web?
I’m still interested in the “it’s literally grasshopper in you browser” story, as a fun technical challenge. But if I wanted to use Grasshopper, and I’m on my desktop, I’d just use Grasshopper.
The web-based configurator story makes a lot of sense, but that’s already well-covered by products like ShapeDiver x TT Swarm.
Low-touch sharing & discovery feels nice? I can imagine hosting plugins + interactive examples. I was also a bit surprised how often I was asked “cool, what’s Grasshopper?” Like the configurator, though, we do have a tool (mostly) for that already in Food4Rhino.
No matter what, I have some clear next steps, if this continues:
Bring in the full component library. Too much is missing right now. Borderline not enough to call this grasshopper (even though I included voronoi)
Overcome the upper limit on component count. Rhino compute continues to brush everything off no problem. But my current infrastructure can’t stomach more than ~50 components in a script because of some surprise bottlenecks.
Hey, many thanks! Sorry, I fixed a typo and didn’t realize that would bump the thread.
I don’t have a timeline for when it will be back online. It’s too expensive to keep on 24/7, so it’ll be down for the foreseeable future while I think about next steps.
I might do some limited weekends online to test new features, but I’d expect that’s several months out, if work continues at all. I’ll give a heads up in this thread if something like that comes together, though.