Coding with a Chromebook

Coding with a Chromebook
0

I am a total noob(I don’t know a dam thing) when it comes to programming but I would really like to learn. I have a chromebook and have been reading that it can be somewhat of a headache to learn on. Should I invest in a PC? Thanks.

Absolutely!

It is possible but it’s going hinder you and greatly reduce your options often. You can often find a good used/refurbished windows laptop for less than many chromebooks.

ThanKs texxs. Thats what I was thinking after reading around.

You can keep ChromeOS, especially because you’re already familiar with it. For the beginning where you start learning it should be fine.

But when you need some advanced software, you can read this post https://stackoverflow.com/a/45211120/8605830

You’re fine. You may have to get a little inventive, but there are cloud based solutions for any software that you can’t install locally. Honestly, the size of the screen would be the part that bugs me the most.

Edit As of ChromeOS verison 69, you can install a beta version of a Linux shell on select Chromebooks. This is now the easiest, most supported, and most stable way to start coding locally on a chromebook. So if your shopping for a Chromebook, definitely look ahead to make sure it can or will support this feature. (Most newer Chromebooks should support this feature)

The way this works (as I currently understand it :wink:) is once you turn on this feature ChromeOS will run a VM that manages a Debian container. The Terminal app that is added to your Chromebook apps drops you in an instance of this container. Because this container is Debian, (what Ubuntu is based off of) you can install basically any package as you would on a Debian or Ubuntu Linux distro.
If you want to install VSCode just install it the same way you would on Ubuntu or Debian. If you don’t know what a VM or container is, don’t worry its very easy to use and turn on this feature. I provide the inner workings for those who are more curious, but the average user can get this going pretty easily. Knowing what your doing once you have a Linux going is another story haha.

One of the most important aspects of this feature is how secure it is. Due to the multiple levels of security around the Linux apps, your Chromebook is still extremely secure during this process, unlike the previous approaches which require turning on Developer mode. This is one of the main focuses of the ChromeOS’s team when developing this feature, so rest assured your chromebook will still be one of the most secured OS’s after turning the feature on.

There are still some kinks that need to be ironed out. At the time of this posting GPU Acceleration is still not supported for Linux apps. As such apps like VSCode might run much slower than expected, as your Chromebooks graphics card isn’t used to handle rendering, only the CPU. Better support is in the pipeline, but might take a while to arrive to stable. (Some Chromebooks, like the Pixelbook have flags that can be turned on to enable this feature ahead of time, if your on the beta channel)
Other support, like USB, and Linux to audio support is still flaky, I heard these are fixed, but its possible only in upstream channels (beta/canary) and not yet in stable.

I think Chromebooks are an excellent, and affordable way to get computing to the masses. With features like Linux support, Chromebooks go from “just a browser” to much more. Hopefully this will open up more ways for more people to get started with programming :smile:

Finally I’d like to say thanks to @danh4648 for pointing out this out-dated post so I can update it.


Due to the fact this is directly support by ChromeOS, provides the most power, and is being updated and managed by the ChromeOS team, I recommend this approach over all my previous recommendations before. Online IDES like stackblitz, and Codesandbox are still great easy to use alternatives, but being able to get a full Linux environment with little to no setup makes this an extremely powerful and easy to use option. As such, I’m hiding my previous post(s), since most of its advice has gotten very outdated :slight_smile:

If your serious about development, nothing beats being able to run Linux apps :smiley:

Previous post(s)

Edit as of today (March 1st) codeanywhere is not longer free, instead you get a 7 day trial. Since codeanywhere and cloud 9 where the best full, free online IDE options and are now no longer free, the options for programming on a chromebook is pretty different. Essentially you now are stuck with codesandbox (a new comer, I haven’t’ used, but I have heard good things about) or some form of local Linux installation. I still recommend the crostini approach, since it is being handled by google developers and provides the most native development environment possible. But if this is not an option, codesandbox and simpler online ides (codepen, stackblitz) are the only options left, unless your willing to pay (I don’t go over these options)

Edit since writing this post, there has been a tectonic shift in terms of capabilities of some chromebooks. This is due to project crostini, which brings an officially supported way of running linux apps on a chromebook. Without getting to technical you get the following:

  1. A linux (debian) VM where you can install/ run basically anything you want, the same way you would on an Ubuntu system.
  2. You don’t need developer mode, so you get to keep ChromeOSes top of the line security.
  3. Currently no usb/pereferals support, GPU driver support (games will run like garbage), and no audio support. All of these are planned, but not available as of this writing.
  4. Only available to some chromebook models. (you can find updated lists by googling around, google adds support for more models often)

There’s a great reddit thread on getting started with this approach. It requires some technical knowledge, but is far less than either of the dual-boot, or chromebrew approaches. Most importantly you don’t need to put the chromebook in dev mode, as I’ve found it to be a rather large security risk.

With this new approach, a lot of chromebooks could basically get something like VSCode running. There are still lots of limitations, I mentioned the big ones above, but there are a few other one I’d like to bring up. This approach and many other approaches just don’t work for most budget chromebooks (which are around ~200$) if you want to run anything complicated. The lack of RAM/HD and CPU horsepower on most chromebooks make development rather difficult past the “notepad+run script” stage.

This project does give you unprecedented choices of applications, you can get chrome apps, chrome extensions, android apps, web apps, PWAs and linux apps on one machine, effectively making chromebooks the OS that has the most available apps (take that windows). Unfortunately its very obvious the experience with most of these (besides the web ones) is going to be shaky, or missing massive features native apps get.

