Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
How Scratch teaches kids to follow the hacker ethic (backchannel.com)
206 points by steven on May 5, 2017 | hide | past | favorite | 115 comments


I know everyone loves Scratch, but I think all but the youngest kids can just as easily absorb a text based language, and ultimately get more out of it. I've worked with kids in 2nd, 3rd, and 4th using Scratch, Processing, and most recently Lua (Pico-8). I didn't see any difference in the kids ability to pick up and build working programs that made them happy, but the kids who did it in Processing and Lua seemed to have a better grasp of the concepts, and be better prepared to jump into more common languages.

https://processing.org/

https://www.lexaloffle.com/pico-8.php


I have run an organization that teaches kids to code and advocates for coding literacy for the last 5 years, and I agree with you that kids as young as 8 years old can absorb a text-based language when presented in the right way. However, typing speeds are generally quite slow amongst elementary school kids, so the rate at which they can make interesting things happen is much slower. That initial dopamine rush when connecting Scratch blocks is a very effective way to get them to see programming as an exciting and fulfilling endeavor. By eliminating the possibility of syntax errors through block-based languages, you can put their entire initial focus on semantics, without having to divert their attention toward syntactical correctness.

Also, it takes a certain kind of computer scientist to teach computer science effectively, and most elementary school teachers do not match that requirement no matter how much PD you give them. I would say most elementary school teachers can't handle much beyond the basics of Scratch, but that is more than enough to get the platform in the hands of kids. If the teachers chooses to just let the kids mess around with Scratch rather than give them structure and clearly defined goals, they will still do just fine. If a teacher takes a similar lax approach with typed programming, the kids will most likely learn nothing at all, and will often develop an aversion to programming altogether.

But I completely agree with you on the importance of teaching typed programming. My heart aches when I hear of middle school CS classes using Scratch. That's the perfect age to start exposing kids to Arduinos, Python, Raspberry Pi, etc. The BBC Microbit foundation has been doing a great job in the UK bridging the gap between Scratch and typed programming with their Microbit platform (microbit.org), and (shameless self-plug) I work on this problem as well with techlabeducation.com and pythonroom.com.

I think what kids miss most of all from typed programming is the idea that a language is just like a human language, where each language has its own metaphors and way of thinking (an idea put forth by Seymour Papert in his 1998 paper "Mindstorms").


I think the main benefit of a graphical language, as opposed to text-based is the rapid feedback loop. You see the response after every click.

This is the same reason so many people can build complex spreadsheets, yet wouldn't know where to start if you put them in front of an IDE.

I brought a book 'Computer coding for kids by Carol Vorderman' for a friend's daughters for Xmas (aged 6 and 8, both VERY bright with grades above their age groups). As learning to program makes you think differently, especially problem solving skills. It's gone down really well. Especially with older one who spends hours reading the book, even when she doesn't have computer access (and is now set on buying Chromebook with her pocket money).

A language such as Scratch is great for sparking initial interest, before going on to more depth.


You are right that it is the rapid feedback that really helps with teaching. I don't think you need a graphical language though, just an IDE oriented toward rapid feedback. Putting a 3rd grader in Eclipse and having to compile and build a jar to see the effects of a line of code would be horrible. But IDEs like Processing Development Environment or Dr.Racket have great tight feedback loops.


> You are right that it is the rapid feedback that really helps with teaching

And possibly with obtaining an intuition about whatever it is that you are manipulating. Maybe "direct manipulation" is mostly about that rapid feedback, rather than the concreteness of the objects?

I know that when I hooked up an "as-you-type" evaluator[1] to my experimental programming language[2], I learned more about problems with the language in a minute than I had previously in days or weeks. The feedback bandwidth is incredible, and the short cycle times have a more than linear effect.

[1] https://www.youtube.com/watch?v=sypkOhE-ufs&t=57s

[2] http://objective.st


True, it's kind of a shame that more of the features from Bred Victor's demos haven't made it into mainstream IDE's, such as:-

Inventing on Principle - https://www.youtube.com/watch?v=PUv66718DII (He has a handful of great demos on Youtube and Vimeo).

Another interesting source is Epic's Unreal Engine Dev tools - https://www.youtube.com/watch?v=DshYHUvLaDc


This puts me in mind of RPG Maker 2000 event scripting: http://i.imgur.com/XCoeAHG.png

It's block-based—you write it by inserting syntax nodes from a big menu—but the visualization of said blocks is plain text. If it's the first type of programming you do, you come out of it able to quickly understand a "real" text-based programming language, because you've been looking at textual programming syntax for a good while already.


