RSS Feed

Teaching Open Source Planet

Teaching Open Source Planet is a Planet, a collection of personal blogs by Teaching Open Source community members working to bring the open source way into academia. We write about our inspirations and experiences in learning, teaching, and collaborating within free and open communities. In the spirit of freedom, we share and criticize in order to collectively improve. We hope you enjoy reading our thoughts; if you’re fascinated by what you see, consider adding your voice to the conversation.

Kulbir Saini (generalBordeaux)

Getting Started With Git

I have been using Git for years now and I am still a novice user. Actually, if you are an individual developer or work in a really small team, you don’t really need to go beyond using the basic stuff like cloning a repo, committing code, branching and pushing back to the origin repo. And that’s exactly what happened with me. Working alone most of the times and working in my own repos. I never felt the need to explore advanced usage.

Last week, we didn’t have internet at home for like four days. So, I thought I’ll read a book. I downloaded ProGit : The Free Git Book and started reading. It’s an awesomely written book. I learned a lot of new things about Git. A few more concept about using branches efficiently. If you are a Git beginner or looking forward to getting started with Git and you don’t like reading too much, I’ll suggest that you read at least first three chapters thoroughly. That along with a free GitHub account should be enough to get you going if you are not going to be a heavy Git user soon.

Fedora Tutorials and Videocache by Kulbir Saini.


Andrew Ross (aross)

pfSense 2.1: IPv6 and more

Location

Ottawa, ON
Canada
45° 25' 17.508" N, 75° 41' 49.8948" W

pfSense is a BSD licensed customized distribution of FreeBSD tailored for use as a firewall and router.

Minutes: 
60
Event: 
BSDCan2012
Speaker: 
Chris Buechler
Scott Ullrich
Filmed: 
11.05.2012
Thumbnail: 

read more

Eucalyptus and Class Review

Early in the semester one of the engineers from Eucalyptus paid a visit to one of our classes.  She started off by saying, “The Eucalyptus team is very excited to have you guys coming on board.  Before you guys came along, the engineers were pretty bored and the project was dying.”  This isn’t the way I would expect someone to present the project they’re suppose to be excited about and an employer that helps pay their bills.  I guess that’s just my take on the matter.

We found out our contribution to the project would be documentation.  I wasn’t excited about this aspect either.  I didn’t spend the last four years of my academic life to write up a few tutorials and explain what someone else’s code is doing.  The first step was setting up a cloud infrastructure.  I would expect this process to take a few days at best, it took the entire semester.  Some of it was due to unsupported hardware or hardware failure.  The unsupported hardware portion could have, and should have, been prevented to begin with.  No one can predict hardware failure.  It still shouldn’t have taken that long to get the core structure built.

There was also a lack of communication and trust amongst the class.  SSH passwords were kept secret to a select few.  I was told they were keeping access to a select few.  I don’t care if it was a power struggle or an effort to keep incompetent students off the cloud and breaking it.  I can’t say that I pressed hard for access, at this point I had really stopped caring about the project. I found it comical that I had root access to machines costing, literally, hundreds of thousands of dollars at work, but I couldn’t get root access to a cloud built on a few ancient machines for a class.

In the end, I decided to focus on work.  It worked with a lot of concepts the course was built to outline.  It was a REAL world example, I learned how to use git and sat through numerous presentations about development releases and tentative launch dates for software.  The project I work with has over 40 engineers across the globe, including Ireland and China.  I learned how to work on a project on a global scale.  It’s even more difficult than the Eucalyptus project.  It’s difficult to get an answer to a question when your working hours are essentially mirror images.

My current patch for work needs to be released simultaneously with a scripts patch, or the scripts will be broken. The problem is, the scripts team is based in Shanghai.  I have to notify them when the patch is ready, and note that it is a dependent patch.  If either patch is committed early, the code is broken and the entire project goes into panic mode.  If I fail to convey all of the necessary changes required in the scripts patch, the code will break.  Communication is critical on a successful large-scale project.

I have learned far more from my position at EMC than I have throughout the class.  I wish I could have stayed interested and motivated, but there were far too many complications than necessary and it seemed more like a dead end than anything else.  Thankfully, I learned all the necessary course objectives from working at EMC through the semester.


The dominance of open source tools in Big Data

Most of the tools that are best suited for dealing with Big Data are open source. This provides the research community with a huge opportunity, because no investment in software licenses is needed. You just download the software and ‘get on with it’. The challenge, as became clear at the Eduserv symposium last week, is to find people with the right skills to apply these tools.

Without a doubt, Apache Hadoop that is the most important open source project in this space. It is amazing to see how fast the Apache Hadoop ecosystem is growing and how everyone is trying to jump on the bandwagon. Start-up companies like Cloudera and Hortonworks have no trouble finding venture capitalists willing to invest large sums of money. Similarly, nearly every major tech company is offering it, while other internet companies that deal with big data are using it (secretly or not). At the Eduserv symposium, EMC CTO Rob Anderson focused on the implication big data has for storage, and showed their Hadoop-based offering. Because the Apache licence allows you to use any Apache project in a closed-source implementation, EMC can sell their Hadoop distribution without needing to make that product open source.

There are big implications of the big data trend for the research community. Guy Coates of the Sanger institute showed how the amount of data they are managing is increasing rapidly. They are expecting this increase to continue, especially since the costs of human DNA sequencing is dropping dramatically. They expect it to drop to $1000 for a full scan within two years (excluding storage!). His main challenge was not the actual storage of the data, but the management of the data as researchers were analysing it. Sanger is using the open source tool iRODS, a community-driven project that originates from the Data Intensive Cyber Environments (DICE) research group in the DICE Center at the University of North Carolina.

Another open source project that featured prominently at the Eduserv symposium was Apache CouchDB. Simon Metson of Bristol University explained how NoSQL is the enabler of big data and new database systems that do not use the traditional relational database approach are better suited for these tasks. Open source software projects like CouchDB, but also Apache Cassandra, are leading in this space. Simon highlighted that the community-aspect of big data is very important. By engaging with the community that uses these tools to solve their big data problem, you can solve the hard problems. Something you may encountered once in a thousand times, may have been solved by someone else in the community who runs into it more often, and vice versa.

The closing keynote was given by Anthony D Joseph, professor at the AMP Lab at UC Berkeley. He mentioned how Facebook started the Open Compute project to share best practice in cluster design for big data centers. It is an interesting example of the old economic adage that you should commodotise your complement. Berkeley is collaborating on the Apache Incubator project Mesos, which is a scalable cluster manager that can dynamically share resources between multiple computing frameworks. They support frameworks like Hadoop, Spark and MPI.

So the technology is there or is well underway in being developed. And being open source, anyone can download and start using it. Technology is not the problem of big data, but the challenges lie in the cultural and organisational change that is needed to capitalise on big data. People within and across the organisations need to be willing to share their data and think of new, intelligent and creative ways of making use of this data. Two well-known examples that were mentioned were the Google flutrends, a website that predicts flu epidemics based on what people search for, and a Twitter application that was created to detect and report on earthquakes using people’s tweets.

A final challenge that was recognised widely at the conference was the shortage of skilled people in the big data space. This is true both for the data scientists that were needed to analyse the data, and for people that can help curate the data longer term, which is a completely different challenge for many HE institutions. In the spirit of open source though, there are many resources freely available online for people who want to get started, such as on the website bigdatauniversity.com. And of course, if you want to get started with one of the open source projects mentioned, there are many ways to get involved.

Unity-SCORM Integration Toolkit

