Just wanted to pop in and say hi here! Delighted to discover this thread, it's been quite the adventure trying to get this new version of the book finished. Happy to answer any questions about the book here! Thanks for the support and kind feedback.
Thank you, Dan, for everything you’ve done for the creative coding community and for coding education in general!
I teach creative coding to kids at a local library, and when the parents ask me what else their kids can do to learn to code, I always tell them to check out your videos on YouTube.
You’re also a celebrity in my household as I have your videos running on the TV in the background while I prepare the kids’ breakfasts on Sunday morning.
Thanks for that book, and congratulations on the second edition. I'm a backer (via Kickstarter - the first project that I supported IIRC) of the original version, and I greatly enjoyed reading that and tinkering with the algorithms.
I hope this version goes as well as the first edition! You deserve that.
Thank you so much for your content over the years. It is genuinely a feel good experience but also full of substance. It is genuinely enjoyable and the topics are really fun.
The youtube videos are amazing and also love the book and its presentation! Thank you for putting out such genuinely feel good and positive content.
As per this tweet[0], the 2nd edition was finished on April 20th, 2024. There's a GitHub repo[1], and there have been a few HN discussions over the years[2] (dating back to 2014 (book was released in 2012)), but none that had discussion above ~30 comments.
My final year dissertation focused on Genetic Algorithms, where I implemented an ecosystem of herbivores, carnivores, and omnivores (referred to as "blobs," similar to those described in this book). The title of the paper was "Simulating Adaptation by Natural Selection Using Genetic Algorithms." It was a really fun project, and I learned a great deal from it. This book would have been handy at the time, as the only resources I had were Craig Reynolds's Boids. I conducted my research and simulation back in 2009. One day, I will attempt the simulation again, utilizing the knowledge from this book, particularly the neural networks to give the blobs a "brain," and the experience I have gained since then. You've got yourself a buyer!
I built a similar alife simulation but as a Quake 2 mod using the monsters as the agents and plants and stuff with neural nets and genetic algorithms. My piece was titled "Ecosystem: Constructing a simple self-perpetuating society of adaptable agents" [1].
This was 2003, not for school but for fun. I submitted it for an ai writing comp on ai-depot.com but the comp failed for lack of entries. I have some pics on a repo backup of the project [2].
The challenges videos from The Coding Train are super entertaining to watch. It all feels like a joke, having Daniel Shiffman performing all sorts of hilarius acts and explanations. By the end of a video you have not only laughed all along but most importantly you have learnt something interesting in a simple and entertaining way. I would love to purchase the CHOO-CHOO flute that Mr. Shiffman sounds from time to time (if engraved with the coding train logo, better) but unfortunately is not available for purchase in their online store.
The first edition of this book played such a huge role in me learning to program, and thus set the stage for (likely) the rest of my life. Daniel Shiffman has probably had that influence on many, many, many people. To this day, I recommend p5.js as a starting place for learning programming, and then picking up The Nature of Code once all the basics make sense and the newly-minted programmer is ready for some bigger challenges.
Very excited to own a physical copy of this new edition to always warmly look back on! :)
I read his "learning processing" many years ago. It was the book that made programming made sense to me. The explanations are excellent, the outcomes interesting and it helped me to see why object orientation makes sense after fruitless attempts of understanding it using examples of different types of cars that print "wrooom wroom" to the terminal.
Any thoughts on what role creative coding plays in the overall software engineering field? Is it done for recreation and art? Do people use it to create and sell products as well?
I love watching and working through The Coding Train videos! One reason why I haven't gone deep into creative coding is I don't know where I'll use it.
Google has a Creative Lab which employs a handful of creative coders who primarily work with emerging tech on experimental projects. They also offer a one year paid fellowship to young grads to join their labs in either NY or London: https://www.creativelab5.com/
Creative coding is everywhere these days. From the parametric architecture of Zaha Hadid and MAD architects to procedurally generated furniture designs and jewelry. https://n-e-r-v-o-u-s.com/projects/
While I don’t use the term, it’s applicable to what I do as a career. I like to say I make installations, objects, and experiences with complex inner lives. Sometimes I add the word ‘digital’ in there. Many who do what I do describe themselves as ‘creative technologists’ because code is but one part alongside experience design, art direction, fabrication, systems design, and electrical engineering.
The first edition is one of my favorite programming books. I'm not a big fan of youtube coding tutorials, and glad to see the author is still updating the bood instead of devoting to the youtube channel.
Daniel Shiffman taught me to code for the first time in a way that totally shifted the way I thought about coding from utilitarian to fun and creative. I wonder how many lives he's had this impact on. Good on you sir.
I remember discovering his Youtube channel, it was either during my first year of University and i'd watch them as much for entertainment as education. Every so often i'd find myself following along.
Between semesters I watched some of his search algorithm videos, including his two part A* videos, and recreated it. When semester started I took a classical AI course and the first assignment was search algorithms. And my goodness was it helpful.
The first edition was absolutely critical in helping me understand how to program anything more than simple scripts. I got hooked into the physics simulation portion and created a pretty fun Asteroids-inspired game.
Although OOP is going out of style, I think learning it is super important to understand how you can use layers of abstraction to build increasingly complex programs.
I've learned so much from watching Daniel's videos on YouTube. They are also very entertaining. Always featuring a cool algorithm that you usually don't know exists. Great work!
As a philosopher with only a bit of programming background (and previously no javascript), this was very helpful for getting some simulations online in a format easy for my students and others to play around with:
I'm a big fan of Dan Shiffman, and got the first Nature of Code through his Kickstarter project in 2012 [1].
Even if you are an advanced programmer, there's something magical about Dan's style and his ability to explain concepts in a simple way. Also perfect to get kids started in programming.
The book is available for free online, but if you can afford, it's a great addition to your (physical) bookshelf.
I am forever indebted to this book for pointing me to Valentino Braitenberg's Vehicles: Experiments in Synthetic Psychology (https://mitpress.mit.edu/9780262521123/vehicles/) where very simple autonomous sensor/actuator machines combine to exhibit complex behaviour which maybe mistaken for "Intelligence". Makes you really think abut Complexity/Intelligence/Emergent Behaviour/etc.
Or, OR, maybe, not every bit of code needs to match all the common good practices and standards. I bet you don't write formally or in Elizabethan English all the time. Context matters in the form of common language. Why should it be any different with code? Just because LLMs can pick those practices up?
I don’t get this argument. const means you can’t reassign the variable, that’s it. If you don’t plan on reassigning the variable, use const. In the rare places that you don’t use const, you’re telling me that you reassign the variable somewhere.
I don’t understand why people need const to be something it’s not. The fact that you can still mutate objects is because in js, an object assigned to a variable is best thought of as a pointer to a value in the heap. const means the variable won’t reassign the reference, Object.freeze means the referenced data can’t change. Both useful, both different use cases; needn’t be conflated.
Such a great book- really happy to see it on the front page!
The book website shows a beautiful hardback copy of the book, is this real? Are there plans to do a printrun? (I can't find anything on the website mentioning it aside from the picture)
The book is going to have a print run and is available for pre-order right now! It's being published by No Starch Press. The hardcover, however, is a mock-up, it will be a flexi-bound softcover.
Chapter 6 is also revamped (to use matter.js) and other chapters include expanded / revised examples and explanations. Chapter 10 was almost entirely re-written, Chapter 11 is new.
Thanks Dan! The first edition of your book sits on my desk for inspiration and has become a creative reference for me. It was actually a nice exercise to convert everything to p5js for me. Thanks for keeping us informed and entertained over the years!