Regardless, I personally recommend taking this approach to at least try things out since it’s very easy to rollback if you don’t enjoy the experience (you can create/add/destroy the VM containers very easily to reclaim the memory). It’s always pretty cool to be able to run Linux apps, but you need a solid machine to get anything out of most apps.

(original post)


A chromebook enthusiast here (I’m on my chromebook right now going thru the FCC ES6 section :smile: )
I also wanted to be clear I provide this with focus on web development if you wanted to go learn C or java development, id recommend getting a real machine or be prepare to “hack” your chromebook (Ill go into that option for web development too)

So there’s a few things, chromebooks are fine for learning but you might have to take a few different approaches depending on what your learning. If your just starting out learning web development and using FCC or something similar (where you do most of your code in FCC, or a place like codepen) you’ll be fine.
But if you wanted to move out of this realm, into a more realistic development environment you will have three options.

  1. Use a cloud IDE, like Cloud 9, code anywhere, or stackblitz (amazing for those react/angular developers out there :wink:) These all provide an ability for you to work on projects, by providing an interface similar to the one you would have if you were using something like VSCode, Atom, or webstorm.
    I personally recommend this option since it allows you to carry over your work to a new PC/ other PC’s, or heck your friend’s PC fromwhere ever you left off, its pretty freaken cool no doubt haha. It also wont require you to do anything to your chrome book per say.

  2. “Dual boot” your chromebook with crouton which allows you to install a linux distro “next-to” your chrome OS one. This will require you to turn on developer mode on your chromebook, but provides the a true development environment with a real linux OS. The coolest part is being able to switch between ChromeOS and your linux VM with a click of a button (!).
    If dual booting your chromebook sounds scary don’t worry about it to much. Almost everything important on a chromebook should be in the cloud, thus you can wipe/reset/redo your chromebook as much as you want without any major repercussions.
    Obviously this takes a little techie knowledge, but you can get the most out of your machine with a real OS. You will run into some performance issues due to the fact most chromebooks aren’t very powerful and running two OS side by side isn’t the most optimal situation, but for most basic web development work you should be ok.

  3. Use chromebrew to “package” your way to a development environment.
    This is probably the most interesting option, where you put your chromebook into developer mode, but install this to get access to common packages that run allow your chromebook like any linux distro. You can easily get npm, node, and git to get a basic setup going.
    This option is really situational, I had a couple of issues with getting node and npm to work, and running a web-server is a pain. But it might work better depending on how hard you try, but I wouldn’t recommend it for a beginner unless your ambitious.

notable mentions
Chromebooks can act as a dumb terminal for any web server. If you want to be a pro hacker and use Vim as your editor you can easily find yourself at home SSHing into a remote dev sever and doing all your work there. Again this is pretty advanced, but worth a mention of an “optimal” chromebook development environment.

Final words
Using online editors you can get pretty far when learning, but your mileage will vary depending on what approach you pick. I did an entire project on cloud 9 from my chromebook + random computers I had access to at the time. So yes its possible but it isn’t straight forward or common. The main thing is, a lot is possible, but you might have to work for it with a custom environment, or settle for an online IDE.

Hopefully that sheds just a little light on getting going with a chromebook :laughing:

PS. Cloud 9 used to be free, now you have to pay for the sever time you use, since it was bought out by AWS. I heard Code anywhere is good, but I haven’t used it to much so I cant recommended it beyond what I heard. Stackblitz is awesome as hell, but defiantly oriented toward quick mockups, demos. It also primarily is used for React and Angular frameworks, but should work fine for general JS projects.

3 Likes

You could use AWS’s Cloud9 (free but requires a credit card), another option would be coding on Google App Engine (not sure if it also requires a credit card off top of my head) and using Google’s in browser IDE. You could configure Crouton on your Chromebook and run Linux apps on it. You can also use https://glitch.com or https://codepen.io if you’re more focused on front end development.

Thank you for the info.

I like codeanywhere.com myself and not just because they have lower prices subscription options. But because they give me more options that i need to work on different websites easily, like I can FTP into a website with their tool instead of SSH if I want to.

I don’t the Google App Engine even has a code editor… isn’t it just about infrastructure, like koding.com?

Also codeenvy.com is an online IDE that no one has mentioned, have they? as is shiftedit.net

If your Chromebook has the PlayStore, then you can use DroidScript to create Chromebook apps for both your Chromebook and your phone. It’s super easy to use, comes with tons of examples and lets you use JavaScript to create native apps.

The time may have pasted for this but i like too use Repl.it as a online ide. I also have a usb with ubuntu on it i can boot up. Just make sure it is a quality usb with a good bit of memory. There are many sources to get the info you need to make it possible. Honestly it is quite easy. I would expend these options before you run out and buy a brand new machine. Just to be sure you are committed. Hope this is useful for some.

1 Like

You can now set up linux on a chromebook without dual booting: https://support.google.com/chromebook/answer/9145439?hl=en

I did this on my acer 14 chromebook and it is awesome.

Hidden gem in Glitch – if you open their console it reveals that it’s a full (mini) Ubuntu instance. Ruby, Python, and apt all in attendance. It’s probably the most versatile of the online editors available now since you can do back and front end work. Keep in mind that it is a very limited server but it is a place to start and it’s free. They’re planning paid upgrades.

This feature finally got to some chromebook models a few months ago, where some chromebooks can start up what is essentially a Linux container within a VM. More and more features are still arriving, and most Chromebooks are getting support for this feature. I’ll update my original post soon going over this new feature :slight_smile:

I wouldnt yet using repl.it ( A website ) you can code easily on a chromebook but I would upgrade later once you see if you like coding

what do you feel about repl.it its great for begginers and hosts websites for you for free

2 Likes

I posted it about repl.it too I didnt see your post :slight_smile: