<?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>Matt Jones' Blog &#187; linux</title>
	<atom:link href="http://www.mattjones.workhorsy.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mattjones.workhorsy.org</link>
	<description>Blah You, Blah Me, Blah We</description>
	<lastBuildDate>Fri, 09 Jul 2010 02:50:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Interviewed On Uber Leet Hacker Force Radio</title>
		<link>http://www.mattjones.workhorsy.org/2010/07/08/interviewed-on-uber-leet-hacker-force-radio/</link>
		<comments>http://www.mattjones.workhorsy.org/2010/07/08/interviewed-on-uber-leet-hacker-force-radio/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 02:50:48 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[Rootin Tootin]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=365</guid>
		<description><![CDATA[The latest episode of Uber Leet Hacker Force Radio is out. I did a quick interview near the end of the show. I talked a little about D and Rootin Tootin. This may be interesting to people who want to learn more about D, and my motivations for creating Rootin Tootin.
Uber Leet Hacker Force Radio [...]]]></description>
			<content:encoded><![CDATA[<p>The latest episode of <a href="http://uberleethackerforce.deepgeek.us">Uber Leet Hacker Force Radio</a> is out. I did a quick interview near the end of the show. I talked a little about <a href="http://digitalmars.com/d/index.html">D</a> and <a href="http://rootin.toot.in">Rootin Tootin</a>. This may be interesting to people who want to learn more about D, and my motivations for creating Rootin Tootin.</p>
<p>Uber Leet Hacker Force Radio is syndicated on <a href="http://hackerpublicradio.org">Hacker Public Radio</a>. The episode can be directly <a href="http://hackerpublicradio.org/eps.php?id=0552">downloaded from here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2010/07/08/interviewed-on-uber-leet-hacker-force-radio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porting Tornado to D</title>
		<link>http://www.mattjones.workhorsy.org/2010/03/12/porting-tornado-to-d/</link>
		<comments>http://www.mattjones.workhorsy.org/2010/03/12/porting-tornado-to-d/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 03:03:53 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[Code Fragment]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=353</guid>
		<description><![CDATA[The other day I started porting the Tornado web server to D. I just got the IO Loop part ported. I&#8217;m planning on using this in my web framework Rootin Tootin.
You can check out the code on Launchpad: http://launchpad.net/dornado. Next I will add proper Epoll and the HTTP part. But in the meantime, you can [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I started porting the <a href="http://tornadoweb.org">Tornado web server</a> to <a href="http://digitalmars.com/d/index.html">D</a>. I just got the IO Loop part ported. I&#8217;m planning on using this in my web framework <a href="http://rootin.toot.in">Rootin Tootin</a>.</p>
<p>You can check out the code on Launchpad: <a href="http://launchpad.net/dornado">http://launchpad.net/dornado</a>. Next I will add proper Epoll and the HTTP part. But in the meantime, you can try it out with this demo code snippet:</p>

<div class="wp_syntax"><div class="code"><pre class="d" style="font-family:monospace;"><span style="color: #993333;">private</span> <span style="color: #000000; font-weight: bold;">import</span> tango.<span style="color: #006600;">net</span>.<span style="color: #006600;">device</span>.<span style="color: #006600;">Socket</span><span style="color: #66cc66;">;</span>
<span style="color: #993333;">private</span> <span style="color: #000000; font-weight: bold;">import</span> tango.<span style="color: #006600;">io</span>.<span style="color: #006600;">model</span>.<span style="color: #006600;">IConduit</span><span style="color: #66cc66;">;</span>
<span style="color: #993333;">private</span> <span style="color: #000000; font-weight: bold;">import</span> tango.<span style="color: #006600;">net</span>.<span style="color: #006600;">InternetAddress</span><span style="color: #66cc66;">;</span>
<span style="color: #993333;">private</span> <span style="color: #000000; font-weight: bold;">import</span> tango.<span style="color: #006600;">io</span>.<span style="color: #006600;">Stdout</span><span style="color: #66cc66;">;</span>
<span style="color: #993333;">public</span> <span style="color: #000000; font-weight: bold;">import</span> ioloop<span style="color: #66cc66;">;</span>
&nbsp;
<span style="color: #993333;">class</span> HelloServer <span style="color: #66cc66;">&#123;</span>
    <span style="color: #993333;">private</span> ServerSocket sock<span style="color: #66cc66;">;</span>
    <span style="color: #993333;">private</span> <span style="color: #993333;">char</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #66cc66;">&#93;</span> buffer<span style="color: #66cc66;">;</span>
&nbsp;
    <span style="color: #993333;">public</span> <span style="color: #993333;">void</span> handle_connection<span style="color: #66cc66;">&#40;</span>Socket connection<span style="color: #66cc66;">,</span> <span style="color: #993333;">char</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> address<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        connection.<span style="color: #006600;">read</span><span style="color: #66cc66;">&#40;</span>buffer<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        connection.<span style="color: #006600;">write</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;hello world!&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        connection.<span style="color: #006600;">shutdown</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        connection.<span style="color: #006600;">detach</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #993333;">public</span> <span style="color: #993333;">void</span> connection_ready<span style="color: #66cc66;">&#40;</span>ServerSocket sock<span style="color: #66cc66;">,</span> ISelectable.<span style="color: #006600;">Handle</span> fd<span style="color: #66cc66;">,</span> <span style="color: #993333;">uint</span> events<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            Socket connection <span style="color: #66cc66;">=</span> sock.<span style="color: #006600;">accept</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            connection.<span style="color: #006600;">socket</span>.<span style="color: #006600;">blocking</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            handle_connection<span style="color: #66cc66;">&#40;</span>connection<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #993333;">public</span> <span style="color: #993333;">void</span> call_connection_ready<span style="color: #66cc66;">&#40;</span>ISelectable.<span style="color: #006600;">Handle</span> fd<span style="color: #66cc66;">,</span> <span style="color: #993333;">uint</span> events<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        connection_ready<span style="color: #66cc66;">&#40;</span>sock<span style="color: #66cc66;">,</span> fd<span style="color: #66cc66;">,</span> events<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #993333;">public</span> <span style="color: #993333;">void</span> start<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #993333;">int</span> port <span style="color: #66cc66;">=</span> <span style="color: #0000dd;">3000</span><span style="color: #66cc66;">;</span>
        <span style="color: #993333;">int</span> max_waiting_clients <span style="color: #66cc66;">=</span> <span style="color: #0000dd;">128</span><span style="color: #66cc66;">;</span>
        <span style="color: #993333;">bool</span> reuse_address <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006600;">sock</span> <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ServerSocket<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> InternetAddress<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;0.0.0.0&quot;</span><span style="color: #66cc66;">,</span> port<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> max_waiting_clients<span style="color: #66cc66;">,</span> reuse_address<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006600;">sock</span>.<span style="color: #006600;">socket</span>.<span style="color: #006600;">blocking</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #993333;">auto</span> io_loop <span style="color: #66cc66;">=</span> IOLoop.<span style="color: #006600;">instance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #993333;">auto</span> callback <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&amp;</span>this.<span style="color: #006600;">call_connection_ready</span><span style="color: #66cc66;">;</span>
        io_loop.<span style="color: #006600;">add_handler</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006600;">sock</span>.<span style="color: #006600;">fileHandle</span><span style="color: #66cc66;">,</span> callback<span style="color: #66cc66;">,</span> io_loop.<span style="color: #006600;">READ</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        Stdout<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http://localhost:3000&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">newline</span>.<span style="color: #006600;">flush</span><span style="color: #66cc66;">;</span>
        io_loop.<span style="color: #006600;">start</span><span style="color: #66cc66;">&#40;</span>sock<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #993333;">public</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    IOLoop.<span style="color: #006600;">use_epoll</span> <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">;</span>
    <span style="color: #993333;">auto</span> server <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HelloServer<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
    server.<span style="color: #006600;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>
You can compile this with:<br />
<code><br />
ldc helloworld.d ../ioloop.d ../language_helper.d<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2010/03/12/porting-tornado-to-d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rootin Tootin 0.3.0 Release</title>
		<link>http://www.mattjones.workhorsy.org/2010/01/19/rootin-tootin-0-3-0-release/</link>
		<comments>http://www.mattjones.workhorsy.org/2010/01/19/rootin-tootin-0-3-0-release/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 23:48:20 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=335</guid>
		<description><![CDATA[I just released Rootin Tootin 0.3.0. In case you don&#8217;t know what it is: Rootin Tootin is a fast RESTful web server and framework written in D. It is designed to scale well by default, while still providing a developer experience similar to Ruby on Rails.
I don&#8217;t want to transpose the changelog here. You can [...]]]></description>
			<content:encoded><![CDATA[<p>I just released <a href="http://rootin.toot.in">Rootin Tootin</a> 0.3.0. In case you don&#8217;t know what it is: Rootin Tootin is a fast RESTful web server and framework written in D. It is designed to scale well by default, while still providing a developer experience similar to Ruby on Rails.</p>
<p>I don&#8217;t want to transpose the changelog here. You can view that <a href="http://rootin.toot.in/#news">at your leisure</a>. Instead here are my highlights. Firstly, you can now use the link_to function in views to generate links. It will automatically add the .html to the end if needed. Secondly, and most awesomely: it now works properly with REST and Active Resource. You can even use the rails active resource, and python active resource to talk to it:</p>
<p>Lets start by creatnig a simple web app to talk too:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rootintootin name:<span style="color: #c20cb9; font-weight: bold;">users</span> port:<span style="color: #000000;">3000</span> db_user:root db_password:letmein
<span style="color: #7a0874; font-weight: bold;">cd</span> journal
.<span style="color: #000000; font-weight: bold;">/</span>gen recreate database
.<span style="color: #000000; font-weight: bold;">/</span>gen create noun singular:user plural:<span style="color: #c20cb9; font-weight: bold;">users</span>
.<span style="color: #000000; font-weight: bold;">/</span>gen create scaffold note name:string email:string
.<span style="color: #000000; font-weight: bold;">/</span>gen migrate
.<span style="color: #000000; font-weight: bold;">/</span>run</pre></div></div>

<p>Now lets try talking to it, with the rails active resource:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/env ruby</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'active_resource'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> User <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveResource::Base</span>
	<span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">site</span> = <span style="color:#996600;">&quot;http://localhost:3000&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># create</span>
user = User.<span style="color:#9900CC;">new</span>
user.<span style="color:#9900CC;">name</span> = <span style="color:#996600;">&quot;mr possum&quot;</span>
user.<span style="color:#9900CC;">email</span> = <span style="color:#996600;">&quot;possum@gmail.com&quot;</span>
user.<span style="color:#9900CC;">save</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># update</span>
User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:all</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>user<span style="color:#006600; font-weight:bold;">|</span>
	user.<span style="color:#9900CC;">name</span> = <span style="color:#996600;">&quot;awesome possum&quot;</span>
	user.<span style="color:#9900CC;">save</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># delete</span>
user = User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:first</span><span style="color:#006600; font-weight:bold;">&#41;</span>
user.<span style="color:#9900CC;">destroy</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># read</span>
User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:all</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>user<span style="color:#006600; font-weight:bold;">|</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;name #{user.name} email #{user.email}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>If you are feeling more dangerous, you can try the python active resource version:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> pyactiveresource.<span style="color: black;">activeresource</span> <span style="color: #ff7700;font-weight:bold;">import</span> ActiveResource
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> User<span style="color: black;">&#40;</span>ActiveResource<span style="color: black;">&#41;</span>:
	_site = <span style="color: #483d8b;">&quot;http://localhost:3000&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># create</span>
<span style="color: #dc143c;">user</span> = User<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #dc143c;">user</span>.<span style="color: black;">name</span> = <span style="color: #483d8b;">&quot;mr possum&quot;</span>
<span style="color: #dc143c;">user</span>.<span style="color: #dc143c;">email</span> = <span style="color: #483d8b;">&quot;possum@gmail.com&quot;</span>
<span style="color: #dc143c;">user</span>.<span style="color: black;">save</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># update</span>
<span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #dc143c;">user</span> <span style="color: #ff7700;font-weight:bold;">in</span> User.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	<span style="color: #dc143c;">user</span>.<span style="color: black;">name</span> = <span style="color: #483d8b;">&quot;awesome possum&quot;</span>
	<span style="color: #dc143c;">user</span>.<span style="color: black;">save</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># delete</span>
<span style="color: #dc143c;">user</span> = User.<span style="color: black;">find_first</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #dc143c;">user</span>.<span style="color: black;">destroy</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># read</span>
<span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #dc143c;">user</span> <span style="color: #ff7700;font-weight:bold;">in</span> User.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;name {0} email {1}&quot;</span>.<span style="color: black;">format</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">user</span>.<span style="color: black;">name</span>, <span style="color: #dc143c;">user</span>.<span style="color: #dc143c;">email</span><span style="color: black;">&#41;</span></pre></div></div>

<p>So neat. This is just a small sample of what you can do. But there are still many <a href="https://bugs.launchpad.net/rester/+bug/509771">essential</a> <a href="https://bugs.launchpad.net/rester/+bug/503181">features</a> that need to be added. Not to mention html 5 goodness, like websocks and access control.</p>
<p>I&#8217;ll try and add a video walk-through of a basic app later. Bye Bye for now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2010/01/19/rootin-tootin-0-3-0-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rootin Tootin 0.2.0 Release</title>
		<link>http://www.mattjones.workhorsy.org/2010/01/04/rootin-tootin-0-2-0-release/</link>
		<comments>http://www.mattjones.workhorsy.org/2010/01/04/rootin-tootin-0-2-0-release/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 00:28:40 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=322</guid>
		<description><![CDATA[During the end-of-the-year-shopping-season, I spent a few days working on getting the 0.2 release of Rootin Tootin out. For those of you that don&#8217;t know what Rootin Tootin is: It is a fast RESTful web framework and server written in D. Just think of it as a new framework that is designed to be as [...]]]></description>
			<content:encoded><![CDATA[<p>During the end-of-the-year-shopping-season, I spent a few days working on getting the 0.2 release of <a href="http://rootin.toot.in/">Rootin Tootin</a> out. For those of you that don&#8217;t know what <a href="http://rootin.toot.in/">Rootin Tootin</a> is: It is a fast RESTful web framework and server written in <a href="http://digitalmars.com/d/index.html">D</a>. Just think of it as a new framework that is designed to be as easy to use as <a href="http://rubyonrails.org/">Ruby on Rails</a>, while improving on it.</p>
<p>There are tons of new features listed in the changelog. Some highlights are: Sessions work correctly. Flash messages are working too, thanks to sessions. File downloads work. Performance is greatly improved (although nowhere near where it should be). We moved from GPL v2 to GPL v3. And my favorite: Everything is automatically rebuilt when files change. So you no longer have to stop the server, build, and restart when you make code changes. For the complete list of changes, you can checkout the <a href="http://rootin.toot.in/#news">news</a>.</p>
<p>Now I need to write a tutorial, and some documentation. Some more detail on how <a href="http://rootin.toot.in/">Rootin Tootin</a> is different from Rails would be good too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2010/01/04/rootin-tootin-0-2-0-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Packaging in Linux #1</title>
		<link>http://www.mattjones.workhorsy.org/2009/10/05/fixing-packaging-in-linux-1/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/10/05/fixing-packaging-in-linux-1/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 00:15:54 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[packaging]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=310</guid>
		<description><![CDATA[I really, really, really want feedback on this:
Over the past few months, I&#8217;ve really gotten into packaging on Fedora and Ubuntu. I&#8217;m not an expert, but I can genuinely say our packaging situation is crap. We are so close. And yet we ended up with two major implementations, that are almost the same. There is [...]]]></description>
			<content:encoded><![CDATA[<p>I really, really, really want feedback on this:</p>
<p>Over the past few months, I&#8217;ve really gotten into packaging on Fedora and Ubuntu. I&#8217;m not an expert, but I can genuinely say our packaging situation is crap. We are so close. And yet we ended up with two major implementations, that are almost the same. There is no significant difference between RPM and Dpgk.</p>
<p>So will Fedora abandon their 15,000 packages and choose Dpkg? Will Debian abandon their 35,000 packages and choose RPM? No. Neither will. There is no way for them to transition. And they will not give up their self branded solution. The only way forward is to make a new system, that is both better, and backwards compatible with RPM and Dpkg.</p>
<p>That is what I have been toying with for the past few months. It is called <a href="http://launchpad.net/packagetastic">Packagetastic</a> and It is a replacement for Dpkg and RPM, but still backwards compatible with them. Right now it is just a proof of concept, but can build many small packages on Ubuntu and Fedora.</p>
<p>I made a screencast to show how it works. This is just a simple, introduction. More example on how to use it will come soon. You can view the screencast below:</p>
<p><a href="http://workhorsy.org/junk/packagetastic_1.ogv"><br />
<img src="http://workhorsy.org/junk/packagetastic_1.png" /><br />
<br />packagetastic_1.ogv (96.2 MB)<br />
</a></p>
<p>More information about the project can be found here: <a href="http://launchpad.net/packagetastic">http://launchpad.net/packagetastic</a></p>
<p>Please provide your criticism and feedback at the <a href="https://lists.launchpad.net/packagetastic-developers/">mailing list</a>, this blog post, or my <a href="http://identi.ca/matthewjones">identica page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/10/05/fixing-packaging-in-linux-1/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
<enclosure url="http://workhorsy.org/junk/packagetastic_1.ogv" length="100835511" type="video/ogg" />
		</item>
		<item>
		<title>Scary &#8216;Possible DNS spoofing&#8217; ssh error</title>
		<link>http://www.mattjones.workhorsy.org/2009/10/01/scary-possible-dns-spoofing-ssh-error/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/10/01/scary-possible-dns-spoofing-ssh-error/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 01:45:41 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=300</guid>
		<description><![CDATA[I just tried pushing a bazaar branch, and got a scary message that said &#8220;WARNING: POSSIBLE DNS SPOOFING DETECTED!&#8221;. Turns out my web host (dreamhost) moved my site to a new server. The error was because the RSA key had changed. I had to poke around to confirm that it was legit, and not a [...]]]></description>
			<content:encoded><![CDATA[<p>I just tried pushing a bazaar branch, and got a scary message that said &#8220;WARNING: POSSIBLE DNS SPOOFING DETECTED!&#8221;. Turns out my web host (dreamhost) moved my site to a new server. The error was because the RSA key had changed. I had to poke around to confirm that it was legit, and not a spoof.</p>
<p>But hot damn, that made my heart beat. I&#8217;m glad my everyday tools &#8220;just work&#8221;, with things that can confirm the box is the same.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/10/01/scary-possible-dns-spoofing-ssh-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python: Find objects of a certain type in memory</title>
		<link>http://www.mattjones.workhorsy.org/2009/08/23/python-find-objects-of-a-certain-type-in-memory/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/08/23/python-find-objects-of-a-certain-type-in-memory/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 04:33:43 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[Code Fragment]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=279</guid>
		<description><![CDATA[This code snippet will allow you to look for objects of a certain type in memory. This is very useful for plugins:

&#34;&#34;&#34;
    This looks through all the objects in memory, to find ones
    of the designated type.
&#34;&#34;&#34;
&#160;
import gc
&#160;
class Animal&#40;object&#41;:
    def make_noise&#40;self&#41;:
      [...]]]></description>
			<content:encoded><![CDATA[<p>This code snippet will allow you to look for objects of a certain type in memory. This is very useful for plugins:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #483d8b;">&quot;&quot;&quot;
    This looks through all the objects in memory, to find ones
    of the designated type.
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">gc</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Animal<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> make_noise<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;snort&quot;</span>
&nbsp;
animal = Animal<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> obj <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">gc</span>.<span style="color: black;">get_objects</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">type</span><span style="color: black;">&#40;</span>obj<span style="color: black;">&#41;</span> == Animal:
        obj.<span style="color: black;">make_noise</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/08/23/python-find-objects-of-a-certain-type-in-memory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rester Screencast 1: Intro and Server Push</title>
		<link>http://www.mattjones.workhorsy.org/2009/08/09/rester-screencast-1-intro-and-server-push/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/08/09/rester-screencast-1-intro-and-server-push/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 04:56:00 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=265</guid>
		<description><![CDATA[During my job hunting, I was going over my resume and portfolio. I noticed that my project Rester is just about a year old. It is also getting to a point, where is is almost useful to other people.
If you are interested: Rester is a fast RESTful web server and framework written in D. It [...]]]></description>
			<content:encoded><![CDATA[<p>During my job hunting, I was going over my resume and portfolio. I noticed that my project <a href="https://launchpad.net/rester">Rester</a> is just about a year old. It is also getting to a point, where is is almost useful to other people.</p>
<p>If you are interested: <a href="https://launchpad.net/rester">Rester</a> is a fast <a href="http://en.wikipedia.org/wiki/RESTful">RESTful</a> web server and framework written in <a href="http://digitalmars.com/d/index.html">D</a>. It should be as easy to use as Ruby on Rails, but provide good performance by default, and be easy to deploy.</p>
<p>I made a brief screencast, with an introduction and an example that uses server push.</p>
<p><a href="http://workhorsy.org/junk/rester_1.ogv"><br />
rester_1.ogv (27.7 Megabytes):<br />
<img src="http://workhorsy.org/junk/rester_1.png" alt="" /></a></p>
<p>You can also view the video in the legacy flash format at Youtube:<br />
<a href="http://www.youtube.com/watch?v=uBfdn5RCrlw">http://www.youtube.com/watch?v=uBfdn5RCrlw</a></p>
<p>Feel free to try it out yourself, and leave comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/08/09/rester-screencast-1-intro-and-server-push/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Search Ubuntu PPA</title>
		<link>http://www.mattjones.workhorsy.org/2009/07/11/search-ubuntu-ppa/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/07/11/search-ubuntu-ppa/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 04:38:32 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=257</guid>
		<description><![CDATA[I can&#8217;t believe I did not know about this until now. You can search the Ubuntu PPAs on Launchpad:
https://launchpad.net/ubuntu/+ppas
I found all kinds of cool packages. Some for new application, and some for updated versions. My favorites so far are: ldc, pcsx2, vlc, arora, gnome-colors, shrip, eclipse, and pitivi.
]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t believe I did not know about this until now. You can search the Ubuntu PPAs on Launchpad:</p>
<p><a href="https://launchpad.net/ubuntu/+ppas" target="_blank">https://launchpad.net/ubuntu/+ppas</a></p>
<p>I found all kinds of cool packages. Some for new application, and some for updated versions. My favorites so far are: ldc, pcsx2, vlc, arora, gnome-colors, shrip, eclipse, and pitivi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/07/11/search-ubuntu-ppa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Space Pony Demo #2</title>
		<link>http://www.mattjones.workhorsy.org/2009/06/02/space-pony-demo-2/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/06/02/space-pony-demo-2/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 02:24:00 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[desktop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[spacepony]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=237</guid>
		<description><![CDATA[Here is the second Space Pony screencast. Note that the audio is out of sync with the video. It seems to be delayed by a few seconds.
This one shows some bug fixes, background syncing, and avatar syncing:

spacepony_demo_2.ogv (31.2 Megabytes):

As usual, comments, questions, and feedback are welcome. You can also join the mailing list:
https://launchpad.net/~spacepony-developers
]]></description>
			<content:encoded><![CDATA[<p>Here is the second <a href="https://launchpad.net/spacepony">Space Pony</a> screencast. Note that the audio is out of sync with the video. It seems to be delayed by a few seconds.</p>
<p>This one shows some bug fixes, background syncing, and avatar syncing:</p>
<p><a href="http://workhorsy.org/junk/spacepony_demo_2.ogv"><br />
spacepony_demo_2.ogv (31.2 Megabytes):<br />
<img src="http://workhorsy.org/junk/spacepony_demo_2.png" alt="" /></a></p>
<p>As usual, comments, questions, and feedback are welcome. You can also join the mailing list:</p>
<p><a href="https://launchpad.net/~spacepony-developers">https://launchpad.net/~spacepony-developers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/06/02/space-pony-demo-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Space Pony Demo #1</title>
		<link>http://www.mattjones.workhorsy.org/2009/05/18/space-pony-demo/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/05/18/space-pony-demo/#comments</comments>
		<pubDate>Mon, 18 May 2009 08:35:16 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[desktop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[spacepony]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=227</guid>
		<description><![CDATA[I made a screencast for Space Pony: A desktop syncing client and server I&#8217;m working on. Right now it is uber apha quality, so risk takers only.
This screencast shows syncing of Tomboy notes and Pidgin accounts:

spacepony_demo_1.ogv (40.2 Megabytes):

Anyone wanting to help should join the team and use the mailing list:
https://launchpad.net/~spacepony-developers
]]></description>
			<content:encoded><![CDATA[<p>I made a screencast for <a href="https://launchpad.net/spacepony">Space Pony</a>: A desktop syncing client and server I&#8217;m working on. Right now it is uber apha quality, so risk takers only.</p>
<p>This screencast shows syncing of <a href="http://projects.gnome.org/tomboy/">Tomboy</a> notes and <a href="http://www.pidgin.im/">Pidgin</a> accounts:</p>
<p><a href="http://workhorsy.org/junk/spacepony_demo_1.ogv"><br />
spacepony_demo_1.ogv (40.2 Megabytes):<br />
<img class="alignnone" src="http://workhorsy.org/junk/spacepony_demo_1.png" alt="" width="500" height="313" /></a></p>
<p>Anyone wanting to help should join the team and use the mailing list:</p>
<p><a href="https://launchpad.net/~spacepony-developers">https://launchpad.net/~spacepony-developers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/05/18/space-pony-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Fragment: How to programatically get MySQL table relationships</title>
		<link>http://www.mattjones.workhorsy.org/2009/02/27/code-fragment-how-to-programatically-get-mysql-table-relationships/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/02/27/code-fragment-how-to-programatically-get-mysql-table-relationships/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 19:43:47 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[Code Fragment]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=195</guid>
		<description><![CDATA[This magical chunk of goodness will allow you to query a mysql database to determine what table fields are foreign keys, and what they reference. Just replace &#8216;database_name&#8217; and &#8216;table_name&#8217; with the respective names you want:

1
2
3
4
5
6
7
SELECT column_name, referenced_table_name,
referenced_column_name
FROM information_schema.key_column_usage
WHERE table_schema='database_name'
AND table_name='table_name'
AND referenced_table_name IS NOT NULL
AND referenced_column_name IS NOT NULL;

]]></description>
			<content:encoded><![CDATA[<p>This magical chunk of goodness will allow you to query a mysql database to determine what table fields are foreign keys, and what they reference. Just replace &#8216;database_name&#8217; and &#8216;table_name&#8217; with the respective names you want:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> column_name<span style="color: #66cc66;">,</span> referenced_table_name<span style="color: #66cc66;">,</span>
referenced_column_name
<span style="color: #993333; font-weight: bold;">FROM</span> information_schema<span style="color: #66cc66;">.</span>key_column_usage
<span style="color: #993333; font-weight: bold;">WHERE</span> table_schema<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'database_name'</span>
<span style="color: #993333; font-weight: bold;">AND</span> table_name<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'table_name'</span>
<span style="color: #993333; font-weight: bold;">AND</span> referenced_table_name <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #993333; font-weight: bold;">AND</span> referenced_column_name <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>;</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/02/27/code-fragment-how-to-programatically-get-mysql-table-relationships/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install GDC from source</title>
		<link>http://www.mattjones.workhorsy.org/2009/02/11/how-to-install-gdc-from-source/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/02/11/how-to-install-gdc-from-source/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 09:12:16 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=180</guid>
		<description><![CDATA[I can&#8217;t believe there is no package for gdc on Fedora. so I spent forever trying to install it from source. Here is a script if anyone wants it.

1
2
# On ubuntu run this to install dependencies:
sudo apt-get install build-essential gawk libmpfr-dev libppl7 libppl-c2 libppl-dev libcloog-ppl-dev libc6-dev-amd64


1
2
# On fedora run this to install dependencies:
sudo yum install [...]]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t believe there is no package for <a href="http://dgcc.sourceforge.net/">gdc</a> on <a href="http://fedoraproject.org/">Fedora</a>. so I spent forever trying to install it from source. Here is a script if anyone wants it.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># On ubuntu run this to install dependencies:</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> build-essential <span style="color: #c20cb9; font-weight: bold;">gawk</span> libmpfr-dev libppl7 libppl-c2 libppl-dev libcloog-ppl-dev libc6-dev-amd64</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># On fedora run this to install dependencies:</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> yum <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">gcc</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Download GCC and GDC</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ~
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> gdc
<span style="color: #7a0874; font-weight: bold;">cd</span> gdc
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>downloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>dgcc<span style="color: #000000; font-weight: bold;">/</span>gdc-<span style="color: #000000;">0.24</span>-src.tar.bz2
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #c20cb9; font-weight: bold;">ftp</span>:<span style="color: #000000; font-weight: bold;">//</span>gcc.gnu.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>gcc<span style="color: #000000; font-weight: bold;">/</span>releases<span style="color: #000000; font-weight: bold;">/</span>gcc-4.1.2<span style="color: #000000; font-weight: bold;">/</span>gcc-4.1.2.tar.bz2</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Patch GCC to support D</span>
<span style="color: #c20cb9; font-weight: bold;">tar</span> xjf gcc-4.1.2.tar.bz2
<span style="color: #7a0874; font-weight: bold;">cd</span> gcc-4.1.2<span style="color: #000000; font-weight: bold;">/</span>gcc<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">tar</span> xjf ..<span style="color: #000000; font-weight: bold;">/</span>..<span style="color: #000000; font-weight: bold;">/</span>gdc-<span style="color: #000000;">0.24</span>-src.tar.bz2
<span style="color: #7a0874; font-weight: bold;">cd</span> ..
.<span style="color: #000000; font-weight: bold;">/</span>gcc<span style="color: #000000; font-weight: bold;">/</span>d<span style="color: #000000; font-weight: bold;">/</span>setup-gcc.sh</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Build GCC</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> da_actual_build
<span style="color: #7a0874; font-weight: bold;">cd</span> da_actual_build
..<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">-v</span> <span style="color: #660033;">--enable-languages</span>=c,d,<span style="color: #c20cb9; font-weight: bold;">c++</span> <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">local</span> <span style="color: #660033;">--disable-shared</span> <span style="color: #660033;">--with-system-zlib</span> <span style="color: #660033;">--libexecdir</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib <span style="color: #660033;">--without-included-gettext</span> <span style="color: #660033;">--enable-threads</span>=posix <span style="color: #660033;">--enable-nls</span> <span style="color: #660033;">--enable-clocale</span>=gnu <span style="color: #660033;">--disable-libmudflap</span> <span style="color: #660033;">--enable-targets</span>=all <span style="color: #660033;">--build</span>=i486-linux-gnu <span style="color: #660033;">--host</span>=i486-linux-gnu <span style="color: #660033;">--target</span>=i486-linux-gnu
<span style="color: #c20cb9; font-weight: bold;">make</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Install it</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>That should do it. Next I will need to install the Tango libraries.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/02/11/how-to-install-gdc-from-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Feel the glory of a nineteenth century software installation experience</title>
		<link>http://www.mattjones.workhorsy.org/2009/02/04/feel-the-glory-of-a-nineteenth-century-software-installation-experience/</link>
		<comments>http://www.mattjones.workhorsy.org/2009/02/04/feel-the-glory-of-a-nineteenth-century-software-installation-experience/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 07:35:45 +0000</pubDate>
		<dc:creator>mattjones</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=134</guid>
		<description><![CDATA[Today I booted my Windows XP virtual machine as usual. And as every time I boot Windows, there were many updates, each with its own myriad of wizards, eulas, popup balloons, and &#8220;Are you sure you want to do what you are trying to do?&#8221; dialog boxes. One of said updates was Java. This was [...]]]></description>
			<content:encoded><![CDATA[<p>Today I booted my Windows XP virtual machine as usual. And as every time I boot Windows, there were many updates, each with its own myriad of wizards, eulas, popup balloons, and &#8220;Are you sure you want to do what you are trying to do?&#8221; dialog boxes. One of said updates was Java. This was an update to the Java that came bundled with Open Office 3.</p>
<p>Lets walk through that user experience to demonstrate just how wrong things are:</p>
<h3>Step 1</h3>
<p><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail.jpg"><img class="aligncenter size-full wp-image-136" title="sun_fail" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail.jpg" alt="" width="500" height="472" /></a></p>
<p style="text-align: center;">
<p>Here is first page of the wizard. Looks like a typical Windows installer with just a hint of eula. My first reaction when seeing this is why the hell do I have to re-install Java when It was already installed? Why does it not do an upgrade? I&#8217;ve already agreed to the previous 3 eulas when I installed the previous 3 updates to Java. It should just rip the old version out and stick the new version in, without any user intervention.</p>
<p>Next I notice that it is also forcing me to install JavaFX. JavaFX is an attempt by Sun to create their own Flash/Silverlight clone. I have no way to not install JavaFX.</p>
<p>On top of that, they want to send &#8220;some non-personal information&#8221; to &#8220;help improve performance&#8221;. Then a url that claims to show you how to not have this information sent. Fail once for not just having a checkbox for that. Fail twice for not showing me what data is sent. And fail thrice for not having that url a link or button that opens the page in my browser.</p>
<h3>Step 2</h3>
<p style="text-align: center;"><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_2.jpg"><img class="size-full wp-image-137 aligncenter" title="sun_fail_2" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_2.jpg" alt="" width="500" height="469" /></a><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_2.jpg"> </a></p>
<p>Next up, a frickin&#8217; advertisement inside the installer! Not only is the Yahoo toolbar a piece of shit (as we will see later). But it is completely unrelated to the reason why Java is on this system. Like most users, it is there only for Open Office.</p>
<p>And look! The fucking check box is checked by default! That means most users will install it without looking. This is absolutely retarded.</p>
<p>Just for the sake of having the complete experience that Sun wants us to have, lets allow it to install the Yahoo toolbar anyway.</p>
<h3>Step 3</h3>
<p><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_3.jpg"><img class="aligncenter size-full wp-image-138" title="sun_fail_3" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_3.jpg" alt="" width="500" height="471" /></a></p>
<p>Here is the actual installation. Hey look: Another advertisement. I wonder what product it is telling me about. I bet it will be a good one. After all, this is the only time Sun gets to show an add to someone they know is running Java, Windows XP, and Open Office. This realestate would be targeted advertisement gold. I can think of many cool Sun things to put on here. Fuck why not put all of them? Lets see: VirtualBox, MySQL, or even Open Solaris.</p>
<p>Oh. Its just Open Office. That thing that is the reason why we are installing Java to begin with. This is a bit like putting advertisements for milk, on boxes for cereal. If they have this, then they already have that, or will get it later. Forget milk. What we need is ads for bananas or strawberries in that cereal.</p>
<h3>Step 4</h3>
<p><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_4.jpg"><img class="aligncenter size-full wp-image-139" title="sun_fail_4" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_4.jpg" alt="" width="500" height="293" /></a></p>
<p>Ok were installed! Lets look at our beautifully impregnated web browsers. Wow we must have 2/3 of the screen remaining for actual fucking web browsing. And notice how wide it is. Good thing I have a wide screen monitor. Also that awesome select box. It must be 20 pixels wide. Very useful. Especially since there is no indication of what it does.</p>
<h3>Step 5</h3>
<p><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_5.jpg"><img class="aligncenter size-full wp-image-140" title="sun_fail_5" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_5.jpg" alt="" width="500" height="289" /></a></p>
<p>Time to remove that crapware Yahoo Toolbar. Hmmm. Its not in the add remove programs list. Oh wait. We remove it directly from inside Firefox. How intuitive! Every piece of software can install shit any way it wants! Awesome. We will just pretend that is a good thing. Because Firefox can do no harm.</p>
<h3>Step 6</h3>
<p><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_6.jpg"><img class="aligncenter size-full wp-image-154" title="sun_fail_6" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2009/02/sun_fail_6.jpg" alt="" width="500" height="416" /></a></p>
<p>All right. Now lets actually try to use open office. This time on our Windows 7 beta. Oh look! another update! Goodie! Not only is it related to Open Office, but it could have been bundled with the one I just installed. I&#8217;m so glad it was not.</p>
<h3>Conclusion</h3>
<p>What the hell are you thinking Sun? No one wants the fucking Yahoo Toolbar. As your high ranking executives blindly repeat the mantra &#8220;Sun really gets it&#8221;, you are getting a reputation as a bloatware company. Don&#8217;t ruin the Open Office ecosystem. It is one of the four good things you have left.</p>
<p>And Microsoft: Why the hell don&#8217;t you create a packaging system? The MSI format was a foot in the right direction. And yet the same problems have been around for almost 20 years. Create a package management system like most Linux distributions do. In fact just clone <a href="http://wiki.rpath.com/wiki/Conary">Conary</a>. Or even <a href="http://store.steampowered.com/">Steam</a>. Then we could just use Windows Update to manage all our software and libraries.</p>
<p>I am dead-beat tired of having to party like its 1995 evey time I use Windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2009/02/04/feel-the-glory-of-a-nineteenth-century-software-installation-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Shrip Package</title>
		<link>http://www.mattjones.workhorsy.org/2008/12/19/new-shrip-package/</link>
		<comments>http://www.mattjones.workhorsy.org/2008/12/19/new-shrip-package/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 06:32:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=116</guid>
		<description><![CDATA[I made a new Shrip package. This is for the new 0.5 release.
http://workhorsy.org/junk/shrip_0.5.0-1_i386.deb
Source packages:
http://workhorsy.org/junk/shrip_0.5.0-1.diff.gz
http://workhorsy.org/junk/shrip_0.5.0-1.dsc
http://workhorsy.org/junk/shrip_0.5.0.orig.tar.gz
Updated:
Here is how to use shrip:
For example to encode episode 1 of Jericho from a DVD ISO to a matroska container with h.264 video and aac audio at 720×480, you would do this:

shrip encode --device=/media/archive2/JERICHO_S1_AC_D1.iso --title=3 --chapters=1-9 --audio=1 --scale=720:480 --crop=0:0:720:480 --container=mkv --video-codec=x264 [...]]]></description>
			<content:encoded><![CDATA[<p>I made a new <a href="http://ogmrip.sourceforge.net/">Shrip</a> package. This is for the new 0.5 release.</p>
<p><a href="http://workhorsy.org/junk/shrip_0.5.0-1_i386.deb">http://workhorsy.org/junk/shrip_0.5.0-1_i386.deb</a></p>
<p>Source packages:</p>
<p><a href="http://workhorsy.org/junk/shrip_0.5.0-1.diff.gz">http://workhorsy.org/junk/shrip_0.5.0-1.diff.gz</a></p>
<p><a href="http://workhorsy.org/junk/shrip_0.5.0-1.dsc">http://workhorsy.org/junk/shrip_0.5.0-1.dsc</a></p>
<p><a href="http://workhorsy.org/junk/shrip_0.5.0.orig.tar.gz">http://workhorsy.org/junk/shrip_0.5.0.orig.tar.gz</a></p>
<p>Updated:</p>
<p>Here is how to use shrip:</p>
<p>For example to encode episode 1 of Jericho from a DVD ISO to a matroska container with h.264 video and aac audio at 720×480, you would do this:<br />
<code><br />
shrip encode --device=/media/archive2/JERICHO_S1_AC_D1.iso --title=3 --chapters=1-9 --audio=1 --scale=720:480 --crop=0:0:720:480 --container=mkv --video-codec=x264 --video-quality=extreme --audio-quality=10 --passes=1 --audio-codec=aac --normalize --ensure-sync --threads=2 /home/matt/Desktop/jericho_ep_1.mkv<br />
</code></p>
<p>You should be able to just change some of the parameters in the above example.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2008/12/19/new-shrip-package/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adventures in Ubuntu packaging</title>
		<link>http://www.mattjones.workhorsy.org/2008/12/19/adventures-in-ubuntu-packaging/</link>
		<comments>http://www.mattjones.workhorsy.org/2008/12/19/adventures-in-ubuntu-packaging/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 06:12:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=91</guid>
		<description><![CDATA[
Lately I&#8217;ve been researching how to create Ubuntu packages. For those that don&#8217;t know, packages are the Linux way of installing and managing software. Think Windows Update, but for all software on your computer. There are a few differences though: Each package will specify what versions of other packages it requires. This makes it trivial [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: left; padding: 10px; padding-right: 20px" title="debian_ubuntu_package" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2008/12/debian_ubuntu_package.png" alt="" width="147" height="162" /></p>
<p>Lately I&#8217;ve been researching how to create Ubuntu packages. For those that don&#8217;t know, packages are the Linux way of installing and managing software. Think Windows Update, but for all software on your computer. There are a few differences though: Each package will specify what versions of other packages it requires. This makes it trivial to see if a newer version of some library will break any software on your system. And since everything on your system is managed by one repository, you usually don&#8217;t have to worry about each program installing another copy of the same library. This happens on Windows a lot. When you install a game, it tends to install its own private version of <a href="http://en.wikipedia.org/wiki/DirectX">DirectX</a>.</p>
<p>The only down side to packaging, is that it takes a few hours to awkwardly walk through making your first package, and many more to properly package more complex programs.</p>
<p>I decided to start by packaging <a href="http://ogmrip.sourceforge.net/">shrip</a>. It is the command-line sister program of <a href="http://ogmrip.sourceforge.net/">ogmrip</a>. It makes it easy to encode DVDs into other <a href="http://en.wikipedia.org/wiki/Container_format_(digital)">containers</a> and formats such as AVI, MPEG, OGG, MKV, et cetera.</p>
<p>I decided on it because, it is a smallish, stand-alone program, which would be much easier than packaging something that is in pieces, like open office. I also wanted to use it for a project I am working on called <a href="https://launchpad.net/ripspread">Ripspread</a>.</p>
<p>I first started learning about packaging by reading the official <a href="https://wiki.ubuntu.com/PackagingGuide/Complete">Complete Ubuntu Packaging Guide</a>. This did not turn out well, as the guide goes off on tangents, and those tangets go off on tangents, and somehow we would end up moving onto the next step, without me understanding which part was actually performed. I muddled through anyway and built the example package. Then I did it again. And again. Even after that I did not retain much of the process.</p>
<p>Then those smarties at ubuntu decided to make a <a href="http://www.youtube.com/watch?v=zKLabbXTqMc&amp;feature=channel_page">screencast packaging guide</a>. But instead of explaining every possible way of doing it, they focused on how they would do it in real life. And it was nice.</p>
<p>Since then I have been able to package shrip and a few other things. Generally my packages work. But there are some things I have not yet figured out. I want to list them here, so I can refer to them as I continue my research:</p>
<ul>
<li>How do I label a package that is not an official release, but checked out from a code repository? And what if I have to change the code before the package can compile?</li>
<li>What about recommended packages? In some places you might want to just install libdvdcss, and others you might want to leave it up to use user&#8217;s discretion.</li>
<li>What about situations where there are multiple options for a required package? For example there are 3 different options for OCR software for reading subtitles in shrip. But I have to pick one when compiling. Is there any way to let the end user decide which to use when installing the package?</li>
<li>What is the difference between XSBC-Original-Maintainer and Original-Maintainer? The Ubuntu guides use XSBC-Original-Maintainer, but many packages just use Original-Maintainer.</li>
<li>How does a package get marked as being in Multiverse or Universe? There does not seem to be anything in the control files that indicates this.</li>
<li>Is it correct to mark the maintainer as <a href="https://wiki.ubuntu.com/MOTU">Ubuntu MOTU Developers</a> &lt;ubuntu-motu@lists.ubuntu.com&gt;, even though I am not yet a MOTU? People at this mailing list will have no idea what this package is. It makes me feel like I am misrepresenting the MOTU by doing this.</li>
<li>What is the difference between having the priority set as &#8220;extra&#8221; or &#8220;optional&#8221;? They seem almost the same  when you read the description.</li>
</ul>
<p>I hope to figure out these issues, and make some good packages that make it into ubuntu some day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2008/12/19/adventures-in-ubuntu-packaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VLC Easter Egg</title>
		<link>http://www.mattjones.workhorsy.org/2008/12/19/vlc-easter-egg/</link>
		<comments>http://www.mattjones.workhorsy.org/2008/12/19/vlc-easter-egg/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 02:54:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=86</guid>
		<description><![CDATA[I just noticed an easter egg in VLC. It looks like it checks the date, and if it is close to christmas, it changes its icon.

]]></description>
			<content:encoded><![CDATA[<p>I just noticed an easter egg in VLC. It looks like it checks the date, and if it is close to christmas, it changes its icon.</p>
<p><a href="http://www.mattjones.workhorsy.org/wp-content/uploads/2008/12/vlc_easter_egg.jpg"><img class="alignnone size-medium wp-image-88" title="vlc_easter_egg" src="http://www.mattjones.workhorsy.org/wp-content/uploads/2008/12/vlc_easter_egg-300x190.jpg" alt="" width="300" height="190" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2008/12/19/vlc-easter-egg/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New Tango GDC Package</title>
		<link>http://www.mattjones.workhorsy.org/2008/11/29/new-tango-gdc-package/</link>
		<comments>http://www.mattjones.workhorsy.org/2008/11/29/new-tango-gdc-package/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 12:42:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=67</guid>
		<description><![CDATA[I built a new package for version 0.99.7 of Tango (for compiling with GDC on Ubuntu 8.04 and 8.10):
tango-gdc_0.99.7-1_i386.deb
I&#8217;m still learning to package. So this isn&#8217;t good enough to put into official repositories. In fact, it is very messed up in a few places. But everything I have compiled using it works just fine.
If anyone [...]]]></description>
			<content:encoded><![CDATA[<p>I built a new package for version 0.99.7 of <a href="http://www.dsource.org/projects/tango">Tango</a> (for compiling with GDC on Ubuntu 8.04 and 8.10):</p>
<p><a href="http://workhorsy.org/junk/tango-gdc_0.99.7-1_i386.deb">tango-gdc_0.99.7-1_i386.deb</a></p>
<p>I&#8217;m still learning to package. So this isn&#8217;t good enough to put into official repositories. In fact, it is very messed up in a few places. But everything I have compiled using it works just fine.</p>
<p>If anyone is interested, it is heavily based on the packages that were built with the scripts on this page: <a href="http://codeblog.palos.ro/2008/03/27/debian-d-packages-release-3/" target="_blank">http://codeblog.palos.ro/2008/03/27/debian-d-packages-release-3/</a></p>
<p>Keep your fingers crossed that things keep compiling.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2008/11/29/new-tango-gdc-package/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu seeping into popular culture</title>
		<link>http://www.mattjones.workhorsy.org/2008/11/10/ubuntu-seepeing-into-popular-cluture/</link>
		<comments>http://www.mattjones.workhorsy.org/2008/11/10/ubuntu-seepeing-into-popular-cluture/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 23:23:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=56</guid>
		<description><![CDATA[I just noticed this parody video &#8220;The Matrix Runs on Windows&#8221; at college humor. Besides being absolutely hilarious, it was surprising to see Ubuntu mentioned in there. And they even pronounce it correctly.
I just wanted to point this out because it is yet another example (albeit small one) of Ubuntu in popular culture. We must [...]]]></description>
			<content:encoded><![CDATA[<p>I just noticed this parody video <a title="The Matrix Runs on Windows" href="http://www.collegehumor.com/video:1886349">&#8220;The Matrix Runs on Windows&#8221;</a> at college humor. Besides being absolutely hilarious, it was surprising to see Ubuntu mentioned in there. And they even pronounce it correctly.</p>
<p>I just wanted to point this out because it is yet another example (albeit small one) of Ubuntu in popular culture. We must be doing it right, if the average users are starting to see Ubuntu as a viable alternative to Windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2008/11/10/ubuntu-seepeing-into-popular-cluture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCALE Impressions</title>
		<link>http://www.mattjones.workhorsy.org/2008/02/13/scale-impressions/</link>
		<comments>http://www.mattjones.workhorsy.org/2008/02/13/scale-impressions/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 07:30:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=47</guid>
		<description><![CDATA[When I got back from SCALE on Sunday, I decided to let it digest a little before posting anything about it. Now that I&#8217;ve had some time to think about it, I&#8217;m really excited to present my findings.
The Good:

I met some amazing people. My faith in humanity went up a little. After my daily-dose of [...]]]></description>
			<content:encoded><![CDATA[<p>When I got back from SCALE on Sunday, I decided to let it digest a little before posting anything about it. Now that I&#8217;ve had some time to think about it, I&#8217;m really excited to present my findings.</p>
<p>The Good:</p>
<ol>
<li>I met some amazing people. My faith in humanity went up a little. After my daily-dose of people that just don&#8217;t care, it was very refreshing.</li>
<li><a href="http://untangle.com/">Untangle</a> presented their all-in-one network. It has everything you need to run a small business or home network: Firewall, spam filter, virus scanner, phishing filter, email filter, web filter, et cetera. And the best thing is that it is trivial for non-network admins to configure. I&#8217;m very anxious to set this up at my home. I just need to assemble a low-power machine that has 2 NIC cards.</li>
<li>The &#8220;A Quick and Dirty Intro to User­Centered Design in Open Source Development&#8221; presentation by Celeste Lyn Paul was very interesting. I&#8217;ve always been interested in usability, but sadly it is like still a foreign language to me. You can see the <a href="http://weblog.obso1337.org/2008/scale-2008-presentation-slides/">presentation slides</a> on her blog.</li>
<li>The &#8220;Linux Entertain Me!&#8221; presentation by Cecil Watson was a good showcase on how much more usable <a href="http://www.mythtv.org/">MythTV</a> has gotten. I&#8217;ve been blowing it off for a few years and anxiously waiting for <a href="http://elisa.fluendo.com/">Elisa</a> to get a little more polish. But I&#8217;m definitely going to give it another go on a media center box.</li>
<li>There were tons of OLPC XOs and Asus Eees floating around. I brought my Eee and had to give everyone my little review on the unit. I wish I had brought my XO too. I could have done some testing with the mesh network collaboration.</li>
<li>There was free WiFi! My Eee has about half the signal strength of a normal laptop, but it was still usable.</li>
<li>Again the people were bad ass. I met tons of new people (If only I could remember all their names), and had a good time just chatting-it-up in the sitting/dinning areas.</li>
</ol>
<p>The Bad:</p>
<ol>
<li>The name tags were crap. They were the kind that hangs around your neck on a lanyard. The problem is that the tag was connected to the lanyard by a swivel, so the tag would always flip around backwards. The text was also way too small. I can&#8217;t tell you how may times I had to scan someones torso from a few feet away (front and back) to find their name. As you could imagine, some women were like WTF after I did that a few times. Forever awkward Matt strikes again.</li>
<li>Parking was almost non-existent at the Westin Hotel. I first tried parking in their self-parking, but after driving up and down both sides of their bee-hive I had to use the valet parking. Even thought the structure was full, it still let me in, and charged me $5 on exit!</li>
<li>The expo floor  was very crowded.  I  only walked though a few times to check out some booths that I had passed due to crowding. I really hope they find a venue that has more space (Part of the reason why I paid the full $70 was to help fund this thing as much as I can).</li>
</ol>
<p>I hope that gives a good taste to the people that didn&#8217;t make it. I would definitely recommend SCALE again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2008/02/13/scale-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MeMaker on the OLPC XO</title>
		<link>http://www.mattjones.workhorsy.org/2007/12/23/memaker-on-the-olpc-xo/</link>
		<comments>http://www.mattjones.workhorsy.org/2007/12/23/memaker-on-the-olpc-xo/#comments</comments>
		<pubDate>Sun, 23 Dec 2007 08:48:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=41</guid>
		<description><![CDATA[I got my XO in yesterday. I wanted to know how a regular Gnome/Python app would work on it. So I decided to see how the newest MeMaker performs. The results were pretty good. Here are some screen caps and comments:
First as a reference, here is MeMaker on Ubuntu with the Human theme. Notice that [...]]]></description>
			<content:encoded><![CDATA[<p>I got my XO in yesterday. I wanted to know how a regular Gnome/Python app would work on it. So I decided to see how the newest MeMaker performs. The results were pretty good. Here are some screen caps and comments:</p>
<p>First as a reference, here is MeMaker on Ubuntu with the Human theme. Notice that the box that lets you pick a head style has 2 columns. Notice the standard icons on the &#8216;New&#8217;, &#8216;About&#8217;, &#8216;Remove&#8217;, and &#8216;Save As&#8217; buttons. Also notice that the window has a decoration, with minimize and close buttons.</p>
<p><a title="MeMaker on Ubuntu" href="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/main_window.jpg"><img src="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/main_window.jpg" alt="MeMaker on Ubuntu" width="423" height="249" /></a></p>
<p>As for running MeMaker on the XO, my first observation is that it actually works without any code changes. It is a little slow to start up (but we have some experiments that fix that greatly). The only real bug, is that the face panel on the left is smashed, and the feature panel on the right should be limited to 2 columns instead of 6.</p>
<p>A few minor user interface issues reveal themselves: Although you can&#8217;t see them in any of these pictures, the tool tips are a dark gray, that makes them not standout from the widgets. And the selected tab, or page in this picture, is not highlighted. Below, the &#8216;Head&#8217; page is selected, so it should be highlighted. You can get it to somewhat highlight, by clicking the page twice.</p>
<p>The only real other difference, is that the window does not have a decoration or close button. You have to go back to the XO&#8217;s Home menu and close it. This sounds cumbersome, but actually works  well.</p>
<p><a title="MeMaker on the XO" href="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/main_window2.jpg"><img src="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/main_window2.jpg" alt="MeMaker on the XO" width="427" height="302" /></a><br />
Here is the About dialog on the XO. It is so big that it takes up the whole screen. On a regular Gnome desktop, it is bigger than average, but not that big. (Hmm. If we made the url to launchpad a link-button, wold it work correctly on the XO?) Also, thank reason that someone added working code to the close button. Rather than relying on the window decoration&#8217;s close button to be present.</p>
<p><a title="MeMaker About dialog on the XO" href="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/about_dialog.jpg"><img src="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/about_dialog.jpg" alt="MeMaker About dialog on the XO" width="437" height="328" /></a></p>
<p>Here is the Save dialog. Pretty standard Gnome stuff. Although I&#8217;ve only played with Sugar for a bit, nothing seems to use save dialogs. So we would should research what the other Sugar apps do, and copy them. We could possibly just save the avatar directly to the place it will be used. IE: the icon that represents the XO. But I have no idea if that is even possible or desired.</p>
<p><a title="MeMaker Save dialog on the XO" href="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/save_dialog.jpg"><img src="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/save_dialog.jpg" alt="MeMaker Save dialog on the XO" width="440" height="315" /></a></p>
<p>This is the main Hame panel of the XO. All the running apps show up as an icon in the circle. There are two apps other than MeMaker running in there. The terminal and the Journal. They each have their own icon. MeMaker does not have an icon, so it shows up as a gray circle.</p>
<p>The programs also have a black menu that pops up when you mouse over (as seen below). This lets you perform app specific functionality, as well as start and stop the program.  It should also show the name of the app in the top of the menu. But it is blank for memaker.</p>
<p><a title="MeMaker on XO dash board." href="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/desktop_integration.jpg"><img src="http://www.mattjones.workhorsy.org/wp-content/uploads/2007/12/desktop_integration.jpg" alt="MeMaker on XO dash board." width="450" height="337" /></a></p>
<p>I&#8217;m very impressed with this machine, and how close standard Gnome apps are to just working. I look forward to testing other apps on the XO in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2007/12/23/memaker-on-the-olpc-xo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impressed with the new Gutsy features</title>
		<link>http://www.mattjones.workhorsy.org/2007/08/28/impressed-with-the-new-gutsy-features/</link>
		<comments>http://www.mattjones.workhorsy.org/2007/08/28/impressed-with-the-new-gutsy-features/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 07:50:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mattjones.workhorsy.org/?p=18</guid>
		<description><![CDATA[I&#8217;ve been using all the Ubuntu Gutsy Tribe builds(Tribe means Alpha) since they were announced. I even tried to use the first 2 Tribes, which would not even boot correctly on my machine.
I&#8217;ve been reading and listening to people talk/complain about Gutsy. Many have said that they don&#8217;t think it is too much of an [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using all the Ubuntu Gutsy Tribe builds(Tribe means Alpha) since they were announced. I even tried to use the first 2 Tribes, which would not even boot correctly on my machine.</p>
<p>I&#8217;ve been reading and listening to people talk/complain about Gutsy. Many have said that they don&#8217;t think it is too much of an improvement over Feisty. For example, the <a href="http://www.linuxactionshow.com/" title="http://www.linuxactionshow.com/" target="_blank">Linux Action Show</a> hosts have <a href="http://www.linuxactionshow.com/?p=137" target="_blank" title="http://www.linuxactionshow.com/?p=137">complained about it not being gutsy</a>.</p>
<p>I think this is due to the fact that the Tribe pages in the <a href="http://www.ubuntu.com/testing" target="_blank" title="http://www.ubuntu.com/testing">Testing section</a> of the Ubuntu site, show only new features of each Tribe, instead of showing all the new features for Gutsy. This requires people to look at the the Tribe pages (Five so far) to see all the new features.</p>
<p>I would like to point out that there are a ton of features besides &#8220;compositing by default&#8221; to look forward to. Here is my list of good features that were significant to me and why:</p>
<ol>
<li>NTFS read and write by default. This is great because I use Ubuntu Live CDs all the time on broke/locked Windows machines. I have run into many situations where writing NTFS would have saved my much time.</li>
<li>New Ruby version. I&#8217;m glad to get the new versions of Ruby and Rails since the ones in Feisty are 1.8.5 and 1.2.1 which are almost one year old as of this writing. It also allows me to run <a href="http://www.redmine.org/" title="http://www.redmine.org/" target="_blank">Redmine</a> on my dev machine, instead of in the crash-tastic (but easy to setup) <a href="http://www.virtualbox.org/" title="http://www.virtualbox.org/" target="_blank">VirtualBox</a> virtual machine.</li>
<li>The Auto printer installer looks amazing. I haven&#8217;t used it yet, but It looks like a huge advantage over having to install them manually. I remember having trouble trying to determine which driver to use for a few printers.</li>
<li>ESD, the Enlightened Sound Daemon does not seem to be installed anymore. That can only be good news, as  I have heard  it was a pain to work with.  I don&#8217;t have much knowledge on ESD though, so that could be wrong.</li>
<li>The Ruby Gnome binding seem to print less errors into the console. The ones in Feisty would print a ton of warnings in every Intuitive Desktop program. The only error I see now is that ESD is missing.</li>
<li>The new &#8220;Screen and Graphics Preferences&#8221; program is very useful. I can easily change the monitor resolution, type, width, and refresh rate. It even makes it easy to have dual monitors.</li>
<li>Bullet proof X sounds nice too. I have not done anything to cause X to have to fall back into a default mode (at least I don&#8217;t think I have). But as long as it is able to always give the user a working screen, it is a huge improvement.</li>
<li>The Kernel 2.6.22 with the new Completely Fair Scheduler is amazing. I can verify that it makes the whole system more responsive under load (even with single core/cpu systems). You can do things like quickly open your system monitor when a crazy application decides to use all your ram or cpu (like Eclipse for example).</li>
<li>Beagle seems to have been dropped in favor of Tracker. Beagle would do a huge indexing when your machine was idle, while Tracker prefers to do small indexing when you file system changes. This is a hue improvement, as Beagle would start indexing just before I was going to do something cpu intensive, like compile a large program.</li>
<li>The new &#8220;Appearance Preferences&#8221; program makes it easier to configure theme, font, background, and desktop effects in one place. It also saves a lot of space in the System &gt; Preferences menu, so you don&#8217;t have to scroll it (at least until Java or Wine take a dump in the menu).</li>
<li>New GStreamer and Gnonlin. This is important because GStreamer is a good multimedia framework that should replace all the others on Linux.</li>
<li>New Jokosher that crashes less, thanks to GStreamer and Gnonlin.</li>
<li>New buttons on the &#8216;Add/Remove Software&#8217; program that clear up the &#8220;apply/cancel/ok&#8221; button awkwardness. I rememeber always clicking &#8220;ok&#8221; on that program to install software. Then the program would close once it installed everything. I swear, I thought it crashed when it just closed like that.</li>
<li>Thunderbird has a new version with a much nicer looking theme and icon set.</li>
<li>Rhythmbox has a better <a href="http://www.jamendo.com/en/" title="http://www.jamendo.com/en/" target="_blank">Jamendo</a> plugin that uses much less ram and is faster</li>
<li>Rhythmbox has a new icon that stands out more and looks better</li>
<li>In the Tomboy note applet, you can now delete those annoying default notes, that come with a new Tomboy install.</li>
<li>Open Office seems to boot just as quickly as Open Office on Feisty with the Quickstarter running. This is great because Open Office is notorious for being slow, and most people don&#8217;t use the Quick starter on Linux.</li>
</ol>
<p>All those items seem pretty significant to me. That is a bigger improvement than from Edgy the Feisty.</p>
<p>When writing that list I also came across a few things that I did not like. Here are a few of them, just for fun:</p>
<ol>
<li> You still need to tell your password to the keyring for encrypted wireless networks, every time you connect. It would be nice if you could tick a check box that would allow it to log in for you automatically.</li>
<li>Many dialogs are too big for the screen at 800&#215;600 or 640&#215;480 resolutions. This includes the installer and the System &gt; Administration &gt; Login Window program. Hopefully the Ubuntu Mobile project will fix this for small screen devices.</li>
<li>The Deskbar Applet has a new user interface. I like the way the program now works. But I don&#8217;t like how they moved from a drop-down menu to a popup dialog.</li>
<li>The Gnome Bitorrent client sucks ass. It is horrible to use a new window for each download. And it gives socket errors some times when you have multiple torrents running. This is solved by using Ktorrent, but that should be the default for Ubuntu.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mattjones.workhorsy.org/2007/08/28/impressed-with-the-new-gutsy-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