(Source:  http://www.adlnet.gov/scorm-unity-integration)

I was checking updates to the SCORM specification when I come across this announcement:

"The Unity-SCORM Integration Toolkit is the result of an ADL Technical Team research and development project which focused on using games and simulations as part of an e-learning curriculum.  After an assessment of the most common questions submitted to the ADL Help Desk and after gathering additional requirements from 3rd party outreach efforts, we began a project to make creating SCORM-Conformant games and simulations efficient and cost effective.  Unity was selected as the game development tool for our prototype due to its ability to create web-based content.

The Unity-SCORM Integration Toolkit allows Unity developers to use simple methods, provided by a “ScormManager” object, to set the SCORM Run-Time Data Model elements without having prior experience with SCORM.  For example, developers are able to make simple calls like ScormManager.GetLearnerName() to get the user’s name from the LMS.  In addition, the ScormManager can be used to set values including scores, objectives and interactions.  For advanced users, the entire SCORM data model is available for use.

The Unity-SCORM Integration Toolkit also contains a packaging tool that can be used to create a simple SCORM Content Aggregation Package.  The ScormManager and packaging tool support both SCORM Version 1.2 and SCORM 2004 4th Edition.  With minor tweaks to the resulting package, SCORM 2004 2nd and 3rd Editions can also be supported.

The Unity-SCORM Integration Toolkit is a demonstration of how content developers can use a game engine to create SCORM-Conformant content.  The source code is provided with the download and can be used by a 3rd party in their content and systems. The Unity-SCORM Integration Toolkit installer is available to download here.  The Unity-SCORM Integration Toolkit source is available to download here. The Quick Start Guide also accompanies the source download."
=============================================================
So, what does this all mean to us?

With this toolkit, I believe it is now possible to do the following things:

We can incorporate SCORM data model elements into games and simulations.  Examples are:
i.   ScormManager.GetLearnerName() to get the user’s name from the LMS
ii.  ScormManager can be used to set values including scores, objectives and interactions

Advanced users can even use all the SCORM data model elements in the games and simulations.

=============================================================

   

David Humphrey (humph)

Focus and Select: a cross-browser bed time story

Here’s an annoying little DOM’ism that stumped me last week (don’t worry, there’s a happy ending if you keep reading).  In Popcorn Maker’s UI I wanted to fix a few places where we have textboxes that contain data from json manifests.  When you click on such a pre-populated textbox, it’s nice if the contents of the textbox are selected.  And when you click again, it’s nice if the selection is removed and you instead position the cursor.

These are nice enough that one would sort of expect them to just work, and as such, that the DOM would actually allow you to do it.  Well, it’s easy to do on Firefox: just add a focus event to your input element, and call element.select().  Done.

Now test in WebKit and it doesn’t work. Sniff around the web a bit and you’ll uncover a nasty 4-digit WebKit bug from 2008 that causes mouseup to undo your selection.

“That’s fine,” you say to yourself, “just stop the mouseup event from doing its thing and clearing the selection.” This is what everything on the web I could find said to do. The trouble is, I want to not only select the contents of the textbox on first click, but I want the opposite on subsequent clicks.

In the end, cross-browser compatible code means unnecessarily elaborate code, but here we are. I’ll leave this for the next person who hits my same edge case–aka the default way a textbox should function. Here’s a little jsfiddle demo of it running, and here’s the code:

var selectaBox = (function(){

  function __highlight( e ){
    var input = e.target;
    input.select();
    input.removeEventListener( "focus", __highlight, false );
  }

  function __ignoreMouseUp( e ){
    e.preventDefault();
    var input = e.target;
    input.removeEventListener( "mouseup", __ignoreMouseUp, false );
  }

 function __addListeners( input ){
    input.addEventListener( "focus", __highlight, false );
    input.addEventListener( "mouseup", __ignoreMouseUp, false );
 }

 return function(){
   var input = document.createElement( "input" );
   input.type = "text";
   input.addEventListener(
     "blur",
     function( e ){
       __addListeners( e.target );
     },
     false
   );

   __addListeners( input );

   return input;
 };

}());

var s = selectaBox();
s.value = "This is some text."
document.body.appendChild(s);

Final blog post and all is well it seems

The semester is over and this is basically my last blog post for now, but im actually thinking of keeping this blog and beginning to use it for things that i find interesting.

 

Basically the euca2ools group presentation seemed to have gone pretty well and everything worked while giving it(which is awesome). Considering the amount of problems that we have been running into coming up to this day we were very excited that everything worked.

John in our group was actually able to upload a CentOS image and get it running on our cloud the previous day of the presentations, and then on the day of the presentations we were able to get a third image up and running with no Walrus errors and SSH into that instance. Dhimitri and I were kind of surprised to say the least cause the day before Walrus was giving us the 403 Forbidden error, so it seemed to have fixed itself….

 

Walrus may have just had a hiccup and that restarting it that day may have solved the issue we were having. Dhimitri also managed to get up a new node running which you could see with the euca-describe-availabilityzones command. All in all, it seemed that the Euca2ools wiki worked out for the best and seemed that a lot of people were able to follow a lot of the steps to use for themselves. This was a really fun and interesting project to work on despite a lot of the issues that kept happening on our way but i think it was for the best cause many of us gained a lot of experience and a lot of understanding of the whole Cloud computing and what it is.


Couple of weird oddities..

Leading down to the couple of weeks of the semester and beginning to finish up/wrap everything that we have done up to present, we ran into a couple of issues.

Dhimitri and I were in the same Euca2ools group for the presentations so we were working together through the weekend on what we were going to present and go through as a demo during the presentation. As he was working on a script, i was going through and testing our cloud by uploading a different image and kernel and trying to get more instances up and running, and also deleting images from the cloud.

 

The first issue that we ran into was a problem with getting a new instance up and running. At first i thought it was cause i did not bundle the kernel and image together correctly, so i tried it over and over again until i though it was perfect. The image that i used was the same image as the one that was currently running, so when it was not working we knew we had a bit of a problem. From what the NC log told us we were getting some type of 403 forbidden error and seemed to be stopping us from running instances.

A second issue that occurred, was after uploading quite a few images, kernels, and ram-disks the amount of images on the cloud was kind of cluttered so i wanted to delete some of them. When running the command to delete these images however they were not being removed. We would de-register them and delete but they were not being removed. They stayed on the cloud and listed as de-registered so we restarted the services and still nothing the images appeared back on the cloud as normal.


Success at running images!

Towards the final weeks of the semester we actually managed to put together a cloud that was basically running. I say basically running because there still seems to be a few bugs here and there that causes some issues every once in a while.

In the week that we managed to finally get an image up and running Dave actually had decided to reinstall eucalyptus on our cloud with the packages that Eucalyptus team had end up putting together halfway through the semester. During class he actually managed to quickly install all of the packages and set everything up, while long and I managed to package and image with a kernel that was working on the ECC cloud, and we actually managed to get it running.

This was a success at running an image and all seemed well but there was still some work to be done, we could run one image but when we tried to run more it was not allowing us to due to not enough resources and seemed not to be assigning IP’s correctly. So there must have been a problem with the network configuration, Mike was tasked with flattening the network and after some tweeks that Dave did to the networking configuration on the cloud all seemed much better.

We were able to get multiple instances up in the long run and the troubleshooting that Dhimitri and I have been doing seemed to help locating where some potential problems were by going through the nclog file.


Creating a bootable disk to flash BIOS

One of the issues that we had while setting up our cloud was incompatible BIOS revision on the machines we were using. They were out of date and did not allow the use of virtualization, so we had to update the BIOS a certain way with the DELL Executable that was the only way to update the BIOS was using an EXE.

 

The first step to creating the bootable disk was downloading FreeDOS so that we can boot up into FreeDOS and run the executable.

In order to do this you do: wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz

Then, gunzip FDOEM.144.gz to unzip the file.

 

The second step is to copy the BIOS flash utility and the BIOS image that needs to be used to upgrade, and mount it to a floppy disk image. Here is what you do in order to complete this step:

modprobe vfat

modprobe loop

mkdir /tmp/floppy

mount -t vfat -o loop FDOEM.144 /tmp/floppy

After mounting the Floppy you want to copy the EXE. that you downloaded for the BIOS:

cp DELLBIOSVERSION.exe /tmp/floppy (not actual name of the bios)

then unmount the floppy: umount /tmp/floppy

 

Step 3 is to burn the bootable CD which emulates a floppy device.

mkisofs -o bootcd.iso -b FDOEM.144 FDOEM.144
cdrecord -v bootcd.iso

After you have created this bootable disk, all you have to do is boot the CD in the machine and basically type in the EXE. and it will autoflash to the new bios.


SIP on the Web

Early this morning, Richard Good referred me to the site http://www.sipml5.org/  to check the amazing project on it. He remembered it was very close to my doctoral work. I like the work (a SIP stack in HTML5 and JavaScript), but that was not the first time I got to know about the idea. I visited the below sites some weeks ago and referred Richard to them, just as he did.
http://sip-on-the-web.aliax.net/
http://code.google.com/p/sip-js/
http://phono.com/webrtc

It’s nice to see various implementations of SIP on the Web; .I also wrote about the interworking of SIP and WebRTC sometime ago. Below is an excerpt from the concluding part in my doctoral thesis.

In summary, while session handoff has been widely explored, content sharing and the proxy services are relatively new services in the Web-browsing context. These services could encourage collaboration and community interaction between the Internet users. In addition, having shown that the integration of a SIP stack into a Web browser makes no significant change on the memory footprint or quality of experience, the inclusion of SIP in commercial Web browsers is not only feasible, but also will offer new services to end users. SIP is an extensible protocol that is not only used in multimedia services provisioning, but also in control and automation, such as smart homes. Should Free Open Source Software (FOSS) and Open Standards be widely adopted, many more innovative solutions, like this project, would be introduced into the Web browsing experience and found in this Web 2.0 era as services are rapidly converging.

SIP is good at what it does, and the future is the web :) .

Applying pedagogical skillz to FOSS projects: Plover case study

When I was in New York at the end of April, Mirabai and I sat down and hacked through a lot of pedagogy thinking for plover, an open source steno software project. We made a concept map to see how various skills were connected and a list of what, exactly, made certain skills difficult to learn.

I’m posting this with curiosity about two things:

  1. How understandable are these notes to someone who wasn’t part of the conversation (in the basement of a little tea shop with fantastic panini)?
  2. From what you can see here, would any of this sort of thinking/work/process be useful to other FOSS (or open content/hardware/Free Culture) projects with an educational component — whether that’s new developer outreach, “students” as a user group for the software product, a software product that’s specialized and/or difficult to learn, or anything else?

This is a concept map showing the connections between the topics (the things in boxes – skills and concepts) that make up the ability to do steno at a basic level. You can see strong (double-lines) and weak (single-lines) connections between topics. Clockwise from top, they are…

  1. EC – error correction (delete, backspace, arrow keys, etc)
  2. CUST – customizing your own dictionary
  3. CORE – using a basic “core” dictionary (the one that comes pre-loaded with Plover)
  4. EXCEPT – dealing with exceptions to phonetic rules
  5. PHON->CHORDS – mapping phonemes (auditory) to chords (on the keyboard)
  6. READ – reading steno shorthand (being able to look at a brief for a word, immediately chord that word on your own keyboard, and have a good guess as to what that word might be in English)
  7. THERE ARE PHONEMES! – breaking down words into phonemes instead of letters
  8. KeyBoarD LAYOUT – what keys on the qwerty (sidewinder) keyboard map to what letters on the steno keyboard; mostly building muscle memory.
  9. ALPHabet – the ability to type individual letters on the steno keyboard (vital at the start when you don’t know the briefs for many words).