>By eliminating the possibility of syntax errors through block-based languages, you can put their entire initial focus on semantics, without having to divert their attention toward syntactical correctness.

This is very interesting because one often hears the same thing - the exact same thing! - about Lisp as a teaching language. And Scratch and Lisp are indeed quite similar, superficially, though Scratch doesn't think of itself as a "real" programming language and hence stops short of providing features that would make it usable as one, like lexical scope.

One big difference is that Lisp simply hides a lot of its syntax behind homogeneous parentheses (many special forms can only be written a certain way, but you have to remember where the parentheses go) whereas Scratch doesn't so much hide it as handle it for you ("here are the slots where things can go in this syntactical form").

Another, separate but easily conflated difference is that it's in some sense "strongly typed" - numbers go in number slots, predicates go in predicate slots, etc etc. The return type of an expression is represented by the shape and color of its block. All types are statically known, and relayed to the programmer. It is impossible to commit a type error because the editor disallows it (which is in turn possible due to the transactional nature of drag-and-drop - what do you do if someone types the wrong thing in, untype it?)

I think these are valuable concepts that don't automatically imply "toy" and should be explored in the context of a "real" programming language. Computer science has consistently unvalued human factors. There is still a lingering sense that "real programmers" don't need to be mollycoddled, and should suck it up and endure byzantine incidental complexity. Never forget the lesson of Python, a slow and technically unremarkable scripting language which is now one of the most popular languages in the world because it is easy and fun to program in. Or the lesson of Lisp, an enormously fast and powerful language that nobody programs in because...?


Agree with this. I teach middle school students how to code simple JavaScript games and they all do fine with text based coding in an editor. I have a few 5th graders in the class too and they also do fine. By this age, they no longer want to use Scratch. They actually associate it for the younger kids. They enjoy hacking around in code and get really excited being able to do some of the simplest things.

I do however think Scratch is great for the younger kids and is a great way to teach them some basic concepts in a fun way.


Can you share any lessons or lesson plans that a person could use to teach a 12 year old javascript?


I recommend checking out http://woofjs.com

Steve Krouse, a friend of mine from Penn, has created this to teach kids how to code in NYC. Jumping from Scratch to JS is a big jump, Woof is meant to make that easier.

I'm also planning on using it with my online 1-to-1 course for kids.


