XaiJu
ncase
ncase

patreon


Screenshot Saturday: Programming with Plain Words!

Don't worry, I'm still working on PEEPS.  But as I was working on it, I found out that making the simulation was the easy part -- it's actually letting the player "program" the simulation that was ridiculously hard.  In fact, all the project ideas I want to try out (as part of my "personal game jam") require some kind of accessible but powerful "programming" tool.  And as of writing, there are no good general solutions for that.*

So, I'm making that. <3

PROGRAMMING WITH PLAIN WORDS
(See sped-up GIF, or high-rez video on Twitter)

Note: The line-drawing turtle is just an example, not the point of this project! The point is to make this a standalone JavaScript library, so peeps can use it to do "programming with plain words" on simulations, systems, models, statistical analysis, Twitter bot-building, game level design, procedurally generated art and music... you name it!

Here's what I believe: Programming is NOT typing a bunch of arcane symbols into a computer.  Programming is the ability to make things that do things.  It's the power to affect a small part of your world, and this power should not be limited to nerds like me.  To paraphrase Georges Clemenceau, programming is too important to be left to the programmers.

Hence, this tool for programming with plain words.

I'll send you a playable prototype in a few weeks! In the meantime, let me know what you think, and how else you can see this tool being used!

<3,
~ Nicky Case

* Blockly is really cool -- not dissing it -- but my main problem with it is that it still "reads" like code. My goal with this tool is to make it feel like natural human language!

Screenshot Saturday: Programming with Plain Words!

Comments

Thanks Serena! I'm not sure if you saw my reply to Jim's reply (Patreon's commenting system is weird; only goes 1 level deep) but, there's something I should've actually said in my main post: the point of this project is NOT to teach programming! (Although it *can* be used for that) Think of, say, Microsoft Excel. Excel isn't meant to teach you how to crunch numbers by hand. But it lets *anyone* harness the power of automated number-crunching, whether it's for business, personal life, education, etc. That's the same lofty goal I have for this project: letting *anyone* harness the power of creating dynamic behavior, whether it's for education (which is what I'll use it for), or business (systems modeling with plain words?), or just good ol' personal fun (shown in the GIF above: a silly drawing turtle!)

Nicky Case

Thanks for your honest feedback, Aleks! I'm not sure if you saw my reply to Jim's reply, (Patreon has a weird commenting system that only goes one reply deep) but the point of this project IS *NOT* TO TEACH PROGRAMMING. I should've been clearer in the main post! The point is to let people create things (like systems, simulations, models, etc) *WITHOUT* needing to know how to code. Concrete example: In Evolution of Trust, I originally wanted people to be able to *create* their own Iterated Prisoner's Dilemma strategies. I couldn't before. With this tool, I'll be able to! Concrete Example #2: With LOOPY, I originally wanted people to create more complex behavior. I couldn't before. With this tool, I'll be able to! So don't worry, the main focus still is on understanding systems; but now, I want to go further, and let people make their *own* models of systems.

Nicky Case

