Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Visual Studio Code for Chromebooks and Raspberry Pi (headmelted.com)
136 points by headmelted on Feb 26, 2019 | hide | past | favorite | 51 comments



I got excited for a moment because I thought this might solve one of my minor problems as a K-12 CS teacher. Every school I've taught at is 1-1 with chromebooks and to be able to code on them so far I've set up a Raspberry pi and had students use the Secure Shell App from the Chrome Store to connect to the Pi. This comes with the overhead of needing to teach them to use ssh, basic linux commands and text-based interfaces in general and using nano (simpler than vim). But I'd love to skip all that and just let them code on their machines. Alternatively, I've used websites like codepen or repl.it to have them code online but this has the downside of requiring an internet connection (fails occasionally so need to have back-up lesson plans) and privacy concerns of having students sign up (my first district required companies to sign a data sharing agreement before this was allowed).

Unfortunately, I'm not able to install Ubuntu on the student chromebooks and they don't support linux apps so this solution will work for me.


I have an idea for you. Why don't you setup your own mini-local area network and host an open source solution similar to codepen (search for "open source web-based IDEs")? Then every student can connect to your LAN and access the IDE as well as store the data in your local server (You can back it up to S3 on a daily basis as well). It shouldn't cost much and will solve your connectivity and data privacy concerns.


There are some issues, 1) SSL/HTTPS certificates, which is needed for some browser functionality. 2) Access to the IDE when doing homework, etc. Hopefully the LAN and municipal network is reliable enough. I'm currently working on a web IDE, message me if you are interested and I will help set one up on your LAN.


I think Eclipse Che is something you should consider. Heavy, but considering that as a teacher you have to reset environments very often (after the kids screwed up), I think a container based runtime platform is sweet.


Sadly it depends on your school's policy.

The builds should work on all Chromebooks, but you need to have one of:

1) An Intel or ARM64 Chromebook with Google's official Linux Apps support. This is the easiest path, and most likely to be available to you in education. You can install the relevant build from the GitHub releases page.

2) The ability to enable developer mode on the device. The scripts linked in the post will automate setting up an Ubuntu jail and installing the builds of Code into it.

Theoretically this gives 100% coverage of devices, but only if you're not restricted by the school/IT department.


Doesn't yet work on enterprise enrolled Chromebooks (as most schools use). I'm eagerly awaiting your feature for similar reasons.


Let me experiment with setting up an enterprise account and getting a look at this. This is the biggest reason for the project to exist so I'd like to find a way around this if I can.


An alternative to forcing them to the command-line, you could use http://guacamole.apache.org/ so they could run VSCode on the target machine via VNC or RDP. That way nothing needs to be installed on the chromebook: it is just visiting a web application over HTTP(S). I've used it to gain access to my remote machines from an environment where the only possible outgoing connections were HTTP(S).

Of course the target machines need to be beefy enough for all the students to be running VSCode and any compilation & output on at the same time, which almost certainly rules out a single rPi! You'd need a much larger machine or a little farm of Pi-class units.


Out of the box, Chromebooks are really not intended to do much other than consume web-based content, including sites like CodePen or other web-coding interfaces. It seems like you've explored those options fairly well.

If you can't modify the machines to run full Linux environments (ala crouton), you're mostly stuck with web-based experiences, or the apps provided to you by the Chrome Web Store.

Teaching your students to SSH into a Linux box and teaching them basic BASH skills is pretty worthwhile in itself. You seem to have made the best of a quirky situation.


This is no longer true, at least for some Chromebooks. There is support for running Linux apps in a container:

https://support.google.com/chromebook/answer/9145439?hl=en

https://chromium.googlesource.com/chromiumos/docs/+/master/c...


Crouton changes this. Modern Chromebooks with Intel chips make a very reasonable dev environment.


The parent says they can't install a new Linux userspace (unless I misunderstood). I only assume this applies to crouton as well.


Technically, he probably can install crouton but that isn't such a good idea in a school environment as you need to enable developer mode on the device and you lose some of the security features of Chrome OS.


Chrome OS now supports a fully secure Linux environment. Perfect to play around with.


Sounds like you don't really have the tools to do your job. I'm not sure I ever would have started programming if I wasn't able to program my own computer. It's a shame because they'll learn that sshing is some intrinsic part of programming and it's such a barrier to entry.

What I would definitely do is set up something better than nano for them. Emacs works like a charm over ssh with full syntax highlighting, intuitive UI, and powerful features. Find (or make) a nice little config for them.

There is also Jupyter and Jupyter Hub which might be good for you. Essentially an on-prem Web-based environment. While I think teaching at a lower level is better for serious computer science, this could still be good for young people.


> Emacs works like a charm over ssh with full syntax highlighting, intuitive UI, and powerful features.

If the teacher is worried about having to teach ssh/bash before they can start programming I would strongly believe emacs is out of the picture.


Nano has unfriendly keybindings too.

At least with emacs, you could load a key map which gives them modern keybindings and give them a print out[1]. There's a built-in CUA mode too. That way they get better syntax highlighting, indentation and backup files for free. They don't have to /learn/ emacs.