12 year old means 7th grader, so for someone older, I would recommend looking into Codesters (https://www.codesters.com/). This is basically Scratch for Python.



I agree with you assuming they can type, but I have also seen kids get really frustrated with keyboards and typos. It takes them a lot longer to express their thoughts than dragging blocks.

By 4th grade, you're probably right. But 2nd, unsure.


I still get frustrated by keyboard and typos and I've been out of 4th grade for a long time! Anyway, learning to deal with those issues is, I think, a positive part of the process that has to happen eventually. The Processing IDE is pretty good at lending a helping hand as well.


I think I was in the 10th grade when Scratch really made programming click for me. I had tried BASIC a few times before that and gotten nowhere (I was very envious of kids who could actually program...). Syntax seemed like magic, and I didn't understand how programmers knew what was and wasn't valid code. Scratch made syntax something real, and helped my understand how computers broke down lines of code.

I feel that most people who know programming really underestimate how hard syntax is for beginners! You can maybe walk a kid through typing in a canned program in other languages, but the scratch "building blocks" environment makes it way easier to let kids explore and go further on their own.

Edit: 10th grade is correct - I was able to go on the scratch community website and find some sketches I had uploaded 9+ years ago!


I agree, especially about your comment on the difficulty of learning syntax. But there is an inherent value in that process, that is not only ultimately critical for all programming languages, but will help their thinking in their natural language, grammar, and even mathematics.


What is your Scratch handle? I worked on the online community for my dissertation and it's always great to know how the social aspect of Scratch has helped people in their journey.


I just introduced my 5-year-old to Scratch (1.x, since 2 requires flash) now that he can read phrases and understand some basic concepts. At this age, he can handle dragging and dropping some blocks. Although he can type, I think it'd be a bit overwhelming for him to use a text-based programming language for a few reasons:

- He still spends quite a bit of time finding keys on the keyboard, so that'd be a major distraction and would break flow.

- Memorizing keywords as text and reproducing them is a bit more of an abstract concept than being able to remember the color, location, shape, and appearance of text on the blocks in Scratch. For us, we can imaging keywords and expressions as these conceptual units, sort of like blocks. But we can also reproduce them as those units---we don't mentally deconstruct them into individual characters like my son would have to as he struggles to type them.

- Similarly, with typing, you start with a blank canvas and nothing but a daunting array of tools (keys on the keyboard, which we think of as a single tool) that alone mean nothing until placed into a very specific syntax. With Scratch, you start with a set of identifiable blocks that concretely mean something.

- Scratch aids him in other ways, like providing character and sound selections via a dropdown. You can get this type of things with certain IDEs, but mileage will vary.

Essentially what I'm saying is that I feel like my son using a keyboard at this point instead of blocks is like taking each of those blocks and smashing them with a hammer, and telling him to first assemble the blocks before determining how to use them to assemble the program.

I do wonder when I should try introducing him to text-based languages. He's also learned how to use Minetest in the past week, which is scriptable in Lua, so I wonder if that would be an interesting transition. I thought of maybe introducing him to lisp because of how naturally the syntax of the language translates to/from blocks, but I also don't want to disadvantage him practically when most of the world uses C- or Python-like syntax.

I'm totally new to this. :) But it's exciting!


>He still spends quite a bit of time finding keys on the keyboard, so that'd be a major distraction and would break flow.

I don't have kids yet but I am wondering if perhaps letting your child use a keyboard that is without printed letters could help them learn to type better.

Back in 2010 me and a good friend of mine decided to buy a TypeMatrix 2030 USB keyboard each and to switch from QWERTY to Dvorak.

Now of course I am not suggesting you let your child learn Dvorak. Teaching them Dvorak would probably be doing them a disservice at such an early age because of the amount of QWERTY keyboards they are likely to come in contact with.

But I think you should try to let your child use QWERTY with a keyboard that does not have any letters printed on it.

We bought black skins with printed letters and black skins without printed letters. In the beginning I was using the skin with the printed letters and I had to look at the keyboard for each and every letter I was typing. While my initial plan had been to first learn to touch type Dvorak on the TypeMatrix and then put on the skin without printed letters, I soon decided to put on the skin even though I had no idea where each letter was, in order to force myself to learn to touch type sooner. And it worked! It was really painful for the first two or three days. For each letter I was typing I started with the top left key and went through the keys one by one until I got to the correct key and then I used the backspace key to remove all of the letters I had typed which was not the one I was looking for. It was extremely annoying but it worked exactly as I had hoped it would.

Over time I've somewhat "unlearned" QWERTY, and for the first few years I was even carrying my TypeMatrix in my backpack pretty much at all times and in doing so I found it hard to use other keyboards even if I switched the computer to Dvorak.

After one of my keyboards broke due to wear from carrying it with me, I bought a new one but I stopped carrying it with me and started using whatever keyboard is available in Dvorak mode. I use the TypeMatrix at home and I have another one that I use at the office when I work but when I'm elsewhere I use for example the keyboard on my ThinkPad. Many keyboards will have QWERTY printed on them but since I am so proficient at touch typing Dvorak now I'm pretty much not looking at the keyboard at all anyway so it does no harm.

Anyway, point is, not being able to "cheat" by looking at the keyboard turned out to be a highly effective way to learn to touch type 100%.


I learned programming through Scratch as a young kid. I was frustrated with the limitations of the syntax, and the lack of structured programming (although I didn't know what I was looking for). However, I loved it and came back to it every single night for the community - uploading new games I made, getting comments and loves from my friends, and not only checking out their games but downloading them and reading the source.

edit, as I keep thinking about this: Remixes were also huge - not only could you download someone's project, you could tweak it and reupload it as a remix. There were also galleries with curators, which motivated me to make better projects. I think the language's limitations might have encouraged me to think outside the box, actually... simple things were easy, but any complex logic was very difficult. No functions, only event-driven broadcasts and receivers, and the events had to be pre-declared (no dynamic stuff). I remember doing a lot of hacky stuff with lists, like having look-up tables in lists, or having to implement really simple algorithms on my own in this constrained language...


Glad the community and remixing got you engaged with Scratch! Those two things were the focus of my PhD dissertation at the Media Lab. Do you mind sharing what you do now? What was your Scratch handle? Scratch on!


I'm a dev now, of course! I'd rather not link this account to my really young usernames, out of embarrassment...

Thank you so much for the work you and the Scratch Team did! The Scratch online community was a big part of my childhood and opened so many doors in my life by keeping me engaged and leading me to the world of software. Y'all really made the world a better place with the project.


Tried to find your contact info. Anyway I can talk to you over email on your experience with teaching to kids? I've been working on a curriculum to teach kids programming via Processing, would love your feedback. My email is in my profile.


Very interesting. I have a few questions:

What challenges did you encountered the most when teaching kids to code?

Do you have any suggestion on how to teach coding to kids from non-english-speaking countries? I think it would be much more challenging since most programming languages are written in english, and these kids are not fluent in english. Or, is it better if I write a new programming language using my native language?


ACPU/ACPUL is made for same purposes (for 12+ y.o. children). I done some tests & child start coding in 15 minutes.

https://www.youtube.com/watch?v=CAcv12eBqcc

PS: I want to make some leraning videos using twitch/livecoding tv. I think, this idea is good.


My experience is also that scratch is not nearly as easy to absorb as it is made out to be. I think the interface is good, but that something with the same interface but structure of Love2D would be much more helpful.


I still don't think I've seen anything better than the old QBasic. Simple IDE, simple syntax, all the batteries included, awesome integrated language documentation. And it's hard to go from 0 to drawing graphics on the screen any easier.


Scratch and its clones are a great way to start for kids without the problems of syntax errors. Everything always works. It might not do what you want but it always does something.

Kids at my local coderdojo enjoy beetleblocks which is like 3d scratch http://beetleblocks.com/run/ The files can be exported and used in a minecraft clone https://twitter.com/damianmooney/status/843594021024993280

Microsoft have just announced a block based code environment for minecraftedu https://youtu.be/3rKuSlgqePo

It seems like a way of coding that has really taken off.


There is a big difference between Microsoft's Minecraft: Education Edition product and MinecraftEdu. Microsoft's product offering is a pale shadow of the much-loved MinecraftEdu. Educators are still complaining about it: the subscription named-user licensing model, the lack of the ComputerCraft Lua programmable robot turtles, the lack of classroom management tools, on and on.

It is a great example of a company buying an awesome product and then throwing it on the trash heap of history.


Microsoft bought something, transformed it to monetise it, and ruined it in the process; say it ain't so. /s


Can I recommend Minetest


is there Minetest Edu ?


So true! We love Scratch.

There is also an open source project called Blockly run by Google. It's the "puzzle piece" portion of Scratch, which is an amazing resource to integrate into other kids learn-to-code projects.

I am using Blockly at http://block.school

We are the first live online school teaching kids to code. We've paired the Scratch concept with a 3D block world sorta like Minecraft. We're building out the curriculum now but you can try a demo here:

http://course.block.school/demo

We have some pretty amazing students building things at ages 6+ :)


I think Scratch 3 is being built on top of Blocky with Google's help. No more Flash - yay!



Great to know, thanks for sharing!


The syntax thing is definitely true, but opens up a different problem: people can now write code without understanding what it does. Throw some blocks together and look, the cat is doing things. From my experience this is usually a problem where students are being forced into programming where they have no major interest, or where the teacher does not understand what's going on so can't help or assess the student properly. I would suggest that this is the situation in the majority of classrooms that have jumped on the 'code' bandwagon.


> Throw some blocks together and look, the cat is doing things.

I don't know much about psychology, but I suspect a kid below a certain age is much less interested in how a cat does something than with the cat actually doing it. If they're interested, they'll naturally reach the limit of their tools, and learn about the cat's internals.

From an HN thread today on combinatorics:

  list(itertools.permutations('abc'))
I don't want to have to know how that works merely to use it, and if knowing the implementation was required to use it, it would slow down my progress. If I was eight, it might slow down my interest.

Taken back to an extreme, a baby on your lap would not be interested if your finger pointed to the word 'cat' on a line of text in a book and said "cat!". But they would be interested if you pointed to a picture of a cat.

Whatever's appropriate for an age, and for an individual, is probably best.


This is exactly how very young children initially learn many things, though. The first developmental stages of writing are often drawing lines of squiggles that ape lines of adult writing, moving on to random collections of letters.


True, but my experience is with much older kids (high school), where the problem is more that they have no interest in coding, so throw some blocks together and hope the teacher doesn't know what's going on either.


The opportunities for high school kids to malinger and avoid learning things are many and manifest.


Yesterday was "Open House" at my son's elementary school. He showed me a lot of cool projects, but also scratch and his several .sb2 files he's been working on, and I was amazed that he's dealing fine with logical statements, other kinds of blocks, forever loops, variables, etc. We did together some scratch in the past, but ended up just moving a character in all directions. And here he showed me a program that asks you for two numbers, then... operation - and he typed "add" and finally it came - sum of two numbers. Pretty cool!


How old is your child? That's awesome!


23


lol. that would've made me a really young father, but he's only 9.


Awesome, are you an engineer too? A few questions if you don't mind me asking:

1. How serious are you about your child's coding education?

2. Do you teach her/him too?

3. Would you ever hire an instructor in a 1-on-1 or 1-on-2 setting if it were affordable?


1. I'm trying to be serious, but I often lose touch. My wife is more in control of the matter.

2. I'm not sure teaching is the best way to describe it... more like doing it together, and sharing knowledge. I don't consider myself to be a good teacher (after seen how others do it). Occasionally I pull real good "teachin'" - seriously, but then often I fell into too many details, and he gets bored.

3. Maybe, but possibly when he goes to middleschool.

I grew up in Bulgaria, and since 7th grade I was in specialized Mathematics and Informatics (the "eu" word for "computer science") high-school. I went there because I was good in my elementary, middle school... only to realize I was just average, or even below compared to the other kids. But then I discovered that programming is what I really wanted, unlike many of the other kids (that was back in the 90s), and there was much less competition in this area. Nowadays its quite different... Back then, even saying that you were playing video games, and kids would consider you dork/geek/etc.

But back to math-specialized high-school - Since I've started doing poorly, my parents got me 1-1 (sometimes 1-2) math teacher, just to keep on level. It was the norm to have 30-40 math exams for homework, and it took everyone of us hours to finish (Though one difference with schools here, is that there is rotation when you go to school - one month you go in the morning, the other month in the afternoon - so there was plenty of time to finish homework).

So, it's definitely beneficial to have an instructor. It helped me. We are considering, but also from another standpoint - peer pressure. When all our friends are talking about how their kids go with private tutors/instructors - then you have to get on that bandwagon... I mean I hate that, but I know we have to do it.

Last rant, I wish a classroom where the teacher would have only few kids - 5-6, not 20. I feel this would greatly reduce the need for instructors.

And I'm willing to pay more taxes, whether I had or had not kids.


My six year old loves scratch. I got him started, and a couple of hours later he'd figured out how to make a character jump around the screen, shoot laser beams, and make sound effects. I was thoroughly impressed. I think the way they lay things out is great for kids and gets them introduced to logic and control structures in a really simple and intuitive way.


My six year-old loves coding with Disney's Moana characters [1]. It's the same principle. It's interesting to see him learn how to think differently, and understand concepts such as looping. :)

[1] http://partners.disney.com/hour-of-code/wayfinding-with-code...


I was one of the very first scratch users. I started using it back in 2007, so I would have been 10 years old at the time. I have a job as a graphics programmer now, which I completely attribute to the countless hours I spent building games in scratch. Discovering scratch back then was really a life changing thing for me. Its exciting to see how huge the community is now and all the kids discovering programming the same way I did.


That's so cool! What was your handle? Mine was andresmh. I worked on the community part during grad school :-) Scratch on!


The most amazing thing to me about watching my daughter learn and then become obsessed with Scratch is the community around it. She has dozens of friends in the network, and they organize to build projects together, have contests, manage deadlines, and give each other advice on coding. And every interaction she's had on the system has been positive. I don't know how the Scratch team managed to build a "nice" social network, but that to me is more important than any aspect of the syntax or whether she types or drags blocks. She sees herself as a programmer, and she gets tons of positive feedback for being a programmer.


The online community was the focus of my dissertation, so it's really great to hear your daughter has benefited from it. We worked really hard to keep the community a friendly space for everyone. It was, and continues to be, a lot of work for the team. I no longer work on Scratch, but I try to donate when I can. I encourage folks to do so as well: https://www.scratchfoundation.org/


Scratch is the tool I go back to over and over for teaching my middle school (age 11 - 14) students. And it keeps getting better. The classroom feature they recently added completely resolved my number 1 issue with Scratch which was the difficulty in getting parents to follow through and approve their student's accounts to share projects with the class and teacher.

I do really really wish they would get off of Flash however. Managing the Flash installs on the shared laptops at our school is a headache.


Snap seems like the solution to your woes: http://snap.berkeley.edu/about.html

It's Javascript and extensible.


Flash is going away sometime: https://wiki.scratch.mit.edu/wiki/Scratch_3.0


What curriculum do you use?

I am working on a project in the space, I would love to ask you some questions if you don't mind!


I've developed my own curriculum over the past 6 years or so of teaching using it. I have a series of assignments I created to get them to build simple games and music videos, leaving a maximum of latitude for individual creativity around the content, while requiring use of specific programming concepts.

I also teach how to edit music and images for importing to Scratch, including transparency and layering. Honestly I think that is some of the more broadly useful stuff in my class -- so many of these kids have no idea how to crop and resize a photo or cut out a portion and make a transparent background. We also cover US Fair Use and intellectual property laws.

I only get each class for about a dozen 55 minute classes per year which really makes me streamline my approach for a minimum of lecture and maximum hands-on time, which can be a challenge, but on the other hand I get 100% of the student body passing through my course, so I get the chance to teach all learners, those with desire and aptitude and those who come in saying "I'm no good at technology" and leave with a sense of pride in what they've achieved.


The beauty of Scratch and other similar tools is that instead of the teacher asking questions, the child learns to ask their own questions.

If you are interested in learning more about this mindset, you should read Mindstorms by Seymour Papert (RIP).

https://www.amazon.com/Mindstorms-Children-Computers-Powerfu...

Scratch can be a "gateway drug" to languages that professional programmers use. The extensions/abstractions of Scratch from Berkeley that deal with making it do complicated things seem like putting a fish on a bicycle. Sometimes, you just have to leap and try to not fall.


Mindstorms first edition is now freely available: http://mindstorms.media.mit.edu/


Thank you!


I find it more interesting how the term "hacker" has evolved into becoming a positive value term. I wonder if the term "hacker" is still considered positive at the adolescent stage, or is it just a business class perspective?


Hacker (computer) originally was a positive term. The stupid mainstream in the mid to late 80s corrupted a great word. I had a few friends get arrested for accidentally calling a Pentagon and then try and figure out if they could see what the server was for. I don't think they were called Hackers but that was 1985 and this story happened in 1983 http://www.cnn.com/2015/03/11/tech/computer-hacker-essay-414...

The Jargon File, a glossary for computer programmers that was launched in 1975, lists eight definitions for “hacker.” The first reads, “A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary.” The following six are equally approving. The eighth, and last, is “[deprecated] A malicious meddler who tries to discover sensitive information by poking around. Hence password hacker, network hacker. The correct term for this sense is cracker.” http://www.newyorker.com/tech/elements/a-short-history-of-ha...


Hacker always was positive. It gained popularity to mean the people who played around with hardware to make home computers before the PC became a commercial product, or who found novel ways to play around with the phone system- like you could record and play back touch tone sounds on a tape recorder to make calls.

The negative connotation came from the bust of Kevin Mitnick and the American public's shameful lack of knowledge about computers, combined with 1984 style propaganda to scare the public.

Hacker or hacking always meant someone who approaches problems in novel ways. Cracker, like a safe cracker, is someone who breaks in for malicious reasons. The kids on 4chan who follow a guide to DDOS a website are script kiddies, by the way.

That's what these terms always meant, and we're starting to move back after an era of propaganda.


It'll always have two meanings to me, no matter what. Not the same, but the word pirate - has also two, or maybe three meanings - the really bad old pirate, the mythical "good" pirate, and the modern day (most of them Somalian) pirates.

A hacker is just someone who does not respect boundaries, be it what could be done, and what should not be done, and then more. Just a hacky definition I just came up with :)


