Like it or not HTML5 is coming (or is here depending on who you ask). After playing around with it a bit, I've found more of the same, if you're familiar w/ the underlying concepts in different contexts, it should be really easy to pick up.
Regardless, I've installed the Drupal HTML5 Tools plugin to be able to use HTML5 themes in my blog's CMS, and decided to mess around w/ a few underlying concepts to see the nuances of how they work. The first of these is the canvas, which can be used to easily draw in-browser graphics.
For example checkout this simple version of pong that I just quickly whipped up. (edge cases not included :-p)
See the code after the jump
I had such a great time at the last FUDCon I attended, Toronto '09 that I decided to return for Blacksburg '12 this upcoming January 13th-15th in Blacksburg, Virgina. Some of you may recall, during the last FUDCon, I gave a presentation on deltacloud, the core component of Aeolus the Open Source Cloud Computing API.
Alot of great work has went into the project over the last couple of years, and I've decided to submit a few hackfest proposals around using some of the tooling in unique ways. With the first proposal, I aim to go over the various projects that exist under the Aeolus umbrella, and use them to build some simple tools to deploy and monitor cloud provider instances in interesting ways. With my second proposal, I intend to take my subproject Snap (the modular system snapshotter for Fedora/Ubuntu/Windows/etc) and expand it with more custom snapshot targets. I have a bunch in mind, but I'm more than eager to help anyone write a plugin to take a snapshot of their own custom software (these are very easy to write and integrate into the project).
In any case, the conference should be a really fun time as always, and I'm really looking forward to it! Hope to see you all there!
I've added Windows support to Snap, now making it possible to take snapshots of a Windows machine using the same simple tooling as with Linux. Thus it is now possible to move both Windows and Linux instances across disparate VM hypervisors and cloud providers. You may download the windows installer here
Snap not only permits moving an instance between any two generic hypervisors and/or cloud providers, but between any physical or virtual machines as well as well as taking and restoring generic system snapshots.
Stay tuned for more updates!
I am pleased to announce a new release of the Nethack Encyclopedia, my first android app in production. Before I jump into release notes, please take note that due to my hardware crash a while back I lost my android signing keys, and had to release the software as a new app, dubbed the 'Nethack Encyclopedia Redux'. If you've downloaded the old version, please uninstall and download the newer one (I marked the old as being deprecated, not sure if the Android platform takes care of notifying the user of this though). Regardless, new features shipped with the app include
- many more quick stats including armor, rings, and wands
- much improved encyclopedia performance, encyclopedia is now broken up into alphabetical sections and content is pulled from the new nethack wiki at nethackwiki.com
- far better calculator layouts and design, and new 'spell success rate' tool
- start of a tutorial section, with some content from my experiences as a novice explorer of the Mazes of Menace, this will be improved upon going forward
- many overall improvements and optimizations, see the git commit log for more information
I am looking for some more constructive feedback, namely around testing on multiple sized devices. I've done a little, but not nearly as much as I should have and still have quite a bit of hard coded pixel values in the layouts.
And with that I leave you with some screenshots of the new version. Hope this helps your travels through the dungeons!
For those in the Upstate NY region, be sure to checkout the CNY Engineering Expo to be held a week from tomorrow, on Monday November 14th. There I will be presented an introductory talk on Aeolus, Red Hat's Open Source Cloud Computing API. The conference is a multi-disciplinary engineering conference, so I will be going over some cloud computing basics and terminology before diving into the specifics of the framework and what it can do for the attendees.
Hope to see everyone there!
In the past when evaluating cloud providers, one had to to make a critical decision right up front, to select the provider that offers the features needed at a price that is agreeable to the end-user. If the provider changed their terms of service and/or pricing scheme, the sysadmin/developer was more or less stuck with their choice, unless they made the painful effort of manually migrating all software and data to another provider. Well not anymore.
I'm pleased to announce that with the assistance of Aeolus, Red Hat's Open Source Cloud API, and Snap! a system snapshotter and restoration utility (started as my Masters project in '07), it is now possible to migrate cloud instances of any type across cloud providers (currently supported distros are Fedora, Ubuntu, Debian, RHEL, and CentOS with more and Windows support in development / coming soon).
For details, see the following step-by-step guide complete w/ screenshots of how to migrate instances between Amazon EC2 and Rackspace (this will work for migrating instances between any cloud providers supported by deltacloud, the core Aeolus component/api). Everything will be migrated from the source instance to destination on the fly (no instance downtime), from package repositories and installed software, to files modified outside the package management system, to services and their configurations, etc.
The machine I was orchestrating the migration from was my local F15 laptop. I setup environment variables in my bash profile corresponding to the following:
- $EC2_USERNAME: my ec2 access key, retrieved from the AWS security credentials screen
- $EC2_PASSWORD: my ec2 secret access key, also retrieved from the AWS security credentials screen
- $RACKSPACE_USERNAME: my rackspace login name
- $RACKSPACE_PASSWORD: my rackspace API key, retrieved by logging into rackspace and navigating to Your Account > API Access
$ sudo yum install deltacloud-core-ec2 deltacloud-core-rackspace rubygem-deltacloud-client
I then started deltacloud servers for both the ec2 and rackspace drivers (note it is now possible w/ the upstream deltacloud project to use the same server for multiple drivers)
$ deltacloudd -i ec2 -p 3002
$ deltacloudd -i rackspace -p 3003
Next I used the deltacloud client to retrieve information about my running EC2 instance
$ deltacloudc instances index -u http://$EC2_USERNAME:$EC2_PASSWORD@localhost:3002/api
Note in this screenshot, you can see the ec2 instance hostname which I can ssh to (due to the formatting of the field, 'amazonaws.com' has been truncated)
Now I ssh'd into the instance, specifying my keypair previously configured on Amazon when starting the instance
$ ssh -i ~/.ssh/mmorsi-keypair.pem firstname.lastname@example.org
On the cloud instance, I used yum to install Snap. Until the Snap package is accepted and avaiable in Fedora / Ubuntu / other mainstream distributions, I have hosted binary packages in my own yum and apt repositories
$ sudo wget http://yum.morsi.org/repos/15/morsi.repo -O /etc/yum.repos.d/morsi.repo
$ sudo yum install snap
Due to how Amazon handles its cloud security policy (eg through their security groups concept), iptables is not setup on EC2 instances. Snap will by default backup and restore iptables rules, so we have to edit the snap configuration file to remove this backup target
$ sudo vim /etc/snap.conf
Remove the hightlighted content
Before running the snapshot, lets take a look at the options Snap presents us. Note Snap provides both a command line tool and a graphical GTK based one (more on snap coming in a future blogpost)
$ snaptool --help
Now we run the actual snapshot
$ sudo snaptool --backup --log-level verbose --norepos --packages --nofiles --services
We pass in --backup to perform a backup operation instead of a restoration one, specify verbose output with --log-level, and configure the snapshot targets. Snap offers a very modular / extensible plugin system in which targets to backup / restore can easily be defined, and operating system specific backends to those targets implemented. In our case we opt to backup the packages installed on the instance as well as the running services. We do not need to backup any package repositories as we are only using stock fedora software and no extra files are required (--services will backup the files required for those services to run)
This produces a snapshot in /tmp/snap-shot.tgz (the location of this can be configured by specifying --snapfile to snaptool). Back on our host system, we scp that file locally
$ scp -i ~/.ssh/mmorsi-keypair.pem email@example.com:/tmp/snap-shot.tgz .
We can easily inspect the snapshot as it is a tarball (snap also supports snapshot encryption/decryption, protecting the contents of the tarball)
$ tar tzvf snap-shot.tgz
Next we goto launch a new instance on our destination cloud, Rackspace. To do this we first view the images available to base our instance off of
$ deltacloudc images index -u http://$RACKSPACE_USERNAME:$RACKSPACE_PASSWORD@localhost:3003/api
We've highlighted an image matching the OS out our source instance (note it is theoretically possible to restore the snapshot on a completely different OS! I have yet to try this out yet though so no guarantees)
Now we spin up a new instance using the selected image as the basis
$ deltacloudc instances create -u http://$RACKSPACE_USERNAME:$RACKSPACE_PASSWORD@localhost:3003/api --image-id 78
We see the ip address of the instance, which we can SSH to, right from this output. Once the instance is started (usually within a minute from my findings) Rackspace sends an email containing the root password
Before logging in, we scp our snapshot over to the new instance
$ scp snap-shot.tgz firstname.lastname@example.org:~/
We now ssh into the new instance
$ ssh email@example.com
We use the same wget and yum commands as above to install Snap
# wget http://yum.morsi.org/repos/15/morsi.repo -O /etc/yum.repos.d/morsi.repo
# yum install snap
Now we restore the snapshot, again using snaptool
# snaptool --restore -l verbose --snapfile snap-shot.tgz
Finally since the EC2 security groups mechanism is different than the standard iptables solution, and we weren't able to simply backup/restore the firewall policy (as Snap does by default), we need to open port 80 for http in our firewall. We use the text based firewall manager that ships w/ RH based system to do so
Bring up a web browser, point it at our new instance and WHALA! the world's first open source cross-cloud migration!
Stay tuned for more updates. To the cloud!