<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>an act of subversive playful cleverness &#187; Debian</title>
	<atom:link href="http://blog.stone-head.org/category/debian/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.stone-head.org</link>
	<description>personal blog of Rudy Godoy</description>
	<lastBuildDate>Mon, 23 Jan 2012 17:55:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<copyright>Copyright © Rudy Godoy :: an act of subversive playful cleverness 2010 </copyright>
	<managingEditor>rudy@stone-head.org (an act of subversive playful cleverness)</managingEditor>
	<webMaster>rudy@stone-head.org (an act of subversive playful cleverness)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://blog.stone-head.org/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>an act of subversive playful cleverness</title>
		<link>http://blog.stone-head.org</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>personal blog of Rudy Godoy</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>an act of subversive playful cleverness</itunes:author>
	<itunes:owner>
		<itunes:name>an act of subversive playful cleverness</itunes:name>
		<itunes:email>rudy@stone-head.org</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://blog.stone-head.org/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Dennis M. Ritchie aka dmr</title>
		<link>http://blog.stone-head.org/dennis-m-ritchie-aka-dmr/</link>
		<comments>http://blog.stone-head.org/dennis-m-ritchie-aka-dmr/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 08:44:01 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=318</guid>
		<description><![CDATA[Last weekend Dennis M. Ritchie, creator of the C Programming Language, the UNIX Operating System, The Plan 9 Operating System and many other key contributions to computing, passed away due an extended illness. I learned about it yesterday trough Rob Pike, former dmr&#8217;s colleague and friend. I&#8217;m writing this post to honor him and his [...]]]></description>
			<content:encoded><![CDATA[<p>Last weekend Dennis M. Ritchie, creator of the C Programming Language, the UNIX Operating System, The Plan 9 Operating System and many other key contributions to computing, passed away due an extended illness. I learned about it yesterday <a href="https://plus.google.com/u/0/101960720994009339267/posts/ENuEDDYfvKP">trough Rob Pike</a>, former dmr&#8217;s colleague and friend.</p>
<p>I&#8217;m writing this post to honor him and his legacy. While I&#8217;ve seen people mourn his departure, I&#8217;ve also noticed most technical people don&#8217;t really understand why his work is important for today&#8217;s computing, so I&#8217;m here to give a refresh. Since I&#8217;m good with visual tools (mindmaps) I&#8217;ve made one to describe the extension of dmr&#8217;s contribution to the world. You can get a glimpse of how this is important. The main topics are their key contributions, the sub-topics are the current technologies that were built upon dmr&#8217;s work. Click on the image to see a larger resolution version.</p>
<p><a href="http://blog.stone-head.org/wp-content/uploads/2011/10/dmr.png"><img class="aligncenter size-medium wp-image-319" title="Dennis M. Ritchie legacy" src="http://blog.stone-head.org/wp-content/uploads/2011/10/dmr-300x116.png" alt="" width="300" height="116" /></a></p>
<p style="text-align: center;">
<p><strong>The C Programming Language</strong></p>
<p style="text-align: center;">
<div style="text-align: -webkit-auto;">You can name this a the mother of UNIX, UNIX-like and many programming languages that people use today. The focus on simplicity by giving just a small set of tools is where it&#8217;s power resides. Most operating systems available, and in development, today are written in C. Most of the services that make the Internet work have been programmed in C. C also influenced other languages such as C++, Objective-C, even Python and Google&#8217;s Go.</div>
<div><strong>The UNIX operating system</strong></div>
<div>Today&#8217;s Internet rely in UNIX-like operating systems running crucial services such DNS, webservers, email servers, etc. Nothing of this could be possible without an Operating system that was built with the simplicity and design that it has. The vision/philosophy behind is where it&#8217;s power resides. &#8220;write programs that do one thing and do it well&#8221;. The GNU Project, Linux, the *BSD where conceived on the idea of replicating such invention. Even Windows has some UNIX bits inside.</div>
<div><strong>IPC</strong></div>
<div>This is probably the less-known Dennis Ritchie&#8217;s contribution. Today is crucial. Web &#8220;2.0&#8243; would not be able to be AJAXian if there was not IPC. IPC means Interprocess Communication, simply put: make two system processes exchange messages. This foundation was key for concepts such threads, RPC and others. Today&#8217;s AJAX relies on the RPC concept, for instance.</div>
<div>So, either you are programming the next hot Web 2.0 or just writing a C program for playing with sockets remember there were giants on which shoulders you are standing now. Thank you Dennis, I have the book.</div>
<div>&#8220;UNIX is very simple, it just needs a genius to understand its simplicity.&#8221; -Dennis Ritchie</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/dennis-m-ritchie-aka-dmr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compute clusters for Debian development and building &#8211; final report</title>
		<link>http://blog.stone-head.org/compute-clusters-for-debian-development-and-building-final-report/</link>
		<comments>http://blog.stone-head.org/compute-clusters-for-debian-development-and-building-final-report/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 03:02:24 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[gsoc]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=291</guid>
		<description><![CDATA[Compute clusters for Debian development and building &#8211; final report Summary &#8212;&#8212;- The goal of this project was intended to have Eucalyptus cloud to support ARM images so it allows Debian developers and users to be able to use such facility for taks such package building, software development (ie. Android) under a Debian pre-set image, [...]]]></description>
			<content:encoded><![CDATA[<p>Compute clusters for Debian development and building &#8211; final report</p>
<p>Summary<br />
&#8212;&#8212;-<br />
The goal of this project was intended to have Eucalyptus cloud to<br />
support ARM images so it allows Debian developers and users to be able<br />
to use such facility for taks such package building, software<br />
development (ie. Android) under a Debian pre-set image,<br />
software testing many others.</p>
<p>What was expected to have at the end is a modified version of Eucalyptus<br />
Cloud that supports ARM images on the first place. To date this goal has<br />
been reached but is not complete, read production-ready. Extensive test<br />
needs to be done. Besides that we have another goal which is to get<br />
Debian community to use this new extended tool.</p>
<p>Project overview<br />
&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Eucalyptus is a hybrid cloud computing platform which has a Open Source<br />
(FLOSS) version. It&#8217;s targetted to be used for PaaS (Platform as a<br />
Service), IaaS (Infrastructure as a Service) and other &#8216;distribution&#8217;<br />
models. It can be used also for cloud management. Given that it has<br />
implemented the EC2, for computing, and the S3, for storage, API, it&#8217;s<br />
compatible with existing public clouds such Amazon EC2. Currently it<br />
supports running i386 and amd64 images or NC (Node Controllers) in<br />
Eucalyptus naming.</p>
<p>Eucalyptus is a complex piece of software. It&#8217;s architechture it&#8217;s<br />
modular composed by five components. Cloud Controller (CLC), Walrus (W),<br />
Storage Controller (SC), Cluster Controller (CC) and Node Controller<br />
(NC). The first three are written in Java and the remaining are written<br />
in C. Our project modifications was targetted to the NC component,<br />
altough there is a remaining task for hacking the UI to allow setting<br />
the arch of the uploaded NC image instance.</p>
<p>The Node Controller is in charge of setting the proper information for<br />
Eucalyptus to be able to run virtualized images. Eucalyptus uses XEN and<br />
KVM hyphervisor to handle internal virtualization subsystem, and<br />
Libvirt, which is an abstraction of the existing virtualization<br />
libraries, for program interfacing.</p>
<p>Having that in mind we are back to our project. For our project to be<br />
sucessful we had various tasks to do. Beginning with understanding such<br />
complex piece of software, followed by hacking the requiered bits and<br />
later integrate the work so it results in a useful tool. Our approach to<br />
the project was then inline with such description.</p>
<p>The project&#8217;s history<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>I started my participation in GSoC approaching Steffen to discuss about<br />
what was expected, or more accurately, what was in his mind. We<br />
exchanged emails previous to my application and that resulted on my<br />
application being submitted. From the beginning I should tell that I<br />
wasn&#8217;t much clear on the &#8216;final product&#8217; of the project, however we<br />
refined ideas and goals during the weeks following to the official<br />
begining of the project. What was clear for me, after all, is that for<br />
this to &#8216;see the light&#8217; and gain adoption Eucalyptus code needed to be<br />
dealt with.</p>
<p>Our first task was review ARM image creation from scratch, using the<br />
work done by Aurelien and Dominique in previous GSoC. I&#8217;ve managed to<br />
get an updated ARM image running under qemu-system-arm. The issues<br />
presented in the past were almost unexistant now that the versatile<br />
kernel is official. You can see this on my first report.</p>
<p>After that being done and sometimes in parallel my main goal was then understand<br />
the internals of the Eucalyptus software in order to figure out it&#8217;s<br />
feasibility, where do we need to extend and how big the task is, we<br />
didn&#8217;t knew upfront. From the beginning of the project Steffen was kind<br />
to introduce me to the Eucalyptus developers and that have resulted in a<br />
good outcome for Debian, IMHO, to date.</p>
<p>Understanding Eucalyptus internals was quite a fun task to say the less. As you<br />
can see on the first part of the report Eucalyptus is modularized and<br />
the component I was expected to work with was the NC (Node<br />
Controller). Given that I isolated my work focus, I started to focus on<br />
learning the internals about that component.</p>
<p>Node Controller as described is in charge of &#8216;talking&#8217; with<br />
virtualization hyphervisors in order to arrange things to run guest<br />
image instances. The module has basically one main component: handler.c,<br />
in charge to talk to the appropiate hyphervisor and there are<br />
&#8216;extensions&#8217; (think of OOP polymorphism but acknoledge it&#8217;s plain C)<br />
that interact with KVM or XEN.</p>
<p>I figured that if qemu-kvm is ran in Hyphervisor mode we can manage to<br />
run an ARM image with qemu-system-arm. Given that Eucalyptus has<br />
interaction with KVM hyphervisor in place, this answered the question of<br />
the project&#8217;s feasibility. First green light on.<br />
&gt;From this point the scope reduced to interacting with the KVM handler<br />
(node/handler_kvm.c) and extend it to support running an image that is<br />
not amd64 or i386.</p>
<p>NC makes use of libvirt to abstract interaction with Hyphervisors. So,<br />
the next phase was learning about it&#8217;s API and figure what&#8217;s needed to<br />
be modified next. Libvirt uses a XML file for setting Domain (in<br />
libvirt&#8217;s naming) definitions. So, Eucalyptus provides a Perl wrapper to<br />
generate this file on runtime and allow the NC to invoke libvirt&#8217;s API<br />
to run the instance. Next task then, was adapt such script to support<br />
ARM arch. The current script is taiolred for amd64 and i383. I worked on<br />
that front and managed to get a script prototype, that can later be<br />
improved and support more arch&#8217;s.</p>
<p>Generating an adequate Libvirt&#8217;s XML Domain definition file for ARM can<br />
be a heroic task. There are many things to have in mind given the<br />
diversity of the ARM processor and vendors. I focused on the versatile<br />
flavour given that I was going to test the image I built on the first<br />
place and it ran fine under qemu-system-arm.<br />
The Perl script wrapper then was adapted for such configuration and it<br />
can be tested independently by issuing the following command:</p>
<p>$ tools/gen_kvm_libvirt_xml &#8211;arch arm</p>
<p>The &#8211;arch parameter is what I implemented and it&#8217;s intended to be<br />
called from the kvm handler on instance creation. With the extensibility<br />
in mind I&#8217;ve created a hash to associate the arch with their<br />
corresponding emulator.</p>
<p>our %arches = (<br />
&#8216;amd64&#8242; =&gt; &#8216;/usr/bin/kvm&#8217;,<br />
&#8216;arm&#8217; =&gt; &#8216;/usr/bin/qemu-system-arm&#8217;,<br />
);</p>
<p>Added the arch parameter to the GetOptions() function and used<br />
conditions to tell whether the user is looking for a particular arch,<br />
arm in our case. The most important parts to be considered are the<br />
,  and  entries.</p>
<p>hvm</p>
<p>$local_kvm</p>
<p>There&#8217;s also  and  that require to be tailored for arm.</p>
<p>root=0800</p>
<p>As output the script generates an XML template that can be adapted to<br />
your needs and it could be used and tested with tools like Libvirt&#8217;s<br />
virsh. So that, it can be useful independently of Eucalyptus. I managed<br />
to get to this point before the midterm evaluation.</p>
<p>Now that we had the XML wrapper almost done, the next task was to make<br />
the handler call pass the arch as an argument to the script, so the<br />
image is loaded with the proper settings and we are able to run it.</p>
<p>Eucalyptus doesn&#8217;t have a arch field for NC&#8217;s instances. So, after approaching<br />
Eucalyptus developers, with whom we had already being interacting, I<br />
settled to my proposal of extending the ncInstance struct with an arch<br />
field (util/data.h). The ncInstance_t struct stores the metadata for the<br />
instance being created. It&#8217;s used for storing runtime data as well as<br />
network configuration and more. It was indeed the right place to add a<br />
new field. I did so by creating the archId field.<br />
Now I needed to make sure the arch information is stored and later used on the<br />
libvirt&#8217;s call.</p>
<p>typedef struct ncInstance_t {<br />
char instanceId[CHAR_BUFFER_SIZE];<br />
char imageId[CHAR_BUFFER_SIZE];<br />
char imageURL[CHAR_BUFFER_SIZE];<br />
char kernelId[CHAR_BUFFER_SIZE];<br />
char kernelURL[CHAR_BUFFER_SIZE];<br />
char ramdiskId[CHAR_BUFFER_SIZE];<br />
char ramdiskURL[CHAR_BUFFER_SIZE];<br />
char reservationId[CHAR_BUFFER_SIZE];<br />
char userId[CHAR_BUFFER_SIZE];<br />
char archId[CHAR_BUFFER_SIZE];<br />
int retries;</p>
<p>/* state as reported to CC &amp; CLC */<br />
char stateName[CHAR_BUFFER_SIZE];  /* as string */<br />
int stateCode; /* as int */</p>
<p>/* state as NC thinks of it */<br />
instance_states state;</p>
<p>char keyName[CHAR_BUFFER_SIZE*4];<br />
char privateDnsName[CHAR_BUFFER_SIZE];<br />
char dnsName[CHAR_BUFFER_SIZE];<br />
int launchTime; // timestamp of RunInstances request arrival<br />
int bootTime; // timestamp of STAGING-&gt;BOOTING transition<br />
int terminationTime; // timestamp of when resources are released (-&gt;TEARDOWN transition)</p>
<p>virtualMachine params;<br />
netConfig ncnet;<br />
pthread_t tcb;</p>
<p>/* passed into NC via runInstances for safekeeping */<br />
char userData[CHAR_BUFFER_SIZE*10];<br />
char launchIndex[CHAR_BUFFER_SIZE];<br />
char groupNames[EUCA_MAX_GROUPS][CHAR_BUFFER_SIZE];<br />
int groupNamesSize;</p>
<p>/* updated by NC upon Attach/DetachVolume */<br />
ncVolume volumes[EUCA_MAX_VOLUMES];<br />
int volumesSize;<br />
} ncInstance;</p>
<p>With that in place what was left was modifying the functions that<br />
store/update the ncInstance data, and also the libvirt&#8217;s function that<br />
calls the gen_kvm_libvirt_xml script. I&#8217;ve modified the following files:<br />
- util/data.c<br />
- node/handlers_kvm.c<br />
- node/handlers.{c,h}<br />
- node/test.c<br />
- node/client-marshall-adb.c</p>
<p>Most important the allocate_instance() function that is in charge of setting up<br />
the instance metadata a prepare it to pass it to the handler, then<br />
hyphervisor trough Libvirt&#8217;s API. The function now has a new archId<br />
parameter as well, to keep coherence with the field name. It also<br />
handles whether the field is set or not. We (Eucalyptus developers and<br />
I) haven&#8217;t settled wether to initialize this field with a default value<br />
or not. I&#8217;d stepped up and initialized with a NULL value for this string<br />
type var.</p>
<p>if (archId != NULL){<br />
strncpy(inst-&gt;archId, archId, CHAR_BUFFER_SIZE);<br />
}</p>
<p>Stores the value only if it&#8217;s passed to the function. This is essential to<br />
don&#8217;t break existing functionality and keep consistency for later releases.<br />
With this we almost finished the part of extending Eucalyptus to support<br />
arm images. It took quite long to get to that point. Next step: test.</p>
<p>As I mentioned in my previous report the current Eucalyptus packaging<br />
has issues. From the beginning I&#8217;ve approached the pkg-eucalyptus team,<br />
who were very hepful. So I myself set me up and joined the pkg team with<br />
commit access to the repo. Even the GSoC is not intended for packaging<br />
labour, I needed to clear things on that side because what we want is<br />
adoption so anyone, say a DSA or a user, could setup a cloud that has<br />
support for running arm instances under amd64 arch.</p>
<p>Over the weeks between mid-term evaluation and past week I&#8217;ve worked on<br />
that front. Results were good, as you can see in the pkg-eucalyptus<br />
mailing list and SVN repo.<br />
Eucalyptus has a couple of issues that because of it&#8217;s nature and complexity<br />
triggered build errors. Those issues came from the Java side of the project and<br />
few form the C-side. The C-part was a problem with AXIS2 Jar used to generate<br />
stubs for later inclusion on build-time. There&#8217;s no definitive solution to date<br />
because one of the Makefile on gatherlog/Makefile issues a subshell call that<br />
doesn&#8217;t catches the AXIS_HOME environment variable. I&#8217;ve worked around this<br />
by defining it as a session env var from .zshrc. The other problem is related<br />
to the Java libary versioning and most likely (we had to investigate further)<br />
to groovy versioning.</p>
<p>As I explained Eucalyptus has 3 components written in Java. The Java code uses<br />
extensively the AXIS2 library for implementing webservices calls, the groovy<br />
language for JVM, and many other Java libaries. Eucalyptus open source version<br />
ships both &#8216;online&#8217; and &#8216;offline&#8217; versions. The difference is basically that<br />
the offline version ships the Java libaries JAR files inside the source code,<br />
so you can build with all required deps.</p>
<p>Our former packaging used a file to list which Java libraries the package<br />
depends on and it symlinked them using system wide installed packages. This<br />
rather than helping out triggered a lot of problems I explaing with more detail<br />
on the pkg-eucalyptus ml. I worked around this by telling the debian/rules<br />
not to use such file to symlink and instead use the existing ones from<br />
the source. The last weekend I managed to get to that point and built<br />
sucessfully the software under Debian. I&#8217;ve done that in order to have a<br />
complete build-cycle for my changes, and then test. In fact today I&#8217;ve<br />
spotted and fixed a couple of bugs there.</p>
<p>What&#8217;s available now<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
To date we have a Eucalyptus branch where my patches are sent. The level of<br />
extension is nearly complete, more testing needed. One missing bit is to<br />
change the UI so that the user selects which arch her image is and that<br />
value is passed to the corresponding functions on the Node Controller<br />
component.</p>
<p>We also have an ARM image that can be tested and later automated. I&#8217;ve<br />
recently learned about David Went&#8217;s VMBuilder repo that extends Ubuntu&#8217;s<br />
vmbuilder to support image creationg. I might talk to him to adapt the tool<br />
in order to support creation of arm images and use it to upload to an<br />
Eucalyptus cloud.</p>
<p>I&#8217;ve also created a wiki page with different bits on which I was working on.<br />
I&#8217;ve yet need to craft it to be more educational. I guess I&#8217;m going to use<br />
this report as a source :)</p>
<p>We also had more strong cooperation with the Eucalyptus project and<br />
involved their developers on the packaging and this project, which is<br />
something I consider a great outcome for this project and GSoC goals:<br />
to attract more people to contribute to FLOSS. I&#8217;ve also been contacted by<br />
people from the Panda Project and we might cooperate also.</p>
<p>Future work<br />
&#8212;&#8212;&#8212;&#8211;<br />
I plan to keep working on the project regardless the GSoC ends. Our goal<br />
as Debian could be integrating this into the Eucalyptus upstream<br />
branch. We have good relations with them so expect news from that side.<br />
I also plan to keep working with the Eucalyptus team and related<br />
software in Debian, given that I&#8217;m familiarized with the tools and<br />
projects.<br />
I&#8217;m also planning to advocate SoC for Debian in my faculty. To date we<br />
had already 4 students, IIRC, that have participated in the past.</p>
<p>Project challenges and lessons<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>During the project I faced many challenges both in the personal side<br />
and in the technical one. This part is a bit personal but I expect we<br />
learn from this.</p>
<p>First challenge was the &#8216;where do I sit&#8217; problem. My project was<br />
particular, indeed quite different from the others on it&#8217;s nature. I had<br />
to work on a software that is not Debian&#8217;s and then come and say &#8216;Hey we<br />
have this nice tool for you, come test it!&#8217;. So, indeed, my focus was on<br />
the understanding of such tool, Eucalyptus, and not much on looking back<br />
at Debian because I didn&#8217;t feel I had something to advertise yet and<br />
indeed I got most valuable/useful feedback from Eucalyptus developers<br />
rather than Debian&#8217;s, which for the case is OK IMHO. I had great<br />
mentoring. This situation probably looked a bit of &#8216;isolation&#8217; from my<br />
side, from Debian&#8217;s POV, but it was not intended it&#8217;s just how it needed<br />
to be IMHO.  I felt that I wasn&#8217;t contributing directly to the<br />
project. I&#8217;ve spoke about such thing with Steffen a couple of times. I&#8217;d<br />
like to say that it was also my concern but I probably failed on<br />
communicating this, second challenge.</p>
<p>Third challenge was more technical and related to the first one. Since I<br />
was not writing any code for a Debian native package/program but instead for<br />
other project I faced the situation of where to publish my<br />
contributions. Eucalyptus had some issues on managing their FLOSS repo<br />
and the current development one is outdated comparing to the<br />
-src-offline 2.0.3 release. The project didn&#8217;t fit pkg-eucalyptus repo<br />
neither, even we thought to branch the existing trunk and ship my<br />
contribs as quilt patches, but it involved a lot of more work and burn<br />
on reworking something that has issues now. Later on time I branched the<br />
bzr eucalyptus-devel Launchpad repo and synced there with the<br />
src-offline code. I was slow to react on thing I can say.</p>
<p>Fourth challenge was also technical and still dealing with. I was looking to<br />
setup a machine to set a cloud and test my branch. The Dean of my faculty<br />
kindly offered a machine but I&#8217;ve never managed to get things arranged<br />
with the technical team. Steffen and I discussed about this and evaluated<br />
options, at the end we settled on pushing adoption rather than showcasing it.<br />
Since for adoption we need a use case, I&#8217;ve spend some SoC money on hardware<br />
for doing this. I should have news this week on that side :)</p>
<p>Finally, I&#8217;d like to thank everyone on the Debian SoC team for this<br />
opportunity to participate. I like to thank Steffen for his effort on<br />
arranging things for me, Graziano from Eucalyptus for his advice on<br />
working with the software code. The different people from Eucalyptus I<br />
interacted with and showed interest on  the project&#8217;s sucess. My<br />
classmates and teachers from the Computer Science School at UCSP in<br />
Arequipa-Peru, friends from the computing community in Peru &#8211; SPC and<br />
finally my family. Thank you, I learned a lot, specially on the personal<br />
side. As Randy Pausch put: &#8220;The brick walls are there to give us a<br />
chance to show how badly we want something.&#8221;</p>
<p>Resources<br />
&#8212;&#8212;&#8212;</p>
<p>Please see the Wiki page[1] for any reference to the project&#8217;s resources.</p>
<p>1- http://wiki.debian.org/SummerOfCode2011/BuildWithEucalyptus/ProjectLog</p>
<p>Best regards,<br />
Rudy</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/compute-clusters-for-debian-development-and-building-final-report/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Compute Clusters Integration for Debian Development and Building &#8211; Report 4</title>
		<link>http://blog.stone-head.org/compute-clusters-integration-for-debian-development-and-building-report-4/</link>
		<comments>http://blog.stone-head.org/compute-clusters-integration-for-debian-development-and-building-report-4/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 05:32:58 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[eucalyptus]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=287</guid>
		<description><![CDATA[Hello, this is the fourth report for the project. First, I&#8217;d like to apologize for being late, I took a short trip over the weekend and missed the deadline. This time I&#8217;ve good news for my project. As expected I&#8217;ve made the necesary changes to have Eucalyptus support ARM images. The approach was extending and [...]]]></description>
			<content:encoded><![CDATA[<p>Hello, this is the fourth report for the project. First, I&#8217;d like to<br />
apologize for being late, I took a short trip over the weekend and<br />
missed the deadline. This time I&#8217;ve good news for my project. As<br />
expected I&#8217;ve made the necesary changes to have Eucalyptus support ARM<br />
images. The approach was extending and exposing an &#8216;arch&#8217; field that<br />
will be used by libvirt&#8217;s XML domain file. I&#8217;m working currently on<br />
having the involved functions working with the new extension and I<br />
expect to have this done over the middle of the next week. </p>
<p>What was done so far<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
- Extended the ncInstance_t struct on util/data.h adding the archId<br />
  parameter. This struct keeps the information regarding a node (nc),<br />
  say RAM, Kernel, etc. Currently it has no way to set an arch in order<br />
  to be used later.</p>
<p><code>typdef struct ncInstance_t{<br />
...<br />
    char reservationId[CHAR_BUFFER_SIZE];<br />
    char userId[CHAR_BUFFER_SIZE];<br />
    char archId[CHAR_BUFFER_SIZE]; // arch field added<br />
    int retries;<br />
...<br />
}</code><br />
  The Eucalyptus team was OK with this approach that I&#8217;ve proposed few<br />
  weeks ago. For all my changes the approach is maintain compatibility<br />
  with existing features.<br />
  We still have to define if we are setting a default value, say amd64,<br />
  or keep it unset until the user sets one. For now we will be supporting<br />
  amd64 and arm as valid fields.</p>
<p>- Modified the allocate_intance() function to support the archId<br />
  field. This involved adding a new parameter and detecting whether its<br />
  present and setting de value accordingly. This function is later used<br />
  by the doRunInstance() function in node/handlers_kvm.c</p>
<p>- Modified the involved functions that are called by the KVM handlers<br />
  and result in passing parameters to the XML file generator for being<br />
  used by libvirt&#8217;s and KVM and have the image running under<br />
  Eucalyptus. The new parameters and field are not required and only<br />
  being used if they are set with a value. The archId parameter has been<br />
  added as the last one, so existing function calls can work. This could<br />
  be rearranged later, but will involve a more extensive revision with<br />
  Eucalyptus developers.</p>
<p>- I&#8217;ve set a git local repo in order to keep track of the changes to<br />
  Eucalyptus. Since this part is a sort of a Eucalyptus branch I took<br />
  this approach. Steffen and I are discussing whether to release this as<br />
  a pkg-eucalyptus branch (as dpatch, using existing packaging). Either<br />
  way I&#8217;m putting the diff files form my git repo over the wiki and will<br />
  put them on my site too. I plan to use git-svn in order to send them<br />
  later to the pkg-eucalyptus repo once we are settled with this.</p>
<p>- Updated the project&#8217;s wiki[1] page with information regarding all that&#8217;s<br />
  involved on my work, so it can be &#8216;re-played&#8217; or resumed later. </p>
<p>1- http://wiki.debian.org/SummerOfCode2011/BuildWithEucalyptus/ProjectLog</p>
<p>What I plan to to over the next weeks<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
- Finish the modifications to the relevant functions. Expected dealine:<br />
  next week.<br />
- Do integration tests:<br />
  &#8211; Write a test program, there&#8217;s an example under node/ that could be<br />
    helpful.<br />
  &#8211; Generate the XML domain definition from Eucalyptus functions. The<br />
  full cycle: handler_kvm -> allocate_instance -> get_instance_xml -><br />
  have the XML file properly generated -> qemu-kvm runs the instance<br />
  using the proper emulator (arm in our case).<br />
- Test runnning the image I&#8217;ve worked on the project&#8217;s begining.<br />
- Fixing bits and cooperate with the pkg-eucalyptus team on the<br />
  packaging bits.<br />
- Talk to Eucalyptus so they adopt our patches.<br />
- Rock and roll :)</p>
<p>What would be nice to have after the project ends<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
- The Debian packaging *needs* work. I&#8217;ve already discussed this on the<br />
  pkg-eucalyptus mailing list. I&#8217;ve also committed myself to help on<br />
  that side even after the SoC ends.<br />
- Talk with upstream and Ubuntu to coordinate the packaging efforts and<br />
  modifications to the software.<br />
- Get adopters to use our work :)</p>
<p>By now, few weeks about to finish the SoC, I can say that it&#8217;s been a<br />
good experience and as I stated I&#8217;m planning to keep maintaing/working<br />
on the software after that. I&#8217;ve already joined the pkg-eucalyptus team<br />
and plan to contribute actively. I&#8217;m sad I didn&#8217;t managed to get Debconf<br />
this year, time was a constraint again, hopefully we can meet in 2012! I<br />
guess that all by now!</p>
<p>Best regards,<br />
Rud</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/compute-clusters-integration-for-debian-development-and-building-report-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Compute Clusters Integration for Debian Development and Building &#8211; Report 2</title>
		<link>http://blog.stone-head.org/compute-clusters-integration-for-debian-development-and-building-report-2/</link>
		<comments>http://blog.stone-head.org/compute-clusters-integration-for-debian-development-and-building-report-2/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 04:03:44 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[eucalyptus]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=264</guid>
		<description><![CDATA[Hello, this is the 2nd report regarding my project. I'll offer a brief summary of how are we doing and then the details, so you don't have to read everything at all. I have to start saying that over the last two weeks I made a lot of progress on the project. The most important [...]]]></description>
			<content:encoded><![CDATA[<pre>Hello, this is the 2nd report regarding my project. I'll offer a brief
summary of how are we doing and then the details, so you don't have to
read everything at all.

I have to start saying that over the last two weeks I made a lot of
progress on the project. The most important part: Debian ARM image
integration with Eucalyptus is now cleared. The work to be done for the
next two weeks is pretty much fully coding to achieve what we've committed:
supporting Debian ARM images for Eucalyptus.

What was done so far
--------------------

- I've have identified and mapped what needs to be modified over the
  eucalyptus source for supporting ARM. I'm puting the details on the
  next section. I think this is the most crucial part that is now
  sucessfully achieved.
- I started a Project Log[1] on the wiki, so anyone can check and
  eventyally use the information I've already gathered. The log is being
  updated constantly. You can also check what I've done and what I'm
  working on.
- We got feeback[2] from Eucalyptus developers and packaging
  team regarding developers and packaging team regarding the ultimate
  source for debian/ packaging bits. This was quite important because
  in the past I've managed to build Eucalyptus from source using the debian/
  included in the upstream tarball. However the people in charge
  told us that they were using a different one, which indeed was
  different and resulted in different output than I expected. I'm
  still working on fixing the bits to get a clean build.
- I've joined the pkg-eucalyptus team and I've been given commit rights
  to the repo[2].

1- <a href="http://wiki.debian.org/SummerOfCode2011/BuildWithEucalyptus/ProjectLog">http://wiki.debian.org/SummerOfCode2011/BuildWithEucalyptus/ProjectLog</a>
2- <a href="http://lists.alioth.debian.org/pipermail/pkg-eucalyptus-maintainers/2011-June/000289.html">http://lists.alioth.debian.org/pipermail/pkg-eucalyptus-maintainers/2011-June/000289.html</a>

What I'll be working over the next two weeks
--------------------------------------------

- Heavily code on the different bits that I've identified and need to be
  changed. They are:
  C code:
  - node/handlers_kvm.{c,h} - handles nc creation. nc's are node
  clusters for Eucalyptus, the code is in charge of node creation. It
  prepares the "machine" that is able to run a compatible image.
  - util/data.{c,h} - handles instance creation. The code over there
  implements the functions node/handlers_* use, like instance creation
  and libvirt's API parameter passing. Since libvirt's parameters for
  ARM vary from x86's ones, we need to support that.
  Perl code:
  - tools/gen_kvm_libvirt_xml - wrapper tool for creating KVM/QEMU
  libvirt's XML Domain definition. This needs to be heavily
  changed/updated - redesigned, to support ARM architecture.
- Depending on the previous task progress: Modify the Debian packaging
  bits for Eucalyptus and push them to the pkg-eucalyptus's team
  repository. This is not crucial for my project's success but I'd like
  to work with Debian official builds. I've yet to commit the
  Eucalyptus team version to the debian/ dir. I expect to have fixed
  the bits to get a successful and clean build, then commit.

Other plans
-----------

- I expect a slow down on the work pace over the second week due end of
  semester exams on the week from July 3 to July 9. After that week I'm
  on vacations and will be fully dedicated to the project.
- Code changes to Eucalyptus source will be pushed upstream. I would
  not like to keep a separate repo for this. I'll talk about this with
  Steffen. Changes to Debian bits will be pushed to the appropiate repos.

Other bits
----------

When the project started I noted it was too vague for some people and
it's results/output were unclear. This concerned me. However, while the
project started and we got lot of feedback things got much clear and I'd
like to take the opportunity to explain it a bit.

Currently, developers targeting ARM devices are struggling[1] with having
a development environment. There are missing bits that sometimes are not
in place and result on hard time for them. Also, due mobile devices
growth and vendors using Linux-based[2] operating systems it's a nice
opportunity for Debian to keep it's well known fame of: supporting every
arch over the sun. How this project fits, well by offering the ability
for developers to run ARM-based Debian images over x86/x86_64 CPU's
would impact the way they could be more productive and for Debian to be
more adopted as development environment.

I can say that I'm very enthusiast of this opportunity and I'm
certain that the outcome will result in more adoption. Even the Ubuntu
people is now pushing more and more efforts for ARM official support,
due the facts I've stated.

1- <a href="http://lists.debian.org/debian-arm/2011/06/msg00020.html">http://lists.debian.org/debian-arm/2011/06/msg00020.html</a>
2- <a href="http://events.linuxfoundation.org/events/android-builders-summit/back">http://events.linuxfoundation.org/events/android-builders-summit/back</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/compute-clusters-integration-for-debian-development-and-building-report-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GSoC: Status report 01</title>
		<link>http://blog.stone-head.org/gsoc-status-report-01/</link>
		<comments>http://blog.stone-head.org/gsoc-status-report-01/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 00:36:32 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[eucalyptus]]></category>
		<category><![CDATA[gsoc]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=248</guid>
		<description><![CDATA[Hello, this is the official project report for the Debian GSoC admins and everyone. It&#8217;s been few days since the official coding phase started. Most of the time I&#8217;ve been figuring out the details regarding integration of non-x86 images to the Eucalyptus IaaS and working on the ARM image, as you&#8217;ll learn later. I&#8217;m also [...]]]></description>
			<content:encoded><![CDATA[<p>Hello, this is the official project report for the Debian GSoC admins and everyone. It&#8217;s been few days since the official coding phase started. Most of the time I&#8217;ve been figuring out the details regarding integration of non-x86 images to the Eucalyptus IaaS and working on the ARM image, as you&#8217;ll learn later. I&#8217;m also in the process of starting to design the set of tools we&#8217;ll be delivering as part of the project.</p>
<p>The project&#8217;s goal is to be a useful resource for Debian developers and porters. I&#8217;ve joined some porters list in order to learn what are the things they are struggling with and how the project can help to address them. I&#8217;ll be starting a wiki page with such topics.</p>
<p>Bonding period:<br />
Bonding period has been more fruitful than I expected. As mentioned in my previous post, Steffen and I got in touch with the Eucalyptus team, since they show their early interest on the project. We are coordinating cooperation between our teams. Besides my mentor and I defined to start working on the ARM image. Coordination went OK. We&#8217;ll be having meetings every two weeks.</p>
<p>Project Status:<br />
Resuming Dominique&#8217;s <a href="http://wiki.debian.org/Cloud/CreateImage">work</a> I began working on the ARM image. Aurélien&#8217;s <a href="http://www.aurel32.net/info/debian_arm_qemu.php">work</a> was a great resource. Currently I have a working and updated Debian testing ARM image using the versatile kernel that can be used under qemu-arm. I&#8217;m currently making tests and figuring out the next phase which is &#8220;cloudify&#8221; it. Over this weekend I expect to finish on that side and then began on the design and implementation of the tools that will be the project&#8217;s result.</p>
<address>Until now I haven&#8217;t faced much issues, but the Eucalyptus part since the docs are targeting x86 and amd_64 archs. However I think I can run qemu-arm on top. I&#8217;ll talk to them about the idea.<br />
</address>
<p>Future plans:</p>
<p>week 3:</p>
<p>- Finish tests with the ARM image.</p>
<p>- Design the base tool-set, thinking integration with dpkg-buildpackage and <a href="http://wiki.debian.org/qemubuilder">qemubuilder</a>.</p>
<p>week 4-8:</p>
<p>- Write the necessary code.</p>
<p>mid-term evaluation.</p>
<p>Other bits:</p>
<p>Latest days have been quite busy for me, since I&#8217;m still have to attend class, my semester ends in five weeks. This week was quite overwhelming with &#8220;media&#8221;, my University published an <a href="http://www.ucsp.edu.pe/index.php/noticias/46-notas-de-prensa/1687-alumno-ucsp-desarrollara-proyecto-para-google.html">article</a> (Spanish) about me and the program. I&#8217;m the third student of the CS school participating in GSoC, in the past we had Gentoo Project and KDE students. Later, a local Cable TV program interview me on the same matter, it went fine. I managed to talk about Debian and what we do (we get free Advertising yay!) :) also about Google&#8217;s Summer of Code program and invited students to participate both in FLOSS projects and the program. Still don&#8217;t know if they have put it on air, I think it will be next week.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/gsoc-status-report-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GSoC 2011: Compute Clusters Integration for Debian Development and Building</title>
		<link>http://blog.stone-head.org/gsoc-2011-compute-clusters-integration-for-debian-development-and-building/</link>
		<comments>http://blog.stone-head.org/gsoc-2011-compute-clusters-integration-for-debian-development-and-building/#comments</comments>
		<pubDate>Mon, 16 May 2011 15:49:57 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[cloudcomputing]]></category>
		<category><![CDATA[eucalyptus]]></category>
		<category><![CDATA[gsoc]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=245</guid>
		<description><![CDATA[Hi, been offline for a while and now after my mid-term exams I&#8217;m glad to tell that I&#8217;ll be working on this year&#8217;s GSoC project called: &#8220;Compute Clusters Integration for Debian Development and Building&#8221;. The main idea for this project is to give Debian developers and downstream developers a set of tools for helping them [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, been offline for a while and now after my mid-term exams I&#8217;m glad to tell that I&#8217;ll be working on this year&#8217;s GSoC project called: &#8220;Compute Clusters Integration for Debian Development and Building&#8221;. The main idea for this project is to give Debian developers and downstream developers a set of tools for helping them to leverage the power of a cloud-based infrastructure for their development duties. This is specially targeted to porters, multi-arch and cross-development, So I&#8217;ll ask such teams for feedback on the subject over the next days.</p>
<p>People at Eucalyptus has been very helpful and willing to cooperate with us to make this project a success. We expect to get them involved on the packaging and probably as Debian contributors, if not developers, also. Next week is the official coding phase start, but I&#8217;ve been talking and working together with my mentor Steffen and the Eucalyptus people already. We&#8217;ll be starting working on the qemu ARM images, reusing and resuming the job did by Dominique Belhachemi in the past GSoC.</p>
<p>Of course I welcome as much feedback as you might find useful. I plan to post a project update every two weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/gsoc-2011-compute-clusters-integration-for-debian-development-and-building/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is Debian listening to its users?</title>
		<link>http://blog.stone-head.org/is-debian-listening-to-its-users/</link>
		<comments>http://blog.stone-head.org/is-debian-listening-to-its-users/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 23:32:44 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[userfeedback]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=113</guid>
		<description><![CDATA[For some time ago I&#8217;ve been pondering about this question. As long as GSoC 2009 is about to start and people are looking for project ideas, I&#8217;m posting here a very preliminar draft of my findings and an idea for a posible software project. It&#8217;s pretty written on-the-fly while I&#8217;ve managed to have some minutes [...]]]></description>
			<content:encoded><![CDATA[<p>For some time ago I&#8217;ve been pondering about this question. As long as GSoC 2009 is about to start and people are looking for project ideas, I&#8217;m posting here a very preliminar draft of my findings and an idea for a posible software project. It&#8217;s pretty written on-the-fly while I&#8217;ve managed to have some minutes between work and uni. Rigurous wording isn&#8217;t P1.</p>
<p><a href="http://www.debian.org/social_contract">Debian&#8217;s social contract</a> 4th item states:</p>
<blockquote><p><strong>Our priorities are our users and free software</strong> We will be guided by the needs of our users and the free 	  software community. We will place their interests first in 	  our priorities.</p></blockquote>
<p>When we make decisions, either technical, legal and others regarding the operating system we deliver, this is one of the most referred argument. Altough that&#8217;s seen as high priority often we don&#8217;t have ways to properly know what our users want. While working on translations on the Spanish team we&#8217;ve faced this situation. Do our users find them useful? they are able to understand them? they find that a much familiar wording would be bette than high technical details? We didn&#8217;t know. Then, the question still exists.</p>
<p>Altough Debian has ways for users to provide feedback (BTS, mailing lists, IRC,  popcon, etc) none of them is designed to offer a way for the user to provide feedback on features, development roadmap and other non-bug aspects that developers and the project can tally and use for prioritize on releases. It&#8217;s rather amusing to note that one of the most valuable assets free software community has is user involvement and contribution.</p>
<p>But before we enter in details let&#8217;s start on the basics. For using this information we first need to know who our users are? do we? From my findings and interaction with the community I&#8217;ve identified two kinds of Debian users who can be clearly named.</p>
<p>1) The derivatives or pure blends, who use the Debian base and framework to build niche distributions.</p>
<p>2) The lead users (using E. Von Hippel&#8217;s definition), who are the developers, contributors and a group of users. Debian is, if not the only, one of the projects who is best for fostering lead users. Most of them at some point involve themselves in the development process and some, later become developers.</p>
<p>There is a more diverse group who are end-users but it&#8217;s unclear to me how we can group them. Despite that they probably represent the biggest part of the pie.</p>
<p>So, how we do please everyone? can we? In my opinion we can, at some degree. By implementing tools for first: gather user feedback, make statistical data, tally, we later can take informed decisions. In Debian decisions are voted and the set of people who votes are only developers with their own constraints.</p>
<p>I think this would ease the constant that release-decisions-regarding-foo-tech-legal-issue represented on each release iteration, saving time, health and bits.  It could be useful for knowing more about who are the ones we develop things for. I&#8217;m thinking of some sort of Dell&#8217;s IdeaStorm.com for software.</p>
<p>What do you think? I&#8217;m willing to co-mentor this if someone finds that is an interesting project for GSoC. Let me know!.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/is-debian-listening-to-its-users/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>software development practices for personal development</title>
		<link>http://blog.stone-head.org/software-development-practices-for-personal-development/</link>
		<comments>http://blog.stone-head.org/software-development-practices-for-personal-development/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 05:39:20 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[practices]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=134</guid>
		<description><![CDATA[Often I happen to come with some pretty crazy ideas about anything in life. That&#8217;s me. Some of them may work, that&#8217;s why I adventure to share them with the world. Working with computers, software in particular, for almost 12 years have brought interesting views regarding life. For the past 3 years I&#8217;ve progressively improved [...]]]></description>
			<content:encoded><![CDATA[<p>Often I happen to come with some pretty crazy ideas about anything in life. That&#8217;s me. Some of them may work, that&#8217;s why I adventure to share them with the world.</p>
<p>Working with computers, software in particular, for almost 12 years have brought interesting views regarding life. For the past 3 years I&#8217;ve progressively improved the human being am I, and also the improvement process. The other day I was heading to the uni and I&#8217;ve just noted that some practices of my profession can also be applied to my personal improvement. So, here I&#8217;m sharing some of them. Hope you find them useful.</p>
<ol>
<li><strong>Spot your bugs and kill &#8216;em</strong>. While it&#8217;s important to want to improve yourself. It&#8217;s more relevant to the fact of real improvement that you spot your personal &#8220;bugs&#8221;. This is a crucial part of it all. Once you are aware of you personal &#8220;bugs&#8221; you&#8217;ll be able to take action on them. So, when you do, just kill them and don&#8217;t let stink until you are not able to manage it at all and all your &#8220;code&#8221; taints and breaks.</li>
<li><strong>Let process run on the background</strong>. Life has a limitation, which is time. Time is a scarce resource. You must be aware of it, really. While we might want to do many different things life presents to us, is not really responsible to engage on all. However, we can hack this. Here technology is our ally. There are many different ways to be able to do some things in the background while on the foreground you focus on what really matters to you at the time.</li>
<li><strong>Outsource services that are not key for you</strong>. Delegation and distributed architecture come to mind. Professions and specialization are an evolution of humanity. Please take advantage of it. You don&#8217;t need to know or do  everything. Karen Sthepenson&#8217;s <a href="http://www.elearnspace.org/Articles/connectivism.htm">connectivism</a> axiom is illustrative:  <em class="diigoHighlight a id_a873acb6f81101a0bc22fbed63ece3a4 type_0 commented public">‘I            store my knowledge in my friends’</em><span class="diigoHighlight a id_a873acb6f81101a0bc22fbed63ece3a4 type_0 commented public">.</span></li>
<li><strong>Focus on what matters</strong>. This is somehow like the unix tradition of doing one thing and doing it well. Identify what makes you unique, special and relevant on your ecosystem. What value you can offer to others, and work on that direction. Hard work pays.</li>
<li><strong>Release early and release often</strong>. Once you have spot bugs and managed to fix them, release a new version of yourself!. Tell the world by showing an improved version of yourself. Make this incremental and iterative, just like a software development framework. For instance I currently run a 3.1 version of myself. Just released a point version last week :)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/software-development-practices-for-personal-development/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>back with the crowd</title>
		<link>http://blog.stone-head.org/back-with-the-crowd/</link>
		<comments>http://blog.stone-head.org/back-with-the-crowd/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 04:37:59 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Free Software]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=106</guid>
		<description><![CDATA[Last night I&#8217;ve been recalling how many debconfs I&#8217;ve already missed and this got me thinking about how long I&#8217;ve been a bit off the records on my Debian involvement. Many things have happened in the last couple of years, many for the good. I&#8217;ve started a business and learned a lot about entrepreneurship, resumed [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I&#8217;ve been recalling how many debconfs I&#8217;ve already missed and this got me thinking about how long I&#8217;ve been a bit off the records on my Debian involvement. Many things have happened in the last couple of years, many for the good. I&#8217;ve started a business and learned a lot about entrepreneurship, resumed my computer science career, started a pretty awesome (yet to be released) personal project involving music and computers,   and most important: discovered what I want from life, who I want to be and who I&#8217;d love to be with :)</p>
<p>Latest weeks I&#8217;ve progresivily started to get back on track with my Debian duties. Took care of my packages, update some information, kept track on current issues and  hanged on IRC. While doing that I&#8217;ve found some issues I&#8217;d like to elaborate on later, so we could improve things. So, expect me to be more active and post updates about my findings. It&#8217;s good to be back!  I&#8217;ve missed you guys :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/back-with-the-crowd/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>GNU no es Unix</title>
		<link>http://blog.stone-head.org/gnu-no-es-unix/</link>
		<comments>http://blog.stone-head.org/gnu-no-es-unix/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 06:20:51 +0000</pubDate>
		<dc:creator>Rudy Godoy</dc:creator>
				<category><![CDATA[Academia]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.stone-head.org/?p=34</guid>
		<description><![CDATA[Se aproximaba el final del año 97 u 98 cuando el encargado de coordinación me ofreció pasar a formar parte del grupo de operadores OpenVMS en la BVL/CAVALI. Mis compañeros en TdP me decian que no aceptara, que ahi estaba bien. De hecho, ya estaba mas adaptado y la gente me apreciaba, intuyo que además [...]]]></description>
			<content:encoded><![CDATA[<p>Se aproximaba el final del año 97 u 98 cuando el encargado de coordinación me ofreció pasar a formar parte del grupo de operadores OpenVMS en la BVL/CAVALI. Mis compañeros en TdP me decian que no aceptara, que ahi estaba bien. De hecho, ya estaba mas adaptado y la gente me apreciaba, intuyo que además por ser el más joven del grupo con una corbata terrible. Tendría 18 o 19 años en ese momento.</p>
<p>Finalmente acepte y empece a trabajar precisamente el 1ro de enero del año siguiente. El entorno de la BVL era más tranquilo, no tenían grandes servidores ni cosas sofisticadas; sin embargo tenian algunos elementos que eran bastante interesantes para mi, y creo que claves en mi desarrollo: el proyecto era relativamente nuevo asi que había algunas cosas por construir, había un esquema de telecomunicaciones con los distintos agentes de bolsa a través de un sistema ATM usando el <a href="http://es.wikipedia.org/wiki/Norma_X.25">protocolo x25</a> (antecesor del modelo OSI, TCP) -también conocido como MEGANET en TdP-,  el ambiente era tranquilo, teniamos acceso a Internet y el grupo era bastante ameno.</p>
<p>En este lugar es donde logre desarrollar un conocimiento de buen nivel sobre el sistema operativo OpenVMS, a punto que recibia constantes consultas de los nuevos operadores que ingresaban a GMD y de algunos desarrolladores. Mis inicios fueron en el turno de la noche, donde básicamente se procesaba información e imprimia reportes para el día siguiente, ejecutaban respaldos y se aprovechaba parte del tiempo para dormir. Recuerdo que mi primera noche me recoste sobre el sofá que mis compañeros me recomendaron y no desperte hasta las 7am, todavía no me adaptaba; de hecho antes de eso no acostumbraba a desvelarme.<br />
En algún momento pase al turno de la tarde donde tenia que interactuar con usuarios, vestir formal (cosa que jamas me incomodo, salvo cuando me &#8220;sugirieron&#8221; que use el cabello más corto -obviamente me rebele!-), y sobretodo conocer en persona a los CVL$algo, osea los usuarios, de entre los cuales había algunas guapas chicas; cosa que felizmente parece ser una constante.</p>
<p>Con el pasar del tiempo logré automatizar algunos procesos en los servidores, escribi cientos de programas en <a href="http://en.wikipedia.org/wiki/DIGITAL_Command_Language">DCL</a>, y en algún punto practicamente tenia todo el tiempo libre consecuencia de eso. Logré configurar el stack TCP/IP (ya que esos equipos solo funcionaban en red con el protocolo DECNET), ejecutar y navegar en Mosaic desde el entorno Motif de los servidores Alpha para ingresar a Internet y los servicios en los que ya era ávido usuario (confesión).  Descubri todo el mundo detrás de OpenVMS, las conferencias DEC, los grupos de usenet, de los que aprendi, además de incrementar mi interés en conocer el tema en más bajo nivel.</p>
<p>Ocurrio en algún momento que llevamos un curso de Unix, del que ya había oido porque un usuario del chat de Yahoo! lograba hacer cosas que otros no y me dijo que sabia Unix y que debería aprender puesto que todo ese chat estaba sobre Unix. Rápidamente busque en <a href="http://www.altavista.com">Altavista</a> o Yahoo! y aprendi qué era este Unix.</p>
<p>Luego de la primera clase estuve más seguro de que si queria aprender esto. Lamentablemente desde mi sitio no tenia forma de acceder al servidor en la red de GMD que estaba en el otro edificio. No contento con esa limitación empece a investigar en Internet hasta que encontre la luz: Linux, un sistemas imilar a Unix que se podía ejecutar en una PC. Los siguientes pasos fueron reciclar unos discos duros de 500MB, reducir el espacio usado por Windows 95 en la PC (Pentium 33Mhz, 16MB RAM) que tenia asignado, descargar durante 1 mes -debido a que reiniciaban el equipo y la descarga FTP no tenia &#8220;resume&#8221;- una distribución de Linux (creo que RedHat 5.x), y tratar de instalar y configurarla, cosa que logré luego de algunos días.</p>
<p>Cierto día buscando información di con la página del <a href="http://www.gnu.org">Proyecto GNU</a> y leí su manifesto, e inmediatamente coincidi con el mismo. Esto me animó bastante a conocer, usar y promover esto que ahora sabía que se llamaba software libre. Posteriormente supe que habían distribuciones y encontre a mi subsiguiente amor: el <a href="http://www.debian.org">Proyecto Debian</a>. Luego de leer su contrato social, manifesto y las directrices, en donde percibi claramente que cualquiera podría contribuir a éste, levante la mano y dije: yo también. Hasta antes de eso no había sentido tan cercano el hecho de que, además de usar algo, también podía hacer cosas para hacerlo mejor y que beneficie a otros como efecto secundario. Esto claramente fue amor a primera vista, de los cuales uno nunca se separa.</p>
<p>Reemplace el RedHat por Debian, que por ese tiempo era complicado de instalar; lo instale en la PC de mi casa, que había adquirido recientemente, y decidi enlistarme en el grupo de traducción como punto inicial de mi contribución.</p>
<p>De las anécdotas de ese tiempo recuerdo una cuando el nuevo jefe de sistemas, ex marino, ingreso al centro de cómputo para mostrarlo a una visita y empezo a describir las actividades y equipos que teniamos. Al señalar mi PC, ejecutando GNOME 1.x, con una terminal ejecutando top y alguna otra cosa, dijo: desde aquí monitoreamos todo. Tuve dos sensaciones, la primera la obvia (no tenia idea de lo que estaba pasando allí -ya que yo mismo me autorice a instalarlo-) y la segunda fue un poco de ego que me decia: exacto, tengo el control de todo esto (cosa que tampoco estaba lejos de ser cierto).</p>
<p>En algún momento, años después cuando ya había salido de GMD, fui a ayudar a mi amigo Oscar con un tema de backups y para sorpresa mía se trataba de uno de los programas que hice tiempo atrás. Finalmente llegaron a usarlo (Oscar era reacio porque no quería olvidarse las órdenes y sus parámetros) y replicarlo en otros proyectos, fue bastante halagador :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.stone-head.org/gnu-no-es-unix/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

