<?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>root&#039;ing the net &#187; Bill</title>
	<atom:link href="http://blogs.igalia.com/aperez/category/bill/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.igalia.com/aperez</link>
	<description>Ramblings from a a coding sysadmin</description>
	<lastBuildDate>Tue, 27 Jul 2010 18:45:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Successful upgrade to Bash 4</title>
		<link>http://blogs.igalia.com/aperez/2009/06/successful-upgrade-to-bash-4/</link>
		<comments>http://blogs.igalia.com/aperez/2009/06/successful-upgrade-to-bash-4/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 14:15:52 +0000</pubDate>
		<dc:creator>aperez</dc:creator>
				<category><![CDATA[Bill]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://blogs.igalia.com/aperez/?p=40</guid>
		<description><![CDATA[Yesterday my package manager insisted in updating Bash to version 4, which was released some time ago. I was a bit worried because as this new version intruduced new features, just in casethey could cause some of my working scripts to fail miserably. The fact is that finally I decided to bump to the new [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday my package manager insisted in updating Bash to version 4, which <a href="/aperez/?p=37">was released some time ago</a>. I was a bit worried because as this new version intruduced <a href="http://bash-hackers.org/wiki/doku.php/bash4">new features</a>, just in casethey could cause some of my working scripts to fail miserably. The fact is that finally I decided to bump to the new version, as I have not heard nothing about painful upgrades (as happened in the 2-to-3 transition). After installing it everything continues to work nicely with version 4.0&#8230; and I can try out the new cool features (hash tables are one of my favourites!).</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.igalia.com/aperez/2009/06/successful-upgrade-to-bash-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some news, including Bill 0.2 release</title>
		<link>http://blogs.igalia.com/aperez/2009/05/some-news-including-bill-02-release/</link>
		<comments>http://blogs.igalia.com/aperez/2009/05/some-news-including-bill-02-release/#comments</comments>
		<pubDate>Fri, 29 May 2009 00:39:53 +0000</pubDate>
		<dc:creator>aperez</dc:creator>
				<category><![CDATA[Bill]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://blogs.igalia.com/aperez/?p=39</guid>
		<description><![CDATA[Time has passed since the latest time I blogged about something, and some things have happened, so I think it is a good occasion to write some words.
The first news is that I have just released Bill 0.2, which introduces the following changes:

Change license to the new GPLv3.
Modules have now a .bash suffix instead of [...]]]></description>
			<content:encoded><![CDATA[<p>Time has passed since the latest time I blogged about something, and some things have happened, so I think it is a good occasion to write some words.</p>
<p>The first news is that I have just released <a class="reference external" href="http://people.igalia.com/aperez/bill">Bill</a> 0.2, which introduces the following changes:</p>
<ul class="simple">
<li>Change license to the new <a class="reference external" href="http://www.gnu.org/licenses/gpl-3.0.html">GPLv3</a>.</li>
<li>Modules have now a <tt class="docutils literal"><span class="pre">.bash</span></tt> suffix instead of <tt class="docutils literal"><span class="pre">.bsh</span></tt></li>
<li>Compatibility fixes, so it now works better with Bash 3.1</li>
<li>Better handling of comment lines and nicer error handler in the <tt class="docutils literal"><span class="pre">text/config</span></tt> module.</li>
<li>Some other minor bug fixes.</li>
<li>New modules: <a class="reference external" href="http://people.igalia.com/aperez/bill/lib/ext/twiki.html">twiki/ext</a>, <a class="reference external" href="http://people.igalia.com/aperez/bill/lib/text/bte.html">text/bte</a>, <a class="reference external" href="http://people.igalia.com/aperez/bill/lib/data/time.html">data/time</a>, <a class="reference external" href="http://people.igalia.com/aperez/bill/lib/text/log.html">text/log</a></li>
</ul>
<p>Last but not least, as <a class="reference external" href="http://planet.igalia.com">my colleagues</a> are saying (e.g. <a class="reference external" href="http://blogs.igalia.com/mario/2009/05/28/introducing-sergio-and-our-brand-new-office-at-the-same-time/">Mario</a>, <a class="reference external" href="http://www.joaquimrocha.com/2009/05/27/igalias-new-office/">Joaquim</a>, <a class="reference external" href="http://blogs.igalia.com/jmunhoz/2009/05/27/the-new-igalias-office/">Javier M.</a>, <a class="reference external" href="http://blogs.igalia.com/svillar/2009/05/27/igalias-new-office-party/">Sergio</a>) in their latest posts, we had a very nice inauguration party at our brand new office. I think they have already written what needs to be said, so I will only add that I think that it worths having some inconveniences (as we had!) during the switch from one office to another. Everyone did a good job to get everything in place. Congrats!</p>
<p>I hope to start blogging again regularly. I have some ideas pending to be written, now the problem is to find some spare time slots to expand them <img src='http://blogs.igalia.com/aperez/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.igalia.com/aperez/2009/05/some-news-including-bill-02-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash 4.0 is out!</title>
		<link>http://blogs.igalia.com/aperez/2009/03/bash-40-is-out/</link>
		<comments>http://blogs.igalia.com/aperez/2009/03/bash-40-is-out/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 18:39:38 +0000</pubDate>
		<dc:creator>aperez</dc:creator>
				<category><![CDATA[Bill]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://blogs.igalia.com/aperez/?p=37</guid>
		<description><![CDATA[Some of you maybe already know about the news, but GNU Bash 4.0 was released a while ago. There are some interesting good news in this release. For example, now Bash ships with support for associative arrays (hashes) out-of-the-shell. This will make some Bill modules like data/hash unneeded in the long term, as well as [...]]]></description>
			<content:encoded><![CDATA[<p>Some of you maybe already know about the news, but <a class="reference external" href="http://linux.slashdot.org/article.pl?sid=09/02/23/1957244">GNU Bash 4.0</a> was released a while ago. There are some interesting good news in this release. For example, now Bash ships with support for associative arrays (hashes) <em>out-of-the-shell</em>. This will make some <a class="reference external" href="http://people.igalia.com/aperez/bill">Bill</a> modules like <a class="reference external" href="http://people.igalia.com/aperez/bill/lib/data/hash.html">data/hash</a> unneeded in the long term, as well as providing a nice speedup to code using it. But do not let your imagination fly before thinking a bit about the following: a critical piece of the base system like the shell will not be updated by your <a class="reference external" href="http://www.debian.org">favourite</a> <a class="reference external" href="http://www.gentoo.org">distributors</a> in a while.</p>
<p>Bash 3.2 has died&#8230; long live Bash 3.2!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.igalia.com/aperez/2009/03/bash-40-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bill 0.1-2 released</title>
		<link>http://blogs.igalia.com/aperez/2009/01/bill-01-2-released/</link>
		<comments>http://blogs.igalia.com/aperez/2009/01/bill-01-2-released/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 13:28:34 +0000</pubDate>
		<dc:creator>aperez</dc:creator>
				<category><![CDATA[Bill]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://blogs.igalia.com/aperez/?p=29</guid>
		<description><![CDATA[I have just relased version 0.1-2 of Bill, your favourite accompaniment for your shell-code meals. Albeit I have plans for an upcoming 0.2 which will break some backwards compatibility, this is a just a mainteinance release which introduces some bugfixes. Quick summary follows:

Better test suite and fixes for the data/hash module
Fix bug which prevented serving [...]]]></description>
			<content:encoded><![CDATA[<p>I have just relased version <tt>0.1-2</tt> of <a href="http://people.igalia.com/aperez/bill">Bill</a>, your favourite accompaniment for your shell-code meals. Albeit I have plans for an upcoming <tt>0.2</tt> which will break some backwards compatibility, this is a just a mainteinance release which introduces some bugfixes. Quick summary follows:</p>
<ul>
<li>Better test suite and fixes for the <tt>data/hash</tt> module</li>
<li>Fix bug which prevented serving content from a non-default Billet</li>
<li>Allow for manually setting the server name in <tt>billetd</tt></li>
<li>New <tt>config_ini_get_chained</tt> function in module <tt>text/config</tt>
<li>The <tt>butt</tt> utility now accepts file names as arguments, so you can choose which unit tests to run, instead of waiting for the full lot to finish</li>
<li>Speed improvements when decoding MIME data in module <tt>text/mime</tt></li>
</ul>
<p>Last, but not least, some polish was applied to the documentation and code style, and autogenerated files (i.e. HTML documentation) was removed from the <a href="http://gitorious.org/projects/bill/">GIT repository</a>.</p>
<p>And now, go and <a href="http://people.igalia.com/aperez/bill/#get-billed">get some packages</a> <img src='http://blogs.igalia.com/aperez/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.igalia.com/aperez/2009/01/bill-01-2-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using boolean variables in Bash</title>
		<link>http://blogs.igalia.com/aperez/2009/01/using-boolean-variables-in-bash/</link>
		<comments>http://blogs.igalia.com/aperez/2009/01/using-boolean-variables-in-bash/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 15:27:37 +0000</pubDate>
		<dc:creator>aperez</dc:creator>
				<category><![CDATA[Bill]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://blogs.igalia.com/aperez/?p=25</guid>
		<description><![CDATA[Today I stumbled upon a weblog post by Mark Dominus on a “novel” way of using flag variables in shell code, mainly because I have been using that technique since my early days of shell programming. Let me introduce the syntax:
the_world_is_flat=true
# ...do something interesting...
if $the_world_is_flat ; then
  echo 'Be carefule not to fall off!'
fi
This [...]]]></description>
			<content:encoded><![CDATA[<p>Today I stumbled upon <a href="http://blog.plover.com/prog/sh-flags.html">a weblog post by Mark Dominus</a> on a “novel” way of using flag variables in shell code, mainly because I have been using that technique since my early days of shell programming. Let me introduce the syntax:</p>
<pre>the_world_is_flat=true
# ...do something interesting...
if $the_world_is_flat ; then
  echo 'Be carefule not to fall off!'
fi</pre>
<p>This example may look familiar to some of my readers, because in fact it is taken from the <a href="http://people.igalia.com/aperez/bill/tutorial.html#interactive-mode">Bill tutorial</a>. Some modules included in <a href="http://blogs.igalia.com/aperez/?p=23">Bill</a> use this kind of syntax extensively. Some care must be taken, because we are directly executing the contents of a variable in the <tt>if</tt> clause, so you would not better use this with values entered by the user, but I find very convenient to directly expand and evaluate <tt>true</tt> and <tt>false</tt> from variables when they come from “trusted” code.</p>
<p>I learned this trick several years ago from my friend <a href="http://ajdiaz.wordpress.com/">Andrés</a> when we were working together. I do not know when did he learn this syntax, but I am sure that the thing is not as new as it sounds.</p>
<p>Oops, almost forgot: have a nice 2009!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.igalia.com/aperez/2009/01/using-boolean-variables-in-bash/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Meet Bill</title>
		<link>http://blogs.igalia.com/aperez/2008/11/meet-bill/</link>
		<comments>http://blogs.igalia.com/aperez/2008/11/meet-bill/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 01:55:43 +0000</pubDate>
		<dc:creator>aperez</dc:creator>
				<category><![CDATA[Bill]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://blogs.igalia.com/aperez/?p=23</guid>
		<description><![CDATA[It has been in the oven for some time, but now it is ready for release&#8230; Bill version 0.1 has just hit the lines!
In short, Bill is a solution for creating high-quality Bash code using reusable components. As GNU Bash is its only dependency, it can be run nearly everywhere&#8212;even on resource-limited systems!
Origins and motivation
Sometimes [...]]]></description>
			<content:encoded><![CDATA[<p>It has been in the oven for some time, but now it is ready for release&#8230; <a href="http://people.igalia.com/aperez/bill">Bill</a> version 0.1 has just hit the lines!</p>
<p>In short, Bill is a solution for creating high-quality Bash code using reusable components. As <a href="http://www.gnu.org/software/bash">GNU Bash</a> is its only dependency, it can be run nearly everywhere&mdash;even on resource-limited systems!</p>
<h4>Origins and motivation</h4>
<p>Sometimes one wants to spit out some code to glue together a set of already available tools and quickly solve a problem by combining their strengths. That is okay, and using a shell script is probably the best solution, until annoyances arise:</p>
<ol>
<li>Portions of boilerplate code is repeated one script after another. Bill addresses this problem by providing a way of creating and reusing modules, and by providing a set of standard ones. It comes with batteries included.</li>
<li>The script <em>will</em> eventually grow; and it will become a nightmare to debug and maintain. Bill includes tools for testing and documenting the code.</li>
<li>Some ideas are complicated to achieve in shell code, and usually implementing them can be tricky. Bill already does the tricks for you, so you can focus on the actual code.</li>
</ol>
<p>Thus, Bill was born with three main goals in mind: having as little dependencies as possible, easing development of complex applications, and serving as a playground for advanced usage of Bash. While I was making progress with the code, we had the ideas of running simple web applications coded in shell scripts and having unit tests and added them on the go.</p>
<h4>Trying it out</h4>
<p>If you use a <tt>dpkg</tt>-based distribution (Ubuntu, Debian), just grab the <a href="http://people.igalia.com/aperez/bill/releases/bill_0.1-1_all.deb">.deb package</a> and install it by running <tt>dpkg -i bill_0.1-1_all.deb</tt>. Otherwise you can download the <a href="http://people.igalia.com/aperez/bill/releases/bill-0.1.tar.bz2">source tarball</a> and unpack it with <tt>tar -xfj bill-0.1.tar.bz2</tt>. You can run Bill without installing by adding the <tt>bill-0.1/scripts/</tt> directory to your <tt>PATH</tt> environment variable.</p>
<p>Once you have your copy you are ready to <a href="http://people.igalia.com/aperez/bill/tutorial.html">read the tutorial</a>. I will give you only an appetizer here:</p>
<pre>$ bill
(bill) echo "Hello, Bill!"
Hello, Bill!
(bill)</pre>
<p>This is all for today, but expect more news related to Bill in the future. For the intrepid in you, you can check out the <a href="http://gitorious.org/projects/bill">code repository at Gitorious</a>, the code is under the GPL v2 license. I hope you enjoy this initial release as much as I did while preparing it.</p>
<p>Have a lot of fun&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.igalia.com/aperez/2008/11/meet-bill/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