The numbers by each box (for instance, 3/3/6 (9) right above the “EC” block) are totals for strong links, weak links, total links, and a weighted sum (2*strong + 1*weak) for each concept. This is to help us see which concepts are the most centrally connected, which is sometimes surprising – for instance, I didn’t expect “READing stenographic shorthand” to be almost half as “important” (by number of connections) than being able to use the delete key! (in “Error Correction”)

The orange highlights were things we tagged as “enduring understanding” — if you study steno and only remember three things, the most important ones to remember are…

  1. Dictionary construction – the connection between EXCEPT(ions to the phonetic system) and CUST(omizing your own dictionary)
  2. Transliteration – the connection between THERE ARE PHONEMES! and mapping PHONemes-to-CHORDS.
  3. KeyBoarD LAYOUT – skill as described above.

This is a description of “why these concepts are difficult to learn” — it uses the same topics as listed above, which you can probably figure out by reading the descriptions. For instance, the concept of phonemes is really easy to learn (I think most of us “get it” when we first figure out what stenography is). In contract, error correction is inert (you can learn the “delete” key, and then totally forget what the chord is when you’re in the middle of transcribing something) and tacit (one of those things you’re just expected to “pick up” somehow — it’s so natural to advanced practitioners that it’s easy to forget that beginners need to be taught about it!).Sometimes, knowing why something is difficult to learn can help you figure out how to practice it. For instance, learning the alphabet is hard because it relies on skill — the muscle memory of learning the letters — so drilling over and over is probably a good way to learn that. However, the same kind of drilling may not be the best way to learn how to read steno syntax.So… readers, what did you get out of this, and is there something we can do to help you understand this more, or apply it to your own projects?

Teach Teachers What They Use, Teach Kids Where They Are

Gary Stager isn’t the first person to point out that we’ve been dumbing down computing education for the last 30 years—that we’ve gone from teaching kids how to program to teaching them how to use Excel to teaching them how to use iPads.  (My five-year-old didn’t need to be taught…)  What people mostly aren’t asking is why this has happened, but I have a theory.  I think teachers are teaching the computing that they use themselves, because that’s the most economical thing for them to do: they use Word to make hand-outs, and Excel to manage grades, so they’ve already invested in proficiency, so they can put together lessons in less time.  They don’t use Logo (or Scratch, or Python, or whatever) in their own work, so teaching it requires more effort.

Which makes me wonder how successful current “programming for everyone” efforts are going to be. I doubt most teachers are going to want to hack their classes’ web sites (and even if they do, their schools may not allow them to).  I’m even more skeptical of the idea that teachers will program in their day-to-day work any time soon.

(“But wait,” you say. “Most Latin teachers don’t speak Latin at home. And there aren’t a lot of physics teachers building lasers in their dining rooms.” True, but those are recognized, accepted specialties within teaching right now: they aren’t trying to gain ground, just hold onto what they have.)

Now let’s shift focus a bit. My 14-year-old nephew is on the web, creating content, almost daily, but “on the web” isn’t quite accurate. He’s actually on Facebook: along with GMail, YouTube, and Minecraft, that’s pretty much what the web consists of for him (at least that he’ll admit to his uncle). We already know that if we want to teach kids, going to where they are works better than bringing them into an artificial environment and giving them artificial tasks. I therefore think that if we want the 95% who aren’t already keen on hacking to care enough to do it, we need to teach them how to hack the places they already are. Having everyone build their own Facebook plugin would (a) take far too long to pay off and (b) be unsafe (imagine you’re Facebook’s director of security and someone tells you that 100,000 high school kids are about to build plugins for your site).  But what if we made a generic plugin that allowed people to build and run WebScratch programs inside Facebook, with access to (some) FB content?  I know, I know, there’s no such thing (yet) as WebScratch, but you get the idea: if we could create, test, and deploy this that makes it easy for them to build that, what would “this” and “that” be?

(“But wait”, you say, “Facebook is a closed pseudo-monopoly. We shouldn’t be supporting them!” I agree, but (a) going into a slum in Rio de Janeiro to teach the kids who live there doesn’t mean you support the idea of slums, and (b) they won’t understand why “closed” is bad until they understand more about the web in general, and open in particular, and they won’t learn either unless they care enough to learn in the first place.)

So, question #1 is, “What can we teach about computing and/or the web that will appeal to teenagers, but will also be useful to classroom teachers?”  And question #2 is, “What plugins can we build that will allow learners to hack where they are?”

Kulbir Saini (generalBordeaux)

Summer Hacking

Summer has already started and we (a small group of current and ex-IIITians in Hyderabad) are planning to have some fun digging into Ruby on Rails and related technologies. If you are also interested in utilizing your summer in a productive and fun way, you can join us and share your knowledge while learning from the rest of the members at the same time.

Assuming that all of us know at least one programming language (C/C++/Python), below is the list of things we are planning to learn.

  1. Ruby
    • If you already know a programming language, it’ll not be difficult for you to pick up Ruby.
    • In case you happen to know Python, you’ll feel at home.
    • Spend a good half an hour on Ruby In Twenty Minutes and you’ll know how simple and beautiful Ruby is.
    • Once you are done with Ruby quick-starter, you can try ruby in your browser and have some fun.
    • Please go through Ruby Style Guide to see how to write beautiful and easy to understand Ruby code.
  2. Rails
    • If you have worked with any MVC framework in past, you’ll pickup rails quite easily.
    • If you have worked with Web2py, then go through this Rails vc Web2py presentation which tries to show similarities among both frameworks.
    • RailsGuides is one of best and complete documentation for getting started with Ruby on Rails. It may look like a lot of content to beginners. If that’s the case with you, you can skip the guides in Digging Deeper section.
    • RailsCasts is  like a sea of quality Ruby on Rails screencasts. Watch a few on topics where you may have doubts.
  3. jQuery
    • We’ll be learning jQuery assuming that all of us are already familiar with JavaScript.
    • We’ll learn only basics initially and explore more as we start using it in a Rails project.
  4. CoffeeScript
    • CoffeeScript is a language that compiles to JavaScript but it’s way more beautiful to look at and easier to read and understand.
    • We’ll not write JavaScript code for our Rails app. Instead, we’ll be writing CoffeeScript!
  5. SCSS
    • SCSS is an extension of CSS3. It’s fun to write stylesheets using SCSS as it brings in additional features like variables, nested rules etc.
    • SCSS will ultimately be compiled to CSS.
    • Again, there is not much to do here. Half an hour to familiarize yourself with the syntax and you are ready to roll.
  6. Twitter Bootstrap
    • Bootstrap is a super simple and crazy awesome CSS and JavaScript toolkit developed by twitter.
    • We’ll be using bootstrap to power our Rails apps which we’ll build at a later stage.
    • Nothing much to learn here. It’s more about getting familiar with commonly used classes.
  7. Git and GitHub
    • We’ll be using Git for tracking code while building our apps.
    • We’ll learn about basic Git functions like cloning a repository, committing code, pushing code to a remote repository, working in different branches etc.
    • Go through Git Basics and we can learn more as we start using it full time.
    • We’ll be using GitHub to host all our code. If you don’t have an account already, get one.

We’ll learn these technologies while working regularly at our work places. Once in a while, we’ll meet and share our experiences and knowledge. The plan is to spend one or two weeks to go through basic stuff in all the topics. After that we can start a dummy rails project and learn more as we go.

If you are not in Hyderabad and still want to join, just start exploring and we can connect online! Happy Hacking!!!

Fedora Tutorials and Videocache by Kulbir Saini.


Feedback to the Euca2ools User Guide

In an earlier post, I said that I felt we had succeeded in making a clear and understandable user guide for Euca2ools. While I still feel that this is the case, we got some useful criticism of the guide from the last group to present on Wednesday. This group was tasked with trying to use Euca2ools and Eutester by only following the guides on our wiki, and then to report their findings and suggestions. They told us that while the guide overall was well-made, there were two areas that were difficult to follow.

The first issue was finding the user credentials when setting up Euca2ools. I admit to having trouble with this as well at first, but it did not even cross my mind to put instructions into the guide on how to find your credentials. Oh well, that is why having other people critique your work is good! I edited the wiki to fix this problem.

The second issue was about getting a working SSH connection. This is the biggest weakness of the guide. Getting SSH to work consistently never happened for us. We have several theories on why it failed so often. We suspect  as dynamic IPs could be the culprit. I do not have any solutions currently better than what is already posted in the guide, so it will stay as it is for now. Perhaps a future class will be able to fix up that part of the guide for us.


Eucalyptus Presentations

On Wednesday, all of the groups presented on what they had accomplished during the semester. I did not realize how much work we actually got done as an entire class until I saw the presentations. There were 7 presentations in all:

  1. Eutester Issues
  2. Cloud Overview
  3. Eutester Documentation
  4. Infrastructure
  5. Leveraging Python for Eutester
  6. Using Euca200ls (my group)
  7. Installing Euca2ools and Eutester

The first group gave an overview of the open and closed issues on Github. The second group gave a very detailed overview of the ideas behind cloud computing and defined many general and Eucalyptus-specific terms. The third group described the process of attempting to document the Eutester code. Dave and Mike, the infrastructure group, had an entertaining discussion about how much frustration went into setting up a working Eucalyptus cloud. The fifth group went into depth about using Python with Eutester. My group described the main functions of Euca2ools and the process of creating a user-friendly guide on our wiki. We actually succeeded in demonstrating a working SSH connection to an instance created from an image that I uploaded to our Eucalyptus cloud, which I consider to be a big accomplishment! The final group critiqued the experience of attempting to get several modules up and running, specifically Euca2ools and Eutester, just by following the wiki guides that we had all created.

