changing old habits

I have been doing a lot of development on my Cr-48 lately.  And as I sit here coding away I wanted to note how useful chrome is to me as a developer.  As I have written about previously there is a plethora of web-based IDEs to develop with in Chrome OS.  So what I have been finding particularly useful regardless of the development environment is something any chrome user (I'm talking browser now, not OS) can utilize...the Chrome Developer Tools.  Before I received my Cr-48, the majority of my browser based debug sessions lived in Firefox with the amazing and powerful tool Firebug, but thanks to Google I was forced to try something new.  I thought nothing else compared to Firebug (I am not going to speak out against Firefox or Firebug as both are spectacular), but as I have familiarized myself with the Chrome tools I find they are just as powerful and robust.  I love how easy it is to inspect an element on the page and edit CSS and JavaScript, check network events, record a timeline, or just drill through local variables in the console.  So if you are like I was, before you move from chrome to some other tool just to step through your JavaScript in the console, stop and give the Chrome Developer Tools a try, you might decide to stay.

Chrome OS Everyday

Writing code in the browser with Chrome OS is an important item for me as a developer and there are a growing number of apps available to get your geek on in the cloud, but what else is awesome on Chrome OS?  Tons of things.  I have been almost exclusively utilizing my Cr-48 since early February at home, with the exception of my taxes (chrome beta/dev wasn't supported),  some photo management, the time when the developer build rendered the OS impossible to use (hooray for being a test pilot), and the occasional connection to my remote work computer.  So it is promising that I am able to find a replacement for everything I do on a computer in Chrome OS with limited exceptions.  What else?

I recently have been running some rigorous durability tests on my Cr-48, or I guess I should say Preschooler compatibility tests.  I realized this was needed when I arrived at my son's daycare to see a dozen preschoolers huddled around a computer clicking things and learning their letters, numbers, and sequences.  At home my son enjoys the stock windows Paint... a bunch.  What could I use on the Cr-48?  deviantArt muro is a cool choice although it took us a bit to get used to the track pad.  Of course the Chrome web store has many options like Poppit, a balloon popping game which really tests the durability of the track pad.  But one of my favorite apps is MeeGenius! Children's Books, which reads classic children's books out loud and highlights the words as it reads.  Our favorite kid friendly site is and has been the PBS kids site which as an avid PBS kids family is full of friendly educational games from our most familiar characters.

For me, I have recently been utilizing my Cr-48 to read books on Google Books.  It may not read super easy in direct sunlight, but I can read at night without a light.  There are tons of books, "over 3 million", which is enough to keep any reader busy for a while.  So there is plenty for everyone on Chrome OS, especially for everyday computer needs.

ShiftEdit web-based IDE

I have come to the conclusion that there is plenty of selection for online application development using a web-based development environment.  After trying out several online IDE's over the last few months I was asked by a reader to check out ShiftEdit.  I had read that this was an editor of choice for many on some of the Chrome OS forums where the question of what is used to develop on the Cr-48 usually shows up.  So I decided I would try out another IDE to get a feel for how it compares to others I have tried.


First off, bonus points for allowing Google (or Facebook) login.  After authentication, this feels like a desktop IDE similar to what I feel like in CodeRun, Cloud9, or Akshell (I usually test this by going full screen on my Cr-48 and say its good if it isn't obvious I am in a web browser).  Selection of file formats is diverse and allows for PHP, HTML, JavaScript, CSS, Perl, Python, Ruby, Java, or Text with built-in FTP support, which is nice for those who enjoy diverse development.  I tried to create a trivial web page and was pleased with the HTML editor with the exception of when I tried the split view (HTML and Design viewed at the same time) I found it hard to keep the focus on the HTML screen and ended up navigating away from the editor when hitting backspace to delete a
.  This is not a huge deal as I would likely not develop full time in split view.  



JavaScript editing is almost too full featured for my taste by default.  There is an auto complete feature that will auto close brackets in your code as you type.  I found that I was creating double closing brackets so I turned that feature off which was easy enough in the Edit -> Preferences menu.  However,  JSLint is a wonderful addition to any JavaScript Editor, and is fully configurable in the Preferences section (so if you don't like to be forced to use === instead of == you can allow that).


A feature that I've recently learned is important to me in an online IDE is allowing for multiple tabs to be opened at once.  ShiftEdit does this well. (I have been working a lot in Akshell for some recent development and the lack of tab support is nearly a deal breaker...along with the times when I log in and all the open files disappear and I have to select the current project again to restore the view).  There are many other features that I have yet to try in ShiftEdit which could be handy, though I'm not sure I'll try them out anytime soon.  Perhaps I will never need to utilize them.  


I have found I'm no longer sure what I'll be using as my web-based development environment (most likely a combination of many, just as I develop in a desktop environment).  I am fairly certain I have seen enough for now (of course if you have found "the best" one, let me know, I'll check it out) that I will be able to find the one (or two, or three) that suits my needs best.  Recently I've been trying all these IDE's out and sticking with the current flavor of the week only to later find out certain limitations or something that I preferred in a different editor.  This is no different than using a full featured text editor outside of Visual Studio for example to edit JavaScript or XML files because I don't particularly care for the way these appear in Visual Studio.  What I really need or want in a cloud-based IDE is still being defined as each one's limitations or offerings reveal themselves through  repeated use.

Cloud9 revisited

--- title: "Cloud9 revisited" date: 2011-04-03 comments: false tags: - JavaScript - IDE - chrome os - cr-48 ---
A while ago I tried to use Cloud9 IDE to code in the cloud on my Cr-48 and it was too buggy to even try to accomplish anything in it.  It now appears that the issues have been resolved.  I have been interested in learning some of the awesome that is node.js.  I could easily move to my Ubuntu partition, install and build node, and try it there.  However, I really like Chrome OS and I've really been enjoying my other Google V8 JavaScript engine based development with Akshell so why not try Node.js in the cloud too.  Cloud9 is the perfect place for this.

First let me say the the github integration with Cloud9 is super smooth.  To start editing a github based project just enter the github url and click "start editing".  So I created a new github repository and started a simple web server with node to see how it would go.  I checked out one of Ryan Dahl's (the creator of node.js) introductory videos to get a simple server created in my server JavaScript file.   Then I setup the server configuration in Cloud9 which only required me to tell it which JavaScript file to use and what command line arguments to send it (i.e. "node server.js") to get it running.  Cloud9 does not let you specify a port number like one would in a desktop environment, but they add a helpful hint when running a server "Important: in your scripts, use 'process.env.C9_PORT' as port and '0.0.0.0' as host."  So I modified the server file with the tip, clicked run and sure enough I created a node.js server.

I think using node.js on Cloud9 is up to par with any other web-based IDE.  One thing it lacks versus something like Akshell or Kodingen is the ability to deploy to a subdomain directly.  I can however build my app up (if I continue to use Cloud9 versus Akshell) and then deploy to a node.js hosting platform like duostack.  For now I plan on using Cloud9 to learn some node.js and see what things I can make with that.

A Better Web-Based IDE

After a few days this week without Chrome OS due to a fun error in the Dev build (though its never bad to be able to revert to Ubuntu), I am able to be a Cr-48 nerd again.  The other day one of the three readers of this blog tipped me off on Akshell, another online development environment, which I quickly dove into in order to compare it against some of my other favorites which I have checked out previously here, here, and here.  By far my favorite has been Kodingen, I still go to it to code around and generally geek it up.  This all may change.

Akshell is a brilliant development environment that utilizes JavaScript for not only the client-side programming, but also the Server-side.  There are many cool features to how apps are developed and integrated in Akshell, which can be found in their documentation here.  I have found the environment to be amazing to use utilizing the default "ak" library and their Model-View-Controller framework.  For my first test I tried to remake (and improve) the test site I created on Kodingen with Akshell.  I found it was super fast to build with the Akshell environment and enabled me to test and preview just as smoothly as Kodingen though I think the interface with Akshell is much easier to navigate (perhaps because most of the features in Kodingen are still disabled in its current Beta state).  I must admit that I did utilize jsFiddle to quickly enhance my HTML5 canvas that I had created in Kodingen and then simply copied the JavaScript to Akshell.  So what does a quick Akshell site look like?  See mine here.

One of the promising things about Akshell that I'll be getting into soon, is their relational database (PostgreSQL) that is accessible with their "Simple JavaScript API".  From the documentation and the quick test I did with their relation variables I have to agree it is simple to use.  I hope to get some time to get an app going that utilizes this database functionality soon.

I don't know if I like Akshell an better than Kodingen as far as functionality and features (they both let you code, use a database, and deploy directly within their apps) but I can say that Akshell seems to be a more elegant solution to the online coding environment so I will definitely be using it for my next online coding endeavor.

Comments

Oleg
Thank you for the great write up. Just FYI, we are working on two way jsFiddle integration.

JavaScript Heaven with jsFiddle

I may have finally found the perfect tool to build and test JavaScript concoctions on the fly (or at least a really cool one). I have been utilizing Kodingen (which is awesome) to code on my Cr48 and then flipping between the JavaScript code, css, html (I know I could put these all in the same document but navigating that is more exhausting to me that toggling windows) and rendered pages to test my script, styles, and html quickly.  This can get a bit cumbersome, and flipping between tabs or workspaces can get old very quickly.

So I was reading through the Chromium blog and I watched a video of Paul Irish, a developer advocate for the Chrome team, discussing some of the cool tools using Google Chrome to develop quicker.  This sparked my interest in Paul Irish and the first post I saw on his site had an embedded example from jsFiddle.  This led me to jsFiddle.net.  Perfect.  Clean.  Awesome. 

The setup of the editor reminds me of the HTML5 playground at HTML5Rocks, only without the need to switch between views of CSS, HTML, and JavaScript.  In jsFiddle the concurrent views of HTML, CSS, JavaScript, and the current render are all visible because they are each contained in their own iframe.  I decided to try it out with a quick "hello world" test which due to the ease of use and another Paul Irish contribution CSS3Please, I was able to quickly generate this little fiddle:


Another great feature is the 'TidyUp' button which will clean up your code's indents and spacing, which is super handy if you are like me and you have moved things around or copied text in from outside sources (css3please).  Also included is JSLint which is a great utility that will examine the quality of your code and "will hurt your feelings" as it tells the user exactly what is wrong with their JavaScript.  I used jQuery as my JavaScript library of choice, but also included are Mootools, YUI, Prototype, Dojo, Glow, Procession.js, ExtJS, RightJS,  Raphael, and No Library (pure JS)... so just about any flavor you might care for.   I am sold on jsFiddle and I will likely be using it as my primary tool to fiddle with JavaScript.

A Beatbox in the Sky

Recently I've been trying to find less nerdy things to do on Chrome OS.  I don't know if its because I've been boring myself when I analyze new cloud based development environments, or if its because I want to become a better advocate for Chrome OS and its purpose for everyone, but I started playing around with some cool applications.

I like music.  I like thinking I am a musician (I know cover bands don't really count, but almost...).  So when I saw in the Chrome Web Store a program from Aviary that would allow me to create music right in my fancy home in the cloud, I quickly installed it.  The interface is super intuitive (i.e drag n drop or click a button), so I was off and running.  There is about any sound you would need for a solid beat including drum kits, guitars, voices, even random sounds from around the house.  My first beat tracks were based off of the standard acoustic drum kit, but I soon moved myself to using claps snaps and an 8 bit organ (<<have a listen if you must).

So Aviary is an amazing website that has loads of amazing artist tools, not just music creation.  They have an audio editor where one can edit and mash together tracks, so the next step is to set up a drum track and try to play some music over the top of it in the music studio (or at least sample some of the creations that are out on Aviary's site).  The other tools all seem to be likely candidates for common use for my everyday clouding needs like screen capture and image editing.

Update:  Shortly after I posted the link to my sample sound Aviary's creation listening tool crashed.  I checked a couple creations from other folks and those were broken as well.  I'll update again when I see the link is working again.


Update: the link to the creation should work now.

RAD with WaveMaker

Yesterday VMware announced they had acquired WaveMaker.  I had not explored WaveMaker, but luckily the news exposed this wonderful development tool for me.  WaveMaker is a tool for Rapid Application Development (RAD) that is perhaps the worlds greatest WYSIWYG editor.  Not just WYSIWYG for HTML or page layout, but it can completely eliminate the need for Java coding and with its integrated data structure mappings with Hibernate it can easily integrate with any enterprise database.  The point is that anyone who is computer capable can write a fully functional web application and maintain it without the need for developer time.  As a bonus, there is integration with the big names in cloud hosting like Amazon EC2, Rackspace, Eucalyptus, and OpSource

I checked out the example videos and was amazed.  I was especially excited because I of course noted there was a cloud version available.   Of course the site is down for maintenance without any idea as to when service would be restored.  Being an avid user or Chrome OS on my Cr-48 I was extremely bummed.  So I decided to  cheat a little (its still browser based app development, however it required installing software) and I cranked up developer mode on my Cr-48 and entered my Ubuntu Linux boot.  I downloaded WaveMaker and kicked it off.  

Amazing.  I created a test project with one of the provided templates and started dragging objects onto my web page.  Styling is available at the click of a button, and wiring up events to buttons exposes so special handling can be added.  I can already grasp the power of this tool and I have not spent a whole hour in it.  I can imagine in the coming days and weeks as I get the chance to get more familiar with it, I will be even more amazed.  I am also excited for when the cloud.wavemaker.com site is operational again when the true power of being able to code an application in the cloud and even deploy to a cloud host like EC2 without leaving the comfort of the browser.

Remotely Coding

--- title: "Remotely Coding" date: 2011-03-03 comments: false tags: - cr-48 - coding ---
A few weeks ago I wrote a review of some web-based tools to remotely control my PC from my Cr-48.  I have to admit that after spending a real work day remotely coding while using my Cr-48 to connect to my PC at work, the win has to go to LogMeIn.  I had thought I could ignore some of the minor issues of TeamViewer because I really enjoyed how simple it seemed, but the character mismatches from what I typed on this end to what resulted on my work PC were not tolerable.  So I think the results should really be that TeamViewer is a simple solution for perhaps remotely helping a relative with an issue on their PC, but for coding remotely, my vote is now entirely for LogMeIn.

Coding in the Cloud: Part ?

"your Cloud9 beta account has been activated".  I had been anxiously awaiting this email (although one can sign up now without a wait period) to continue my quest to find the best coding environment for use with my Chrome OS on my Cr-48.  Cloud9 is another development-as-a-service platform that claims to be the go to solution to marry HTML5/JavaScript development with github and has received some decent reviews lately after  its presentation at DEMO Spring 2011.  So I had to login and get coding.

I followed the link provided and once signed in I was able to quickly create a new project.  I added an html file and a JavaScript file to create a simple "hello world" website to test how the cloud9 development environment worked.  I saved my work, then clicked "Preview" and my boring website was previewed in a new tab.  Everything was working well until I returned to my project files and decided I wanted to rename them from untitled.html and untitled.js to test.html and test.js.  Moments later as I was about the check out the "Run" and "Debug" options mysteriously the screen flashed and the files were once again named as the default "untitled".  I saved the project to return later and investigate.

So I signed back in to my account and saw my previously saved project and selected "Open".  This took me to the sign in screen only the styles were all gone and it was a bunch of blank screen with the login box.  I of course had to try again, and after repeating this behavior a few times I thought, "maybe this is because its a beta account".  So I created a new account and thought "at least I can get a test project started to my testing so I can do a good comparison of cloud9 with kodingen and coderun" but I was not able to create a project at all.  I tried to use the shared github project that cloud9 provides as an example and that to failed.

Apparently cloud9 is getting hit hard with tons of new users who are experience some issues similar to mine, at least according to some of their twitter posts.  I'll be anxious to get a real review of this cloud based development environment because in my brief time on the inside, it seemed very easy to use and elegantly constructed.