I've started going through the Getting Started guide for Google's Material Design Components for Web (MDC Web). This is a prerequisite for Material tutorials and I've already run into one problem traced to an out-of-date installation of Node.js. Given that I'm learning a new piece of software, I'm sure I'll run into more problems that require modifying my computer. As mistakes are likely due to my learning status, I'm wary of potentially messing up my main Ubuntu environment.

What I need right now is an enclosed sandbox for experimentation, and I've already set up virtual machines I could use for this purpose. But since this is a web-based project, I decided to go all-in on the web world and try doing it online with a web-based development environment: Cloud 9.

Cloud 9 logo colorI've played with Cloud 9 before, back when it was a startup with big dreams. It has since been acquired by Amazon and folded into the wide portfolio of Amazone Web Services (AWS). As far as I knew Cloud 9 has always run on AWS behind the scenes, but now a user is exposed to the underlying mechanisms. It means we now have better control over the virtual machines we're running, which is mostly good. It also means users have to pay for those virtual machine resources, which is fairly inexpensive (I expect to pay less than $1 for this experiment) but isn't as good as the "Free" it used to be. The saddest part is that it's no longer "point-click-go" simple to get started. Getting Cloud 9 properly setup means climbing the learning curve for managing AWS security and permissions, which can be substantial.

Access Permissions

AWS has an entire document focused on authorization and access control for Cloud 9. For someone like myself, who just want to play with Cloud 9 but also want to safely partition it off from the rest of my AWS account, the easiest thing to do is to create a new user account within my AWS dashboard. This account can be assigned a predefined access policy called AWSCloud9User, and that'll be enough to get started. When logged in to this dedicated account I can be confident mistakes won't accidentally damage anything else I have in AWS.

Network Permissions

With the power of fine-grained virtual machine control comes the responsibility of configuring it to act the way we want. When I last used Cloud 9, launching a piece of web hosting software on my VM meant it was immediately accessible from the internet. That meant I could bring it up on another browser window at my desk to see how it looks. However, this is no longer the default behavior.

When running my VM in the form of an Amazon EC2 instance like now, it has its own network firewall settings to deal with. Not only that, the VM is in its own private network (Amazon VPC) which has its own network firewall settings. Both of these firewalls must be configured to allow external access if I'm to host web content (as when exploring MDC Web) and wish to see it on my own machine.

There's a lot of documentation online for using Cloud 9. The specific configuration settings that need to be changed are found under "Previewing Running Applications" in section "Share a Running Application over the Internet"