It was very interesting to see the other groups present, especially the groups involved with Eutester. Spending most of my time with Euca2ools, I did not look into Eutester very much at all. Seeing all of my classmates describe their experiences with it was great to see.


Final weeks

Final weeks,

During the final weeks, I worked on trying to resolve the open issues on Eutester. However, I did not really finish; still look forward even after the semester is over to contribute to eucalyptus. The currently  open issues are as follows:


Chris Tyler (ctyler)

New Role: Industrial Research Chair - Open Source Technology for Emerging Platforms


On Tuesday, the Natural Sciences and Engineering Research Council (NSERC) announced a number of grant awards at the Polytechnics 2012 conference, including the new Industrial Research Chairs for Colleges (IRCC) grants. I am honoured to be selected as the chairholder for the NSERC Industrial Research Chair for Colleges in Open Source Technology for Emerging Platforms in the Centre for Development of Open Technology at Seneca College.

This five-year renewable applied research grant enables me to continue and expand upon the work that I have been doing, along with a talented team of research assistants, with Fedora ARM and related projects. My goal is to bring the wealth of open source software currently available for x86 PCs and servers to emerging ARM based general-purpose computers. Although ARM architecture chips are the most popular CPUs made (more ARM chips shipped last year than there are people on this planet), most of these went into dedicated devices, and ARM chips are just starting to appear in general purpose computers. In order to make the transition to general-purpose ARM systems viable, industry-standard software stacks are needed. Fedora is a perfect fit for this purpose, because it encompasses both a large collection of cutting-edge open source software and a vibrant community, and it feeds many downstream distributions and projects.

My work in this new role will start with an expansion of existing work, including operating the Fedora ARM Koji buildsystem and improving the Raspberry Pi Fedora Remix, but I will additionally be focusing on Fedora on ARM server-class systems. In future phases, this will encompass working with the Fedora ARM project to promote ARM to primary architecture status, extending existing open source system management (and possibly virtualization/cloud management) frameworks to manage high-density ARM clusters, doing field trials of ARM-based data centre solutions, and bringing Fedora to the next generation of ARM technology.

Although the majority of my activity will shift from teaching to applied research, I will continue to teach the SBR600 Software Build and Release course in order to bring the research experience back into the classroom. I'll also continue to participate in the TeachingOpenSource.org initiative. As an Industrial Research Chair, I will also have a bit more of a public-facing role, representing CDOT and advocating the use of energy-efficient systems to local SMEs.

Many thanks to Red Hat for partnering with Seneca on this initiative, and I look forward to (continuing to!) work closely with Red Hat's incredible technical staff. I also thank the many companies and organization who wrote letters of support for the grant application, and look forward to collaboration and possible future partnerships with those organizations. And I particularly want to thank Seneca for its support of applied research, my colleagues at CDOT for their encouragement and for creating such an awesome environment to do applied research, and for the team that wrote the grant application under intense pressure and tight deadlines last November.

Watch this space for updates!


Crafting a Useful Message in 140 Characters or Less

Crafting a Useful Message in 140 Characters or Less

Be Clear

Final Thoughts about CS401/Eucalyptus

I had a lot of fun working in this class it was definitely a difference experience than almost all my CS courses before hand.   I liked working on a big project my only request for the future is to see more code but, something that was really unavoidable for a beta-test style class that we had.  I know it wasn’t anyone’s fault just too many problems with the cluster to really get into it.  Just because we didn’t get coding done doesn’t mean I didn’t learn quite a bit about how exactly working on a big project was like.  Learning to use git, irc, and being on a list server were pretty new experiences for me, aside from gaming I had never used irc, git seems to be invaluable to know since every employer I’ve talked to seemed excited that I already know it.

 

Main thing I’ll take away from the course is exactly what cloud computing is, all the nomenclature we’ve learned, how to work on large scale projects, how to communicate with a large group of people from different time zones and different backgrounds in programming/computer science.

 

Final presentations today were great, seemed like every group found a lot of different topics to talk about and cover and they all seemed to master their specific topic.


Final Wiki Adjustments

I never got around to putting up this blog post last week but I figure it’s worth posting.

 

After siting down with Chris while he worked his way through our wiki was great, really gave me a chance to see how a wiki flows through another set of eyes.  Luckily we’ve all been doing a great job of working with the wiki adding the needed information and adding it coherently.  Only issues really were fixing formatting adding things like, “don’t forget to use sudo” to the top of commands rather than after.  Only “big” changes I made to the wiki was adding a bit on git and how to install python user a package manager.

 

I enjoyed working with Chris getting his input, I think it was smart to do it on my own first, since I knew a bit on how to get everything running from doing it a few times, then having him go through.  Since I never posted this Karl mentioned that there is a whole field of engineering in something like that, actually testing your code/wiki/idea on an audience and jotting down notes.


Closed Issues on Eutester Bug Tracker

Last time I worked on updated the class wiki with the updated open issues and this time I am working on updated the wiki with the current closed issues. In order to get this information I used the github site to find the information that I needed to update the our site. As with the open issues, the closed issues change daily because some of the open issues get resolved and become part of the closed issues. It is important to keep track of both the open issues and the closed issues to get a good idea of how the project progressed and which changes have been made since the issues have been addressed. On this github site it allows people to view the open and closed issues and also allows the user to comment and add issues in case they come across any to help notify other people.

I took the information that I found on the closed issues and compared them to the ones we had on the wiki for the class. I then saw the ones that the wiki was lacking and updated them with the ones that were found on the github site so that the class can be up to date with current information. It is important to always check the site because things change daily and you dont want people working on problems that have already been resolved. Also if the users look on the closed issues they can see if the issue was already addressed and resolved they can find their answer  there. Some closed issues include: Eutester allowing multiple ssh connections, create standardized eutester log/output format, testing capabilities for Jenkins + EC2 plugin. If anyone is trying to get updated information about the current closed issues they can go to the following website: https://github.com/eucalyptus/eutester/issues?page=1&state=closed


Open Issues on Eutester Bug Tracker

During this time I worked on checking the github website to take a look and see what issues were open. Day to day the issues change, there are sometimes new ones, and sometimes they are resolved and turn into closed issues. Currently there are 12 open issues that have submitted to the Eutester bug tracker website. Some of the open issues are not really issues but rather suggestions or modifications to some of the things to make them look better but are not real issues. Our group has the responsibility to take a look on the github site and update our wiki page with any new or removed issues on the site.

I went through the website and compared it to our wiki and updated our wiki to make sure that we have an updated site with accurate information. Some issues include: define licensing, create a test directory wiki, creating a standard set of debug tools that represents test results visually, etc. A list of all the current open issues can be found by following this website https://github.com/eucalyptus/eutester/issues?page=1&state=open


Week 14: Last week of the class

This is the last blog for the class CS 401.  This semester has being a good one because of what I have done and of what I have learned.  I have learned a lot from research about FOSS Field Trip 1 and FOSS Field Trip 2. I was not familiar with Open Source projects but in this class I did learn almost everything about Open Source Projects. I did learn what are the benefits of working in Open Source Projects which some of the benefits are getting experience, getting reference, the ownership of the my work. Also, I did learn about the tools that are used to work on Open Source Projects. Some of the tools I did learn are Chatzilla, which it is used between the developers to give or get help from around the world. Other great tool for Open Source Project is Git, which it helps the developers to check the latest version of the software they are working.  Also I did learn a lot from the work I did with my group or individually on a big project as Eucalyptus. I did a lot of research and reading the documentation. Also I did try to install the software in my OS. After I did work with my group on EuTester bug tracker. It was a lot of work because in order run EuTesrter we were supposed to install it. But in this part my group mates and me spend so much time to installed. Finally we did install it but not time has left to test it. From this work I did learn a lot, I did learn how to solve installation a problem, and to be more patient   with this kind of issues. I did try little bit contribute on documenting the code which it was challenging to me because I do not know the python language. All this experience made me feel very well and active. This class made me to feel more comfortable when I start the new job.

I am living this class very enthusiastic view. I am thinking to find a other Open Source Project and to be their contributor. I like to contribute because of many thinks, as I like to contribute in our society. I like to get more experience on software development.


Evaluation of the Euca2ools User Guide

Most of my work this semester has been experimenting with Euca2ools and modifying our User Guide to reflect my findings. My primary goal in collaborating on this User Guide was to make it easy to follow, especially for a Linux novice such as myself. Ultimately, I think we achieved our goal. My group partners are definitely the experts and filled the guide with very useful information on how to perform the various tasks. I took their knowledge and formatted it, expanded on it, and tried to explain as best I could what each command was doing. A lot of trial and error went into this, as a lot of the time I wasn’t exactly sure what I was doing. A positive side-effect: fumbling through Euca2ools and revising this guide over the semester did help me a lot with my knowledge of Linux.

I wanted someone who was completely new to Euca2ools to be able to successfully do something productive by only following our guide. I think we came pretty close. Now that the semester is at an end, the guide is as finished as it will be until perhaps a future CS class takes over on the same project. It definitely is not 100% done. Eucalyptus is a huge project and Euca2ools is a major part of it. There is always more that we could do in writing the user guide, but I am happy with the progress we made.


Success!

