Learning programming on a Chromebook?

Jean-Michel 🕵🏻‍♂️ Fayard - Nov 17 '19 - - Dev Community

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

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

Then you have Linux native app

As explained by the official documentation

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


I was able to install

Screenshot 2019-11-17 at 17 58 40

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 logo buildfoundation / mainframer

Tool for remote builds. Sync project to remote machine, execute command, sync back.

Mainframer

A tool that executes a command on a remote machine while syncing files back and forth The process is known as remote execution (in general) and remote build (in particular cases).

Mainframer helps to move heavy operations (like compiling the source code) from a personal computer to a dedicated machine. This way you, as a developer can use your machine for changing the source code or browsing the documentation without constant freezes and hearing jet engine-like sounds caused by the build process. The execution itself is not limited and can be applied to actions like encoding audio and video, batch processing and more.

It works via pushing files to the remote machine, executing the command there and pulling results to the local machine.

$ mainframer ./gradlew build
Sync local → remote machine...
:build
BUILD SUCCESSFUL
Sync remote → local machine...
$ java -jar build/libs/sample.jar
This program was built on
…
Enter fullscreen mode Exit fullscreen mode

GitHub logo Adambl4 / mirakle

Gradle plugin to move build process to remote machine.

Mirakle

A Gradle plugin that allows you to move build process from a local machine to a remote one.

Compatible with Gradle 7.0+. Works seamlessly with IntelliJ IDEA and Android Studio.

Why

Remote machine supposed to be much performant than your working machine Also having a sufficient network bandwidth or small amount of data that your build produce, you gain build speed boost.

Mirakle is designed specially for Gradle build system. It works as seamless as possible. Once plugin installed, you workflow will not be different at all.

(It's a good thing to prank your colleague. Imagine his surprise when one day he gets several times faster build time.)

5 minutes read on Medium by Guillermo Merino Jiménez & David Pastor Herranz

Long read on habr.com in Russian by LuigiVampa

Setup

  • Put this into USER_HOME/.gradle/init.d/mirakle_init.gradle on local machine
initscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'io.github.adambl4:mirakle:1.6.0
…
Enter fullscreen mode Exit fullscreen mode

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.

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:

If you are part of G Suite. (for Education if associated with a school) there is a way to push programs to Chromebooks. From Google's support site on this:
As a Chrome Enterprise admin, you canuse your Admin console to set policies for a specific Chrome app, extension, or supported Android app. For example, you might force-install an app and pin it to users' Chrome taskbar.
See support.google.com/chrome/a/answer...

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player