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://jupyter.org/
- CodePen: Build, Test, and Discover Front-end Code.
- Create a new fiddle - JSFiddle
- AWSΒ Cloud9 AmazonΒ WebΒ Services
- Codenvy
- Snack - React Native in the browser
- Codeanywhere Β· Cross Platform Cloud IDE
- Play and Try NativeScript on Your Device β {N} Playground
- Glitch
- Wide - ιζΆιε°η© golang
- Datalore
- MATLAB Online - MATLAB & Simulink
- Repl.it - The world's leading online coding platform
- The Go Playground
- Rust Playground
- TypeScript playground
- Python Tutor - Visualize Python, Java, C, C++, JavaScript, TypeScript, and Ruby code execution
- Codeboard Β· the IDE for the classroom
- Kotlin Playground
- Paperspace - Cloud machine learning - suggested by @realsaddy
- Data Science on a Chromebook: How to run Jupyter, Python, & R locally in ChromeOS - 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
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
- 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
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.
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
β¦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
β¦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
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...
Top comments (30)
I use my chromebook for development on the go, it works great. Apps feel fast to me, Jetbrain products work like any other distro. For more demanding tasks, I wait till I get to my main desktop or use paperspace.io
What are the minimum specs of a chromebook to do some serious server side dev ? Is it still SSD and >=8GB RAM like in most laptops or there are native apps that can save you some RAM?
I find high-end Chromebooks a bit expensive.
I would need you to elaborate on "serious server side", but I have a HP Chromebook x360 14-14" FHD Touch - Core i3-8130u - 8GB - 64GB eMMC - White and Blue and use it for IntelliJ and GoLand
Serious server side example: Writing an API by leveraging well known tools and frameworks (jetbrains, vscode maybe django or spring), having a db server hosted locally and potentially leverage docker builds. All those running locally, not on a cloud environment
Are jetbrains products working without performance issues? Do they provide a lighter version or is it the pure linux one?
I suppose everything under 8GB Ram cannot be considered as a good choice for local dev, right? (As with "normal" laptops)
I haven't tested it, but docker builds will probably be slow
Jetbrains apps have a slower startup time, but they are fast after that. Normal Linux distro
I have an HP X2, and I do try and code on it. Using crostini to run a terminal and VS Code works OK. It's a little slow and sometimes crashes. However I've done a decent amount of coding on it. When I serve a website via node/npm - it launches properly in Chrome and works well. GUI git clients are hit or miss - so I've had to get better at using the terminal for it. It's definitely not my primary machine. I code primarily on a windows laptop and it's significantly easier. But it's a plausible novelty
I agree with the "it's definitely not my primary machine part".
This is why I framed my post about the potential for a classroom of students learning programming. Education is an area where the Chromebook are established already, and the parameters are quite different here:
Would Raspberry Pi fit your use case? Without peripherals (keyboard, mouse, monitor), each one is less than β¬100. And you can set up one of them, then copy the SD card to have exactly the same setup on each Pi, really easily.
Thanks, I will investigate!
I do web development on a Chromebook. It's a fantastic lightweight tool. I don't have any hiccups with standard web dev.
Where I have to switch to a more beefy system is when I'm working with react native or building stuff with laravel/sql servers that I want to stay local. The workaround is just to use my other laptop, which isn't a big deal.
For most use cases, my Chromebook is fantastic.
Which Chromebook do you own and which tools? I am interested to do some backend dev on a cheap laptop and this sounds interesting
Did you manage to have less ugly fonts than me on the screenshot?
Nah, same ugly fonts. :-)
I even have my taskbar in the same spot!
I got a chrome book for my 12th birthday, and nobody expected me to get into coding, (least of all me) so my thoughts on linux for chromeOS might be biased. I used to have chromeOS (I replaced it with galliumOS). I got one with Intel celeron, 4 gigs RAM and 16 gigs storage (the average chromebook specs because high end chromosome are rare and expensive, not worth it). It was awful, apps would not run, or they would run incredibly slowly. The storage was awful (although I think that that was just the computer itself), and like you said, the linux distro is a weird debian thing. Lastly and most frustratingly, it was incomplete. You had a working mic and a camera that is not working, the
locate
feature, standard on most linux distros, (to my knowledge) was missing. I just had to switch to a full linux distro.However, I did like the fact that it you messed up, you could just press a few buttons and wait a few minutes to get a fresh new terminal, that encouraged me to explore the terminal. However, the cons far outweigh the pros.
I'm splitting time between a Chromebook and a Windows laptop, but I prefer my Chromebook. I highly recommend Archetype for native, offline coding: chrome.google.com/webstore/detail/...
I tried another text editor called Caret,
but the lack of git support rebuked me.
I feel it's super important on a Chromebook.
This is what motivated me to switch to Visual Studio Code.
How are you doing it?
Caret keeps improving and updating. For git, I'm learning the command line interface. Slowly.
hi, can you share the tools you used for git? I installed "nacl development environment" and can use git inside it. But I can't use Caret to access files in "nacl development environment"
I gave up on Caret and use visual studio code instead. it has git included
I run a Pixelbook i7 as my on-the-go machine and it's been working so far. Some tasks are horrible slow when compared to my other machines, but for straight programming and running some low-end tests here and there my Pixelbook can handle it while providing my usual VSCode setup.
I started out using Cloud9 (when it was free) with a 200$ Chromebook, and feel like I should re-check out some of the alternatives you provided above. I never got rid of the feeling that Chromebooks have the potential of being the new age version of dumb terminals, which provides excellent accessibility and security by leveraging the web.
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...
Thanks for the tip, I have added it to my post.
So far, the Jetbrains IDEs have basically been Godsends, minus a weird DNS issue (which I've fixed) and some weird memory issues that I've been having (which I may have fixed), and the fact that the Linux environment runs Wayland, so sudo is weird! IntelliJ Idea and Android Studio have been amazing for Java/Kotlin/Andoid development!
Hi Jean-Michel, great post! Please also check out a post of mine on how to set up a data science programming environment on a Chromebook: alex.miller.im/posts/data-science-...
Update: I have found that it's too early for doing Android development on a Chromebook.
Yes you can install Android Studio.
But to do more, they ask you to wipe your Chromebook and make it insecure by enabling the developer mode.
Don't do it.
A Minimal Chromebook Setup for Development & Hacking
Peter Benjamin γ» May 6 '18 γ» 7 min read