Today is a big day in working with Euca2ools on our cloud. I have successfully uploaded an image, kernel, and ramdisk to the Matrix server and an instance is actually running off of my image. This has been a trial and error process that has taken weeks, and I am pretty satisfied. Here is the proof:

The instructions posted on our user guide by Dhimitri and Mindo were really helpful, but of course being a complete noob to Linux I was confused by some parts. The wiki will be changing slightly to reflect my new found understanding and hopefully the revisions will help anyone else trying out this process in the future.


What makes a community led project work?

This guest post has been contributed by Ross Gardler of OpenDirective. Ross is Vice President of Community Development at The Apache Software Foundation and a mentor at the Outercurve Foundation. Ross has been active in open development of open source software for over ten years.

OSS Watch has been participating in the development of Apache Rave, a ‘next-generation portal engine, supporting (Open)Social Gadgets as well as WC3 widgets’. As Sander observes in this blog, the Rave ecosystem is made up of a ‘diverse range of collaborators’ from both the academic and commercial sectors. These partners are sharing resources in order to build a critical piece of software at lower cost as well as to increase innovation around that product.

A few days ago I posted an evaluation of the Apache OpenOffice project’s journey through the Apache Incubator (all code entering the Apache Software Foundation (ASF) must pass through the incubator). That post looked at what makes an Apache project different from many other open source project. This post repeats many of the same points, but rather than examine them from the point of view of OpenOffice I will examine why predominantly academic team behind Apache Rave chose to go to the ASF.

In Apache projects, a Project Management Committee (PMC) oversees each project on behalf of its users, contributors, committers and the foundation itself. Upon entering incubation the PMC is guided by mentors from the foundation. Upon graduation mentors either retire or become equal members of the PMC. For the Rave community the provision of mentors meant that the project team could avoid the mistakes of many other open source projects. As a result, the team got an honourable mention in the Black Duck Open Source Rookie of the Year awards. Not bad for a team with no significant knowledge of open source software development on a large scale. Now it has graduated, it no longer has mentors actively overseeing its work, but it still has the backing of over 100 full Apache projects and another 50-odd incubating projects.

New committers and PMC members are elected by the PMC based on merit. It should be relatively easy for anyone to gain influence on an Apache project. In the ASF this is achieved through rewarding merit. If you contribute to the project you are rewarded with influence over the project. In environments where staff turnover can be high, such as academic research, this is important with respect to continuity. It also removes the opportunity for someone to insist on a level of control based purely on the cash they wield. In an Apache project it is all about the delivery.

All decisions unrelated to individuals happen on the public mailing list, discussions on the private list is kept to a minimum. This behaviour has no special bearing on academic projects compared to non-academic projects. For both types this rule ensures maximum inclusivity which results in maximum engagement with potential contributors.

‘If it didn’t happen on the dev list, it didn’t happen’ – meaning no decision about the project can be made outside of the public development list. Proposals can be drawn up elsewhere, but decisions occur on the public list. Academic projects, like open source projects in general, often involve collaborators from a variety of geographic regions. This can make it difficult to ensure that everyone is kept informed and engaged. Apache projects require that all significant decisions are made in public so that no participant (or potential participant) is excluded from the process.

Where possible, decisions are made by consensus reached through discussion. There are voting rules but the ASF prefers not to have to vote. Apache Rave began life as a merger between three pre-existing projects. It was important that all three parties were equally engaged in the project. Had there been a pre-defined leader this would, probably, have made some participants feel less engaged. Initially the consensus driven approach can be hard to understand, however, over time natural leaders emerge in specific areas of the project. At this point consensus is easily achieved since each decision is led by the person best equipped to lead it.

Releases are created according to the ASF’s licence requirements. The Apache License is a permissive licence that allows anyone to do anything they want with the code. This allows for maximum flexibility in business cases for engaging with the project which in turn encourages third party contributions. Whilst conforming with Apache policies is more onerous than might be found elsewhere, they are designed to ensure that people can use and contribute to your software with minimal legal risk. Risk is something that universities and companies alike tend to avoid.

Trademarks and logos used by ASF projects belong to the ASF. Protecting trademarks is an important part of open source software. By running the Rave project inside the ASF much of the legal infrastructure and experience is in place should an issue arise in the future.

Apache projects are managed by a diverse group of people, each representing their own interests within the project. Apache decision making processes prevent ‘block votes’ controlling the process by ensuring each voice is equally loud. A number of people are contributing to Apache Rave, each with their own motivations. Each contributor must be assured that what they do today will still be useful tomorrow. Apache projects adopt a model that means it is not possible for third parties to gain control of a project. Consequently, researchers and product developers do not run the risk of losing influence over the code.

As can be seen from the above list of required behaviours found in Apache projects, the focus is on ensuring the project provides maximum opportunities for collaboration and innovation. There are other ways of achieving this but for the initial participants in Apache Rave (Universities of Bolton, Oxford and Indiana, SurfNet, Mitre Corp. and Hippo) the ‘Apache Way’ was deemed to be the most suitable. The same can be said of Apache Wookie which is used in Rave and was also helped by OSS Watch as it moved to Apache.

If your project wants to explore the opportunities that foundations (not just the ASF) can offer your project OSS Watch is here to help.

(Week 9)

Today we were more comfortable with our program on running Eucalyptus after we spoke with the speaker last week. Once again professor Wurst ask as were do we stand on our assignment for Eu Tester, do we cover all the issues and if we are able to run the Eucalyptus cloud yet. well we were not able to run the Eucalyptus yet however we where getting close on what where the issues and where they were coming from. At this point i was very close on what i had to do and what was my team design to accomplish.

Some of the issues we found was on how to run or Eu Tester however we went back to to the same system on what programs where needed to run it or what version of Linux works with the system. my choice was learn a little bit more with github to understand if that would get the Eu tester running at least once before the semester is over.

(Week 8)

Today was something special we had a guess speaker from Eucalyptus project and also the one who focus us to work on Eucalyptus it self. today everyone gave there own opinion on Eucalyptus, our troubles, our success and what have we learn so far. she explain most of the issues we were having on running Eucalyptus, what system was compatible and what wasn't. the latest Cent OS was 6, however we came with the conclusion that Cent OS 6 had a lot of non compatible issues that couldn't be solve. Thus we came to the conclusion of using Cent OS 5 instead for as a Linux distribution.

It was great having a person who can point us on the right direction so we can get our self on the right track and accomplish our goals. right before she left she say if we had any question to let her know on IRC channel, she will be available when necessary.

(Week 7)

This week professor Karl Wurst, wanted to know how far we have gotten on our assignment with Eu Tester. Most student work with the Eu Tester were mostly stuck on running the program well, others didn't know what team where in. Not even mention what they were doing at all. My biggest problem was communicating with my team to see where we are living off. Somehow we where all over the place, all i kept was working on my normal assignment about continuing the acronyms from Eu Tester hoping that something would change. nothing much done that day just read and learn as I go. Trying to figure out if i can not only install Eu Tester, but also get it running...

(Week 6)

Last week I discuss what my input where for the Eu Tester. I was working on how to identify some of the acronyms for the Eu Tester. However even though I'm a computer science student doesn't mean that I'm fluent on html. so I ask some of the student for help on the subject. some people where stock but some help me out and i corrected a few acronyms connecting them to the glossary. Before doing this I had to ask permission to the student working on the glossary to make sure there where no problems down the line. Amazing everything turn out just fine, i got lucky that my assignment was not such a big deal that i might ruin others people previous jobs.

I was also trying to also run Eucalyptus cloud however on my Linux Ubuntu but somehow its almost impossible to even install some of the files. I keep thinking that it was because of the version of Ubuntu I had but some student it works with the same Linux version. well now i had more homework to do besides reading chapter 5 and chapter 6. At least I'm learning more and more everyday...

(Week 5)

This is the day most student started to volunteer to work for the Eucalyptus project, since i never work with python programming language before i thought i would just probably be in the way. Instead i volunteer on vocabularies Eu tester, since most people didn't know the abbreviation of some of the glossary. I even read a little about python to see what would be the difference between that and java programming which is the one i know a little about... Sadly its very different. However i had to catch up with the reading so that knight i read through chapter 3 and also chapter 4. Most of the student told me to read chapter 5 also because it explain building the code of eucalyptus. In the end is hard to try to learn a new programming language when your even rusty on the original. I realize i have to learn how to crawl before i can walk or in this case run... This doesn't mean that in the future I'm not going to try and learn it I am an computer science major non the less.

(Week 4)

On this week we have to work on Git which is a control system. we had to download and install git, following a few commands for example install the git itself then make an RSA key and config git before sending it to the Eutester project. I never heard about git before but it sounds really cool to find out more. Git was designed and developed by Linus Trovalds, it was for Linux Kernel development. Git is build to work on Linux basically but it can run also on Mac OS X, Windows and Solaris.

I learn you can do alot with git, for example git can work offline when you don't have access to an internet server. Another important command that i found facenating is cloning and merging command. it clones a repository to a new directory and merge joins two or more development history together. since i work with iphones and mobile devices i believe git will come in handy with those applications and codes.

Week 13: Finally I did install EuTester

After so many unsuccessful tries to install EuTester on same operating system but on two different kind versions “Ubuntu 10.04” and “Ubuntu 11.10”. At one point I did think that might be some kind of issue from an update of the EuTester code. I did think this way because some of my classmates had EuTester installed at their OS before me. I did start to read Eucalyptus forums to find out why I could not install EuTester. I did tried different way to install EuTester but still I had problems. I tried to install EuTester on different versions of Ubuntu but still I didn’t have any luck. I did have problems while I was installing M2Crypto; it was giving to me error:

Image

I did install the Paramiko but still I was getting errors. I started to search at Eucalyptus forums but I couldn’t find any thing useful. I did try an other way by cloning the EuTester to the home folder after I did install python-paramiko when I did try to run the command “python setup.py build” I did get this kind of error:

[eduart@eduart]$ python setup.py build

python: can’t open file ‘setup.py’: [Errno 2] No such file or directory

[eduart@eduart]$

After I did try many times to fix this problem, I did research on Internet to figure out what was the issue. From my research I came to conclusion that I had package dependency problems. While I was doing the research I had the chance to find the blog writing from ‘viglesiasceread’ at our class wiki. At this blog I did find information that where very helpful to me. Following all the instructions in blog helped me to install EuTester very easy and smoothly. Now the only thing is left to do it is to run for the test the EuTester.

From all of this I did learn a lot. One of things I did learn is that first to solve e problem while I am installing software I should look for the software dependency. I did learn that if I work hard by doing research and testing eventually I will find the way to solve the problems not mater how hard and complicate they can be.


Last weeks of the semester…

The end of the semester has approached rapidly and is finally here. Although we do not have a completely working cluster on campus we have spent a lot of time working with EuTester using the ECC cloud and getting familiar with how it works. I personally only got as far as running test scripts in EuTester, the learning curve was quite steep and I had never used so many command line prompts prior to this class. The documentation for setting up and installing EuTester is decent for a more experienced user, but for someone who had never done work like this i, it was a little difficult to configure with the documentation given. I think that it would be a great idea for us to contribute some additional documentation to what already exists for EuTester, especially documentation for a less experienced user.

We have also been given two assignments which I am currently working on for our last day of class/final. One is an ethical analysis of the Eucalyptus project and the other a final presentation for each groups experiences with the project. My groups focus was EuTester issues and bugs, however most of our group only just started to run test scripts by the end of the semester because we all experienced many issues configuring EuTester. So we were unable to dive into the issues/bugs that were listed on the github site. Our presentation will probably focus more on the installation and configuration of EuTester and the troubles we experienced setting it up and what we learned.

I really enjoyed the opportunity to do something like this with our class and wished we could have gotten closer to actually have a fully working cluster on campus. If only the class lasted over multiple semesters or had a lab attached to it we may have gotten further. The project itself is very time consuming and complicated so I am happy with how far we got on just 1 semester. Hopefully following classes can pick up where we left off and continue to work on the same project.


Week 12: Watching the EuTester bug tracker

This week I thought to get deeper on EuTester bug tracker. There have being some new issues added to the EuTester bug tracker, and I did spend some times looking at all the issues that are there. In software industry it is very important to learn to understand how bug tracer issues works because it is very important tool for a program developer.  According to the EuTester bug tracker about one of the issues that is opened since three days ago, it is about adding changes, which are requested from Code Review Session in EuTester meeting. Some of the requesters are:

From this issue looks like the EuTester will be having some big changes on it code and on it output of the results. From my experience is that if they do try to change the code to make the software to performer well the chances are the software may preform better but there will be new bugs. This will be reflected at EuTester bug tracker.

According to EuTester bug tracker there is one new issue that it is about run_instance that should still provide a euinstance regardless of reachability. This issue is very new about one day old. When run_instance is called in Eucaops it chooses to convert the boto instances to euinstances only if the instance is reachable. Instead it should always return the euinstance and just not pass keys to the Euinstance constructor which will ensure that the euinstance will not try to create an SSH connection.

From all this experience I did learn a lot. I did learn that there never would be any software without bugs. I did learn that is when we change the code there will be new issues, and because of this what it is very important for me is to understand about bugs and how to fix the bugs or the issues in real world. So to learn and have more experience it is the best for me to continue working on an Open Source Project.


I'd Like To Thank The Hackademy

My New Year's Resolution is to learn to code with Codecademy in 2012!

My New Year's resolution is to learn to code with Codecademy in 2012! Join me



read more

Week of April 30th 2012

This week was the last in-class meeting of the semester.

We discussed various ideas about how we should use our Eucalyptus cloud in the future. One of the ideas was to provide students in lower level courses with images of the cloud that supplied them with all the tools they need to do their work.

We then were able to meet up with our groups and further discuss completing our project.

I worked on creating a Power Point presentation that represented a visual summary of our research on Eucalyptus’ Architectural Overview as well as general Cloud Computing information.

Also, on Saturday we met up on campus as a group to do a practice run of our presentation. After a few run-throughs we felt pretty good about what we had prepared.

I decided on a topic and wrote my Ethical Analysis regarding Eucalyptus. This was a learning experience as I began to do my research on security issues with Cloud Computing/Eucalyptus. I had previously heard about the issues, but upon doing some research on the topic it furthered my knowledge of things I wasn’t aware of.


FRAND or FOSS?

Standards in technology are generally considered to be a good thing. Having documented technologies that can be implemented by all means that businesses can compete on equal terms and consumers benefit from the effects of this competition. Of course, before a technology can be standardised, individual technology players need to do the work of innovation to develop the techniques the standard will encompass. Sometimes these technology players will have sought to protect their investment in innovation by obtaining a patent for the innovative technology they have created. Patents are designed to provide a monopoly over a specific technological process for the owner, so how does this monopoly fit in with the idea of a standard?

The answer is that it doesn’t, really. In situations where implementing a standard would necessarily infringe on someone’s patent, the standards creation bodies will usually try to get the patent’s owner to agree some terms which will guarantee them a return for their investment but which will still allow everyone in the market to actually use the standard in their products. These kinds of terms are often referred to as RAND or FRAND – standing for (fair), reasonable and non-discriminatory.

FRAND is a slippery term. There’s no single definition, which makes determining what is and is not FRAND hard. Most people agree that the general principle behind FRAND is that the fees or other requirements for use of the patents in question are not ridiculously high and are the same for anyone who wishes to implement the standard, whether your best friend or fiercest competitor.

That sounds like a good idea to most people, and for more traditional hardware and closed source implementations of standards it arguably is. There can be problems, however, when software under a free or open source software wishes to implement a standard available under FRAND terms. For example, the GNU GPL family of licences all contain conditions that say – in essence – that if a distributor of the software is forced to pay for the use of a patent in the software, they must either cease distribution or obtain a licence for everyone (the schoolroom chewing gum scenario). These conditions are designed to deter patent owners from pursuing distributors of GPL software, but they mean that payable FRAND standards and GPL software do not play well together.

Even where the licence is not GPL, there can be problems with the interaction between FRAND and FOSS. One way in which patent owners make their patents available for use in a standard is by issuing a ‘non-assert’ promise. These are unilateral undertakings to not assert their patent rights, and in this context they are usually conditional on the patent being used in an implementation of the standard (not unreasonably). However in the context of open development, this can be something of a nightmare. You may write a piece of code that implements the standard and release it under a FOSS licence, confident that you are protected from patent litigation by the non-assert. An unwary downstream developer looks at your code – specifically the bit that implements the patent – and thinks: “that’s a nice bit of code – I’ll use that for my next project…” Of course, unless by some happy accident their next project is also implementing the standard then their use of the same code will not be protected by the non-assert, creating a potentially very dangerous problem.

The question of the compatibility of FRAND terms with FOSS software has become a vexed one recently due to the UK Government’s Cabinet Office seeking to create a policy around the use of open standards in government IT. The idea here is to reduce the currently crippling costs of government IT systems by opening the procurement process up to more competition. One of the perceived problems with the current situation is that there are only a few providers of solutions who can cope with the government’s massive requirements, and that the monolithic solutions they provide are often very hard to substitute once they are in place. The solution, or part of it anyway, is to break up the requirements into smaller deliverables that could be provided by more and smaller companies. How do you get these smaller solutions to work together? Use standards, preferable ‘open’ ones. That ought to create a level playing field for all sizes of providers, and alongside that make it easier to pitch FOSS solutions – with their problems with more restrictive standards and tendency to be supported by SMEs – to government.

Initially the Cabinet Office just stated that they would mandate open standards in future government procurements. Unfortunately this ran into problem of definition. Just as with FRAND – no-one has a single, snappy definition of what and open standard actually is. It’s easy to assume – with Justice Potter Stewart – that we will know one when we see one, but in practice there are polarised views in this area. The Cabinet Office’s initial definition was not to everyone’s liking. To resolve this potential confusion, not to say conflict, the Cabinet Office launched a consultation exercise to help pin down exactly what an open standard is, according to the largest possible group of respondents. The deadline for this has since been extended after it emerged that a perception of bias might have been introduced by the conduct of the process.

Some evidence of the ructions that lead to the consultation exercise can be seem in the documents columnist Glynn Moody obtained through a Freedom of Information request. I will not attempt to summarise this weighty sheaf, but I would recommend glancing through them if you want to see how lobbying of the government over IT matters looks in its naked state. At issue is the idea that – as in the Cabinet Office’s initial definition – open standards should be entirely royalty free. Now obviously ‘at no cost’ is about as low a barrier to entry as one can get, at least in monetary terms, so it’s easy to see why the Cabinet Office adopted this definition from its original home at the W3C. For one thing, it would get around the GPL-compatibility issue mentioned above, and if used instead of a non-assert, also the ‘mode of use’ problem I have cited. However it would also exclude some existing technical standards (although not many – most are already royalty free), and clearly some players are not going to be happy with that…

