darius / math-toys

HTML5 canvas widgets for exploring complex arithmetic
GNU General Public License v3.0
8 stars 6 forks source link

Brainstorm directions to take this thing #3

Open darius opened 8 years ago

darius commented 8 years ago

I've been feeling unsure where to go with this project. The basic complex-add-and-multiply widget seems like a good idea -- it makes those operations more concrete than I've seen them anywhere else. It needs lots of UX refinement (and a real explanation or tutorial), and maybe should use SVG instead of canvas to ease that work (once you know SVG), but there's a more basic question of what this is for.

rulers.html and draft.html start to take it in one direction: an explorable explanation about numbers as different kinds of things that all satisfy a core set of algebraic laws. Something like that should be written, though I'm not the best person for it. (http://www.feynmanlectures.caltech.edu/I_22.html is really great, for example, but it's static text at a college level.)

The remaining code, mainly vectorfield.html, is for helping me to understand complex functions. There's been some inspiring work like Bret Victor's and the essays at http://cognitivemedium.com/ and it made me think like, instead of hitting a complex analysis textbook, what if I try to figure some of it out for myself, making up for not being a Gauss or a Cauchy by having these great computer tools to help me think about math? Concretely, can I get to grips with the fundamental theorem of algebra without reading someone's solution first? I'm having trouble sticking to this -- it's very different from a software engineering problem like writing a bytecode compiler.

Instead of an active essay / explorable explanation, how about a playground? Like https://en.wikipedia.org/wiki/Sketchpad but representing points as complex numbers, and needing fewer basic types of constraints because add/multiply/equality can express many of them. http://man.cat-v.org/unix_8th/1/ideal is another example of constraint-based graphics founded on complex numbers. I'm guessing a Sketchpad-style system could make a fun and rich environment that naturally leads to learning algebra/geometry/trig with complex numbers, but starting from capabilities that people want to use regardless of any initial interest in math. I guess the first thing to try here is to actually code up a constraint solver and use it in place of the current spreadsheet-like execution model.

(Another inspiration, which hasn't influenced anything here yet though I would like it to: https://en.wikipedia.org/wiki/ToonTalk -- this could make for a richer programming capability than Sketchpad's.)

I'd love to hear other ideas or criticism.

rileyjshaw commented 8 years ago

Hi! Sorry for the delay getting back to you on this @darius.

When I started playing with these, my immediate thought was some sort of explorable. Makes sense, since it sounds like you had that in mind while you were working on it.

Something like that should be written, though I'm not the best person for it.

Why aren't you the best person for it? Seems like you:

...what else is there? 😄

I totally agree that something like this should be written. Specifically, I like how similar the interactions around rulers.html and sheet.html feel. draft.md is a good start, keep pulling at that thread!


A sandbox / playground for exploring and understanding complex functions sounds really interesting. I think some introductory materials would be useful to explan what is being explored. Simulating the world (in emoji) and the accompanying prototype represent two fidelities of explanation. Even the prototype does a pretty good job of getting the reader into it, I think!

Interface-wise, something constrained & immediate like Demo 4—Interacting with behavior from Media for Thinking the Unthinkable would be 💯 🙌 👍

Mojolo by @MaxBittker is one of my favorite playgrounds for exploring functions. It's open source, too!


Something tricky about graph interactions on desktop computers is that drawing can feel a lot better than clicking a mouse. I'd love to see touch support in sheet.html. Alternatively, if the complex playground is designed for the desktop, is there a way to couple the input mechanism to the medium a bit better? Sliders, text inputs for formulae... I'm not really sure what this would look like.

Great stuff! Excited to see where you take this :)

/ramble

darius commented 8 years ago

Thanks for the encouragement! And the pointers. I did get back to this for a while, bringing in constraint solving, and, uh, I'll come back to it again.

About touch support: it was there from the start :) only I stopped trying to keep it running on my first-gen iPad, the only large-enough tablet I have to test on. Conceivably it still works on newer tablets.

rileyjshaw commented 8 years ago

Ah, cool! 👍