Where does a modern digital or intellectual-property pirate fit into that spectrum?


In (Québec?) French, "pirate informatique" is the term used for malicious security breaker. I rather like that. I'm not sure what phrase is used for people who share copyrighted materials online, but probably informally "pirate" is also used.


Ah, good catch!


> modern day (most of them Somalian) pirates.

I think your information is out of date. In 2015, 60% of piracy incidents were in South-East Asia. http://www.agcs.allianz.com/insights/white-papers-and-case-s...


It was always a positive term until mainstream media decided to depict the person in the back ski mask typing really fast and stealing bank accounts as a "hacker"

I like rms's definition https://www.gnu.org/philosophy/rms-hack.en.html


It wasn't just the mainstream media deciding out of nowhere to apply the label to an unrelated group; there was a substantial criminal element in hacker culture, and it was through that element that hacker culture became visible, and so that's why "hacker" got stuck on computer criminals.


The positive usage of "hacker" has deep roots. The author of this article wrote a classic book that documents the early scene.

https://www.amazon.com/Hackers-Computer-Revolution-Steven-Le...


I think it started as a positive term, but has been given a negative connotation. I've cautioned my kids to avoid using the term for themselves.


Except on hacker news, I associated hacker with someone who produce low quality code - hack is a dirty trick that does job at hand but breaks architecture and will likely cause problems in the future.

