Ideas for snap!

Snap! Feature Requests
I think snap should have 3D stuff and I understand Jens I know how hard snap is? But I think we should add a little bit of OpenGL even though that is in C# I think we should just try or you or whoever adds the features for snap I think snap should also have more blocks and some blocks for making compilers because snap! Was technically made for creating other programming languages right? Yeah but also snap uses morphic.js so I think you or anyone else should add or make it so you can have some morphic.js blocks and morphic was actually first made for the SELF programming language I just want this to be added please.

Where did you even come up with that assumption? That is very far from what snap is for. Snap is meant to introduce users to advanced programming concepts without bothering with text syntax. That's not all of it, but a major part.

You might want to check out beetle blocks

Of course this is also a lot easier said than done. The beetle blocks developers had to go through a lot to add 3D to snap, and it's not even still very good (partially because they stopped working on it...).

Snap is NOT ment to be 3d and I don’t even know how that would be made

That's actually kinda easy. Well, no it's not. Beetleblox puts three.js into the sourcecode and has primitives call it, (This isn't what it does at all, but simplification) and based on comments made at SnapCon23, Bernat is in the middle of a refactoring of Beetleblocks that may or may not make it easier to use. Don't quote me on that because I could be wrong. (Probably am)

You could theoretically do it in stock snap too, via javascript extensions. There was a discussion on this very forum about "snap!'s lack of speed" wherein Ken Kahn used Javascript extensions and the URL block to call tensor.js. Just replace that with Webgl/webgl2.js and get stuck from there...

But that heads into the weeds wherein are you learning snap! or javascript at that point and Jens has said many a time that he doesn't want this to become a javascript forum, and that's part of what he means.

I've "tried it" multiple times, well started, and then gotten blocked by my self inflicted inability to not read text code. I know what I want to do, but not the skill to actually DO it.

Even if it was easy this is not what snap is ment for. If you want to make 3d make a raycaster or pen renderer

but it's not in the scope of snap, so a separate modification would be much better.

I think it might be a good project for someone to try and write a set of 3D extension blocks.

Jen's is usually quite receptive to that method of expanding Snap!s abilities

Don't fight, gang.

There's no particular application of computers that Snap! isn't "for." I'm not interested in writing video games, for example, but I would never dream of saying you shouldn't write them. What Snap! is for is learning. In particular, it's for learning computer science. It's for learning abstraction, which is one of the central ideas of computer science. It's for learning data structures, as in a CS 2 class, such as how to implement a hash table and what they're good for. It's for learning lambda calculus, the theoretical core set of ideas that hold up programming languages. It's for learning what a Turing machine is. It's for learning what a cellular automaton is. It's for learning computer architecture; if you want to learn a low-level language, I'd rather you jump right down to machine language, preferably for a RISC machine like the one (probably) in your phone rather than the baroque Intel architecture that's (probably) in your computer. That'd teach you more than learning JavaScript, which is really just Snap! with a bad syntax. But I'm not even going to tell you not to learn JS. Learning is good. Learn how to break into other people's computers and you can get a job as a security consultant. (Try not to get arrested. Don't steal stuff.) Learn anything. While you're at it, learn how to make art with a computer. Read Marx and Freud. Read Mark Twain. (Insert non-US authors here... Well Marx and Freud are non-US authors, but not authors of fiction.) You want to learn another programming language? Pick one that'll blow your mind, Prolog or Smalltalk or APL.

So, no reason not to build 3D graphics if that interests you. We don't do it because debugging programs that use 3D is hard, because you have to know which way the camera is facing and make sure the stuff you build is in front of the camera rather than behind it. We'd rather concentrate on a good interface for 2D graphics. But that's us; you build what you want (that isn't against the rules). You can do it entirely in Snap!, which isn't as slow as it used to be, especially on matrix arithmetic, which is what 3D graphics is all about.

Well I know JavaScript and HTML and css and xslt and some others and also actually snap is made for helping others or the young code so you are right. Well thank you. And I’ve always dreamed of an application that would just be helpful and easy for kids and I LOVE snap! Me as myself are 10 years old and ive always ever wanted an application that could build lots of things like parsers.

you should never post your name to

Snap's capabilities are far from that :sweat_smile:
Snap! is actually a modded version of Scratch 1.0 by Jens and other developers (I think bh was one of them too). Snap! took code from Scratch 1.0 and modified it so that it could be used by more experienced programmers who want more from block coding.

Think about Scratch as a Texas Instruments Ti-30XIIS. The Ti-30XIIS, while it IS a calculator, is pretty limited in functions. You can't graph on it and you can't program it to do stuff you want it to do. Now picture Snap! as a Texas Instruments Ti-84 Plus CE. Much like Scratch (represented as a Ti-30XIIS) the Ti-84 Plus CE is a calculator and can still do the same things a calculator does. UNLIKE Scratch though, the Ti-84 (aka Snap!) is a programmable calculator and can also graph.

Oh sorry


Snap! has its own code base. Although its predecessor, BYOB, was a fork of an earlier version of Scratch, Snap! was written completely by Jens and contributors to the Snap! GitHub repository.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.