Scratch is a similiar concept I would say- although less elegant. Kan Academy has this already built in for teaching (<a href="https://www.khanacademy.org/partner-content/pixar/simulation/hair-simulation-101/a/rigid-body-systems)," rel="nofollow noopener" target="_blank">https://www.khanacademy.org/partner-content/pixar/simulation/hair-simulation-101/a/rigid-body-systems),</a> but I imagine that the person who prepared the tutorial was a programmer. I really feel that having easier interfaces could help people that are not trained as programmers to create animations that explain for example projects and concepts in science and engineering in universities. Companies already pay programmers to animate their best products and discoveries, but it would be beautiful to freely use animation to teach without necessarily needing to go too much into the programming part.

Serena Casanova

Honestly, I think <a href="https://scratch.mit.edu" rel="nofollow noopener" target="_blank">https://scratch.mit.edu</a> already does all this and it does it well. It's used by teachers to teach intro programming. My recommendation is to continue your mission on focusing on how to teach systems thinking. Yes, programming is a way to do that. But I would really want you to retain the focus. There's also <a href="https://bubble.is" rel="nofollow noopener" target="_blank">https://bubble.is</a> on the commercial side.

Aleks Jakulin

Aw, thank you so much! <3 That's really meaningful to hear~

Nicky Case

Thanks so much, Nicky, for your long and thoughtful reply. I see what you're saying and agree; your Excel analogy is particularly apt and exciting. I'm a huge fan what you're doing and how -- it's equally emotionally captivating and cognitively transformative. I immediately shared Loopy with everyone on my usual 'holy crap!' list; now I spend time going through my contacts looking for the best pitch for each person. No joke.

jim tobias

Thanks for asking again! I wrote my own code for that, but it's kind of a mess & doesn't work on mobile, so in the meantime may I recommend Bret Victor's library, Tangle? "Explorable Explanations Made Easy": <a href="http://worrydream.com/Tangle/" rel="nofollow noopener" target="_blank">http://worrydream.com/Tangle/</a>

Nicky Case

thank you, this app provides exactly what I need. May I also ask, how did you implemented draggable range input? Is there any library for that?

Marek Baranowski

Thanks Jim! I appreciate the honest criticism, because yeah there's been zillions of attempts at easier programming the last 40 years, why would *this* one surpass all of those? And, I absolutely agree with everything you've said: 1) project-based learning -- *real*, meaningful projects based on the student's interest -- is one of the best ways to learn. And 2) that if you realize programming is just "giving instructions that an object/agent can follow to get to a certain goal", then people *already* do "programming", just not the kind where a computer tries to narrowly interpret words you write in a English/Machine pidgin language. However -- and I wish I was clearer in the main post about this -- the point of this project *is NOT to teach programming*, at least not "programming" as we currently do it. The point of this project is to build a more human-friendly interface ON TOP of programming, the same way Fortran was a more human-friendly interface on top of assembly code, or Excel was a more human-friendly interface on top of raw .csv files! (people can certainly *use* this tool to help teach programming, and I'd love it if people did that, but, it's still not the main point!) As you say, people ALREADY know (the basics of) how to give instructions, and this thing is intended to be a tool that lets people give those instructions to simulations, software, models, etc *WITHOUT* needing to getting into nitty-gritty code, the same way Excel lets me automatically figure out my budget without needing to dive into nitty-gritty .csv files. Blue sky pie-in-the-sky scenario, I see this tool being used not just by students, but professionals too! (Concrete example: designers using this tool so they can try out lots of different possibilities without running each and every one through the developer. Even as a dev/designer, I'd personally love it if I can make new things & behaviors *on the fly*, without re-compiling, making things at the speed of thought) And, final thought, since you brought up project-based learning, I also hope this tool will make project-based learning easier *outside of programming!* There are lots of subjects -- like epidemiology, ecology, physics, etc -- that aren't *about* programming as an end, but still need to use "programming" to create models & simulations. I don't think my tool will ever be as powerful as, say, NetLogo, but I hope it'll be a heck of a lot easier & more accessible. Final-final thought: one stumbling block I realized as I typed this -- this project actually has *two* different audiences, which is pretty confusing. This project will be a standalone JS library, or: a tool FOR PROGRAMMERS to create tools FOR NON-PROGRAMMERS. So, I need to become a lot clearer about "who" and "why" and "what" this thing is for. Or maybe not, if I believe it can be used in a lot of contexts! I have no idea! Anyway sorry for the wall of text, but you really did provoke a lot of thoughts in me, so, thank you! :)

Nicky Case

Yup! That's how I describe programming: like asking for wishes from one of those ironic genies that grants your wishes but only in the most literal way possible

Nicky Case

Thanks! I usually use LICEcap to record my GIFs: <a href="https://www.cockos.com/licecap/" rel="nofollow noopener" target="_blank">https://www.cockos.com/licecap/</a> (free/open source, available Windows & Mac)

Nicky Case

OK, I'll play curmudgeon because it's who I am. I see the charm of this, but not the social value so much. I think there are already several 'easy' ways into programming. They work, have large communities of users and teachers, and can be fun while opening up pathways into 'real' programming. But there are not enough good teachers (formal and otherwise) who understand why, when, and how to introduce these tools and concepts. So I think we need better teaching tools, and opportunities for teachers to absorb them and become confident. In my own practice I have found inquiry- or project-based learning to be a powerful model, including inquiring into the learner's context. This context may be "How does your favorite/mysterious product (TV remotes and game controllers are popular) work?" Teachers are familiar with these models. So instead of saying "You will now teach your students how to program", leadership can say "You can apply an inquiry model to programmed technology." Teachers with only rudimentary knowledge of how these gadgets work can show one opened up (ethical dissection! plus the "hardware and software love each other" lesson), run through a pseudo-code explanation, and even demonstrate how changing the code changes the outcome. I know, I know, this is not what you do -- and please don't stop! But as a practitioner for 40 years, I saw too many waves of simplified programming tools come into town with noisy, impossible promises, distracting parents, teachers, and administrators from what is actually an easier and more valuable curricular element: exploring and explaining how important slices of the world work, that learners *already* program them every day, and that they can easily learn to program them with greater power and effectiveness.

jim tobias

Fantiastic idea! BTW. how did you record this gif, what tool?

Marek Baranowski

Did I use that meme right?

LonMcGregor

Its cool and all... but can it program DOOM?

LonMcGregor

I love this idea! I have always maintained that programming is all about telling a computer what to do. Computers will do EXACTLY what you tell it to do. If you are precise with your instructions - then it will do what you expect. I am excited to see where you go with this.

Jeanne Kramer-Smyth


More Creators