return to table of content

The Nature of Code (2nd Edition)

sweetheart
8 replies
1d2h

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! :)

alabhyajindal
6 replies
1d

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.

sweetheart
0 replies
22h26m

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

simulo
0 replies
23h24m

I guess mainly recreation and, particularly, teaching.

relaxing
0 replies
22h19m

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

ralusek
0 replies
8h1m

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

ingenieros
0 replies
23h2m

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/

doctorhandshake
0 replies
21h27m

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.

simulo
0 replies
23h56m

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.

j0hnyl
3 replies
1d

What is new in the 2nd edition?

shiffman
1 replies
3h54m

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.

j0hnyl
0 replies
2h21m

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!

philomathdan
0 replies
23h20m

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

hbbio
2 replies
16h51m

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.

ralusek
0 replies
8h4m

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.

shiffman
1 replies
3h55m

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.

nnnnico
0 replies
52m

Thanks for your work Daniel!

pcarolan
1 replies
4h11m

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.

AndrewDavis
0 replies
3h47m

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.

benrutter
1 replies
10h2m

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)

shiffman
0 replies
3h52m

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.

BigAlan09
1 replies
1d3h

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!

jasonb05
0 replies
21h21m

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

Benedicht
1 replies
7h25m

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

nindalf
0 replies
7h16m

Delved, you say?

who-shot-jr
0 replies
22h50m

Daniel Shiffman is a legend! love his teaching style.

surajama
0 replies
22h5m

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.

solarized
0 replies
16h30m

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

rramadass
0 replies
5h45m

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

rancevent
0 replies
23h6m

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.

raincole
0 replies
18h35m

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.

liendolucas
0 replies
1d1h

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.

guiambros
0 replies
13h50m

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

deigan
0 replies
1d

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

atum47
0 replies
20h42m

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!

Nekorosu
0 replies
1d1h

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