Hacker News new | past | comments | ask | show | jobs | submit login
Explorabl.es (explorabl.es)
894 points by rickdeveloper 48 days ago | hide | past | web | favorite | 36 comments

Hah, was planning on linking to Nicky Case[0], but of course that's exactly who's behind this! :D

Very exciting project. We're absolutely leaving "leaving money on the table" by not leveraging the full power of the brain for education and reasoning about complex systems. See also: Bret Victor's "Ladder of Abstraction" [1], and Kevin Simler's "Going Critical" [2].

[0] https://ncase.me/

[1] http://worrydream.com/LadderOfAbstraction/

[2] https://meltingasphalt.com/going-critical/

Hadn’t heard of Case yet, but Bret Victor is an absolute visionary. His talks “Media for Thinking the Unthinkable” [1] and “The Humane Representation of Thought” [2] are eye-openers!

[1] https://vimeo.com/67076984

[2] https://vimeo.com/115154289

Nicky Case does incredible work. She should be a poster child for Patreon, through which I believe she makes most of her living. https://www.patreon.com/ncase

Thank you for highlighting these examples, they've been very insigntful.

What would make explorables really take off is a killer framework to make building them easier, ala Ruby on Rails.

I know ncase has built some frameworks and I applaud his work, but this space just needs a lot more investment.

Here's what I think the killer framework will do really, really well: (Note this is VERY rough, it comes from spending 20 minutes trying to create an explorable a long time ago and realizing that the tooling just isn't right)

- 1) Turn the act of coding a model into mostly verbal reasoning by having a great framework language / API. Rails actually did this, turning the entire building a website into composing english. It greatly reduced the distance between the concepts / app that you were building and how you went about building it - i.e. Model has_many :users

- 2) A standardized convention on inputs, outputs, relationships, defaults, and time (step functions).

- 2b) A standardized convention of defining one unit, populations and groups of units within populations

- 3) Automated scaffolding to display raw data, with add-on libraries to easily scaffold formatted or visual data.

- 3b) Automated scaffold to visualize a unit, a population, groups within populations, and units within groups (a scaffold of a population is like table rows)

- 3c) Language / api should also make it dead simple and intuitive to control converting from numerical data to textual data. i.e. if you are modeling stress, what does 60 points in stress mean?

I think something inspired by ActiveModel (my Rails bias is showing) would be a great way to define the above since defining a strong way to define your data is also how you would get automatic scaffolding language and high level functions on top of it.

- 4) A dead simple way to display and embed models anywhere. 1 line of javascript or a 1 line import and you can plug it into jekyll, hugo, (any static site generator, really)

- 5) A killer tutorial.

We're working on this with https://idyll-lang.org/, it does some of the things you mention already (standard conventions for how to do common tasks, standard set of widgets, handles loading data, extensible plugin system, etc).

But it is a big undertaking and there is still a lot of work to do. If anyone on HN wants to contribute or give feedback you can reach me at mconlen at cs dot washington dot edu.

Funny that your #1 requirement, for me, would be turning coding into mostly visual reasoning. Different skillsets, I suppose.

I think of code as laying out the results of a program execution (in terms of changing GUIs or lists of transformed data), and then building up an abstraction that captures all the instances.

So, a visual tool that let me paint examples, and build (named) abstractions that group them, would be my ideal development environment. Spreadsheets are the oldest somewhat supporting this desired workflow, and things like Brett Victor's Ladder of Abstraction or tools like http://aprt.us/ are the next level, but still fall short.

I haven't used it myself, but I wonder if Idyll comes close? https://idyll-lang.org/

unfortunately, not really. The language you have to speak is still in variables, buttons and code.

I'd love to be able to write in a way that feels more like documenting models rather than writing code. Admittedly this is a really spoiled point of view since ideas are cheap but execution is hard.

A quick example is as follows:

Persons have stress level from 0-100, start with random stress, and belong in the following environment conditions:

Normal: Stress + 0 / year

Low Income: Stress + 5 / year

High Income: Stress - 5 / year

Change functions:

Every year, 0-3% persons change from low income to normal income

0-1% of persons change from normal income to high income

Population has 100 persons


stress level > 50 is "high risk of heart attack"

stress level < 20 is "low risk of heart attack"

This kind of definition should be enough to chart out # of people in the high risk group over a period time.

What I imagine is writing more or less the above as psuedocode and then a framework to automatically scaffold a basic data view and controls for time / data manipulation.

edit i took a further look at idyll, and this language can probably be built on top of idyll.

The notion that only serious work can educate someone is something I hope future educators can dispel and build engaging platforms (edutainment).

I learned about game theory, communication, teamwork, strategy and business from gaming and sports. These topics would have been quite dry to learn in a sterile educational setting. In the same vein, I hope we move to a more experiment/physical based learning of science and technology over rote learning, since a lot of learners hugely benefit from that.

I commend you on what you're working towards!

> The notion that only serious work can educate someone is something I hope future educators can dispel

This sounds super weird to me. I thought rote-learning was totally out of fashion, and now under-practiced because everyone thinks that learning should always be fun.

I don't know whether this is regional variation, age differences or political differences. And I there's probably some middle-ground: maybe you have to memorise your times-tables, but maybe it doesn't need to be boring.

