Skip to content

Releases: nodepen/nodes

1.0.0 - Symbolic W

21 Jan 04:08
7d2e8ba
Compare
Choose a tag to compare

I spent a lot of time over the last week putting out small fires, staring at metrics, and looking back at the early days of this project. There is so much about this release that feels incomplete and lackluster to me. The api can't schedule solutions for graphs with > ~50 components because the json request gets too large. Changing curve geometry with the model open (Grasshopper 101!) will leave them stuck with previous domains and render way too long/short. Press and hold still finds ways to lock the entire graph on mobile. So many things that feel so important are also wrong.

NASA has a habit of setting, officially, mission objectives that seem insanely short and understated for the amount of miraculous human energy that makes any of their work possible. The Mars Curiosity rover set out on a 90 day mission that lasted 14 long and incredible years. That's the vibe right now. Several years ago I looked at all the little tech things I knew and was interested in and asked myself, "So what is this project, assuming it's all possible?" And here it is, ever so technically: a website where you can walk up and just create, run, and share literal Grasshopper scripts. The next steps for this project are so fascinatingly and terrifyingly vague. So I'm taking a beat to wax a little poetic and reflect. This has been fun as hell. There's this feeling I get every time I see someone use NodePen, and they should sell that feeling as a drug.

On the whole, the people who have used NodePen every day since release -- the people who build scripts, share them in places I still don't know about, and poke around the few scripts you can discover on the home page -- have never liked a tweet. I've chased likes for the entire duration of this project. I've diverted entire weekends of my time to difficult demands for scripts to sync between windows or for the editor to work on all mobile devices. I bought an iPhone to make sure Safari works. But these voices on Twitter don't use the app. These features, that are incredibly interesting technical challenges that made me a better developer, are not used.

On NodePen, people like to play with Grasshopper scripts. I have a simple feed that shows me when a graph is opened and when a graph is run. All week, and as I write this, I've watched people open the first script visible on the home page, run it a bit, and then go back and open the next one. They run that for a bit longer, and sometimes they open a third or fourth, before disappearing forever. Surprise: Grasshopper is an absolute joy to tinker with. It's so much fun to be able to drop into what someone else created, poke around a bit, and then just log the fuck off. What is "list access" vs "tree access"? What the hell is a "graft"? I don't care, look at the incredible things that I can make happen with a few simple changes. I mean I've been using Grasshopper forever and David Mans taught me what an Enneper Surface is this week.

It feels like the next iteration of NodePen should be an engine for that joy and discovery. Right now, I have no clue what that looks like. And if this is as far as things end up going, I'm pretty stoked. Thanks for playing.

0.5.0 - Public Alpha

14 May 05:17
b19e656
Compare
Choose a tag to compare
0.5.0 - Public Alpha Pre-release
Pre-release

This build represents the state of the app as-shipped for the May 7-9 2021 public test. (Plus a few follow-up fixes and rounded corners.) At time of release, this build delivered 19387 solutions to 1988 unique users. An exciting weekend for me, and I'm thrilled by this result after a year and a half of development.

That said, there is so so so much to do.

Of all the feedback, 'grasshopper on my phone' was the loudest and most frequent. Which I should have seen coming, developing for the web. Mobile was an after-thought, though.

Second, but more expected: performance. Since this was a learning exercise, I rolled all of the graph management code myself. And I learned that dumping everything in one top-level react context is not the way to solve this problem. In five years it may be fun to look back on this and actually identify the (I'm assuming) dozens of memory leaks that cause performance to decrease as the session continues. Much better this time than 0.4.1, not even close to good enough.

Somewhat related: the database usage needs to be reconsidered from the ground-up. Every solution saved every parameter's values to a unique redis key. I got lucky that no one worked too long on large graphs, because there was no cleanup happening and I had to manually flush the database several times over the weekend. The 'fix' in this release is to delete the solution when fetched. But now the graph viewer and the scene viewer, if both open, are racing to get results first.

Because of the reception, I'll be leaving this release online while I work on the next draft. It won't be a total rewrite. There's plenty worth preserving (bee-queue x rhino.compute brushed off traffic spikes like nothing). But all the feedback has shifted priorities and I want to let people keep messing with it.

Looking forward to a silky-smooth and mobile-first 0.6 version. Because then I get to jockey with the social features.

0.4.1 - Proof of Concept

23 Jan 02:09
Compare
Choose a tag to compare
Pre-release

End of proof of concept phase for project. Successfully:

  • Provides an svg interface for constructing a .json representation of the grasshopper graph
  • Dispatches the graph to a custom rhino compute server (attached) and returns results with path topology
  • Uses rhino3dm.js to consume and translate point or mesh geometry to a three.js representation

That said, performance is horrible and ux is not even a consideration. Taking a beat to learn from the limits of the setup and plan for a substantially improved (usable) 0.5 version.