Hacker News new | past | comments | ask | show | jobs | submit login
The Nature of Code (2nd Edition) (natureofcode.com)
463 points by skilled 4 months ago | hide | past | favorite | 52 comments



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.

I’ve pre-ordered the new book on Amazon!


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.


Thank you so much, Dan! I enjoyed the first edition and your Coding Train videos.

Fantastic work and way of teaching.


Thanks for your work Daniel!


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.

[0]: https://twitter.com/shiffman/status/1781689870466916655

[1]: https://github.com/nature-of-code/noc-book-2

[2]: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...


A formatted list of previouslies

https://news.ycombinator.com/item?id=35703711


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!


Love it!

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].

Agreed, "nature of code" looks like fun!

[1]: https://web.archive.org/web/20080624004102/http://www.ict.sw...

[2]: https://github.com/Jason2Brownlee/HumanDebrisArchive?tab=rea...


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.


Technical Artist would be the primary role. ShaderToy and other such resources for shader programming. Extremely creative field.


Designing and building effective data visualizations is a pretty large practical application.


I use it for making art! Specifically static, 2D “paintings”


I guess mainly recreation and, particularly, teaching.


Loved the first edition of this book and am also a big fan of the youtube channel of the author, the Coding Train.

https://www.youtube.com/watch?v=p7IGZTjC008


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!


Daniel Shiffman is a legend! love his teaching style.


Love coding train YouTube channel!

This guy is funny, knowledgeable and not full of himself (unlike others in our industry)

Learned a ton from Daniel when I was starting out


Glad to see it's done.

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:

https://mikedeigan.com/the-cursor/posts/2022/skyrmsian-signa...


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.

[1] https://www.kickstarter.com/projects/shiffman/the-nature-of-...


The second edition of one of the best books at the crossroads of art-making and coding!


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.

Wikipedia : https://en.wikipedia.org/wiki/Braitenberg_vehicle

Some Videos:

https://www.youtube.com/watch?v=DFXZc54_4GY

https://www.youtube.com/watch?v=A-fxij3zM7g


I adore this book. A second edition?! Boy howdy is that exciting. Thanks so much Daniel!


HN thread never fails to blow my mind. Delightful books to showing programming and science as an art !


Loved the first edition, it delved into a lot of interesting topics in an easy to understand way.


Delved, you say?


Super interesting topic and awesome book overall!

I may be nitpicking, but any teaching material with JavaScript poor coding practices can hurt both humans and LLMs.

1. When you don't reassign a variable it's a `const`

2. for (let i = 0; i < total; i++) { randomCounts[i] = 0; } is `new Array(total).fill(0)`

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?


That's not a good comparison imho.

Programming languages are formal. Otherwise you're talking about programming prompts for a LLM. And the resulting program may vary.



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.


Amazing! Congrats on finishing the second edition and thanks for so many great resources.


I read this book when I was in high school and it played a major role in shaping my interests in programming and math. Highly recommend it.


Can someone share here the pdf of the 2ed of the book. Thanks, I don't know how. To make a PDF from GitHub by code



requires username and password...


What is new in the 2nd edition?


Just glancing through it, it looks like the 2nd edition uses p5.js instead of Processing, and there's an additional chapter entitled "Neuroevolution."


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!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: