Grasshopper – A coding app for beginners
grasshopper.codes
grasshopper.codes
I remember vividly learning to code at age 11. I had an old computer, windows would constantly crash and the only thing I could access really was QBASIC.
Alongside a book with code snippets, I would simply write a line of code, hit run and see what happens. Then, go back to the code and 'go rogue' (meaning: change the numbers a bit and make the line 5pixels instead of 2 for example). This is where the magic happened, because I actually coded something. It wasn't part of an educational application, it was the real deal inside the real editor with a real output.
The learning always came from trial and error and in a way is very similar to how I still code things (when I'm not designing SaaS products for awesome B2B companies)
The book might be replaced with Google & Stackoverflow, but the principles are the same.
The magic of coding, I believe is in writing something that is real.
We also have a Playground (available in the left-hand menu) where users can just play around using the Grasshopper coding environment.
Would love to keep getting your feedback on how we can make everything more real and keep that magic. :)
Also, some people who want to learn how to code may be older and they can't travel back in time to code when they are 11.
[1] ftp://ftp.cs.orst.edu/pub/burnett/chi06-genderTinker.pdf
This is not "visual/auditory learning" styles, but what strategy do you use to figure something out.
Grasshopper does pretty much this, but with a nicer UI and adapted to the constraints of a tiny phone screen. It gives you a code window and a graphics window and you get to write code and see what the code does. It's is a JavaScript environment which is modern-day web-world filler of BASIC's niche.
A lot of us grew up learning with tools, not toys (except you, logowriter, you're cool). Then we went and made the tools totally unapproachable. So now kids get the opposite approach: toys, not tools.
Teaching software like grasshopper is an experiment, and we're about to see the results. The first version of Scratch came out in 2003. Obviously this is super fuzzy, but for the sake of argument call 2003 the border between the QBASIC/getting a Sam's teach yourself C book at B&N era and the Scratch era. So a hypothetical 8 year old who started learning with scratch in 2003 is now 23 years old. The kids who grew up on this stuff are about to start showing up in adult life, and it'll be interesting to see how they turn out.
It would be interesting to know if anyone on HN in their early 20s or lower were first introduced to software development via scratch or some other means.
For a long time (since mid-primary school) I had been toying with HTML, mainly from a book from the local library, and by just looking at the source code of websites that interested me.
I think it's clear that 'toys' like this, and like Game Maker, that make programming simple and user-friendly have been around for a long time, and don't necessarily stop people from learning more advanced concepts or languages, except if they lose interest. But even if they do, hoefully they will have packed up some skills that they can apply to other endeavours.
For me (26), part of what kept me interested in learning to program was the sense that I was working through something convoluted and solving some personal problem. Overcoming some sort of adversity. In this case, it was writing hodgepodge pascal to automate Runescape and Neopets, then also Flash for fun and profit.
I now have friends that are interested in the concept of programming, but have no application for it. I'm happy to aid in their journey, but when they ask me "What should I program?" I have no idea what to tell them. "Pick something arbitrary" I say, only to hear "What's that mean?". I feel like programming is something most people either come to organically or don't follow though with, regardless of challenge involved.
If we are to think about what would make a successful programming class, would it look more like math such that "Today we'll learn math, because math will totes be useful later for some reason" or would it look like "Make a computer do something interesting or useful with minimal human interaction".
I had a lot of fun making games with Scratch, and I think it taught me a lot about logic and gave me a great way to express myself. I definitely got way more into the weeds about it than everyone around me, but one of my favorite things was opening up a game I admired on their website and trying to figure out how it works. This skill has definitely transferred into my broader programming career.
I have really high praise for it! The only thing looking back I wish we had was a way to export it to a .exe self-contained runtime to share with friends. I just used to pull my friends over at lunch.
Tl;dr: playing with tools, not toys.
I always thought programming was cool but was never able to learn it (because of I bought some bad intro books to programming). Then one day I found out about the book C++ Primer Plus, it was wonderful :)
My first attempt at a real program was a console based repository management program for my dad's apparel company. Considering my dad didn't even know how to send email, he probably tried very hard to give me a good feedback. I didn't even know the existence of database, and just stored the data in binary files (I thought it was secure that way)
Funny thing is that after 2 years in college, I learned some web, database related stuff and developed the second version using Tomcat, Spring and MySQL. My dad was again forced to use it :)
My nephews (10 & 12) are learning programming at school for which they both had to have an iPad for some shitty programming interface. They didn't learn anything about logic because the animated graphics were too distracting, they learned how to manipulate sliders to adjust things like speed and that's about it.
[1]: https://web.archive.org/web/20070120041500/http://scratch.mi...
Something I’ve been thinking about since posting: imagine yourself in a sort of Victorian/steampunk world that runs on gears etc. What would you give young people to start getting them literate in the machines?
I figure it would be a toy: something like a meccano set. You’d want composable, easily understood parts that are simple to connect, and interact in predictable ways.
What you wouldn’t do is drop the kids off at a half-working tool and die shop and tell them to go make some gears. Maybe that’s qbasic.
Erector set[1]. It's a toy, but not super obvious how the parts are supposed to work together. (unless now they give advanced instructions for constructing things..)
I like the new stuff better!
Last week I started the 6th graders on MicroPython on the BBC micro:bit. So far it is going well, and I think it will capture some of the aspects of the QBASIC on DOS experience. Today I will show them how to do images on the 5x5 LED matrix, which will be much simpler than trying to do graphics on Windows. Even so, they will still learn about X-Y coordinates and pixel brightness levels.
Check out the user video someone else linked on this page!
IMHO there needs to be a balance between guided learning and self-directed exploration.
Too little guidance and you can't get your bearings, causing you to get stuck and unable to cross what should be relatively minor hurdles.
Too much guidance (or too little interest exploration) and you end up not really understanding why things are the way they are or what is possible beyond the very narrow range of things you've been taught.
Imo it's also much faster. Yes I can trial and error figure out a way to fix my car, but why would I not use a manual?
When they didn't, I found it enormously satisfying to find out how to work around the problem being expressed in print; there were enough variations in BASICs for different machines that the listing for a TI 99/4A program wouldn't work in straight AppleSoft BASIC, for example.
But the time between typing all the code and finding out if it worked was grueling. I'm not sure if the students of today would be satisfied with that large a report-back loop.
Please let us know what you think, ask questions, all that jazz. We're still in the process of learning and making changes, so all feedback is super helpful.
- Laura (Grasshopper Founder)
Why?
It might be possible for us to convince the powers-that-be to use another form of authentication, but for right now, we're sticking with just Google Auth.
Privacy best practice is to know nothing, or as little as possible, about the user.
If storing progress is required, and local device storage is not sufficient, a minimalist online setup is the desirable solution.
An automatically generated user id and a simple user-progress table should be enough. GCloud has all the required parts ready to go.
In any case this whole thing should come after the user has had a chance to experience the product.
But that’s just me.
I ain’t no power-to-be ;)
Thanks for the feedback!
We need a user account to store your progress: what puzzles you've completed, what code you've entered in order to save progress if you didn't complete the puzzle yet, coding streaks, etc. We're not collecting information about your device (or any other personally identifiable information other than the Google Account we associate with your account).
It's been easiest for us to do this user account creation using out-of-the-box Google Authentication, so that's why we went down this route. Hope that makes sense!
Please remove the need to create an account or login anywhere. Or make it optional so that those who do want to login, can. I would prefer the default be to not create/login to any account and an optional login flow for others.
Thanks!
So I couldn't test it.
It's been easiest for us to do this user account creation using out-of-the-box Google Authentication, so that's why we went down this route. Hope that makes sense!
First, you should ask for an account creation only when the user have already started. As I said, I didn’t even see if it was interesting at all, because of the login wall.
Second, if there are no sensitive information collected, there is no need of using a mountain to hit the nail. A pseudo will be enough. No email needed. Not sure if it even need a password... You store the pseudo locally and you are done.
(I agree I’m a little bit oversimplifying, but you see the point)
Heather — Curriculum Manager for Grasshopper here :)
That's the simplified Haitian flag.
The small teaser image you're seeing is the Haitian flag: blue at the top, and red at the bottom (the white is simply the background color).
The aim of that puzzle is to change the bottom stripe from yellow to red; changing the Ukrainian flag to Haitian.
Hope this helps explains things :)
We think there's a bug that's hitting some folks on Play Store that's related to an old manifest from our Beta 9 months ago... but we don't require those permissions anymore. Or at least we shouldn't. If you do see something when you actually try to download it, could you reach out to grasshopper-support@google.com? We're trying to find instances of this occurring and trying to convince the Play Store team it needs to be fixed :-/
This isn't a great experience for us or other developers, so I'm escalating internally. Thanks again for the report.
I found it interesting to hear the kinds of reactions the kid was having to it: if you skip around the video you'll see the most common reactions are jumping around between distress, frustration, and anger.
I don't think that's because this is a bad app.
Instead, I think that's probably a natural part of learning to program—and of programming even once you've learned. It's kind of a strange thing that something which can bet net enjoyable (oftentimes) can also so typically elicit those kinds of reactions (of course adults are better at suppressing them, but the impact must still be there).
I have no reason to suspect the same thing isn't happening here.
The ticket was eventually closed with status "unfortunate"
btw is there a login system you'd prefer? I'd love to forward any thoughts you have to the Area 120 leadership.
These things aren't really teaching "how to code" (what we associate with stuff like Java, Python, etc.), but "how to think like a computer" or "how to break down and solve problems." I wonder if there would be an equally pessimistic reaction if the headline and marketing material said that instead.
I think a lot of being a successful developer comes from being able to think a certain way, and I think that these types of games/toys can definitely help children learn to think that way. I remember the Dr. Brain games giving me some of my first glimpses into this kind of literal, step-by-step thinking.
I must say I love the attention to details! I was impressed by the effort that seems to have went to design the error detection - I start to mess with an example, and the messages tell me exactly what I'm missing at the right level of abstraction. Like, I forgot to to the next line when drawing blocks, and the popup explains I should use newLine(). Or, in another case, the popup telling me that yay, I have row 1 and 3 of the solution correct, and need to work on row 2. Etc.
Also the little details made me smile - like being able to replay the "jumping grasshopper" animation on success screen by tapping the grasshopper.
The keyboard model used in Grasshopper is something I first seen in Hacked (http://www.hackedapp.com/), and it seems to be catching on, which is great! Now I really wish someone would make a keyboard for Lisp like that; I could do some work while standing in a bus...
Edit: a Google account sign in, however, isn't that charming. I got a 404 on trying to log in. Oh well.
We know a reasonable amount about teaching programming, and in particular we know that traditional methods are really bad. Most people, when they teach programming, reproduce the poor traditional methods used to teach them.
There is already a large quantity of "learn to code" apps and sites. We don't need more. We need more quality.
https://kotaku.com/google-s-new-word-game-is-fun-but-weirdly... Google's New Word Game Is Fun, But Weirdly Into Brands
I think a lot of the "bad stuff" can be seen as an advantage. Like for example:
- Lack of strong typing - User don't have to bother with the data type at first, they go directly into the logic
- Typecasting when comparing - faster for quick comparison. E.g. if a user wants to check if the input of the user is equal to a certain number, he doesn't have to cast it as an int/float/whatever before, he just does "10" == 10 and it just works.
And also, its greatest strength I think is the fact that it's the language of the web, and web development has the lowest "barrier to entry", because all you need is a notepad and a browser and you can easily develop and test.
Anyway, as many people have pointed out, I don't think it matters that much what language you start with, because it makes you learn the logic of programming, which is then transferable to all other languages anyway.
I do expect a lot of people to install it, use it for 5 minutes, and never bother with it again. It's a perfectly suitable way to push people out of programming because there's no way you can get a real feel for it with a smartphone. All of the 'learn to "code"' applications that don't involve writing actual software seem like a giant waste of time and effort to me.
Can they please just stop putting their fingers in every pie? I WANT Free coding lesson websites, but not from google thanks. They should stick to github with their contributions.
It's difficult to enjoy our lives, with these corporations strolling in like "IS THAT FUN WE SEE?!?!" (because they're giants)