I'm a veteran of the UK's Golden Age of Computing too, teaching myself first BASIC and then rapidly advancing to assembler on the ZX Spectrum as a teenager. Without that experience I shudder to think what I might have ended up doing for a living.
And I too have been through the same dilemma with my kids. I haven't got far trying to enthuse them with the RPi - even when I got Minecraft running on it, they complained it was too slow...
There was also the huge problem of choice. We had no choice - you learned the language of the system you had. For a couple of years I struggled to choose a language to introduce my son to. A friend of mine even bought an old BBC Micro so he could teach his kids the Old Ways!
But perhaps I over-thought it. A year or so ago I made an arbitrary decision and showed my son how to run Python from the command line, and he picked it up pretty fast. But then he started complaining that he couldn't work on it when he was at school (such is their expectation of cloud ubiquity). Now he's just turned 14, and I've discovered he's developing a pretty ambitious text-based adventure game, still in Python, but using a cloud-based IDE (cannot recall the name).
So whilst I admire the project - the more the better - I think to a certain degree the tools are already there and as long as they're given the seed of interest the kids will go out and find them for themselves.
It looks like this, and anyone who grew up with the BBC Micro will instantly recognise it:
RISC OS 192MB
ARM1176JZF-8 Processor
Piccolo Systems SDFS
ARM BBC BASIC VI (C) Acorn 1989
Starting with 97040636 bytes free
>_
That's also Acorn's structured Basic, with fast named procedures and multiline control statements, so it's actually reasonable for writing real programs in. It's pretty much COMAL. There's no structured types, unfortunately --- it's still a 1980s language --- but you get still get instant feedback that a traditional micro gave you (and the traditional Basic IDE experience, but I believe they also include the full-screen editor).
Roguelikes are an easy path into programming. For an easy start, find a well-done 7-day roguelike in your favorite language. For example, z-day is in python (http://sheep.art.pl/Z-Day). Someone learning C might like Day @ the Zoo (C - http://www.happyponyland.net/zoo.php).
Haha, yeah, it's probably hard to get kids to "make" with tech these days instead of just "using" it.
Because much stuff is already there and back in the 90's, when I was in my teens, things looked a bit different.
But funny thing is, even in 2000 people in my school laughed at me for wanting to be a software developer.
"Why do you want to create new software? Everything is already created! I can play games, I can download videos/music and watch it, I can talk to other people online, what else do would you create that isn't already there?!"
What did we have since 2000? Facebook, Twitter, Smartphones, etc.
I did several years of programming in high school. Our teacher had first learned to program in BASIC on TRS-80 and wanted us to have the same first introduction, so we actually started with a gentle introduction to programming on TI-83 calculators in TI-BASIC which we did for about a month (for a year long first year course). My fun achievement was a Tic-Tac-Toe game that could play as 2 player or with an AI. It was pretty crude how I accomplished it, but it played well.
Looking back, it was a great idea, because it is one of the few ways to get the feel of retro computing and programming, along with its advantages to getting started, that is still useful and relevant. My TI-BASIC knowledge continued to be helpful into college.
I seem to recall that the initial plan for the OLPC was that everything was done in python, because they wanted the kids to explore and modify.
BTW, i recall Intel showing off a variant of the python interpreter being run directly from GRUB. Would have been interesting to see that ported to RPi. Also, i think there was someone working on a Python CLI that could replace bash etc.
I'm still amazed that Google hasn't released their own IDE on ChromeOS and Android yet. Their Pixel series are lovely premium devices with a Unix underpinning that could become the default option for developers
Last time I tried to use a Chromebook for development (using crouton to have a proper unix environment), you had to enable developer mode. This presented a 30-second splash screen at boot saying 'press space', where pressing space would wipe your drive, resetting the machine. The machine also does this if the drive becomes too full. I can't go back until they sort these issues.
What I would like to see, and they're effectively doing this already by allowing the Play Store on Chromebooks, is a sandbox INSIDE the encrypted area, but outside of the signed code.
Basically, an official container support in user space that once you enter developer mode allows you to keep the security features you have currently (signed boot-code checking, encryption), but also a restricted container that allows for native apps like this.
Then we could get rid of the Developer Mode splash screen, or at least allow it to be disabled by choice.
I actually just asked my friend that works at Google about this the other day. It turns our they have an internal tool called CIDER that is exactly this. A great IDE for Chrome books that lots of people at Google use.
I use it on my Chromebook quite a bit. It makes for a reasonable on-the-go environment running Node on the Linux crouton side and editor, output on the ChromeOS side
It's a bit clunky, but you can pull up Chrome Developer Tools on a ChromeOS device, create a workspace in Downloads, and with a bit of fiddling persuade DevTools to map the files directly to disk. Now you can use DevTools as a pretty good HTML/JS/CSS IDE with debugger integration, editing the files directly in the DevTools window with proper syntax highlighting etc.
AFAIK there isn't any way to get VCS integration (but I have a faint memory that DevTools extensions are possible?), but it's a great deal better than nothing.
...and, of course, if you dev unlock the device, you can install Crotoun and get a full Debian system side-by-side with ChromeOS. Then you can do what you like.
This is my go to dev environment right now, on Pixel 2. I rarely have to restart the machine, and I backup the linux chroot to the gigantic drive space they give you for free. So if anything ever did happen, I could reload like nothing. Also it's just fun.
There is a moment in time when a technology is at a stage where individual amateurs or small teams can be on the cutting edge. For my Dad's generation that was homemade radios, for my generation homebrew PCs. Recently it seems like Drones and 3D printing have been at that stage where enthusiastic hobbyists pushed the technology forward.
Maybe in twenty years people in this forum will be trying to think of a way to get their children excited about hacking drones or building phone apps.
"For Chromebooks" is rather misleading. It would be better titled, "For ARM-based Linux distros". The setup installation includes the following:
Download crouton.
Create a chroot on the local device based on Ubuntu 14.04 (Trusty Tahr).
Install Visual Studio Code into the chroot.
Install git into the chroot.
So it's not natively compiled for Chromebooks as a Chrome/Android app. Instead you're just installing crouton and then putting Ubuntu onto it. With all due respect to these guys, crouton has been around for some years[0]: I had it installed on my Samsung ARM Chromebook in 2012 and used it for coding.
It's also worth noting that putting your Chromebook into Developer Mode will wipe the device, so if you decide to do this, make sure all your local files are backed up first.
There were a couple of options for doing this in a way that may not have required a chroot, but the bigger issue then is: how do you install Ruby? or Python? or [whatever]?
I'd think it fairly necessary to have a full Linux environment (and ideally good package support) underneath the IDE in order to actually work with the editor. And it works quite well in practice due to the integrated terminal that's running full Ubuntu (as you've said, due to the chroot).
The comment is fair, but I've tried to explain this as clearly as I can in both the website and the installation script itself (there's a confirmation explaining exactly what will be done and what that means, although I obviously try to keep it as straightforward as I can without obscuring anything - at least not intentionally).
The native part refers to the architecture. It executes natively on ARM, rather than through some kind of emulation solution (like QEMU) that would make it untenable in practice (I've been dogfooding the scripts with this for some time while trying to polish the process).
The instructions also mention that you can just install into an existing chroot as a standard apt-get install call for anyone that has one set up already and knows what they're doing, although it should also work side-by-side.
I'll review the website in light of your comments though, to see if there's anywhere this can be made clearer!
I really hate seeing posts on Chromebook forums where some asks of they can do 'X' on a Chromebook and the answer is "Yes" but then goes on the mention crouton. It's like going on a Mac forum and saying that yes your Mac can do that if you install Windows.
I was super excited to see this post, until I realized I've been doing what it suggests for 6 months now. I use my Pixel as my primary development machine, but it's only because of Linux. I've learned a lot though, and enjoy it.
Yeah, I use a Chromebook as my main browsing machine and I've been so disappointed with it's capabilities. For some reason, I thought Google would make some efforts to make the ChromeOS a tool for developers on-the-go, but they've just seemed to shit on the entire lineup except for the Pixel.
> My own first experience of writing code was transcribing BASIC from one of these magazines to draw pyramids against a night sky.
What he's doing is great. But the premise that it'll help kids learn is flawed. People starting off don't need the best tools. Like the author, I started with BASIC. Nowadays, it'd be Python. It needs to be easy, not perfect (god knows BASIC, Pascal, etc have huge flaws). Visual Studio is complete overkill.
Visual Studio Code is "just" a fancy text editor, similar to Sublime or Atom, not a variant of Visual-Studio-the-giant-IDE. Having a good text editor they'll find in other environments as well is IMHO quite valuable for that goal.
I sort of agree with you. I also started on BASIC on an Atari 800XL. What really got me hooked was the immediately result of it. It booted up into an environment where I can enter code directly, run it directly, debugging was a little painful and had to use prints. But the path to seeing something happen was pretty straight forward with very few obstacles.
In today's computer, I can't see any environment that would do that.
If my kids are presented with Visual Studio, I think they would spend the majority of their time clicking on the thousands of buttons on the ribbon, perhaps.
His perception of the history of computing in UK schools differs to mine. It's not especially important, just seems a bit rose-tinted.
Prior to ICT - meaning Information [and] Communication Technology - there's was IT. In IT we learnt to make teletext pages, use databases (choosing whether they should be computer ones or not), did DTP (eg newspaper layouts), learnt to type, made graphs, played text-driven games.
There was no Computer Science at GCSE (perhaps it was a subject prior to that) and very few schools, none in my town, did it at 'A' level.
I started programming at primary school age copying out of an intro book that came with an Acorn Electron. AFAIR there were no opportunities during my schooling to learn actual programming, I'd have lapped that up.
That's a real shame. Maybe it was up to individual schools how much they bought into it.
I was amongst the last generation of people to take 'O' levels (ISTR that GCSEs came in two years after me?), and our school had computer science as both an 'O' and 'A' level option. Our little sixth-form BBC Micro lab (networked via 'Econet') was where us nerds and geeks hung out (although we didn't know we were nerds or geeks back then).
After I left school for many years I just assumed that things had carried on as they were. It was only years later that I learnt about ICT and the damage (IMHO) it had caused. :-(
I know very little about the working of both Linux and Chrome OS. So here's a question:
On a Raspberry PI, one would typically use the command line, right? So does this VS Code install with a kind of GUI? Of do you need to install a window-manager-type-thing first?
Unless you are accessing the Pi over SSH you will probably be using a GUI. VS Code will be running inside the window manager (LXDE). It's not something you run from a CLI.
The main version of NOOBS has X starting by default these days. Even the standard Raspbian image has a GUI, but you can use the lite version for headless servers (https://www.raspberrypi.org/downloads/raspbian/). This is similar to Ubuntu Server but different to NOOBS lite, which is just a small network installer.
I got a Raspberry PI 3 to use as a web server a few months ago, and the Raspbian OS image I downloaded for it had a full blown GUI. It even had a version of Minecraft on it.
The BBC micro's legacy lives on in the BBC micro:bit, launched earlier this year: http://microbit.org. Some of the 'editors' (programs that handle writing code visually or textually, and transmit it to the bit) do run in the browser.
The author says a lot of traditional software won't run on the Raspberry Pi, because it uses ARM.
Maybe that's true for proprietary software. But the Pi can run any open-source project you throw at it. I used one as an (admittedly slow) development box for a while.
Not sure if you can do this on a Chromebook, but I set up samba shares on my Pi and connect to it using my desktop PC. This way I can use all my beloved programs and tools on my PC and then run it through my Pi.
I know he's talking about the cost and not necessarily being able to afford a full fledged PC, but this could work for some.
There are a few options I've been looking at that could yield improvements in this area.
1) Install the play store, if your chromebook supports it. Then something akin to Gnuroot Debian, and set up the environment that way. Install the package, and then forward the X11 window to something like "XServer XSDL". Tricky to explain to people, and I couldn't get it working when I tried for a few different reasons.
2) Add a side-by-side node.js server inside VS Code. This would effectively serve up the HTML/CSS/Javascript inside the window and the user could just use the web browser. By launching on boot this would have the neatest integration with Chrome OS, as you could pin to shelf and then it's just a http://localhost:XXXX URL. Even if the web content could be forwarded in this way I think re-implementing the Electron calls for the web could be a lot of work, and it probably belongs as an alternative Electron implementation I would think. The upside is that you wouldn't need dev mode as this could also run under e.g. GNURoot.
These are a couple of ideas I've had. Would be eager to get someone from Microsoft's take on it though. :-)
It shows my own homebrewed Desktop environment running in a browser window with a Monaco based editor open. So it's doable, but it would need quite a bit of work to beef it up to VS code abilities.
As someone who's never owned one, I think there is something called 'crouton' which makes a chromebook into sort of like a low-end ubuntu laptop. Given that I've run VS code on Ubuntu with 2gb ram, it seems like it should be doable.
I'm the founder of Repl.it (https://repl.it) and our aim is to make programming more accessible. In addition to being an easy-to-use online programming environment free for everyone, we are currently focusing on classroom environments (https://repl.it/classrooms) for some of the reasons you mentioned. Many teachers come to our site because they find themselves in Classrooms where half of the students use Chromebooks which makes it really hard (impossible?) to install any native IDEs or compilers.
Just lengthy article on why software should be portable. Just doesn't contain the word "portable". And also whole HN comments page doesn't contain the word "portable".
This is just some text editor called "Visual Studio Code", not Microsoft Visual Studio and its compilers, right? It doesn't include compilers, debuggers, or libraries, does it?
[+] [-] 3chelon|9 years ago|reply
And I too have been through the same dilemma with my kids. I haven't got far trying to enthuse them with the RPi - even when I got Minecraft running on it, they complained it was too slow...
There was also the huge problem of choice. We had no choice - you learned the language of the system you had. For a couple of years I struggled to choose a language to introduce my son to. A friend of mine even bought an old BBC Micro so he could teach his kids the Old Ways!
But perhaps I over-thought it. A year or so ago I made an arbitrary decision and showed my son how to run Python from the command line, and he picked it up pretty fast. But then he started complaining that he couldn't work on it when he was at school (such is their expectation of cloud ubiquity). Now he's just turned 14, and I've discovered he's developing a pretty ambitious text-based adventure game, still in Python, but using a cloud-based IDE (cannot recall the name).
So whilst I admire the project - the more the better - I think to a certain degree the tools are already there and as long as they're given the seed of interest the kids will go out and find them for themselves.
[+] [-] david-given|9 years ago|reply
http://weblambdazero.blogspot.ch/2015/11/modern-micro-with-r...
It looks like this, and anyone who grew up with the BBC Micro will instantly recognise it:
That's also Acorn's structured Basic, with fast named procedures and multiline control statements, so it's actually reasonable for writing real programs in. It's pretty much COMAL. There's no structured types, unfortunately --- it's still a 1980s language --- but you get still get instant feedback that a traditional micro gave you (and the traditional Basic IDE experience, but I believe they also include the full-screen editor).[+] [-] cturner|9 years ago|reply
[+] [-] k__|9 years ago|reply
Because much stuff is already there and back in the 90's, when I was in my teens, things looked a bit different.
But funny thing is, even in 2000 people in my school laughed at me for wanting to be a software developer.
"Why do you want to create new software? Everything is already created! I can play games, I can download videos/music and watch it, I can talk to other people online, what else do would you create that isn't already there?!"
What did we have since 2000? Facebook, Twitter, Smartphones, etc.
[+] [-] gtk40|9 years ago|reply
Looking back, it was a great idea, because it is one of the few ways to get the feel of retro computing and programming, along with its advantages to getting started, that is still useful and relevant. My TI-BASIC knowledge continued to be helpful into college.
[+] [-] digi_owl|9 years ago|reply
BTW, i recall Intel showing off a variant of the python interpreter being run directly from GRUB. Would have been interesting to see that ported to RPi. Also, i think there was someone working on a Python CLI that could replace bash etc.
[+] [-] pbhjpbhj|9 years ago|reply
Could/does he use github and an online REPL from school?
Interested as I've been learning Python to use with my slightly younger kids.
[+] [-] canuckintime|9 years ago|reply
[+] [-] fredley|9 years ago|reply
[+] [-] headmelted|9 years ago|reply
Basically, an official container support in user space that once you enter developer mode allows you to keep the security features you have currently (signed boot-code checking, encryption), but also a restricted container that allows for native apps like this.
Then we could get rid of the Developer Mode splash screen, or at least allow it to be disabled by choice.
[+] [-] ZeroCool2u|9 years ago|reply
[+] [-] Lerc|9 years ago|reply
I use it on my Chromebook quite a bit. It makes for a reasonable on-the-go environment running Node on the Linux crouton side and editor, output on the ChromeOS side
[+] [-] david-given|9 years ago|reply
AFAIK there isn't any way to get VCS integration (but I have a faint memory that DevTools extensions are possible?), but it's a great deal better than nothing.
...and, of course, if you dev unlock the device, you can install Crotoun and get a full Debian system side-by-side with ChromeOS. Then you can do what you like.
[+] [-] pjmlp|9 years ago|reply
Google could replace the kernel with something else and only OEMs would notice.
[+] [-] Pigo|9 years ago|reply
[+] [-] wnevets|9 years ago|reply
[+] [-] georgeecollins|9 years ago|reply
Maybe in twenty years people in this forum will be trying to think of a way to get their children excited about hacking drones or building phone apps.
[+] [-] 3chelon|9 years ago|reply
[+] [-] AdmiralAsshat|9 years ago|reply
It's also worth noting that putting your Chromebook into Developer Mode will wipe the device, so if you decide to do this, make sure all your local files are backed up first.
[0]: https://github.com/dnschneid/crouton
[+] [-] headmelted|9 years ago|reply
I'd think it fairly necessary to have a full Linux environment (and ideally good package support) underneath the IDE in order to actually work with the editor. And it works quite well in practice due to the integrated terminal that's running full Ubuntu (as you've said, due to the chroot).
The comment is fair, but I've tried to explain this as clearly as I can in both the website and the installation script itself (there's a confirmation explaining exactly what will be done and what that means, although I obviously try to keep it as straightforward as I can without obscuring anything - at least not intentionally).
The native part refers to the architecture. It executes natively on ARM, rather than through some kind of emulation solution (like QEMU) that would make it untenable in practice (I've been dogfooding the scripts with this for some time while trying to polish the process).
The instructions also mention that you can just install into an existing chroot as a standard apt-get install call for anyone that has one set up already and knows what they're doing, although it should also work side-by-side.
I'll review the website in light of your comments though, to see if there's anywhere this can be made clearer!
[+] [-] bsharitt|9 years ago|reply
[+] [-] Pigo|9 years ago|reply
[+] [-] cryptrash|9 years ago|reply
Probably the last Google-backed device I'll buy.
[+] [-] guitarbill|9 years ago|reply
What he's doing is great. But the premise that it'll help kids learn is flawed. People starting off don't need the best tools. Like the author, I started with BASIC. Nowadays, it'd be Python. It needs to be easy, not perfect (god knows BASIC, Pascal, etc have huge flaws). Visual Studio is complete overkill.
[+] [-] detaro|9 years ago|reply
[+] [-] yitchelle|9 years ago|reply
In today's computer, I can't see any environment that would do that.
If my kids are presented with Visual Studio, I think they would spend the majority of their time clicking on the thousands of buttons on the ribbon, perhaps.
[+] [-] oswamano|9 years ago|reply
[+] [-] pbhjpbhj|9 years ago|reply
Prior to ICT - meaning Information [and] Communication Technology - there's was IT. In IT we learnt to make teletext pages, use databases (choosing whether they should be computer ones or not), did DTP (eg newspaper layouts), learnt to type, made graphs, played text-driven games.
There was no Computer Science at GCSE (perhaps it was a subject prior to that) and very few schools, none in my town, did it at 'A' level.
I started programming at primary school age copying out of an intro book that came with an Acorn Electron. AFAIR there were no opportunities during my schooling to learn actual programming, I'd have lapped that up.
[+] [-] saw-lau|9 years ago|reply
I was amongst the last generation of people to take 'O' levels (ISTR that GCSEs came in two years after me?), and our school had computer science as both an 'O' and 'A' level option. Our little sixth-form BBC Micro lab (networked via 'Econet') was where us nerds and geeks hung out (although we didn't know we were nerds or geeks back then).
After I left school for many years I just assumed that things had carried on as they were. It was only years later that I learnt about ICT and the damage (IMHO) it had caused. :-(
[+] [-] neals|9 years ago|reply
On a Raspberry PI, one would typically use the command line, right? So does this VS Code install with a kind of GUI? Of do you need to install a window-manager-type-thing first?
[+] [-] jsingleton|9 years ago|reply
The main version of NOOBS has X starting by default these days. Even the standard Raspbian image has a GUI, but you can use the lite version for headless servers (https://www.raspberrypi.org/downloads/raspbian/). This is similar to Ubuntu Server but different to NOOBS lite, which is just a small network installer.
[+] [-] headmelted|9 years ago|reply
Raspbian now ships with PIXEL, for example, but I tend to have a preference towards XFCE for my own use (very lightweight).
In any case it should "just run" after installing, but if anyone has any trouble please let me know!
[+] [-] detaro|9 years ago|reply
[+] [-] 13of40|9 years ago|reply
[+] [-] fredley|9 years ago|reply
[+] [-] TazeTSchnitzel|9 years ago|reply
Maybe that's true for proprietary software. But the Pi can run any open-source project you throw at it. I used one as an (admittedly slow) development box for a while.
[+] [-] Mike_D_Brooks|9 years ago|reply
I know he's talking about the cost and not necessarily being able to afford a full fledged PC, but this could work for some.
[+] [-] lifeisstillgood|9 years ago|reply
Finding the time is always tough so having schools that support it is important
[+] [-] ktt|9 years ago|reply
Oh, I just found a issue for that: https://github.com/Microsoft/vscode/issues/1031
[+] [-] headmelted|9 years ago|reply
There are a few options I've been looking at that could yield improvements in this area.
1) Install the play store, if your chromebook supports it. Then something akin to Gnuroot Debian, and set up the environment that way. Install the package, and then forward the X11 window to something like "XServer XSDL". Tricky to explain to people, and I couldn't get it working when I tried for a few different reasons.
2) Add a side-by-side node.js server inside VS Code. This would effectively serve up the HTML/CSS/Javascript inside the window and the user could just use the web browser. By launching on boot this would have the neatest integration with Chrome OS, as you could pin to shelf and then it's just a http://localhost:XXXX URL. Even if the web content could be forwarded in this way I think re-implementing the Electron calls for the web could be a lot of work, and it probably belongs as an alternative Electron implementation I would think. The upside is that you wouldn't need dev mode as this could also run under e.g. GNURoot.
These are a couple of ideas I've had. Would be eager to get someone from Microsoft's take on it though. :-)
[+] [-] Lerc|9 years ago|reply
It shows my own homebrewed Desktop environment running in a browser window with a Monaco based editor open. So it's doable, but it would need quite a bit of work to beef it up to VS code abilities.
[+] [-] divbit|9 years ago|reply
[+] [-] amasad|9 years ago|reply
[+] [-] andrey_utkin|9 years ago|reply
[+] [-] rbanffy|9 years ago|reply
[+] [-] Animats|9 years ago|reply
[+] [-] castratikron|9 years ago|reply
[+] [-] riprowan|9 years ago|reply
[+] [-] bitwize|9 years ago|reply
[+] [-] unknown|9 years ago|reply
[deleted]