Make a category for discussing Snap!'s internals

If jens is so against topics like that, why isn't there a separate category for those discussions that learners can easily distinguish?

I agree, and disagree a little.

I remember @joecooldoo making a block that freezes your screen, which is technically hacking the computer causing it to freeze, so I understand why @jens would probably say a thing like this.

However, I agree because people aren't saying or encouraging people to hack Snap! with Javascript, or anyone, because Snap! has its source code on github, meaning you can just hack Snap! that way anyways. I also doubt that anyone would have the guts to use a Kids coding website to hack or code with malicious intentions, let alone having the guts to get pressed charges for doing anything like that either.

Hey, we've made Snap all open source and you can live-follow every of my commits, and I'm documenting and even giving public talks on Snap's design and architecture. Of course I love Snap's code base, and of course I also love discussing its implementation. But not here. This is the Snap user's forum, it's meant for folks who want to learn about computing with Snap, with the BJC curriculum or on their own. But this is not the Snap hackers community. This is a community for people interested in computing education and in Snap as a programming language.

As y'all know I'm very serious about this distinction, because my personal feeling is that the tone in this forum is sometimes dominated by folks claiming to be in the know about Snap's internals, rather than, say, about what they've learned in BJC. And that bugs me. One problem I see is that folks blabber on about this Javascript and that Javascript and really don't know much about programming, and aren't really interested in powerful ideas. But the impression that comes out of these frequent topics is that you can somehow make it to an "inner circle" by being clever about the Javascript sources of Snap. That's an impression I want to counter. I don't want beginners here to feel like they need to learn bad habits (and "web programming" is among the worst disasters that has happened to computing imho) to be part of this community.

Instead, here are examples of topics I consider to be "advanced":
Questions, hints, calls for help, tales about surprising insights, changed minds re:

  • Recursion, especially branching recursion
  • Higher order functions, inventing your own ones to solve interesting challenges
  • Lambda calculus (I cherished the recent project someone shared here on this, it's awesome stuff like that that's really advanced and impresses me!)
  • Parallelism and concurrency, semaphores, sharing resources, race conditions and protected regions
  • Linear algebra, using Hyperblocks to make cool things
  • Media computation, data science, machine learning, music
  • Connecting to external web services and hardware peripherals
  • first-class-ness
  • prototypal inheritance, classes, nested sprites
  • in short: Anything related to abstraction

See, I'm perfectly fine if you don't talk about "advanced" stuff here. I love browsing new projects and reading all your posts about just regular experiences in Snap, and I love, love, love how y'all are helping each other with your questions!

Examples of subjects that I don't consider to be "advanced":

  • exposing some already existing feature in the source code through JS (e.g. a color input slot, variadic slot options, adding primitives to the palette, adding a button to the tool bar)
  • hacking HTML using JS in Snap
  • using JS and XHR to freeload someone else's server for "cloud variables"
  • trying to access the Snap cloud in Snap projects
  • editing the sources to change Snap's settings, like colors ("dark mode"), fonts etc. (of course you can do it, but c'mon, anybody can do it!)
  • converting blocks to text
  • in short: Anything related to Javascript or the Snap sources probably isn't advanced

Yes, occasionally somebody comes up with an interesting idea, and yes, there are some awesome folks in this forum who are better programmers than I am, whose advice I will sometimes follow and sometimes won't. But folks, honestly, the bar for that is ridiculously high, and if you haven't mastered all of the - to be extended - list of examples for advanced topics chances are you won't be impressing me with your ideas about Javascript either. But you might be discouraging newbies to learn, because they might think that what matters here is hacker talk about Morphic. It doesn't.

So, please, I appreciate that some of you are excited to learn about how we make Snap, and some might be surprised that it's not like anything they're expecting to see, because "web programming" usually looks and works totally different. I really don't know a good solution to that, but I strongly feel that this Snap community should try to not become yet another web hackers bulletin board.

Can y'all be cool with that?

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