OSS Watch is interested in the outcome of this process because – as a non-advocacy group – we are keen that all potential solutions are able to be assessed on their merits alone. We would strongly recommend that everyone responds to the UK government consultation exercise, in order that a truly communal definition of open standards can be achieved.

MIT and Harvard Annouce edX



Video streaming by Ustream

read more

A cool idea that failed: you can’t reverse-engineer a paper for open access

One of the things I tried out as part of my independent study on open access this semester was the idea of reverse-engineering a publication. This isn’t about hacking code; it’s about hacking copyright. And as it turns out, it doesn’t work.

Here’s the setup: imagine you’re a researcher and you’ve written a great paper that’s published in a prestigious journal. You beam with pride! Life is fantastic. And then you find out about the open access citation advantage, realize your publisher allows archiving of preprints, and think that life is about to get even better.

There’s just one problem. You can’t find your preprint version (the final edited version you send to the publisher, usually a plain Word or LaTeX document). You only have the final copy PDF with all the branding and pretty-print formatting on it – the version that got published in the journal. Somehow, in the frenzy of hard drive clean-up that accompanied your “I am done with this paper forever!” project completion celebration, you… you lost the file.

But wait… the final print version is identical to the text you sent in, right? All the publisher did was add formatting. So if you could just grab the text from the final print version and throw it back into a Word document, that would be identical to the preprint, and you could post that. A preprint is just the end publisher content there without the end publisher formatting. Right?

Wrong. The problem here isn’t technical, it’s legal. I actually took a print pdf and “reverse engineered” it into a LibreOffice document, and it looked fantastic — I did the process by hand, but it would be easily automatable, so the software portion of the problem is trivial. I talked with Donna Ferullo, Purdue’s copyright librarian, and the copyright portion of the problem is, unfortunately, a blocker bug. The crux of it the matter is that we don’t know what value the publisher added before printing. Okay, this probably is “not much other than formatting,” but still… it’s legal grey. So we hit a hard wall on that, but at least we learned something.

I promised to write something up about this since I don’t think the reverse-engineering idea has been broached before, and it’s at least good for others to know that it’s a dead-end — so here it is.

Project Puppy is… not human subjects research? and: the true nature of Project Puppy begins to be revealed.

For folks who’ve been following the radically transparent research adventures of project puppy (and the similarly transparent project kitten), we have… unexpected news.

Project Puppy is, apparently, not human subjects research. We don’t need to go through IRB.

Which is fantastic news (we don’t need to go back to our participants with yet more paperwork), but also somewhat confusing news; it feels like playing Minefield and clicking on a square and having the computer tell you “yay, you didn’t die!” But that only tells you about the square you’re on. Fog is all around you, so you’re not sure whether you can move in any direction without dying; there might be a cliff two feet to the right that you can’t see.

So I asked Robin to send back the following reply, and we’ll see what we get.

Thanks for your decision — this is great news that will help our research group move forward with our work. Since we plan on doing more projects with the radically transparent research technique in the future, would you mind helping us understand why our project is not human subjects research, and whether we are close to the boundaries of any actions that would make it human subjects research? We were told during initial office hour consultations that it ought to be submitted for HSR approval, so we’d like to make sure we understand the rationale so we can make sure we submit future “radically transparent research” projects for review appropriately in the future.

The short term effects of this, however, is that now we can talk openly about Project Puppy. Actually, we can call it by its real name, and show people its data, and explain the research, and… oh, this feels good. So, without further ado: I’m going to stop calling it Project Puppy, and start using the project’s proper name. Changemakers. (That’s what we call it, anyway.)

The short (overly-academic-sounding) version is that we’re doing “preliminary work on change knowledge through a study that investigates what exemplar changemakers understand about how transformation occurs.”

What this actually means is that Linda did long interviews with 8 people who’ve caused substantial changes in engineering education through the course of their careers, asking them to talk about how the heck they did that, and we’re trying to figure out, okay, how do they think? What makes someone able to affect that sort of change? Can we learn how to do it too? And stuff like that.

Now to put Project Kitten through the IRB process (armed with the Changemakers decision) so we can open that up to the world properly as well!

Jeff Osier-Mixon (Jefro)

Ottawa Linux Symposium Now In July

Ottawa Linux Symposium, the venerable Canadian Linux conference, has changed its date this summer to avoid a conflict with another event. The new dates are July 11-13 in Ottawa. See the OLS website for more details.

Thanks to alert reader Jeremy, who noticed the old date on the Open Source Conferences page.


Catching up

Wow, I haven't posted in a long time. Shortly after my last post I had the flu for a week, then I had a job opportunity come up and I spent half a week flying around for interviews. For two weeks after that I was writing docs and doing more research for OVC and I forgot to blog...