It's a tough balance. My partner teaches grade 2. They focus on play and exploratory based learning. Parents are furious that their kids aren't instead memorizing times-tables.

There is evidence that play and exploratory learning are not actually a good way to teach


Gaming and sports can be serious, and taking it seriously leads to big gains in learning.

I think you mean "formal" or "prim" more than "serious".

I also work in this space, producing interactive content for physics education. I have an evolving framework for visualizing vector fields, such as electric fields. Example content includes an explanation of Gauss’s law http://www.vizitsolutions.com/portfolio/gausslaw/, where the graphs, texts, and equations are interactive, and changes to any of them are reflected in all of them.

A truly general framework will be tough, because of the different nature of different types of content. For example, even within physics I am working on a quantum simulation, where the simulation and interactions with it will be very different from the electric field examples. Perhaps for some very general interactions, eventually… I will definitely be evolving in that direction – for example making the electric field models easier to edit.

I have advocated this approach at a number of conferences, but the reception from companies has been lukewarm at best. They are able to sell content with limited interactivity, and the cost for this is comparatively high.

All of this content is founded in correctness, and in research proven instructional design principles, which do include gamification.

BTW, all of the code is openly licensed, and I encourage its reuse and solicit feedback on functionality and future directions.

>A truly general framework will be tough, because of the different nature of different types of content.

I've been thinking for years what it would take to create a general framework like that, and I think we're in the middle of a language revolution like the one in the 80's, that will end-up creating such new system; all the pieces are in place, it just need one project to integrate the best parts and take off.

My ideal solution would integrate:

- the programming model of a spreadsheet (reactive functional programming), useful for building models;

- interactive graphics like those in explorable explanations, integrated with the data models stored in the spreadsheet;

- a good templating library with a visual designer and auto-generated markup, for building visual components based on the models;

- and an outliner storage model with "external reference" transcluded nodes, to build and evolve projects from the tool itself, without an external IDE.

Several companies are very close, but none of them include all these pieces, as some of them come from programming language design and others from user interaction; right now, only a very senior interdisciplinary team would know how to integrate all them in a single unified approach.

This explorable for spaced repetition learning is awesome:


I can already see explorables is one of the very rare content sites that I will bookmark and go back to.

3Blue1Brown is among the supporters on Patreon which I think is another big recognition for the work of the creator(s).


Not as explorable per se, but here’s an interactive explanation I made for my favorite (and widely useful) method in statistics:


Great explanation! I'm now tempted to try this out myself for some experiments. I wish my statistics book in college used these kind of interactive explanations.

There's so much content there. But, this explanation of particles is pretty great:


Love the language here. Even see this as a meaningful way to explain concepts to children.

> Lion cubs play-fight to learn social skills. Rats play to learn emotional skills. Monkeys play to learn cognitive skills. And yet, in the last century, we humans have convinced ourselves that play is useless, and learning is supposed to be boring.

What a load of rubbish. Human children play to learn just like our animal cousins. But after language acquisition we have a far more efficient tool at our disposal. Am I supposed to learn that electricity is dangerous by playing with a car battery?

That's not to say that this isn't good and adults can't learn some things more effectively by interaction, but, please, let's not play down the importance of language when it comes to adult learning.

I haven't put any effort into adding explanations of anything, but looking at the one titled "Basic Beats" reminded me of this little thing I built a while back for playing around with rhythms in a similar circular way: https://michaelmior.github.io/rhythm-wheel/

Very cool tool! Thanks a lot for linking it. I wonder what sort of sequencer you would build.

It came about after seeing a few YouTube videos based on the book "The Geometry of Musical Rhythm." So the idea definitely wasn't mine but I'm a hobby drummer and the idea really intrigued me.

I am waiting for the day when you can learn math kinesthetically like skateboarding or some other full-body activity. The video I linked below embodies what I'm thinking. This could easily be turned into a VR game where the user "is" the math. https://youtu.be/ovLbCvq7FNA?t=849

I am the only one who just lost 5 minutes playing with the header?

We've also got lots of these over at treena.org. We are planning o make explorable lessons. Take a look at https://treena.org/lesson/parametric-functions and try playing with all of the obvious things.

Anyone remembers similar in style animation/explorable that was about forming of the groups? It talked among other things how groups become stronger by turning against outsiders/other groups

I love this.

Going through the Trig example, I would have given anything for this in high school. For a topic that I currently have to use on occasion and feel inadequately informed about, I can't wait to get to the Fourier transforms module.

I read the fireflies tutorial and still don't understand how they sync their clocks. What does moving a second forward on the timer do?

Take an example with only two fireflies. Their clocks won't be at the same point at first, of course.

So one lights up... and the instinct is for the other firefly to try and light up at the same time. How?

Since it was going to light up later than the first fly, it shortens its cycle a little bit and lights up a little sooner.

Repeat that cycle a few times and soon enough, the second fly has 'caught up' and is flashing when the first one does.

Add more fireflies, and its just more of the same. When a nearby firefly lights up, the ones close by speed up a little. Eventually, they all converge on the 'fastest' time.

May just be me, but I am getting no audio in the music item when using iOS.

Looks interesting though.

Same on FF on desktop, I think HN might have brought the streaming server to it's knees.

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