Back when I was younger, people who references to themselves as hacker (or were referenced as such by others) were usually not trustworthy.


In the golfing classes it's still a negative term, e.g. "the Sunday hackers are out tearing up the course today."


I showed my 9-year-old nephew Scratch, and within an hour he had designed a dancing man that made noise and moved around. It makes creating interactive games and stories easy and fun.

Why isn't there a Scratch for adults? A serious tool targeted to artists and professionals that makes it easy to publish interactive stories and presentations using standard web tech.


> Why isn't there a Scratch for adults?

What exactly would be different between a Scratch for kids and a Scratch for adults?


In some ways the the Pharo fork/branch of Squeak Smalltalk might be seen as an answer answer to the related question of "How would Squeak (Smalltalk) for adults differ from Squeak".

One problem I see with Scratch is its slow pace in moving forward away from flash and toward something that is easy to self-host: cloud only is great until underpowered Internet at your local library forces kids to stop coding mid session. Flash can sometimes be a challenge to get to work reliably in a modern browser on a pc you might not have admin rights on (compared to something based on fairly conservative js, like https://www.lively-kernel.org/).

I've briefly looked at the Berkley snap!-project, and it looks a little easier to get into self-hosting and modifying (but I've yet to do so): https://snap.berkeley.edu/

In the same breath, I should probably also mention croquet/cobalt - although it appears no one has yet picked it up and ported it to the new generation of vr headsets:

http://www.opencobalt.net/

To save some searching: http://pharo.org/

http://squeak.org/


It's frustrating to upvote a post that favours flash over any other technology but I have to agree with you. I don't like this always-online trend for all kinds of applications.

(generally spoken - I don't know the scratch situation)


I actually think Scratch is great for adults to learn how to program.

I think there isn't a Scratch for artists/professionals to create because the educational aspect is hard to nail, and pairing that with a publishing tool is even harder. It's not impossible, but it sounds really hard to get right.


There's a lot of things that kind of meet that definition; many of the non-educational visual programming languages on this list:

https://en.m.wikipedia.org/wiki/Visual_programming_language#...


For games, you can try Stencyl, which is really cool, but I think you'll quickly be wanting access to some sort of scripting language as the drag and drop can start to get tiresome once you get past basic interactions.

http://www.stencyl.com/


renpy is a visual novel engine you were looking for. https://www.renpy.org/


You can go back and forth about which coding environment is best for kids but it is really great how many options there are now. I first encountered programming on the trash-80 in the 5th grade. We had a typing program, text games and Logo and saved things to cassette tape. Back then, Logo was a triangular turtle on a monochrome screen. We have come a long way in ~30 years. Still I remember loving it. Logo had a huge impact on my life.

More recently, I started helping kids with their programming projects at my local library's coder dojo using Scratch, JavaScript, Python and other languages. It's a rewarding and fun way to give back to your community. I highly recommend trying it out.


In college I took a single credit Scratch class where we'd go out in the community and teach an after-school lesson for about an hour once a week to 4th and 5th graders. Honestly, it was one of the best parts of my semester. Seeing them grow and explore was fantastic.

In line with the hacker ethic, we decompiled Minecraft as a demo and started playing around with the jump math with them. It instantly clicked, based on their experience moving Scratch characters, what the changes we were doing were going to do before we ran it. That's a powerful link, even if they didn't realize that "jumping to the clouds" still causes fall damage (Which was subsequently turned off in the code).


Do you mind sharing what college this was at? My email is on my profile if you prefer.

My nephews are in elementary school, and we're right next to the local university. I'd love to see if we could get a program like that going here.


Here's a link to the course webpage that might be helpful: https://sites.google.com/site/uwmadisoncsafterschool/. Andrea (Her email is at the bottom of the linked page) is great and also teaches a "Grandparent University" in Scratch where grandparents come with their grandchildren and learn to program together.


Excellent, thanks so much.


Always surprises me nobody mentioned ScratchJr [1] for Android and iOS which in my experience has a lower barrier of entry for younger kids. I have used it with success with 4 years old children. I have had also success with the building part of Alice 3D in young kids.

IMHO if the kid is doing complex stuff with Scratch, he/she can move to a programming language without much problems.

[1] https://www.scratchjr.org


Curious, has anyone ever seen a new user to Scratch figure out on their own that the ".sb2" file is really a zip file: https://wiki.scratch.mit.edu/wiki/Scratch_File_Format_(2.0)

To me, this would be more of a sign of a "hacker" than figuring out how to code something, though maybe it's me.


Plenty of scratch users have been manually modifying the .json files contained with in the .zip/.sb2 archive, to create "hacked blocks", which are not possible to create with the Scratch GUI.


Right, but did the users you've personally known doing this figure it out on their own and were they "new" to coding. To me Scratch is awesome, but doesn't to me feel like a tool for teaching people to hack at things.


I don't know any Scratch users personally. Anyway, that's irrelevant.

IMHO the real reason Scratch teaches its users the "hacker mindset", is the way it forces you to create complex things with a relatively simple and limited toolset. In a similar way to how C64 demo coders push the hardware to its limits to achieve interesting effects.

To give an example, scratch has no 3d rendering capabilities, and the only 2d rendering techniques are using bitmap/svg "sprites", and the "pen", which lets you draw arbitrary lines between points. Despite these limitations, many more advanced users have created 3d polygon rendering engines.


I didn't do it with Scratch 2.0, but as a new programmer with Scratch 1.x, I figured out how to access the Smalltalk backend and messed with that to add new blocks and do other similar things.


I absolutely love Scratch. I think its incredible how it introduces children to concepts and patterns that are very difficult for even intermediate programmers. Things like actors and message passing, or thinking in ways that are compatible with an event-loop type of environment. Its great!


Since we're all offering Scratch-asides, I'll note Hopscotch: https://www.gethopscotch.com/ – it's very similar to scratch, but I found it far easier to use. With Scratch I often feel like programming is a task of fighting with tile management. I also like the stronger emphasis on events in Hopscotch.

The big downside is that it's only really usable on an iPad.


My son's school does a lot with Tynker. He ends up spending lots of time with it when he's given an option on what he wants to work on.

I know originally it was seen as a Scratch rip off, but they've really done some cool stuff, including having the ability to easily deploy Minecraft mods that he's created, and invite friends to join him to play around with them.


I want to see something that grows with you, and you can use it from childhood right up to the enterprise.


Scratch is not far off from growing with you. Back in 2013, I taught a 30-hour summer class for elementary and middle school students aimed at this.

It was bout 20 hours of programming concepts in Scratch, and then 10 hours of transferring their learning of Scratch semantics into Python syntax.

Most of the younger students in the class wanted to keep playing with Scratch, but the older ones intuitively understood they could go far with Python -- and that Scratch was a nice place to test/debug algorithms before implementing the "final" version in Python.


Logo was supposed to have "a low floor and no ceiling" and while Scratch certainly lowered the barriers to entry (floor) considerably it has a very serious ceiling (limits to what can be done in it). An early graphical Logo called Boxer was much better in this regard and there are projects to extend Scratch.

John Maloney, who was not mentioned in the article but was the key person to making Scratch happen is working on:

https://wiki.scratch.mit.edu/wiki/GP_(programming_language)

One of the links on that page is to Snap! which was used to introduce programming at Berkeley. You can use it as a Scratch written in Javascript and so able to run in any web browser. The extensions are a bit clunky, but pretty interesting.


Do you still have any of your curriculum or class notes? My nephews are in elementary school, and I'm looking for programs that their school/after school organizations could easily adopt.


I feel like Python is the closest that we've come to this, though it is imperfect.


Yeah, python is pretty great. But racket keeps on getting more and more interesting in my opinion, and I wouldn't be surprised if it ended up becoming a real cradle to grave system. Compared to python it still seems light on "industry" mind-share - but growing economic systems like python or ruby takes a lot of time.


Having observed kids, including my own, it's unpredictable what will spark their interest, and it's good to have a few things to try. My kids both enjoyed Scratch for a while, before moving on to other things.

In my view a benefit of Scratch is that teachers can learn it.


OT: Once kids get bored of scratch you can use turtle with python. It complements well.


there are tons of visual programming languages out there that are similar to scratch and even go beyond scratch


Er, what is the hacker ethic? :)


