<?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/"
	>

<channel>
	<title>HCoder.org &#187; Debian</title>
	<atom:link href="http://hcoder.org/category/debian/feed/" rel="self" type="application/rss+xml" />
	<link>http://hcoder.org</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 15 Apr 2012 21:43:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Arepa &#8211; Apt REPository Assistant</title>
		<link>http://hcoder.org/2010/03/22/arepa-apt-repository-assistant/</link>
		<comments>http://hcoder.org/2010/03/22/arepa-apt-repository-assistant/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 19:04:14 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[arepa]]></category>
		<category><![CDATA[auto builders]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=310</guid>
		<description><![CDATA[For some time now I had been frustrated by the tools to manage APT repositories. The only ones I knew of either covered too little (only adding/removing packages from a repository and such, like reprepro) or were way too complex (like the official tools used by Debian itself). Maybe/probably I&#8217;m a moron and I just [...]]]></description>
			<content:encoded><![CDATA[<p>For some time now I had been frustrated by the tools to manage APT repositories. The only ones I knew of either covered too little (only adding/removing packages from a repository and such, like reprepro) or were way too complex (like the official tools used by <a href="http://debian.org/">Debian</a> itself). Maybe/probably I&#8217;m a moron and I just didn&#8217;t know of some tool that would solve all my problems, but now it&#8217;s kind of late ;-) And before you say it, no, Launchpad is <em>not</em> what I was looking for as far as I understand it.</p>
<p>So I started to work on my own suite of tools for it, and recently I decided to release what I&#8217;ve done so far. It&#8217;s by no means complete, but it&#8217;s very useful for me and I thought it would be useful for others. And, with a bit of luck, someone will help me improving it.</p>
<p>So what is it? <a href="http://search.cpan.org/~opera/Arepa-0.74/lib/Arepa.pm">Arepa</a> (it stands for &#8220;Apt REPository Assistant&#8221;, but obviously I called it like that after the <a href="http://en.wikipedia.org/wiki/Arepa">yummy Venezuelan sandwiches</a>) is a suite of tools that allow you to manage an APT repository. It contains two command-line tools and a web interface, and its main features are:</p>
<ul>
<li>Manages the whole process after a package arrives to the upload queue: from approving it to re-building from source to signing the final repository.</li>
<li>It allows you to &#8220;approve&#8221; source packages uploaded to some &#8220;incoming&#8221; directory, via a web interface.</li>
<li>It only accepts source packages, and those are re-compiled automatically in the configured autobuilders. It can even &#8220;cross-compile&#8221; for other distributions (treated like <a href="http://wiki.debian.org/binNMU">binNMUs</a>).</li>
<li>Far from reinventing (many) wheels, it integrates tools like <a href="http://mirrorer.alioth.debian.org/">reprepro</a>, <a href="http://www.gnupg.org/">GPG</a>, <a href="http://samba.anu.edu.au/rsync/">Rsync</a>, <a href="http://code.erisian.com.au/Wiki/debootstrap">debootstrap</a> and <a href="http://alioth.debian.org/projects/buildd-tools/">sbuild</a> so you don&#8217;t have to learn all about them.</li>
</ul>
<p>The approval via some web interface was actually sort of the driving force for the project. One of my pet peeves was that there wasn&#8217;t an easy way to have an upload queue and easily approve/reject packages with the tools I knew. From what I had seen, the tools were either for &#8220;single person&#8221; repositories (no approval needed because the package author is the owner of the repository) or full-blown distribution-size tools like dak and such. My use-case, however, is the following:</p>
<ul>
<li>You have an installation of Arepa for an entire organisation (say, a whole company or a big department).</li>
<li>People inside that organisation upload packages to the upload queue (possibly using dput; the point is, the end up in some directory in the machine hosting Arepa).</li>
<li>Someone (or a small group of people) are the &#8220;masters&#8221; of the repository, and they&#8217;ll have access to the web interface. From time to time they check the web UI, and they&#8217;ll approve (or not) the incoming source packages.</li>
<li>If they&#8217;re approved, the source will be added to the repository and it&#8217;ll be scheduled for compilation in the appropriate combination(s) of architectures and distributions.</li>
<li>A cronjob compiles pending packages every hour; when the compilation is successful, they&#8217;re added to the repository.</li>
<li>At this point, the repository hosted by the Arepa installation has the new packages, but you probably want to serve the repository from a different machine. If that&#8217;s the case, Arepa can sync the repository to your production machine with a simple command (&#8220;arepa sync&#8221;).</li>
</ul>
<p>I imagine that a lot of people have the same need, so I uploaded all the code to CPAN (you can see it with the rest of the <a href="http://search.cpan.org/~opera/">contributions by Opera Software</a>). Sadly there&#8217;s a <a href="https://rt.cpan.org/Public/Bug/Display.html?id=55706">silly bug</a> in the released code (I wanted to release ASAP to be able to focus on other things, and I ended up rushing the release), but it has both a workaround and a patch. So, please give it a try if you&#8217;re interested and tell me if you would like to contribute. I haven&#8217;t released the code in GitHub or similar yet, but I&#8217;ll probably do if there&#8217;s interest.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=310&amp;md5=2a8059512990e49a9fbd069b6316c1ea" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2010/03/22/arepa-apt-repository-assistant/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2010%2F03%2F22%2Farepa-apt-repository-assistant%2F&amp;language=en_GB&amp;category=text&amp;title=Arepa+%26%238211%3B+Apt+REPository+Assistant&amp;description=For+some+time+now+I+had+been+frustrated+by+the+tools+to+manage+APT+repositories.+The+only+ones+I+knew+of+either+covered+too+little+%28only+adding%2Fremoving+packages+from+a...&amp;tags=arepa%2Cauto+builders%2Ccpan%2Cpackages%2Cperl%2Cprojects%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Slides for several talks now published</title>
		<link>http://hcoder.org/2009/09/20/slides-for-several-talks-now-published/</link>
		<comments>http://hcoder.org/2009/09/20/slides-for-several-talks-now-published/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 15:25:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[courses]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I had said that I was going to publish the slides for a couple of talks I had given over the last couple of months, and I just got around to actually do it, so here they are: Software automated testing 123, an entry-level talk about software automated testing. Why you should be doing it [...]]]></description>
			<content:encoded><![CDATA[<p>I had said that I was going to publish the slides for a couple of talks I had given over the last couple of months, and I just got around to actually do it, so here they are:</p>
<ul>
<li><a href="http://www.demiurgo.org/charlas/testing-123/">Software automated testing 123</a>, an entry-level talk about software automated testing. Why you should be doing it (if you&#8217;re not already), some advice for test writing, some basic concepts and some basic examples (in Perl, but I trust it shouldn&#8217;t be too hard to follow even if you don&#8217;t know the language).</li>
<li><a href="http://www.demiurgo.org/charlas/python-unittesting/">Taming the Snake: Python unit tests</a>, another entry-level talk, but this time about Python unit testing specifically. How to write xUnit style tests with <code>unittest</code>, some advice and conventions and some notes on how to use the excellent <code>nosetests</code> tool.</li>
<li>Introduction to Debian packaging, divided in four sessions: <a href="http://www.demiurgo.org/charlas/debian/1-introduction/slides.html">Introduction</a>, <a href="http://www.demiurgo.org/charlas/debian/2-simple_packaging/slides.html">Packaging a simple app</a>, <a href="http://www.demiurgo.org/charlas/debian/3-backporting_software/slides.html">Backporting software</a> and <a href="http://www.demiurgo.org/charlas/debian/4-packaging_tools/slides.html">Packaging tools</a>.</li>
</ul>
<p>Just a quick note about them: the slides shouldn&#8217;t be too hard to understand without me talking, but of course you&#8217;ll lose some stuff that is not written down, some twists, clarifications of what I mean exactly by different things and whatnot. In particular, the &#8220;They. don&#8217;t. make. sense. Don&#8217;t. write. them&#8221; stuff refers to tests that don&#8217;t have a reliable/controlled environment to run into. I feel really strong about them, so I wanted to dedicate a few more seconds to smashing the idea that they&#8217;re ok, hence the extra slides :-)</p>
<p>Enjoy them, and please send me any comments you have about them!</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=78&amp;md5=3d3c7f5943c585db1237d52f7f0d5504" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/09/20/slides-for-several-talks-now-published/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2009%2F09%2F20%2Fslides-for-several-talks-now-published%2F&amp;language=en_GB&amp;category=text&amp;title=Slides+for+several+talks+now+published&amp;description=I+had+said+that+I+was+going+to+publish+the+slides+for+a+couple+of+talks+I+had+given+over+the+last+couple+of+months%2C+and+I+just+got+around...&amp;tags=automated%2Ccourses%2CDebian%2Cpackaging%2Cpython%2Cslides%2Ctalks%2Ctesting%2Ctests%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Link&#246;ping trip</title>
		<link>http://hcoder.org/2009/09/13/linkoping-trip/</link>
		<comments>http://hcoder.org/2009/09/13/linkoping-trip/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 21:43:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[linköping]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[sweden]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[trips]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I spent the whole last week (or this week; after all it&#8217;s Sunday&#8230; and Sunday is obviously the last day of the week, not the first, right?) in Linköping, Sweden. The idea was repeating some Debian course I gave here in Oslo, giving two more talks about automated testing since I was there anyway, and [...]]]></description>
			<content:encoded><![CDATA[<p>I spent the whole last week (or <em>this</em> week; after all it&#8217;s Sunday&#8230; and Sunday is obviously the <em>last</em> day of the week, not the <em>first</em>, right?) in <a href="http://en.wikipedia.org/wiki/Linköping">Linköping</a>, Sweden. The idea was repeating some Debian course I gave here in Oslo, giving two more talks about automated testing since I was there anyway, and attend two more talks. It was lots of fun, partly thanks to my &#8220;host&#8221; (thanks Gerald!), and surprisingly I found a bunch of things that seemed plain weird to me&#8230; or at least quite different from Oslo.</p>
<p>The talks themselves went pretty good I think, although I&#8217;d have preferred more people attending. I guess it was normal that there were less people than I&#8217;m used to, since the Linköping office is much smaller. But anyway. The Debian course went quite well and some people got started packaging stuff almost right away. The other talks were an introduction to automated testing (advocacy and arguments for it, advice, basic examples and small rant about a different kind of QA), which went ok, and an entry-level talk about unit testing in Python (thanks Ask and Batiste for the information and reviewing the slides!), which went very well. I&#8217;ll try to get the slides for all the talks available somewhere.</p>
<p>About the city itself, it&#8217;s a charming little part of Sweden where:</p>
<ul>
<li>Restaurants have <strong>insanely</strong> different prices for food whether it&#8217;s for lunch or dinner. Typical prices for lunch are 80 <span class="caps">SEK</span> (around 8 <span class="caps">EUR</span>) and typical prices for dinner are around 250 <span class="caps">SEK</span> <em>just the main course</em>!</li>
<li>Restaurants usually serve some Swedish dish for lunch&#8230; and I mean every restaurant, meaning all the Greek, Vietnamese, etc. Considering &#8220;real&#8221; Swedish restaurants are very expensive, you usually go to those foreign cuisine ones when you actually want to eat Swedish food.</li>
<li>Restaurants typically have some salad (that you have to take yourself) while you wait for the food&#8230; and some coffee, tea and cookies (that obviously you have to take yourself) for the end.</li>
<li>Related to this, restaurants are usually very self-service. I thought service in Norway sucked, but boy was I wrong, at least there is <em>some</em> service. And: there were typically long but pretty-fast-moving queues, and there was this one place where you didn&#8217;t even get the food on the table after ordering at the bar; instead, you were given some gadget with some wireless receiver, and when your food was ready it&#8217;d beep so you knew you had to go to some special place and fetch your food. Is it really cheaper maintaining some gadgets than hiring a waiter? I guess so.</li>
<li>The restrictions on the amount of alcohol that can be bought outside the special Government booze stores are even harder than in Norway. You can only buy booze with up to 3.5% alcohol outside &#8220;<a href="http://en.wikipedia.org/wiki/Systembolaget">Systembolaget</a>&#8221;. Now <em>that</em> is sad. And I was complaining about Norway&#8217;s 5%.</li>
<li>Partly because of that (I assume/hope) the Swedish &#8220;cider&#8221; you get in Sweden is even sweeter and worse and the <em>Swedish</em> cider you get in Norway.</li>
<li>We went to this nice student pub&#8230; which was literally <em>for</em> students. They actually <em>checked</em> your student id, but each student could bring <em>one</em> non-student along. Once you were &#8220;identified&#8221; as a non-student-coming-with-a-student, you&#8217;d get a stamp on your hand so you wouldn&#8217;t have to bring along the student when you ordered again. Also, the place was so very slow it was <em>almost</em> funny. One of the good sides was that they had what I thought it was the only decent Swedish cider&#8230; but after checking just now, it seems it&#8217;s actually American. Bummer. And the name of it was funny too: &#8220;Hardcore Cider&#8221;.</li>
<li>Right before leaving the office on Friday there was a small gathering in the canteen (the &#8220;Friday Beer&#8221;), where they had a Dreamcast with one of the most awesome games I&#8217;ve seen in a long while: <a href="http://en.wikipedia.org/wiki/Typing_of_the_Dead">The Typing of the Dead</a>, a version of <a href="http://en.wikipedia.org/wiki/The_House_of_the_Dead_2">The House of the Dead 2</a> in which you kill the zombies by typing words that appear on the screen, instead of aiming and shooting with a gun:</li>
</ul>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/sNfQ_B6_xy8&#038;hl=es&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/sNfQ_B6_xy8&#038;hl=es&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=77&amp;md5=1e5aa3ee567b50c997f24a9f4f10af44" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/09/13/linkoping-trip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2009%2F09%2F13%2Flinkoping-trip%2F&amp;language=en_GB&amp;category=text&amp;title=Link%26%23246%3Bping+trip&amp;description=I+spent+the+whole+last+week+%28or+this+week%3B+after+all+it%26%238217%3Bs+Sunday%26%238230%3B+and+Sunday+is+obviously+the+last+day+of+the+week%2C+not+the+first%2C+right%3F%29+in+Link%C3%B6ping%2C+Sweden....&amp;tags=automated%2Clink%26%23246%3Bping%2Clinux%2Copera%2Cqa%2Csweden%2Ctalks%2Ctesting%2Ctrips%2Cblog" type="text/html" />
	</item>
		<item>
		<title>BCM4312 on Linux: easier than expected</title>
		<link>http://hcoder.org/2009/09/10/bcm4312-on-linux-easier-than-expected/</link>
		<comments>http://hcoder.org/2009/09/10/bcm4312-on-linux-easier-than-expected/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 19:29:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[bcm]]></category>
		<category><![CDATA[bcm4312]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[card]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[wl]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Just a quick post to say that I was being stupid and it took me a couple of days of fighting, lockups and reading to realise that the driver for the wireless card in my new laptop is actually already packaged and it works like a charm. The long(er) story: I bought a laptop with [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to say that I was being stupid and it took me a couple of days of fighting, lockups and reading to realise that the driver for the wireless card in my new laptop is actually already packaged and it works like a charm.</p>
<p>The long(er) story:</p>
<ul>
<li>I bought a laptop with that card, and I wanted to make it work.</li>
<li>Apparently the open source driver (<code>b43</code>) doesn&#8217;t recognise my card, although it seems it should?</li>
<li>I tried to download the proprietary driver provided by the vendor (<code>wl</code>), but it didn&#8217;t compile at first. After applying some patch for the kernel 2.6.29 (I&#8217;m using kernel 2.6.30) it did compile, but it didn&#8217;t quite work. Meaning, it locked up my machine seconds after loading.</li>
<li>After a couple of days of wondering and trying to make it work&#8230; I realised the driver is already compiled in Debian (in particular, <a href="http://packages.debian.org/sv/sid/broadcom-sta-modules-2.6.30-1-686">broadcom-sta-modules-2.6.30-1-686</a>). Just installing and loading it worked like a charm. Oh well.</li>
</ul>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=75&amp;md5=d1a41d6ff492ad12a7d8c0165f2638da" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/09/10/bcm4312-on-linux-easier-than-expected/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2009%2F09%2F10%2Fbcm4312-on-linux-easier-than-expected%2F&amp;language=en_GB&amp;category=text&amp;title=BCM4312+on+Linux%3A+easier+than+expected&amp;description=Just+a+quick+post+to+say+that+I+was+being+stupid+and+it+took+me+a+couple+of+days+of+fighting%2C+lockups+and+reading+to+realise+that+the+driver+for...&amp;tags=bcm%2Cbcm4312%2Cbroadcom%2Ccard%2CDebian%2Cpackages%2Cproblems%2Cwireless%2Cwl%2Cblog" type="text/html" />
	</item>
		<item>
		<title>My first contributions to CPAN</title>
		<link>http://hcoder.org/2009/06/28/my-first-contributions-to-cpan/</link>
		<comments>http://hcoder.org/2009/06/28/my-first-contributions-to-cpan/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 20:46:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[migraine]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I have been using Perl for many years, but I had never uploaded anything to CPAN. That&#8217;s unfortunate, because I&#8217;ve probably written several programs or modules that could have been useful for other people. The point is, now I have. Not only that, but it was code I wrote at work, so if I&#8217;m not [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using Perl for many years, but I had never uploaded anything to <span class="caps">CPAN</span>. That&#8217;s unfortunate, because I&#8217;ve probably written several programs or modules that could have been useful for other people. The point is, now I have. Not only that, but it was code I wrote at work, so if I&#8217;m not mistaken these are my first contributions to free software from Opera. Yay me!</p>
<p>The two modules I&#8217;ve released so far are:</p>
<ul>
<li><a href="http://search.cpan.org/~opera/Parse-Debian-PackageDesc-0.1/lib/Parse/Debian/PackageDesc.pm">Parse::Debian::PackageDesc</a>, a module for parsing both <code>.dsc</code> and <code>.changes</code> files from Debian. This is actually a support module for something bigger that I hope I&#8217;ll release soon-ish.</li>
<li><a href="http://search.cpan.org/~opera/Migraine-0.53/script/migraine.pl">Migraine</a>, a still somewhat primitive database change manager inspired on the <a href="http://www.oracle.com/technology/pub/articles/kern-rails-migrations.html">Ruby on Rails migration system</a>.</li>
</ul>
<p>As I feel that Migraine could be useful to a lot of people, but it&#8217;s easy to misunderstand what it really does (unless you already know Rails migrations of course), I&#8217;ll elaborate a bit. Imagine that you are developing some application that uses a database. You design the schema, write some <span class="caps">SQL</span> file with it, and everybody creates their own databases from that file. Now, as your application evolves, your schema will evolve too. What do you do now to update all databases (every developer installation, testing installations, and don&#8217;t forget the production database)? One painful way to do it could be documenting which <span class="caps">SQL</span> statements you have to execute in order to have the latest version of the schema, and expect people to apply copying-and-pasting from the documentation. However, it&#8217;s messy, confusing, and it needs someone to know both which databases to update and when.</p>
<p>Migraine offers a simpler, more reliable way to keep all your databases up to date. Basically, you write all your changes (&#8220;migrations&#8221;) in some files in a directory, following a simple version number naming convention (e.g. <code>001-add_users_table.sql</code>, <code>002-change_passwd_field_type.sql</code>), and migraine will allow you to keep your databases up to date. In the simplest, most common case, you call migraine with a configuration file specifying which database to upgrade, and it will figure out which migrations are pending to apply, if any, and apply them. The system currently only supports raw <span class="caps">SQL</span>, but it should be easy to extend with other types.</p>
<p>In principle, you shouldn&#8217;t need to write any Perl code to use migraine (it has a Perl module that you can use to integrate with your Perl programs if you like, but also a command-line tool), so you can use it even in non-Perl projects. Of course, some modern ORMs have their own database migration system, but very often you have to maintain legacy code that doesn&#8217;t use any fancy <span class="caps">ORM</span>, or you don&#8217;t like the migration system provided by the <span class="caps">ORM</span>, or you prefer keeping a single system for schema and data migrations&#8230; I think in those cases Migraine can help a lot reducing chaos and keeping things under control. Try it out and tell me what you think <code>:-)</code></p>
<p>In a couple of days I&#8217;ll blog again about other contributions to free software I&#8217;ve made lately, but this time in the form of Opera widgets&#8230;</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=70&amp;md5=cd018dfe396c05a453fc32d752754b46" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/06/28/my-first-contributions-to-cpan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2009%2F06%2F28%2Fmy-first-contributions-to-cpan%2F&amp;language=en_GB&amp;category=text&amp;title=My+first+contributions+to+CPAN&amp;description=I+have+been+using+Perl+for+many+years%2C+but+I+had+never+uploaded+anything+to+CPAN.+That%26%238217%3Bs+unfortunate%2C+because+I%26%238217%3Bve+probably+written+several+programs+or+modules+that+could+have+been...&amp;tags=bsd%2Ccpan%2Cdatabases%2CDebian%2Cfree%2Cmigraine%2Cmigration%2Cparsing%2Cperl%2Csoftware%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Free software rocks!</title>
		<link>http://hcoder.org/2009/05/10/free-software-rocks-2/</link>
		<comments>http://hcoder.org/2009/05/10/free-software-rocks-2/#comments</comments>
		<pubDate>Sun, 10 May 2009 17:18:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#8217;ve been working on something lately that I hope I will publish sometime next month: it&#8217;s a set of tools to manage an APT package repository. The idea is that, given an upload queue (you can set it up as an anonymous FTP, or some directory accessible via SSH/SCP, or whatever floats your boat in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on something lately that I hope I will publish sometime next month: it&#8217;s a set of tools to manage an <span class="caps">APT</span> package repository. The idea is that, given an upload queue (you can set it up as an anonymous <span class="caps">FTP</span>, or some directory accessible via <span class="caps">SSH</span>/<span class="caps">SCP</span>, or whatever floats your boat in your setup and team), you&#8217;ll have a web interface to approve those packages, a set of integrated autobuilders building the approved packages in whatever combination of architectures and distributions you want, and all that integrated with <a href="http://mirrorer.alioth.debian.org/">reprepro</a> to keep your repository updated. I&#8217;ll write more about it when I have released something.</p>
<p>The point now is that, while working on it, I needed some module to parse command-line options and &#8220;subcommands&#8221; (like <code>git commit</code>, <code>svn update</code>, etc.). As it&#8217;s written in Perl, I had a look at <span class="caps">CPAN</span> to see if I could see anything. The most promising module was <a href="http://search.cpan.org/~garu/App-Rad-1.04/lib/App/Rad.pm">App::Rad</a>, but it lacked a couple of things that were very important for me: my idea was &#8220;declaring&#8221; all the possible commands and options and have the module do all the work for me (generating the help pages and the default <code>--help</code> implementation, generate the <code>program help subcommand</code> and so on). <code>App::Rad</code> didn&#8217;t have that, and it didn&#8217;t seem to me like that was the direction they wanted to go to with the module. But I figured I&#8217;d drop the author an e-mail anyway and see if he liked the idea so I could start adding support for all that&#8230;</p>
<p>And boy was that a good idea. He replied a couple of days later, and said that they had liked the idea so much that they had implemented it already (that&#8217;s why he took a couple of days to reply), and he sent me an example of the new syntax they had introduced and asked if that was what I was thinking. And not only that, but they added me to the list of contributors just for giving the idea! That completely made my day, free software rocks!</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=67&amp;md5=09105bb993941bce2a37855f1e18b32b" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/05/10/free-software-rocks-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2009%2F05%2F10%2Ffree-software-rocks-2%2F&amp;language=en_GB&amp;category=text&amp;title=Free+software+rocks%21&amp;description=I%26%238217%3Bve+been+working+on+something+lately+that+I+hope+I+will+publish+sometime+next+month%3A+it%26%238217%3Bs+a+set+of+tools+to+manage+an+APT+package+repository.+The+idea+is+that%2C...&amp;tags=apt%2Ccommand%2Ccpan%2CDebian%2Cfree%2Cline%2Cperl%2Cprojects%2Csoftware%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Photo management applications</title>
		<link>http://hcoder.org/2008/11/02/photo-management-applications/</link>
		<comments>http://hcoder.org/2008/11/02/photo-management-applications/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 12:41:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[digikam]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[picasa]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[It&#8217;s been a couple of years now since I have been a digiKam user. I have been mostly happy with it (actually I don&#8217;t even use a lot of its features as my needs are not particularly advanced), but from time to time the Flickr would fail for no reason. Some time ago I needed [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a couple of years now since I have been a <a href="http://www.digikam.org/">digiKam</a> user. I have been mostly happy with it (actually I don&#8217;t even use a lot of its features as my needs are not particularly advanced), but from time to time the Flickr would fail for no reason. Some time ago I needed to upload a lot of pictures and it started failing again, so I looked for some alternatives.</p>
<p>Apart from other apps I knew already and didn&#8217;t particularly like, I found <a href="http://code.google.com/p/dfo/">dfo</a> (<em>Desktop Flickr Organizer</em>), a <span class="caps">GNOME</span> application. It was nice, and it was easy enough to upload pictures to Flickr with it, but it felt weird. What I would like to have is some application to manage my gallery, with some option to upload certain pictures to Flickr. However, this applications is more like a local Flickr mirror with synchronisation options. I <strong>don&#8217;t</strong> want all my pictures in Flickr, even marked as private. I just don&#8217;t care, and I don&#8217;t want to wait for all synchronisation between the app and Flickr. Moreover, I feel kind of tied to Flickr using that, and I&#8217;d rather work in a more &#8220;agnostic&#8221; environment. So it was cool using it to upload the pictures I had to upload, but I wasn&#8217;t really going to keep using it.</p>
<p>At the same time, one friend suggested using <a href="http://picasa.google.com/linux/">Picasa</a> to upload some pictures, so I gave it a try. I had tried it briefly in the past, and I remember that some things were nice, but for some reason it was never my gallery manager of choice. So, trying it again, and even using the synchronisation options for the Picasa web albums, somehow I got the same feeling again: it&#8217;s nice, but there&#8217;s something undefined that makes me not use it. I have to admit that the interface is really fancy and easy to use, and it works decently well, but I don&#8217;t completely like the way the synchronisation works, not to mention that I don&#8217;t want to be stuck with only Picasa web albums. Also, I&#8217;m not happy with it being proprietary, not available in the Debian repositories, and with that special, anti-integrated interface. Some things work much better than in digiKam (I&#8217;m especially thinking fullscreen/slideshow, which sucks pretty badly in it), but I still prefer digiKam overall.</p>
<p>As I wasn&#8217;t too happy with the alternatives, I decided to have a look at the problem with digiKam. It turns out that digiKam just uses the so-called <a href="http://www.kipi-plugins.org/">Kipi-plugins</a> for picture exporting and other things, and that there was a new version of it that fixed a couple of issues&#8230; one of them being a problem with Flickr upload. The package is not available on Debian unstable because we&#8217;re currently in freeze (unfortunately, that means that Lenny will ship without a functional Flickr-uploading Kipi plugin). However, I saw that the new package was actually uploaded to experimental, so I decided to give it a try. Not only it works like a charm, but the new version 1.6 reworks the Flickr export plugin completely, and now it&#8217;s much nicer. So I&#8217;m happy now, back to digiKam with a working Flickr export <code>o/</code>. To install it yourself, make sure that you have this line in your <code>/etc/apt/sources.list</code>:</p>
<p>deb http://ftp.de.debian.org/debian/ experimental main non-free contrib</p>
<p>Then, update your available package list and install <code>kipi-plugins</code> from experimental, like this:</p>
<p>sudo aptitude update &amp;&amp; sudo aptitude -t experimental install kipi-plugins</p>
<p>That should do it.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=45&amp;md5=459a38dd6fa47a6303b96da4bde12487" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/11/02/photo-management-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2008%2F11%2F02%2Fphoto-management-applications%2F&amp;language=en_GB&amp;category=text&amp;title=Photo+management+applications&amp;description=It%26%238217%3Bs+been+a+couple+of+years+now+since+I+have+been+a+digiKam+user.+I+have+been+mostly+happy+with+it+%28actually+I+don%26%238217%3Bt+even+use+a+lot+of+its...&amp;tags=applications%2Cdigikam%2Cflickr%2Clinux%2Cmanagement%2Cphoto%2Cpicasa%2Cupload%2Cblog" type="text/html" />
	</item>
		<item>
		<title>The shoemaker&#8217;s son always goes barefoot</title>
		<link>http://hcoder.org/2008/10/21/the-shoemakers-son-always-goes-barefoot/</link>
		<comments>http://hcoder.org/2008/10/21/the-shoemakers-son-always-goes-barefoot/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 19:25:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[dhelp]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I admit it. I&#8217;m a terrible developer. I write code, sometimes even write tests. But. I. don&#8217;t. test. my. programs. By hand, that is. And sometimes (usually) the coverage is not enough, and I end up making embarrassing mistakes. It usually happens outside of work, although at work I also have my share. The last [...]]]></description>
			<content:encoded><![CDATA[<p>I admit it. I&#8217;m a terrible developer. I write code, sometimes even write tests.</p>
<p>But. I. don&#8217;t. test. my. programs.</p>
<p>By hand, that is. And sometimes (usually) the coverage is not enough, and I end up making embarrassing mistakes. It usually happens outside of work, although at work I also have my share. The last one was with the Debian package <code>dhelp</code>, where trying to fix an issue before Lenny is released, I ended up making it even worse. The story goes like this:</p>
<p>There was some problem with the indexing of documents on installation/upgrade (namely, it would take <strong>ages</strong> for most people upgrading to Lenny, and they would think the upgrade process had hung). So, I go and change the indexing code so it ignores documents on installation/upgrade. Also, as suggested by someone, I created some small example utility to reindex documentation for certain packages. I test installation, upgrades, upgrade of the <code>dhelp</code> package itself, the utility, searching for keywords before and after all that&#8230; and everything worked.</p>
<p>Only that I made a typo. A typo that would make all indexing to be ignored (except for the example utility, because it was a bit lower level). And I didn&#8217;t realise, because it &#8220;only&#8221; broke some cronjob, a completely different part of the package. And it happens that the cronjob reindexed everything weekly, to make sure that you had reasonably up-to-date search indices. And it also happens that, given that the documentation reindexing was being ignored on package installation/upgrade, the weekly total reindex process was the <strong>only</strong> thing that could provide the user with indexed documentation. But I screwed up. Oh well.</p>
<p>Someone filed a <a href="http://bugs.debian.org/502813">bug</a> yesterday, and I fixed more or less right away. But this time I spent a couple of hours thinking of test paths and ways to make it fail, and actually doing all that testing. Thanks to that, I found some potential bug in the example utility, that I fixed just in case. So hopefully everything is fine now, if I can convince the Release Masters to allow the new, less broken update to <code>dhelp</code> to be accepted for Lenny.</p>
<p>I think I need personal QA. Anyone up to the task?</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=43&amp;md5=c642aac3e21938a43bee98013d88947f" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/10/21/the-shoemakers-son-always-goes-barefoot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2008%2F10%2F21%2Fthe-shoemakers-son-always-goes-barefoot%2F&amp;language=en_GB&amp;category=text&amp;title=The+shoemaker%26%238217%3Bs+son+always+goes+barefoot&amp;description=I+admit+it.+I%26%238217%3Bm+a+terrible+developer.+I+write+code%2C+sometimes+even+write+tests.+But.+I.+don%26%238217%3Bt.+test.+my.+programs.+By+hand%2C+that+is.+And+sometimes+%28usually%29+the+coverage+is...&amp;tags=developer%2Cdhelp%2Cqa%2Ctesting%2Cblog" type="text/html" />
	</item>
		<item>
		<title>GPG confusion</title>
		<link>http://hcoder.org/2008/09/22/gpg-confusion/</link>
		<comments>http://hcoder.org/2008/09/22/gpg-confusion/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 20:57:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnupg]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Today I was playing with GnuPG, trying to add a couple of public keys to an &#8220;external&#8221; keyring (some random file, not my own keyring). Why? you ask. Well, I was preparing some Debian package containing GPG keys for APT repository signing (like debian-archive-keyring and such). The point is, I was really confused for quite [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was playing with GnuPG, trying to add a couple of public keys to an &#8220;external&#8221; keyring (some random file, not my own keyring). Why? you ask. Well, I was preparing some Debian package containing <span class="caps">GPG</span> keys for <span class="caps">APT</span> repository signing (like <code>debian-archive-keyring</code> and such).</p>
<p>The point is, I was really confused for quite a bit because, after reading the <code>gpg</code> manpage, I was trying things like:</p>
<p>gpg &#8212;no-default-keyring &#8212;keyring keys.gpg &#8212;import &#8230;     # Wrong!</p>
<p>But that wouldn&#8217;t add anything to the <code>keys.gpg</code>, which I swear I had in the current directory. After a <em>lot</em> of wondering, I realised that <code>gpg</code> interprets paths for keyrings as relative to&#8230; <code>~/.gnupg</code>, not the current directory. I guess it&#8217;s because of security reasons, but I find it really confusing.</p>
<p>The lesson learned, always use <code>--keyring ./keys.gpg</code> or, better, never use <code>keys.gpg</code> as filename for external keyrings, but something more explicit and &#8220;non-standard&#8221; like <code>my-archive-keyring.gpg</code> or whatever.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=41&amp;md5=e0b82264eeee5bb0d363405f10f57861" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/09/22/gpg-confusion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2008%2F09%2F22%2Fgpg-confusion%2F&amp;language=en_GB&amp;category=text&amp;title=GPG+confusion&amp;description=Today+I+was+playing+with+GnuPG%2C+trying+to+add+a+couple+of+public+keys+to+an+%26%238220%3Bexternal%26%238221%3B+keyring+%28some+random+file%2C+not+my+own+keyring%29.+Why%3F+you+ask.+Well%2C+I...&amp;tags=gnu%2Cgnupg%2Cgpg%2Cprivacy%2Crants%2Ctips%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Linux video editing and YouTube annotations</title>
		<link>http://hcoder.org/2008/07/23/linux-video-editing-and-youtube-annotations/</link>
		<comments>http://hcoder.org/2008/07/23/linux-video-editing-and-youtube-annotations/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 09:45:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Freedom]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[copenhagen]]></category>
		<category><![CDATA[editing]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[subway]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[In my recent trip to Copenhagen, I recorded a small video of the subway (it&#8217;s really cool, because it&#8217;s completely automatic, it doesn&#8217;t have drivers or anything). I wanted to edit the video to remove people that were reflected on the window, so I wondered if I could do that on Linux. I imagined it [...]]]></description>
			<content:encoded><![CDATA[<p>In my recent trip to Copenhagen, I recorded a small video of the subway (it&#8217;s really cool, because it&#8217;s completely automatic, it doesn&#8217;t have drivers or anything). I wanted to edit the video to remove people that were reflected on the window, so I wondered if I could do that on Linux. I imagined it wouldn&#8217;t be trivial, but it was more frustrating than I thought. Maybe I&#8217;m too old for this.</p>
<p>The first thing I tried was looking in APT&#8217;s cache for &#8220;video editing&#8221;. The most promising was <a href="http://www.kinodv.org/">kino</a>. I had tried that some time ago a couple of times, and I never made it to work, but I figured I would try again. Unfortunately, same result: I just can&#8217;t figure out how to import my videos. Maybe I&#8217;m just hitting the wrong button or whatever, but it&#8217;s really frustrating.</p>
<p>Second thing was having a look in the internet. I found the (dead and being rewritten?) Cinelerra, as always, and I didn&#8217;t feel like installing the old one from source, only to lose my time and not get it to work, so I just ignored it. Maybe they had it in debian-multimedia and wouldn&#8217;t have been a tough install after all. Anyway.</p>
<p>Next thing, I found some program called <a href="http://www.openmovieeditor.org/">openmovieeditor</a>. This one apparently worked, but I couldn&#8217;t figure out how to crop the image (or almost any other thing for that matter).</p>
<p>Next, some neat program written in Python, called <a href="http://www.pitivi.org/wiki/Main_Page">pitivi</a>. When I tried to run it though, it just said <code>Error:  Icon 'misc' not present in theme</code> on the console and died. I later figured out that I had to install <code>gnome-icon-theme</code> for it to work (yeah, Debian maintainer&#8217;s fault). It&#8217;s funny, because on the webpage it says that it has some &#8220;advanced view&#8221; that you can access via the &#8220;View&#8221; menu&#8230; but I couldn&#8217;t find it. My menu only had one entry: &#8220;Fullscreen&#8221;. Great.</p>
<p>Oh, wait, there&#8217;s a <code>gimp-gap</code>. I could just import my animation in Gimp, crop the frames, and convert again to video. Easier said than done. I needed some programs that I didn&#8217;t have, and I wasn&#8217;t sure if they were so easy/quick/clean to install (sure, I could have exported to <span class="caps">GIF</span> animation and probably convert to video, I just didn&#8217;t want to lose so much color quality in the <span class="caps">GIF</span> step). Forget for now. At least I had the images, so if I could just turn them into a movie&#8230;</p>
<p>So, I started wondering if, given that I had decided to just crop, and especially now that I had a lot of images that were the frames, maybe I could just use some command line tool or something. So I found this tiny little program, <code>images2mpg</code>. Long story short, after installing some dependencies from source (that gave compilation errors, but luckily I could compile only the binaries I really needed) that program was <strong>completely</strong> retarded and didn&#8217;t even do what I wanted (it wanted at least one second between images, but I didn&#8217;t want a slideshow, just a normal movie from the frames). It looks some simple and it&#8217;s so buggy. Gah.</p>
<p>So I started wondering if I could just crop with <a href="http://www.mplayerhq.hu/">mplayer</a>&#8230; Hmmm&#8230; after a couple of problems (like documented switches that were not there and other crap), I ended up with this command line:</p>
<pre>
<code>
mencoder -vf crop=320:200:0:40 MVI_2160.AVI
         -ovc lavc -nosound -o metro-crop.avi
</code>
</pre>
<p>That was reasonably quick and easy but it was so frustrating after all that lost time.</p>
<p>In any case, I ended up with the video I wanted, so I went to YouTube to upload it. When uploading, I realised that there was some option I had never seen: <em>annotations</em>.</p>
<p>YouTube annotations are really cool. They are like the notes on Flickr, but on a video <code>:-D</code> Actually I kind of wanted to make a note like that on this video, to show the automatic doors on the Metro station, so I was really happy to see that I could actually do it. And the interface is really easy to use and very clear. I really like it! You can see the result here:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/urWNdPKydzM&#038;hl=es&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/urWNdPKydzM&#038;hl=es&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><strong><span class="caps">EDIT</span>:</strong> <span class="caps">WTF</span>? The annotations don&#8217;t appear on the embedded videos? You&#8217;ll have to go to the <a href="http://es.youtube.com/watch?v=urWNdPKydzM">video page</a> to see them, then&#8230;</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=33&amp;md5=243c6f3693044a168f265c005a173719" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/07/23/linux-video-editing-and-youtube-annotations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2008%2F07%2F23%2Flinux-video-editing-and-youtube-annotations%2F&amp;language=en_GB&amp;category=text&amp;title=Linux+video+editing+and+YouTube+annotations&amp;description=In+my+recent+trip+to+Copenhagen%2C+I+recorded+a+small+video+of+the+subway+%28it%26%238217%3Bs+really+cool%2C+because+it%26%238217%3Bs+completely+automatic%2C+it+doesn%26%238217%3Bt+have+drivers+or+anything%29.+I+wanted+to...&amp;tags=copenhagen%2Cediting%2Clinux%2Crants%2Csubway%2Cvideo%2Cyoutube%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

