CodeAnywhere Detailed Review
CodeAnywhere is a cloud based IDE solution, that offers customers a place to develop directly into a cloud. Like Nitrous however, it is missing some core features like hosting options and I found it a bit messier to use than Nitrous. Overall I give it a slightly better score, due to it’s affordable tiers (My Score: 3/5.) Personally, I will continue to use installable solutions such as JetBrains IDE’s.
In a previous post, I unleashed on a Cloud Based IDE solution by Nitrous.io. At one time I really liked Nitrous.io as it was a great platform for new developers and students. However, once Nitrous dropped their free tier, I could no longer support it and detailed my findings in my past review. At the current price point, it makes zero sense why anyone would purchase a Nitrous.io plan, instead of going with JetBrains (at least from the single contributor price point.)
Another Cloud Based IDE has come to my attention: CodeAnywhere.
The first question someone might ask, why use a cloud based IDE? As I stated in my previous review with Nitrious, I’m not so hot on the idea of coding in a cloud based environment. However, good quality installable IDE’s are somewhat expensive. By that I refer to JetBrains (my favorite) IDE platforms.
I like to work locally, and commit to github. Anyone on a team could simply pull down my commits. The idea of working in a cloud really doesn’t suite me per se. However, there are several interesting aspects to IDE solutions like CodeAnywhere:
- Support for Multiple Languages and Frameworks
Like Nitrous.io, CodeAnywhere also supports many diverse languages and frameworks, including a few I hadn’t heard of before (like Node’s Sails framework.) Yet there is a serious omission (Java, which I discuss later.)
Cloud based IDE solutions like CodeAnywhere and Nitrous offer a variety of frameworks for the teams that seek their solutions out. But an individual developer will have some focus in general. Outside of the InfoSec community, I don’t know many people who are developing in 3 or more divergent languages. If you’re into Java/Spring, then that’s all you’ll probably care about. So you’ll find an IDE that suits you.
For testers and those in security, you will be writing code in Python one day, Ruby another day, modifying some C or Java… Having access to all the languages in a supported IDE is really awesome. But will it be as awesome for you? I guess it depends on your needs.
Right now, notice that Free Tier – it says FOREVER. This was a big issue with me and Nitrous. Nitrous had a free tier for a short time and dropped it. CodeAnywhere is offering a free tier forever… that’s pretty great for students and the like.
I regularly pick up students, whom I teach QA Engineering practices and InfoSec studies. A large part of this will involve writing code in Ruby, Python, C or Java. I used to recommend JetBrains for my students as I found RubyMine, PyCharm, IntelliJ and CLion to be extremely useful and more user friendly than the free installable IDE’s like Eclipse.
However, the first complaint I would get from my students was, “Do I really need this? It costs $80!” In the case of IntelliJ it costs considerably more.
While there are free versions of IntelliJ IDE’s (such as the community editions), some IDE’s like RubyMine exclude community editions and require the user to pay up.
This is where CodeAnywhere can help a new developer. With CodeAnywhere, you’re getting an IDE (similar to Nitrous in design) but they have a FREE tier and an affordable tier (from $2/month up to $40/mo.)
$2 a month is affordable by everyone. Simply omit buying one Super Sized soft-drink a month and you can afford it… but if you can’t even afford $2/month, then there is a FREE tier as well.
Those CodeAnywhere Frameworks…
However, not all is wonderful (at least for me.)
Right off the top, I feel like the vibe of CodeAnywhere is targeting PHP developers… PHP isn’t in my field of view, nor anyone I currently associate with. Outside of testing PHP, I never work write it.
So check this out… I decided to create a new Container, and here’s the language choices available as preinstalls (as of this writing (in order)):
- Blank Dev Stack (ubuntu or centos)
- PHP 7
- Laravel (PHP Stack)
- Mean (Node JS Stack)
- Symfony (PHP Stack)
- Sails (Node.js Stack)
- Meteor (with Node.js)
- Ember (with Node.js)
- io.js (with Node.js)
- CakePHP (PHP Stack)
- Drupal (PHP Stack)
- LoopBack (Node.js Stack)
My god, how many PHP stacks are there? If you’re into PHP this must be like heaven. Unfortunately I don’t really know many people doing active development in PHP. Sure, it still exists and is maintained, but new development (from teams I work or know) is almost always: Java, Java/Spring, Ruby/Rails, Python/Django. In rare cases I know teams using Groovy/Grails and Scala. Even more rare, I meet people who are updating PHP sites (but not new development.)
The 2nd most mentioned framework in the container list above, is Node.js. These containers are like a PHP guru and a Node.js ninja got together and developed their perfect brain child with a smattering of other alternatives….
The order is important to… it tells me who they are catering to. This isn’t alpha ordered. We see PHP at the top in droves, then Node.js then, Ruby, Python C…
But what is amazingly shocking is the omission of Java. Seriously? Where’s Java? I’d expect to see, Java/Spring as a pre installed Stack Option – it’s one of the most popular frameworks for web development and has been for oh… 10+ years… it’s the reason why JetBrains IntelliJ is vastly more $$ than their other language IDEs.
As I went to google and typed: CodeAnywhere… Google auto completed with
…codeanywhere java stack
Evidently this is a hot searchable item… so why is it missing as a container default? Searching on google I found CodeAnywhere’s own blog:
According to CodeAnywhere, their most utilized languages are those in the Framework listed above (i.e. HTML/PHP/JS)… That doesn’t correlate however to the world at large… and in which case the same article above also presents the most used languages from IEEE.org, and of course Java is at the top. So why is Java not offered as a language container? I was hoping they would have Grails and Scala… but truly expected Java to be a preset.
Looking for Java
I did some google searches for codeanywhere and java and came up with some confusing references.
One Google hit, was the CodeAnywhere FAQ… but when I went there, it was a 404 https://codeanywhere.com/faq … another page was https://support.codeanywhere.com/entries/31026625-3-7-DevBoxes which talked about something called a DevBox (referred to as a VPS) which would support Java… however the documentation there appears 2 years out of date and no longer correlates to the current CodeAnywhere session I have open.
Their marketing info on the CodeAnywhere editor (https://codeanywhere.com/features/editor#editor) does list their editor having Java syntax support… But on the container page (https://codeanywhere.com/features/editor#container) Java is missing.
I was going to ask their support staff what’s up, but at 2pm PST, the online support chat was listed as “No one is available at this time.”
Kicking the Tires
Despite my frustration with the lack of Java support, I went ahead and created a container for Rails. I figured I’d give it a small go and see what I did or did not like.
I created a container for the Ruby language… it came with:
- Ruby of course
Why is Node.js being foisted on me here? How many people really use Node in their Rails projects? I suspect not a whole lot, so I’m not sure why that was thrown in… is good? is it bad? Probably neither, just odd.
Project Refresh Issues
While in the Ruby container, I created a new rails project:
rails new blog
After about 30s it was done and I could cd into the blog folder…. however the Project tree hadn’t updated (see below):
To rule out the browser being the issue, I tried this in Chrome as well as Safari. Both browsers wouldn’t auto refresh the project pane.
In order to keep up with the project changes I guess we get used to right clicking the project and “refresh”ing each time? In fact it seems this is the case. I ran through the default setup of a rails tutorial and each step of generating a controller, view, etc. required me to right click the project pane and manually refresh, to see the changes.
CodeAnywhere IDE: Menu Contex actions are Missing
I can’t recall if Nitrous.io does this, but most installed IDE’s today (like RubyMine) that support MVC architectures, like Django and Rails will allow you right click somewhere in the project and do a New > Generator > [model/view/controller/scaffold]
CodeAnywhere doesn’t support that for Rails at least. All commands have to be run via the SSH console.
In a way this is good for a student, to learn the commands, but for actual development, I really prefer using the IDE to create and generate this stuff. Even running rake routes from the IDE is preferable to me, than from the command line. It’s my personal preference. It may or may not matter for you…. but I generally don’t like to memorize all the iterations of commands in the frameworks I work in from day to day. I’d rather just click through to the action I want via some contextual menus.
CodeAnywhere IDE: Buggy
While I could run: rails server from the command line, when I ran the server from the “run Project” button in the IDE, it would error with “bash: rails: command not found.” It referenced my Rails project (RubyTest) but wouldn’t run if ran via the IDE buttons… it did work as a command line action.
CodeAnywhere IDE: Rails Server
After running rails server from the console it started… but I can’t figure out what address to hit to view the server. In Nitrous I recall they had this as menu option. The menu options here don’t easily lend me to find where or how I can hit my local Rails Server that’s running, in a browser.
I’m sure it’s there, but I couldn’t find it.
CodeAnywhere IDE: Lack of Ruby auto completion
I’m comparing this feature to an IDE like RubyMine by JetBrains. In RubyMine, if I were to type:
def new and hit enter, it would auto close it with an end, like so:
CodeAnywhere doesn’t do any auto completion… but more concerning than that is the lack of error identification… for example, if I typed:
and didn’t finish closing it, no contextual highlighting appears (warning the user of a code issue), one of the main reasons to use an IDE.
CodeAnywhere IDE: Highlighting
Again, comparing to RubyMine, the CodeAnywhere IDE’s Ruby container doesn’t highlight the block you’re in. That is, if you had several methods in a class, and clicked on the end of one of them, in RubyMine it highlights the method start. Useful if you’re dealing with some hairy code. Here there’s no indication when you click the beginning of a method (or the end) of the block you’re in.
Part of kicking the tires is not only giving the editor a spin, but also checking the deployment process… With Rails, Heroku is a common solution. So I googled: codeanywhere heroku and got this hit as the first in the list: https://blog.codeanywhere.com/tag/heroku/
As of this writing, the link above loaded without any content…
The second link I found on my google search was something from their Twitter account:
Unfortunately, as of this writing, that bit.ly link too (which redirected to https://blog.codeanywhere.com/deploy-to-heroku-feature-now-on-codeanywhere/?utm_content=buffereee29&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer) loaded as a 404:
Giving Up the Tire Kicking
I had high hopes for this solution as it is free, but if I can’t find links that actually work – after about 3 or 4 failures I give up in frustration.
The IDE itself is ok performance wise. I never had any lag when I used it, although I didn’t get too far into it due to some issues experienced with deployment, etc. Writing code, the editor did seem fine, but with all web based solutions, I imagine that there will be laggy days and periods.
Here’s the deal… this seems to target PHP development and I’m not a PHP developer. The PHP containers might be a completely different experience. I went with testing the Ruby container. I found the Ruby experience to be very lacking. The lack of the project refreshing each action, contextual menus, auto completion or at least auto highlighting of significant code issues are serious points of frustration for me.
Another big drawback is the lack of Java supported Containers. If you want to complete with Nitrous, you’re going to have to take on what they offer… I’d recommend CodeAnywhere offer Java and it’s derivatives as viable containers: Java, Java/Spring, Java/Akka, Java/Grails, Java/Scala.
There are tons of Machine Learning teams utilizing Java/Scala… there’s so many markets they could touch if they added more language/framework support out the door.
However, being that this IDE is Free and very affordable, I imagine if you’re working in Node.js, PHP, Ruby or Python it might be a nice alternative to a $80 IDE for one language. In my case, I’d prefer to pick up the JetBrains community editions of IntelliJ, PyCharm and CLion… and pay for RubyMine.
Overall I give this product a 3/5… I like that they offer a FREE forever option, as well as a slew of affordable tiers, however the overall functionality and buggy interface (like the Run action in the IDE not working but rails server works fine from the console) just leaves me not yet offering it to my students, friends or family.