I strongly agree with you though that the last thing you want to is throw up all these barriers to students getting started with programming and am appalled that the kids and teacher have to put up with the pi and shell solution.

[1] https://github.com/darkstego/wakib-keys#ctrl


The problem with emacs are not the keybindings. One example is that if you move the cursor and then shift-delete it deletes the whole you have moved; that is a not so nice surprise.


That is a keybinding.


Why do they need "modern key bindings"? They are children. They don't come with one arbitrary set of bindings pre-learnt.


+100

You shouldn't have to install Ubuntu or a native Linux app just to be able to write some code on a Chromebook.

If you're interested, I've been working on a Monaco-based editor for Chrome OS (just like VS Code) that doesn't require installing Crouton nor a native Linux app. Works fully offline and performs pretty well on low-end hardware.


Would AWS Educate and Cloud9 work?


right, or install it in your own local server


I think you'd get far more traffic if you linked to a page that actually has information (https://code.headmelted.com/) instead of to the list of builds!

In any case, this is awesome and I'll definitely give it a try


Thanks, we've updated the link from https://github.com/headmelted/codebuilds/releases.


Thanks for this, wasn't sure which was best to use.


Ah, I see we're still doing "run the output of this url as root" installation..


That's how all executable code is distributed outside of a package manager.

Ever downloaded an EXE on Windows or DMG on Mac? It's the same, except you can inspect the code doing it this way if you were worried.


Good thing nothing bad ever happened because someone ran an EXE they downloaded off a Web site...


Windows will complain if you download and try to run an unsigned exe. While APT packages can be signed, wget|sh can't be, so it's comparatively easier for someone to trojan the website and distribute malware.


Interesting, for what it's worth you can already run VSCode on Chromebooks using Intel processors.

It's my preferred editor right now on my Pixelbook running from the Embedded Linux container beta.


I wasn't sure which was the better link to post but I've written about exactly this here:

https://headmelted.com/visual-studio-code-for-arm64-67c19625...

Basically it's the ARM and ARM64 support that's new. For anyone who has a device that supports the official Linux apps containers I steer them down that route, the Crouton method is kept around for older kernel devices (as their out of luck wrt official Linux support, sadly)


Thanks for your efforts, as a long time Chromebook user I am truly impressed particularly with the Crouton build for those of us with the original Pixel and no Android apps.

Currently I am not in Developer Mode and I have a linux box for running a different IDE. I am okay with my Pixel being for testing and non-dev things.

So, before I powerwash the thing and get Crouton working again (which I am slightly loathed to do since the five year support period is over), could I please have a few screen shots? I hope I am speaking here not just for myself but for others with a loved but dated Chromebook and questions about how this would work in the file-less world of ChromeOS where I am not so likely to be able to sync my files to a remote server. If I am to swap over to a different IDE then I need a few pictures to persuade me that the efforts are worthwhile. The Pixel (original vintage) has the best screen/keyboard/trackpad/speakers/design of any laptop ever made even if the CPU is a bit lame by today's standards and the battery doesn't last all day. So it would be nice to code on.


The main seller here is ARM support for a modern IDE.

A few years back, my "main" machine was a Samsung Chromebook 2 (13") running Xubuntu (Ubuntu with XFCE) via crouton. Surprisingly snappy and quite useful as a thin client/web coding machine.

My biggest gripe back then was the lack of Sublime builds for ARM machines. This then, would be pretty welcome to anyone in that niche.


> The main seller here is ARM support for a modern IDE.

pretty sure all the common linux IDEs, QtCreator, KDevelop, Gnome Builder, etc. work fine on ARM


Trouble is (and I say this as a full-time Linux user and developer) all of the above are terrible IDEs.


QtCreator is really great.


you'll pry qtc from my cold dead hands :p


Emacs and Vim work fine on ARM.


Very true. I admit I am a heathen who relies on cursors far too much. Let's reframe that as GUI-based IDEs.


Emacs and vim have GUIs.


Great to see you’re still at this Jay, I remember the original post from a year or so ago, very nice work!


This is cool, but I'd love to hear what others have setup as far as developer setup with their Chromebooks? Do you use VS Code locally and actually run your servers/terminals on a VPS? Something more clever locally with Docker or a VM?



Explanatory post of the new parts (inc. ARM64)

https://headmelted.com/visual-studio-code-for-arm64-67c19625...


Apart from the project itself, it seems contact section link does not work. I guess it should be anchored to page header. Interesting project anyway, +1 star on Github :)


Thanks, will get a look at the contact link and patch it up.

The star is appreciated! :-)


What (kind of) code changes were required?


No changes to the code itself - these are builds of the OSS Code from MS' Github.

In terms of the builds themselves, they're using Archie:

https://headmelted.com/introducing-archie-cbf77a7a64fb

(on Github at https://github.com/headmelted/archie)


Has anyone tried this? How does this perform?


I run it on a Chromebook Flip and a RPi 3.

It runs well for the light projects I use it for, and I've yet to encounter plugins that don't work - although I'm sure they exist.




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

Search: