I think the key reason why this link has been posted to HN now is because p5js has a new website? Back in 2023 the Sovereign Tech Fund gave the p5js folks a €450k grant[1] "to enhance p5.js Documentation organization & accessibility" and this seems to be some of the results of that investment.
In my view, it seems to be paying off - the site feels a lot easier to navigate and search, with more useful information. For example, compare the old[2] and new[3][4] versions of how to use p5js editor/canvases with a screen reader.
Recently did a digital ad entirely in processing and then ported it to p5js. In my experience with it…
* processing is still much easier to work, even though p5js seems to catch-up. I did work with it like 10 years ago and it was already very easy
* it was very easy to spot bugs or missing implementation in p5js
* While an almost identical port was possible, it’s not 1:1 and takes learning some APIs
* p5js is not even close to
d3 or three.js in terms of performance
* tbh it seems to me lot easier to animate in web with modern css3 and some helper libs, than use p5js. In fact I would see a very straight pipeline from free vector apps into css with very little shading without p5js. Which makes me wonder how is p5js relevant in 2024, apart from educational tool.
* For things which involve pixel level compute there is no easy way to use the GPU efficiently
For me this whole 450k funding is quite bizarre, and in particular the fact it got directed to a not so popular framework.
Regarding performance, I once had an experience that I never bothered to look into. I made a cool little interactive simulation in the p5js sandbox; ran flawlessly. I then copy pasted it into a codesandbox, and it was choppy and abysmal. I checked the version numbers and how it was being included and couldn’t see anything obvious. Maybe codesandbox has some isolation that is taxing? Like I said, never looked into it.
I think this is missing them point of p5js. Khan Academy has brilliant kids courses on p5. A bright first grader can learn it.
P5 is not designed to solve the same problem as D3. It's for creative coding. It's what kids did on Logo, BASIC, or an a graphing calculator. For that, is brilliant.
It's for a weekend playing making digital art.
It's for teaching math and physics.
It's not something anyone could, would, or should use for any production code. You can't do a11y, i18n, responsiveness, or a million other annoyances that come with real-world coding. It's not a work framework.
It's there for FUN.
(And if you have kids and the to help them out, it's absolutely better than Scratch; marginally slower to get going, but no ceiling)
These are some great insights! Thanks for summarizing them. It will save me a lot of time in the future. I would love to see this digital ad! Is it public?
the p5js part was more challenging, as I had to only draw every 5th pixel every frame, in order to get some decent performance. but since this is a transition, you can't mention it.
the whole loop is not much, but took a good 6 hours to get together. then another 4-5 go rewrite it for web.
but if you mean beginners, why not stick with processing?
BESIDES - Processing is much more mature and more usable with electronics. Really the whole point of p5js and this grant is beyond comprehension for me.
I'm not a fan of the layout on large screens though. The linked tutorial [1] is fixed width left-aligned paragraphs, which makes right half of my display empty. On the other hand, other elements like on the reference overview [2] are stretched in four columns across the whole display which looks ok when the browser window is half my displays width but is hard to read when the window is maximized.
We also featured it quite prominently in yesterday's JavaScript Weekly. With ~175k subscribers, things we include often make it to HN front page hours later. It's next to impossible to actually prove the connection.. but it's just part of the fun of how links spread around the ecosystem for me :-)
ChatGPT knows P5.js pretty well so you can ask "Write a P5 program that plots a sine wave and let's me control phase with a slider." and it does it.
I used P5.js with ChatGPT to make a design tool that balances 5 masses on a circumference for creating a rotary magnetic bow with reduced harmonic locking.
I made an album for falling asleep to that you can find on various streaming music services. Just search "Autonomous Drone Lullabies" by Stefan Powell. It's an album that was made autonomously using an algorithm in Pure Data. It's also here: https://stefanpowell.bandcamp.com/album/autonomous-drone-lul...
Reminds me of Electronicos Fantasticos (Japan) who re-purposes old items (TV's old fans, barcode scanners etc...) and makes electronic music. Super interesting stuff!
This is a really pretty website! I'm surprised that they decided to take out the part in the About section mentioning that this is a continuation of the ideas from Processing - I guess maybe now P5.js is more popular than processing is/was?
> I'm surprised that they decided to take out the part in the About section mentioning that this is a continuation of the ideas from Processing
There was a schism between Ben Fry and the Processing Foundation, so I would reckon it's political. One of his chief complaints was how the p5.js project had taken over the Processing Foundation and minimized Processing development.
Some more context: Ben Fry posted a thread on X in 10/2023[1] where he announced and explained his decision to resign from the Processing Foundation.
Seems like Processing got left out from expenses despite their large budget, running against their original reason to start the foundation: “I was soon shocked to learn that the Foundation spent nearly $800,000 last year. $0 of that went to Processing 4. This year, the proposed Foundation budget is around $1.2 million. But for Processing, there is budget for just two people: one developer, one community lead. You know what that sounds like? The reason we started a Foundation in the first place. Two people is not enough for any of the Processing software projects (i.e. anything that lives at a http://processing.org domain.)”
I wonder if most of the money went into p5 or the new website or whatever, but it made me a bit sad to see that the original Processing got left behind. It is what got me into programming and there are still lots of good reasons to choose it over p5. I can, however, understand if they prioritised p5 due to the rise of web apps and mobile devices, sharability, JS being everywhere and so on. Maybe it’s nostalgia, but it just doesn’t bring me as much joy as the original.
I really loved proce55ing as a mini language. I think it made a ton of sense in a world where it was fairly difficult to manipulate pixels inside something like a canvas inside a webpage if you wanted to make an interesting visual experiment. And it was also very readable and accessible to artists with little programming experience.
I think one of the hardest things for me as a programmer is getting through all the boilerplate to put the first pixel on the screen and p5.js solves that pretty well, letting me focus on more on the "creative" aspect of "creative coding".
I probably wouldn't use p5.js for Big Boy Software Development, but whenever I want to sketch, it's the first digital tool I reach for.
Processing (the original Java one) has inspired many libraries.
These days it is possible to find (more-or-less) compatible libraries for most popular language.
The main inspiration was Daniel Shiffman's YouTube channel "The Coding Train".
He has a knack for picking visual interesting problems/algorithms and his enthusiasm is unmatched.
I've used P5.js in a ton of my professional work although would suggest anyone interested in using it today know what happened with one of the founders of the foundation and creator of the original Processing language P5 derived from.
This explains a lot. In an era with so many performant graphics apis I didn't understand why processing/p5 felt so stuck, with no major changes in years. What a sad place to end up.
I adore P5js -- the community OpenProcessing[1] has thousands of wonderful artworks that are easily viewed, cloned, and modified. I'm mostly a Python guy but making small changes to P5js programs has helped me learn Javascript.
Is there a JavaScript library that does animation using timelines, key frames, etc? It seems like p5js and several other animation libraries focus on things like partial simulations or other animations driven by mathematical formulas rather than animations done by placing objects on timelines and transforming them.
GSAP[1] is pretty much the industry standard, I think. You have to pay for some of its more advanced features.
There's also Anime.js[2] and Scene.js[3] - but I've never played with them so can't vouch for their usefulness. Both have had code updates in the past year.
(Self-promotion time) I had a lot of fun adding an animation/tween system to my canvas library[4] a while back. Building out the code to run such animations is one thing; making it performant is a very different challenge![5]
The p5.js is a really awesome library because of their increased functionality and ease of use for artistic applications.
Last year, I made a p5.js and Ruby on Rails powered application [1] [2] for my Bachelor's degree that allowed the user to create generative art directly from the user interface, and the experience with that tool was straightforward.
Strange but true: p5 was a major component in the recent popularization of generative art — a branch of computer art that relies on computer generated visuals based on random seeds.
p5 was a core dependency for Art Blocks, a popular Ethereum art platform that gained popularity due to its asset class of entirely generative artworks.
I started learning how to program using Processing about 16 years ago, so P5 and other similar libraries always have a soft spot in my heart. It’s so gratifying for a beginner to write some code and see some shapes move around the screen.
Nice new website! Great project, I've been using it since the pro55esing java applet days. I got my 10 year old niece interested in programming by showing her some quick openprocessing code.
I tried the first 5 on my 15 pro max. First one didn’t work at all. They all stopped working if I pressed “play” on the example, giving the impression they’re broken.
In my view, it seems to be paying off - the site feels a lot easier to navigate and search, with more useful information. For example, compare the old[2] and new[3][4] versions of how to use p5js editor/canvases with a screen reader.
[1] - STF announcement/progress - https://p5js.org/events/stf-2024/
[2] - Using p5 with a screen reader (old version) - https://archive.p5js.org/learn/p5-screen-reader.html
[3] - How to Use the p5.js Web Editor with a Screen Reader (new) - https://p5js.org/tutorials/p5js-with-screen-reader/
[4] - Writing Accessible Canvas Descriptions (new) - https://p5js.org/tutorials/writing-accessible-canvas-descrip...