So I have some docs up for OVC now explaining how the code works (. I also added to the readme and made additional comments in the code. Hopefully my additions will help the next team that can pick up OVC.

This week and next I hope to add some unit tests to OVC. I'd like to be able to test to make sure the gstreamer interface is working correctly and that the network connection is working. First thing I need to do is figure out how to launch a sugar activity through a unit testing environment. From there it should be easy enough to mock another activity and have it send fake connections.

Update:

I had a conversation with Cerlyn from OLPC about unit testing. It seems like this will be more difficult than I thought...

<trose> can anyone point me to a good reference or example for unit testing sugar activities? specifically testing video and network interfaces?
<Cerlyn> trose: As far as Sugar goes, there is no activity specific testing framework I am aware of; I've been begging for one to be made.
<Cerlyn> Sascha Silbe has been working on unit tests for the core Sugar environment on occasion, but as far as I know progress on that front has been going slow
<trose> I'd like for just some way to start up an activity and then send it fake signals like another activity is trying to connect. Then I could make sure the activity responds correctly
<Cerlyn> many tests Silbe's been working on require user involvement to report pass/fail as well :/
<trose> Cerlyn, well that is frustrating...
<trose> how exactly does sugar start up an activity? is there a way to emulate that?
<trose> or is there a way to say like sugar.startActivity() and get a pointer back?
<Cerlyn> You can start an activity within sugar by running "sugar-launch {fully qualified name of activity here; like org.person.trose.myActivity}"
<trose> Cerlyn, okay
<Cerlyn> That probably wraps a DBUS interface to do it
<trose> but that's cmd right? can i get a handle to inspect the activity?
<Cerlyn> Historically having one activity directly launch another is something that hasn't been done; I do not recall the reasons offhand (not a developer; rather QA)
<trose> Cerlyn, hmm
<trose> i could see how that would cause problems
<trose> this would be a training script though
<trose> *testing
<Cerlyn> trose: In theory, being GTK3 based, GTK-supporting test frameworks should work
<Cerlyn> but graphical testing is obviously not unit level

So there isn't a good way to start up a sugar activity and maintain a handle on it. I may be able to hack around this somehow though. Stay tuned...

Don’t keep your data under your desk

It is a well-known problem for researchers. Data is being collected for a research project and no decision has been made about how to manage the data during the project. Naturally, once you have finalised the project and start publishing on the end results, you may deposit your final dataset in a institutional repository such as your university’s DSpace or E-prints repository, or you may even put it in Dryad. However, that is not sufficient to keep your data safe while you are still working on it. Often, such data ends up on a computer that just happens to lie around in the office or department, or even on the researcher’s local machine.

People that are conscious about back-up issues may be using a solution like Dropbox, SkyDrive or Google Drive, but some issues exist around data ownership and rights that may prevent you from wanting to use these services.

So what would be easier than just saving it in a folder, as you would with tools like Dropbox, but have it backed up by the institution, version-controlled automatically and keeping it within the trusted boundary of your organisation? And still allowing you to optionally share the folders with your research group, or a wider group of people, whichever is appropriate.

This is what the open source tool DataStage offers you. Developed as part of the DataFlow project, it is a piece of software that will be installed at, usually, the departmental level of your institution, but it can also be hosted in a virtual ‘cloud’ infrastructure. It allows you as a user to simply map a network drive to it. You save files as normal, and everything will be handled for you. Near the end of the project, when you start publishing and want to make the datasets available to a wider public, you can push any dataset to a SWORD-compliant repository, such as the ones mentioned above or to a DataBank instance.

The beauty about an open source project like DataStage is that anyone is welcome to use the software and contribute towards its ongoing development. You can imagine there are many more use cases for a tool like this, which are unrelated to research data. Take for example the popular Raspberry Pi project. In a classroom situation where where all the kids have their own little computer, they can submit their homework via DataStage to the teacher who can centrally check everything on the main server and mark their work. This smart different application was highlighted by David Shotton in its presentation during the DataFlow Launch Workshop on 2 March.

Are you curious about what DataStage can do for you? Come and download our beta release to try it out and join us on the DataFlow mailing list to tell us about your experiences and what may be improved. We would love to hear from you!

4/29/2012:-

During class meeting on this week, every group discussed their progress. As far as that go, my group still had difficulties running Eutester on their laptops. Thus, all we did was discussing the current issues and how we can fix them. During the week, I went through most of the code on Eutester as I was planning on working with the documentation team. However, every case was already assigned to the team members.

While the week went a long, I looked at the all ways that issue #23 ‘Create a Test Directory Wiki ‘ could be resolved. In according to the issue description the directory should be the start of what will be the directory for all tests and suites that wants to bundle with eutester itself. Moving forward any testcase that gets submitted into Eutester should be accompanied with a Wiki article that defines what the test does and why it exists. When the testcase and wiki article are accepted into the codebase they will be added to the Test Directory with a link and quick summary of the test.

I was quite lost on where to begin, but as of the 12th week, I will contact Vic to walk me through in order to fix this issue. In addition, I will begin working on the wiki article for the testcases.

 


Three Must-Have Ingredients To Spice Up Your E-Learning Courseware

Three Must-Have Ingredients To Spice Up Your E-Learning Courseware
by Jessica Athey (23 April 2012)

(Source:  http://www.astd.org/Publications/Newsletters/Learning-Circuits/Learning-Circuits-Archives/2012/04/Three-Must-Have-Ingredients-to-Spice-Up-Your-E-Learning-Courseware.aspx)

Jessica Athey is Manager of Global Marketing for Lectora.  She listed the following items as the three must-have ingredients to spice up your e-learning:

1.   Visuals with Video
2,   Interact with the course and fellow learners
- Flash animation
- Characters
- Games
- Social learning
3.   Graphics with insightful" gusto


I E E E International Conference on Teaching, Assessment, and Learning for Engineering 2012

IEEE International Conference on Teaching, Assessment, and Learning for Engineering 2012
20-23 August 2012, The Hong Kong Polytechnic University, Hong Kong

IMPORTANT DATES:
Paper submission deadline: 30 April 2012
Notification of review outcomes: 7 June 2012
Final paper submission: 30 June 2012
Registration deadline: 30 June 2012
Conference dates: 20-23 August 2012

Website:  http://www.tale-conference.org/tale2012/

Eutester closed Issues:

The following are the closed issues on Eutester:


Week of 30 April 2012

This week the semester officially wound down. We went over what is expected of our final presentations, as well as lat minute work to be done. I am so glad we finally have images running on the cluster. This has been a neat experience; as close to working on a real-life development team as you get in school.

The open source movement is good for innovation and software development. Everyone’s work is transparent, so there is more accountability. They say that open source projects have fewer defects per line of code when than proprietary software. Having more eyes on the code makes for a better product.

That is why Ubuntu has no need for antivirus software. So many people have reviewed the code, that security flaws have largely been weeded out.

There is a serious competitor to Eucalyptus on the horizon called OpenStack. It is completely open source. It is behind Eucalyptus in features and reliability, but it is catching up fast.

One thing I’ve learned in the last semester: No matter what, you are not going to be an expert in every language. What you need to do is find out what the requirements are for a particular job, then become an expert in those areas. You can take classes until the cows come home, but in the end you are responsible for your own learning. The only way to become a good coder is: You guessed it, do a lot of coding!

Wrapping Up Eutester Documentation

This week I've finished commenting on the webtestcase.py script and pushed the changes through. It was interesting running into my first conflict errors and having to pull changes from the origin master before being able to make any further pushes. So right now our group is almost done documenting the eucaweb directory with the init.py file being the only one left which I'll try to finish documenting next week. At this point we've done a good amount of work on eutester documentation in general, although it's looking like we won't be able to complete the project entirely with the semester coming to an end. I'm also disappointed I wasn't even able to develop any actual code to fix the issues on the Github issues tracker which I was planning on doing after the documentation project was finished. However, I feel good that we were able to help the creators of eucalyptus and I hope what we've done will assist anyone who works on the project in the future.

Wrapping up the Semester

The last week or so I have spent all of my time outside of class and work finishing up classes for the semester, and cs401 was no different. Between getting slides together for our presentations and finishing up my ethical analysis of the Eucalyptus project, combined with all of my other classes, it has been a busy week.

Today during class Dave, Mike, and myself took a trip over to the server room to flatten the network. Once we had that accomplished, we sat down and and configured two more nodes and edited the Eucalyptus Installation documentation accordingly. To be honest, it was very easy to do following the documentation that Dave had on the Wiki, even if most of it wasn’t necessary anymore due to there being packages we could install instead of having to compile from source. Hopefully some other people can go through the guide and get the rest of the nodes up and running.

Overall I think I learned a lot in this class over the course of the semester. I learned about version control and coding in a team environment, cloud infrastructure and how it all comes together, and a lot of python. All of which I can safely assume will make great additions to my resume. That being said, I’m looking forward to seeing everyone’s presentations next week and seeing how much we have accomplished as a class.

 


Class Week 12

In this week’s class we focused on making sure everyone is familiar with the things that are due for the end of class. We got together with our group to discuss what we are going to put together for the presentation on the last day of class. We need to figure out the information that we are going to discuss in our presentation and what materials needs to go on the slideshow. Each student is responsible for speaking for a few minutes about the things that we did on the group project, so I am coordinating with my group so we don’t all speak about the same thing. We worked on the bug tracker and putting together documentation about the current issues that people are having. I am going to be working this weekend on updating our section on the page with the new issues and getting rid of the old issues or the ones that have been closed. 


Class Week 11

In this week’s class we focused on everyone doing their part in the project to make sure everyone is contributing. We met with our groups and discussed all the things that need to be done for the remainder of the weeks and put it all together for everyone else to leave. I myself was working with Git hub to find all the issues that are being tracked, going through both the open and closed ones. It is important to look at the closed issues as well to see how the software has progressed from the beginning of the semester. Our group has been responsible for adding the documentation for the issues that have come up since everyday there are new updates.


Meeting 12 – Cloud is finally working right

At last, with a visit from Andy Grimm last week, looked like our Dave was enlightened by him and figured out what he went wrong with our cloud’s configuration and he got it fixed. Now our images on the cloud can be started. The downfall is that all the accounts are wiped, so we had to re-register and update the credentials. But anyway, it was a great news we got in a while. I can play around with eutester now.


Final Presentation

This week I spent most of my time figuring out what was left to finish in our eutester repository. I also used a lot of screenshots from github for my powerpoint presentation. I worked with Nate, Coady, and Marcos to put together our final project. We all put together screenshots and code samples from the changes we added to the repo to show everything we accomplished this semester.

Also, I wrote my paper on the Eucalyptus Ethical Analysis this week. It was interesting to look at the software and find out where it was good and where it was not so good. As it turns out, Eucalyptus is not 100% free and open source. It is better described as “open-core” because it only allows certain aspects of the product to be used for free. To add on more powerful features, users must pay a fee, which goes against the entire open source mindset. Users are only given a free trial of the software and all of the products that can be used with Eucalyptus are proprietary. There are other options that are similar to Eucalyptus, that are actually free and open source, but it appears that Eucalyptus is more mainstream and user friendly. 


Meeting 9 – Review what have been done so far!!

Today is like a day that we go over to see what the group has been able to accomplish so far. Each group will report what they have done. It looks like we got the cloud running to the point that images can be added but failed to be ran. I also found out that a new version of euca2ools on github will fix the small bug about uploading image in the previous version (the one stated as the latest stable version on the open.eucalyptus.com). And all kinds of documentations are looking great.


CS401 – Creating the Wiki Articles

I am now actually consolidating the information our group researched and putting it into wiki articles. Right now I have the main page, the cloud controller, cluster controller, walrus and storage controller. I still need to do node controller and I need to go over everything and fix it up a bit.

Our group has also been working on the presentation that we will give during the final exam, and that is coming along well. Link to the wiki below.

 

http://cs.worcester.edu/wiki/index.php?n=Main.ArchitectureOverview


10 mins of teaching webmaking

Small webmaking events that you can run in 10 minutes are a central part of the Summer Code Party concept. We’re calling these ‘kitchen table hackjams‘. But, really, they are just you sitting with two friends (or two kids, or two parents) doing a very tiny starter web project. The idea is to have fun and learning something.

We started beta testing this kitchen hackjam concept a few weeks back. I did one with my two sons (Tristan is 12, Ethan is 10) and a friend (Rowan, 10). We sat down to play with the LoveBomb prototype, a tool that introduces basic HTML by inviting people to edit a greeting card.

A learned some good things and bad things about the process. Three highlights:

  1. It’s possible to do a quick webmaking session with almost zero preparation or notice. I proposed the event and we were doing it five minutes later.
  2. You can do alot in 10 or 15 minutes. We’d basically finished the ‘lesson’ in that amount of time. Then two of the kids got bored (my kids) and one of the kids (Rowan) kept tinkering.
  3. For older kids especially, relevant content is key. Tristan gave the ‘toy’ content in the LoveBomb at ‘WTF is this?’ reaction. He’s a regular YouTube game commentator. If he was going to learn HTML, he wanted to be making something ‘real’.

At least half a dozen people ran and blogged about their own kitchen table beta tests. Here is a list of postings that I know about:

If you’re interested, we’re still looking for more testers. There is page on how to run a test. And, also, there is a chance to discuss these on our weekly webmaker calls.

Update. Matt Thompson posted this awesome ‘Webmaker Recipes 101: How to host your own kitchen table hack jam‘ just after this went up. Worth the read.


Filed under: education, learning, mozilla, openweb, webmakers

Test Run of the Wiki

This week I am going to start from scratch and try to install Eutester+euca2ools from our wiki only, keeping notes along the way to see if we need to update anything to make it more clear.  I imagine from what I’ve been reading that we’ve made quite a large amount of progress over this course and when I had to restart last month it took me maybe an hour? (would be been less if I realized >>> meant that you type python ) but that’s besides the point.  This blog post will serve as a note pad for anything our wiki should make clearer.

 

 

Updated this:

I decided that I would find someone I could use that doesn’t really know much about Eucalyptus and at least knows how to work Linux.  It turned out pretty well, I have some notes jotted down that I can finalize the wiki with to make it as fast as possible.  Everything was pretty well laid out, aside form small things like the note “don’t forget to use sudo” after they entered all the commands.  One thing I need to add is that we never directly say to install boto.

 

Overall this test went pretty well.


Our blogs