[flagged]


Your comments are being flagged because you overdid the promotion in this thread. Linking to your own stuff is just fine if you do it once, maybe twice if it's especially relevant. More than that and it stops being meaningful conversation and users get awkward spam feelings.

We detached this comment from https://news.ycombinator.com/item?id=14275541 and marked it off-topic.


Every time I sit down and watch my kids using Scratch I have to say what a horrible piece of crap it is. I'm not just annoyed because I had to install Flash for them to use it.

Surely we can do better?


There are many many other scratch like languages.

https://wiki.scratch.mit.edu/wiki/Alternatives_to_Scratch

Personally my kids didn't like Scratch but my daughter will do some Racket with me.


Curious to see that EToys is missing from that list; it's Smalltalk-based like Scratch is/was, and like Scratch is preinstalled on all OLPC XO laptops (although I've managed to exhaust the memory quite easily with it!)


Don't forget Bootstrap! though it is aimed at an older age bracket than scratch or byob

http://www.bootstrapworld.org/


Which is actually a sub script of Racket :) Just like Hacker News Arc and my beloved Racket.


I'm not really sure where you're coming from. I'm a CS major who was introduced to CS from Scratch and if it weren't for Scratch then I might not be doing it now. I think it does a great job of it's goal of getting kids interested in programming.

Although when I used it, it was Scratch 1.x, which was a stand alone app that didn't require Flash.




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

Search: