Fudcon Blacksburg Report
Submitted by mmorsi on Mon, 2012-01-16 12:47
Just got back from Fudcon Blacksburg. As always, it was a great time. Arrived after driving down (10 hrs) Thursday evening and crashed quickly after checking into my accommodations (The Inn at Virginia Tech). Friday, the first day, was hackfests, I attended the Fedora Infrastructure meeting and held a few sessions around Aeolus where I talked with passer by's about the project, my Snap subproject and what people were looking for out of an open source IaaS cloud abstraction platform. Specifically at FUDCon I aimed to find out how people wanted to interface w/ the cloud on the Fedora desktop and how they wanted to use the Aeolus stack. We ended up modifying Snap a little to add some command line options and began
messing around w/ mycloud a c level cloud computing API I started throwing together to meet people's needs. Dinner that night was at a good indian place.
The second day was the barcamp sessions, I volunteered to do another session on Aeolus, which went well, there were plenty of newcomers interested in the projects and I was able to share what was in development and upcoming things on the platform. After lunch several of us from the ruby-sig met to hold the now traditional ruby-sig meeting at FUDCon (we held one in Toronto, one was held in Milan, and now this was the third at Blacksburg). We got alot done including:
- tested out the new Ruby 1.9.3 repository (messed around w/ getting Aeolus working on MRI 1.9.3)
- discussed updates to the new packaging guidelines, and updates to the the ruby stack
- looked into possibly using macros to assist w/ building gems for multiple ruby interpreters on Fedora (jeroen volunteered to start investigating thing one, this would be a feature coming furthur down the pipeline)
- discussed the rvm / bundler ecosystems, and again how to drive and market the Fedora philosophy of a single supported stack while delivering the ultimate development platform for the ruby-community
- looked into continuing building tools and applications which to enhance the Ruby experience on Fedora, I volunteered to build a isitfedoraruby website (akin to itisruby19.org) to demo and highlight fedora on ruby and to start reaching out to the cloud-sig and other Fedora communities to promote and highlight the product/platform.
- continuing to extend / expand / improve gem2rpm, polisher, and other gem/rpm interoperability tools
Next I attended the session on OpenStack, a popular build-your-own-cloud platform (one of the platforms supported by deltacloud) and learned a bit more about the internals and how it is constructed. Finally the lightning talks session was the last on Saturday, and a must for any FUDCon attendee. There were many pitches, including several for new fedora components including hosted instances of mock infra apps, a discussion on what motivates and how to drive open source contributions, a demonstration on how to inject code into running Python processes using "parasite" by lmacken, an overview of foss@rit by remmy dekaukusburg and the narcissus web visualizations by ralph bean. I ended up pitching mycloud and snap again as well as my own Nethack Encyclopedia project, inviting fellow explorers of the mazes of menace to bring the guide :-)
FUDPub was fun, as always a good time, featuring bowling and lots of tastey food and held at the Blacksburg student center this time around.
I'm writing this from my hotel room Sunday morning as I pack up and prepare for the 10hr drive hack. Overall a great time, have plenty to keep me busy going forward, and am looking forward to the next FUDCon!
Forthcoming: MRI Ruby 1.9 in Fedora
Submitted by mmorsi on Tue, 2012-01-03 23:00
The Fedora Ruby SIG is in the process of updating the main Ruby package in Fedora to Ruby 1.9. We hope to get it in by Fedora 17, while shipping a Ruby 1.8 compatability package for those who wish to continue using the older version (though more and more upstream projects are phasing this out). Alternatively, since JRuby is now in Fedora, end-users may opt to utilize that interpreter for both Ruby 1.8 and 1.9 support.
The Ruby 1.9 effort is being led by Vit Ondruch who has done alot of the packaging work and submitted the initial guidelines draft, which we are currently discussing/revising on the mailing lists. They are largely an extension of the existing guidelines to better nail things down and cover various issues that have come up over the years, but all are welcome to join the discussion and share their comments / opinions on the best way to move forward.
A Ruby 1.9.3 testing repository has been setup for those who wish to try the new packages out. Feel free to share any feedback or issues on list.
Book Review: Altered Carbon
Submitted by mmorsi on Sun, 2012-01-01 14:35
Having finished my long trek through Anathem a little while back, I was left craving for another epic sci-fi tale. Living up to his previous classic, Snow Crash, Neal Stephenson's Anathem is an amazing thrill-ride, full of intense action, profound philosophy (drawing on thousands of years of mathematics, science, and metaphysics), and overall an unbelievable story. Stephenson is truly a remarkable author, and while he deals with very-deep topics, there is a good chance that anyone will be able to find at least one of his worlds that draws them in. Surprisingly I couldn't get into Cryptonomicon when I tried not too long ago, but admittedly I didn't get terribly far into it before I gave up and might have to give it another go. There are plenty of reviews of Anathem online, so I will leave it up to my readers to read more about it through those, but needless to say I highly recommend the novel.
I ordered two books with relatively good reviews off of Amazon, Hyperion (a space opera) and the second being Altered Carbon by Richard K Morgan, a nitty gritty cyberpunk tale similar to Snow Crash. I tried the former first, but again try as I might I could not get into it, so I decided to give Altered Carbon a go, and was very pleasantly surprised.
Altered Carbon is the tale of Takeshi Kovacs as he investigates the 'murder' of Laurens Bancroft, a very rich and powerful business magnate in futuristic San Francisco, now called Bay City. By this point in time, actual real deaths are fairly uncommon, as it is a widespread practice to store one's identity, memories, and conscience 'on stack', which is able to be downloaded into temporary bodies known as 'sleeves' at any point in time after. Morgan's vivid and rich imagery paints a world that lives up to any cyberpunk setting portrayed to date, including perhaps the ultimate cyberpunk novel, Neuromancer by William Gibson. Chalk full of concepts such as virtual-realities, technology based augmentations, drug induced psychological and physiological alterations, interstellar travel, conspiring artificial intelligences, oriental philosophy, intense martial arts action, and much more, Kovacs' investigation keeps the reader glued to the edge of his/her seat and makes it hard to put the book down even for a second.
The novel is a good read, not so challenging that it will be lost on anyone (unlike Anathem and Snow Crash which are complete mind-benders), but also not too simplistic that it will bore. The chapters are fairly short and to the point, making for a good airplane or subway read, while the overall story fits together and flows nicely. Without spoiling any more, I highly suggest it to anyone that is into the genre, it won't disappoint!
Messing around w/ HTML5: drag-n-drop
Submitted by mmorsi on Fri, 2011-12-23 00:25In my last html5 blog post we explored using the canvas to recreate a simple version of pong. This time around we'll be using the drag-and-drop features of HTML5 for a simple example. Note I'm pulling in the JQuery UI library to take care of alot of the details and provide a easy-to-use interface to use drag-and-drop.
In this example, we have a list of images which we'd like to pull into a common area. The thing is, the original list should be preserved, once dragged-in, an image should not disappear from its original location.
This is accomplished by using jquery to set the images in the list to being draggable (this registers the necessary event handlers), and to make the common area droppable, eg able to receive draggable objects. JQuery allows us to set the 'helper' attribute, which defines the element being dragged around, to the predefined 'clone' value which makes a copy of the original element. From there we expand the container div to accept only the elements we want to drag in, and override the 'drop' method to set various properties allowing us to position and style the dropped element any way we would like.
All in all the effect is the following:
And the source producing this:
<div id="jquery_drag_drop_example_container"
style="width: 300px; height: 300px; background: #C0C0C0; float:left;">
</div>
<div style="background: #FFFF99; float:left; width: 20%; margin-left: 10px;">
<ul style="list-style-type: none; list-style-position: inside;">
<li><img class="jquery_drag_drop_example_img" src="example_0.png" /></li>
<li><img class="jquery_drag_drop_example_img" src="example_1.png" /></li>
<li><img class="jquery_drag_drop_example_img" src="example_2.png" /></li>
<li><img class="jquery_drag_drop_example_img" src="example_3.png" /></li>
<li><img class="jquery_drag_drop_example_img" src="example_4.png" /></li>
</ul>
</div>
<div style="clear: both;"></div><script type="text/javascript"> $(function(){ $('.jquery_drag_drop_example_img').draggable({ helper: 'clone', }); $('#jquery_drag_drop_example_container').droppable({ accept: '.jquery_drag_drop_example_img', drop: function(event, ui){ var newitem = $(ui.draggable).clone(); $(this).append(newitem); $(newitem).addClass("jquery_drag_drop_example_img_clone"); $(newitem).removeClass("ui-draggable jquery_drag_drop_example_img"); $(newitem).draggable({containment: 'parent'}); $(newitem).css('position', 'absolute'); $(newitem).css('top', ui.position.top ); $(newitem).css('left', ui.position.left); //alert(event.dataTransfer.getData('text')); } }); }); </script>
Thats it until next time. Hope everyone enjoys the holidays!
Snap! Updates
Submitted by mmorsi on Tue, 2011-12-20 01:51
Alot of great development on Snap! recently. Here are some updates (see the commit log for the full list):
- incorporated full test harness
- many documentation improvements / fixes
- many code cleanups / optimizations
- starting adding ability to migrate snapshots between OS's (for example Ubuntu to Fedora and vice-versa)
- pushed snap into Fedora! (simply install via 'yum install snap' on Fedora15+ and RHEL6, should be pushed into Debian / Ubuntu soon)
Stay tuned for more updates!
Various Quick Tips
Submitted by mmorsi on Mon, 2011-12-19 14:47
Just a bunch of random quick tips, posted together for conciseness
---------------------------
Passwordless SSH'ing as root
When writing the test harness for Snap I needed to setup a few vms which I could ssh into as root automatically, without being prompted for a password. True, I could've setup a ssh key and install that on the vms, but instead for simplicity I wanted to be able to ssh in w/out requiring any credentials (yes insecure, but these VMs are isolated and the test harness makes sure they are shutdown post-invocation).
On Fedora/Ubuntu this is accomplished by:
- editing /etc/ssh/sshd_config an setting 'PermitEmptyPasswords yes'
- Ubuntu requires one additional config change, to /etc/pam.d/sshd, namely comment out '@include common-auth' and replace with 'auth required pam_unix.so nullok'
- restarting ssh: 'sudo service sshd restart'
- setting sshd to come up automatically 'sudo chkconfig --levels 35 sshd on'
- finally delete the root user's password 'sudo passwd -d root'
Now you can ssh root@<ip_address> to login as root w/out a password (obviously use with caution).
Incidentally this is also a means to get a root shell on Ubuntu, which by default does not allow this, requiring the user to run all privileged commands through 'sudo'
---------------------------
xbacklight
I've run into a problem w/ the backlight not resuming normal operation after my laptop has been dock'd. This seems to be a common issue, even on the Linux friendly Lenovo Thinkpad laptops.
After some debugging I was able to resolve this by installing the 'xbacklight' package and running 'xbacklight -set 100'.
---------------------------
C Data Structure Visibility Practices
I've been getting back into C programming (more on this soon). Of course w/ a lower-level language (C is actually a high level language, though usually considered low-level, but I digress) there are many approaches / ways to do things, especially concerning data visibility. Studying the libvirt library header file, I found one useful standard is to:
- define public data structures, eg structures which can be manually instantiated by the user, as you normally would, eg
typedef struct _myData{ ...fields... } myData; typedef myDataPtr *myData;
- define private data structures, or data which can only be instantiated by calling one of your methods, w/ forward declerations in the public header, with the private definitions residing in an internal-only header/implementation file, eg
typedef struct _privateData privateData; typedef privateDataPtr *privateData; privateDataPtr createPrivateData(...params...);
- define public data structures refering to data managed / manipulated by an external entity, as 'info' structures, (these will often be associated w/ private data in some way) eg
typedef struct _externalDataInfo { ...fields about data managed elsewhere... } externalDataInfo; typedef externalDataInfoPtr *externalDataInfo; externalDataInfoPtr getExternalDataInfo(privateDataPtr private_data);
---------------------------
Per Host SSH Key
Many thanks to jkeating for this pro-tip. To set which ssh key to use on a per-host basis, simply create a ~/.ssh/config file (chmod'd to 600) containing the following contents:
Host <hostname>
IdentityFile <path-to-ssh-key>
Also optionally specify 'User <username>' to not have to prefix your remote username to the hostname when logging in w/ a username different than your local one.
---------------------------
libvirtd default network on a vm
Submitted by mmorsi on Mon, 2011-12-05 16:12
$ sudo virsh net-destroy default
This is because otherwise the addresses of the libvirt created networks running on the vm and your host machine will clash and cause conflicts / routing errors.
Hope this helps!
Aeolus Screencasts
Submitted by mmorsi on Wed, 2011-11-30 16:55For those who missed it, be sure to checkout the Aeolus Project youtube channel which contains several screencasts around current usage of Aeolus including topics such as:
Messing around w/ HTML5: the canvas
Submitted by mmorsi on Tue, 2011-11-29 15:06Like 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
Submitted two Hackfests to FUDCon
Submitted by mmorsi on Mon, 2011-11-28 12:11
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!










