Learning programming on a Chromebook?
Tags: discuss, chromebook
Published: 2019-11-17 17:07:15

Is anyone coding on a Chromebook here?

I want to do programming workshops and I'm wondering what laptops to provide to my students.

MacBook Pro are too expansive and I didn't use Windows since 10+ years.

I started to wonder: what about Chromebooks?

My results so far: *not perfect but a lot of potential, Chromebooks can do more than you think*.


# You can do a lot in the browser

* [awesome-online-ide | 🌩️ A list of awesome online development environments](https://ide.ceriously.com/)
* [https://jupyter.org/](The Jupyter Notebook - live code, equations, visualizations and narrative text, data science)
* [CodePen: Build, Test, and Discover Front-end Code.](https://codepen.io/)
* [Create a new fiddle - JSFiddle](https://jsfiddle.net/)
* [AWS Cloud9 Amazon Web Services](https://aws.amazon.com/fr/cloud9/)
* [Codenvy](https://codenvy.io/site/login?redirect_url=https%3A%2F%2Fcodenvy.io%2F)
* [Snack - React Native in the browser](https://snack.expo.io/)
* [Codeanywhere · Cross Platform Cloud IDE](https://codeanywhere.com/)
* [Play and Try NativeScript on Your Device – {N} Playground](https://play.nativescript.org/)
* [Glitch](https://glitch.com/)
* [Wide - 随时随地玩 golang](https://wide.b3log.org/login)
* [Datalore](https://datalore.io/)
* [MATLAB Online - MATLAB & Simulink](https://www.mathworks.com/products/matlab-online.html)
* [Repl.it - The world's leading online coding platform](https://repl.it/)
* [The Go Playground](https://play.golang.org/)
* [Rust Playground](https://play.rust-lang.org/)
* [TypeScript playground](https://typescript-play.js.org/)
* [Python Tutor - Visualize Python, Java, C, C++, JavaScript, TypeScript, and Ruby code execution](http://pythontutor.com/)
* [Codeboard · the IDE for the classroom](https://codeboard.io/)
* [Kotlin Playground](https://try.kotlinlang.org/)
* [Paperspace - Cloud machine learning](https://www.paperspace.com/) - suggested by @realsaddy
* [Data Science on a Chromebook: How to run Jupyter, Python, & R locally in ChromeOS](https://alex.miller.im/posts/data-science-chromebook-pixelbook-jupyter-python-r/) - suggested by @alexpmil


And what's better for teaching than a zero-setup environment?

# Then you can install any Android app

You may have heard Apple saying that Chromebook are bad because you can do nothing offline.

This is completly wrong now that Chromebook can run any Android app published on Google Play.

For example I needed a chat app and a clipboard manager, I just had to install Telegram for Android and Clipper for Android

Read: [Install Android apps on your Chromebook](https://support.google.com/googleplay/answer/7021273?hl=en)

# Then you have Linux native app

As explained by [the official documentation](https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md)

> Crostini is the umbrella term for making Linux application support easy to use and integrating well with Chrome OS. It largely focuses on getting you a Terminal with a container with easy access to install whatever developer-focused tools you might want.

Setup here =>  [Set up Linux (Beta) on your Chromebook](https://support.google.com/chromebook/answer/9145439?hl=en)

---

I was able to install

- Visual Studio Code https://code.visualstudio.com/download
- Android Studio 3.6 https://developer.android.com/studio/preview
- I could install everything java related with https://sdkman.io/
- I could install node, python, ...
- IntelliJ IDEA community edition for Kotlin development

![Screenshot 2019-11-17 at 17 58 40](https://user-images.githubusercontent.com/459464/69010867-f082cf80-095b-11ea-8576-e2bf9c0a2447.png)


**Update**: I would not recommend doing Android programming on a Chromebook for now. You can install Android Studio yes. But to actually program on it, you will be asked to wipe your chromebook and install the insecure developer mode. Don't do it. Wait. 

# What's not so great

# Slow builds?

It matter less when you are learning programming, you are not typically compiling huge projects. 

But still Chromebook are not exactly powerful. 

Buy the best Chromebook you can find if you intend to use them for development. 

Speaking of which: the best Chromebooks seem to be US only. I had troubles finding them in Europe.

Or maybe we can delegate the build process to an external server with much more power? 

**Edit**: that looks doable in fact.

{% github https://github.com/buildfoundation/mainframer %}

{% github https://github.com/Instamotor-Labs/mirakle %}

Or just plain old `ssh`, `git` and `rsync`.

## Documentation? 

But most importantly, documentation sucks right now, if it's available at all.  You have a weird variant of Debian installed, you don't really know what works, what doesn't. Not a lot of people are using a Chromebook for development either, so you feel a bit on your own.~

**Update:** I have found the kind of documentation and community I wish I had when I started. 

* https://www.reddit.com/r/Crostini/ [Containers and VM support on Chrome OS]
* https://www.reddit.com/r/Crostini/wiki has more information
* [Chromium OS Docs - Running Custom Containers Under Chrome OS](https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md)


## Others

Linux apps look ugly right now

I wish there was a way to automatically setup a Chromebook for development purpose, like I'm doing on macOS with http://dotfiles.github.io/

**Update:** 

{% devcomment i03d %}