<?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>david rasch - making stuff work &#187; Linux</title>
	<atom:link href="http://www.davidrasch.com/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.davidrasch.com</link>
	<description></description>
	<lastBuildDate>Mon, 04 Apr 2011 00:53:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Clayton turned 1 month old yesterday</title>
		<link>http://www.davidrasch.com/2008/09/21/clayton-turned-1-month-old-yesterday/</link>
		<comments>http://www.davidrasch.com/2008/09/21/clayton-turned-1-month-old-yesterday/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 02:09:36 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[baby]]></category>
		<category><![CDATA[clayton]]></category>
		<category><![CDATA[month]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/?p=161</guid>
		<description><![CDATA[<p>See some photos! </p> ]]></description>
			<content:encoded><![CDATA[<p>See some photos!<br />
<a href="http://www.flickr.com/photos/drasch/sets/72157607422779093/"><img src="http://www.davidrasch.com/wp-content/uploads/2008/09/img_4437-1-300x200.jpg" alt="" title="img_4437-1" width="300" height="200" class="alignnone size-medium wp-image-162" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2008/09/21/clayton-turned-1-month-old-yesterday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP on the Backend (part 2)</title>
		<link>http://www.davidrasch.com/2007/05/08/php-on-the-backend-part-2/</link>
		<comments>http://www.davidrasch.com/2007/05/08/php-on-the-backend-part-2/#comments</comments>
		<pubDate>Tue, 08 May 2007 23:34:02 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[daemon]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2007/05/08/php-on-the-backend-part-2/</guid>
		<description><![CDATA[<p>To run the class I posted yesterday, I typically use a class called DaemonRunner. This class sets up for proper signal handling, and &#8216;executes&#8217; the class extended from Daemon.</p> declare(ticks=1); class DaemonRunner { public static function exec($className) { $argv = $_SERVER['argv']; $daemon = new $className($argv); $daemon->init(); while (!$daemon->isDone()) { $daemon->run(); } $daemon->shutdown(); } } <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2007/05/08/php-on-the-backend-part-2/">PHP on the Backend (part 2)</a></span>]]></description>
			<content:encoded><![CDATA[<p>To run the class I <a href="http://www.davidrasch.com/2007/05/07/php-on-the-backend/">posted yesterday</a>, I typically use a class called <em>DaemonRunner</em>.  This class sets up for proper signal handling, and &#8216;executes&#8217; the class extended from Daemon.</p>
<pre>
declare(ticks=1);

class DaemonRunner {
    public static function exec($className) {
        $argv = $_SERVER['argv'];
        $daemon = new $className($argv);
        $daemon->init();
        while (!$daemon->isDone()) {
            $daemon->run();
        }
        $daemon->shutdown();
    }
}
</pre>
<p>The first statement is a PHPism.  This allows PHP to check for signals every 1 <em>tick</em>.  A tick is simply a low-level PHP interpreter step.  The way I&#8217;ve setup my daemon and signal handling by default, the PHP will finish its current iteration and then quit when receiving a signal.  This ensures that the database, and whatever background stuff aren&#8217;t left in inconsistent states.  As with anything, you&#8217;re free to modify, extend, or otherwise alter this behavior.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2007/05/08/php-on-the-backend-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP on the Backend</title>
		<link>http://www.davidrasch.com/2007/05/07/php-on-the-backend/</link>
		<comments>http://www.davidrasch.com/2007/05/07/php-on-the-backend/#comments</comments>
		<pubDate>Tue, 08 May 2007 00:55:39 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[daemon]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2007/05/07/php-on-the-backend/</guid>
		<description><![CDATA[<p>PHP (or any language for that matter) can just as easily be used as a daemon as on the web. This can be especially useful when solving problems that can&#8217;t &#8220;complete&#8221; in less than 500 ms which one shoots for on the web. As you write an application to handle things such as those <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2007/05/07/php-on-the-backend/">PHP on the Backend</a></span>]]></description>
			<content:encoded><![CDATA[<p>PHP (or any language for that matter) can just as easily be used as a daemon as on the web.  This can be especially useful when solving problems that can&#8217;t &#8220;complete&#8221; in less than 500 ms which one shoots for on the web.   As you write an application to handle things such as those mentioned below, be sensitive to the processing, disk space, and time needed to process these requests in planning how to handle these.  As an example jobs of a small size might be handled inline by the code that handles the form submission, but for larger jobs it queues them for background processing.  </p>
<p>great for background/async processing of:</p>
<ul>
<li>photos</li>
<li>movies</li>
<li>reports</li>
<li>imports of data</li>
</ul>
<p>advantages: </p>
<ul>
<li>use the same codebase as your app</li>
<li>use the same expertise on your team of programmers</li>
</ul>
<p>challenges:</p>
<ul>
<li>signals</li>
<li>one thread</li>
<li>memory (this will have to be a whole separate article)</li>
<li>starting and stopping</li>
</ul>
<p>A typical Daemon class I use:</p>
<pre>
abstract class Daemon {
    protected $done = false;

    public function __construct($argv) {
    }
    public function init() {
        pnctl_signal(SIGTERM, array($this, "onSignal"));
        pnctl_signal(SIGINT, array($this, "onSignal"));

    }
    abstract public function run();
    public function shutdown() {}
    public function isDone() {
        return $this->done;
    }
    public onSignal($signal){
        switch ($signal) {
             case SIGTERM:
             case SIGINT:
                $this->done = true;
                 break;
             default:
                 // handle all other signals
        }
    }
}</pre>
<p>As you can see, we&#8217;ve started to tackle some of the challenges here.  The idea is to handle signals, specifically I usually care about SIGTERM (default when using &#8216;kill&#8217; on *nix) and SIGINT (from pressing Ctrl-C).  Both will cause the program to exit gracefully.</p>
<p>I&#8217;ll be posting the class I use to run Daemon&#8217;s tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2007/05/07/php-on-the-backend/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TriPUG and MySQL Talk on Memcache and PHP</title>
		<link>http://www.davidrasch.com/2007/05/03/tripug-and-mysql-post-on-memcache-and-php/</link>
		<comments>http://www.davidrasch.com/2007/05/03/tripug-and-mysql-post-on-memcache-and-php/#comments</comments>
		<pubDate>Fri, 04 May 2007 01:03:45 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[Talks]]></category>
		<category><![CDATA[memcache]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2007/05/03/tripug-and-mysql-post-on-memcache-and-php/</guid>
		<description><![CDATA[<p>Memcache is an extension written by Danga for simple Key/Value pair caching for use with your favorite programming language. In this talk I demonstrate how to install, integrate, and leverage Memcache in PHP (using MySQL for a database). I build a sample application, demonstrate less than desirable performance and finally, return performance with a <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2007/05/03/tripug-and-mysql-post-on-memcache-and-php/">TriPUG and MySQL Talk on Memcache and PHP</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danga.com/memcached/">Memcache</a> is an extension written by Danga for simple Key/Value pair caching for use with your favorite programming language.  In this <a href="http://www.davidrasch.com/talks/2007-05-memcache/">talk</a> I demonstrate how to install, integrate, and leverage Memcache in PHP (using MySQL for a database).  I build a sample application, demonstrate less than desirable performance and finally, return performance with a 100x improvement.</p>
<p>The whole talk and its supporting files can also be <a href="http://www.davidrasch.com/talks/2007-05-memcache/2007-05-memcache.zip">downloaded</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2007/05/03/tripug-and-mysql-post-on-memcache-and-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Return of Windows?</title>
		<link>http://www.davidrasch.com/2007/01/28/return-of-windows/</link>
		<comments>http://www.davidrasch.com/2007/01/28/return-of-windows/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 03:53:59 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2007/01/28/return-of-windows/</guid>
		<description><![CDATA[<p>I&#8217;ve been Linux-only on the desktop for 4 years now. And now, I&#8217;m considering adding Windows back to my daily life. Linux provides an excellent environment to do many of the things I do:</p> web &#8211; Web Browse remote administration &#8211; Use a terminal services &#8211; Run servers video &#8211; Transcode, edit, convert, and <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2007/01/28/return-of-windows/">Return of Windows?</a></span>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been Linux-only on the desktop for 4 years now.  And now, I&#8217;m considering adding Windows back to my daily life.  Linux provides an excellent environment to do many of the things I do:</p>
<ul>
<li>web &#8211; Web Browse</li>
<li>remote administration &#8211; Use a terminal</li>
<li>services &#8211; Run servers</li>
<li>video &#8211; Transcode, edit, convert, and Backup DVD&#8217;s</li>
<li>music &#8211; Listen to music</li>
</ul>
<p>A few things Linux hasn&#8217;t done well and why I&#8217;m considering adding a second OS to my desk here (alongside Linux):</p>
<ul>
<li>Money Management &#8211; GNUCash is the closest thing here, but doesn&#8217;t hold a candle to the financial institution integration MS Money and Quicken can offer</li>
<li>audible.com &#8211; my audible.com content forces me to boot into Windows every few months to add new audio books to my iPod mini</li>
<li>Music &#8211; I&#8217;ve made limited use and I&#8217;d like to make more use of services like Rhapsody.com, Napster.com, or Yahoo Music to have a wider variety of music to listen to.
</li>
</ul>
<p>There are a few ancillary things that don&#8217;t necessitate daily Windows usage, but I do need them occasionally:</p>
<ul>
<li>Harmony Remote &#8211; make my Harmony remote do new things</li>
<li>Some multimedia stuff, CNN Video &#8211; most of this is going to Flash anyway</li>
</ul>
<p>Wow, that&#8217;s a pretty short list.  I had in my head that there were more things I wanted from Windows.  Maybe I&#8217;ll suck it up and work with GNUCash!  </p>
<p>On that note, recently solved things that used to suck about Linux on the desktop:</p>
<ul>
<li>Flash 9 &#8211; Like it or not, Linux is all about choice, now you have the option of running Flash 9 on Linux.</li>
<li>DVD Backups: This has gotten easier and easier on Windows; I just tried an amazing piece of Linux software called Thoggen which backs up DVD&#8217;s to my hard-drive-based media server with a surprisingly few number of clicks. </li>
<li>Music Management &#8211; Rhythmbox and the new player Banshee have made music management and playback much more manageable on Linux.  Keep up the great work!</li>
<li>Network Manager &#8211; the network manager makes wireless/wired connection management a cinch.  I highly recommend it!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2007/01/28/return-of-windows/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Dual-head</title>
		<link>http://www.davidrasch.com/2006/11/11/dual-head/</link>
		<comments>http://www.davidrasch.com/2006/11/11/dual-head/#comments</comments>
		<pubDate>Sat, 11 Nov 2006 16:11:52 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[ati]]></category>
		<category><![CDATA[dual head]]></category>
		<category><![CDATA[fglrx]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[lenovo]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2006/11/11/dual-head/</guid>
		<description><![CDATA[<p>As I write this, I&#8217;m not only using a second monitor connected to my Ubuntu Linux 6.10 laptop, but also plugged it in after I booted, have different resolutions on my built-in LCD vs. the external LCD, and ran one command to go from single to dual-head without restarting Xorg.</p> <p>My hardware is a <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2006/11/11/dual-head/">Dual-head</a></span>]]></description>
			<content:encoded><![CDATA[<p>As I write this, I&#8217;m not only using a second monitor connected to my <a href="http://www.ubuntu.com">Ubuntu Linux</a> 6.10 laptop, but also plugged it in <strong>after</strong> I booted, have different resolutions on my built-in LCD vs. the external LCD, and ran one command to go from single to dual-head without restarting Xorg.</p>
<p>My hardware is a Lenovo/IBM Thinkpad T42 with an ATI RV350 and native resolution of 1400&#215;1050.</p>
<p><a href="http://www.davidrasch.com/wiki/dual_head_xorg">Details&#8230;</a></p>
<p>[tags]dual head, ibm, lenovo, fglrx, ati, xorg[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2006/11/11/dual-head/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CIO Magazine</title>
		<link>http://www.davidrasch.com/2006/11/08/cio-magazine/</link>
		<comments>http://www.davidrasch.com/2006/11/08/cio-magazine/#comments</comments>
		<pubDate>Wed, 08 Nov 2006 21:46:29 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[iContact]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cio]]></category>
		<category><![CDATA[pr]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2006/11/08/cio-magazine/</guid>
		<description><![CDATA[<p>A recent CIO Magazine article about pre-packaged open-source software includes several quotes from me.</p> ]]></description>
			<content:encoded><![CDATA[<p>A recent <a href="http://www.cio.com/archive/110106/fea_tec.html?CID=26234">CIO Magazine article</a> about pre-packaged open-source software includes several quotes from me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2006/11/08/cio-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sad day for open-source</title>
		<link>http://www.davidrasch.com/2006/10/22/sad-day-for-open-source/</link>
		<comments>http://www.davidrasch.com/2006/10/22/sad-day-for-open-source/#comments</comments>
		<pubDate>Sun, 22 Oct 2006 12:57:03 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[iceweasel]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[trademark]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2006/10/22/sad-day-for-open-source/</guid>
		<description><![CDATA[<p>It&#8217;s a very sad day when the open-source community is forced to take a highly-successful, visible, driving project like Firefox and change its name to something like Iceweasel. By changing the name we lose invaluable branding and popularity for the Debian and other distributions that choose to make this distinction. This sort of decision <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2006/10/22/sad-day-for-open-source/">sad day for open-source</a></span>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a very sad day when t<a href="http://web.glandium.org/blog/?p=97">he open-source community is forced</a> to take a highly-successful, visible, driving project like Firefox and change its name to something like Iceweasel.  By changing the name we lose invaluable branding and popularity for the Debian and other distributions that choose to make this distinction.    This sort of decision is equivalent to a 3 year regression for Linux.  </p>
<p>The name Iceweasel sounds like the odd name of an infant open-source project.  Many people give up on Linux read names like Iceweasel and GIMP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2006/10/22/sad-day-for-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>zero to KDE in 35 minutes</title>
		<link>http://www.davidrasch.com/2004/06/17/zero-to-kde-in-35-minutes/</link>
		<comments>http://www.davidrasch.com/2004/06/17/zero-to-kde-in-35-minutes/#comments</comments>
		<pubDate>Thu, 17 Jun 2004 02:58:34 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2004/06/17/zero-to-kde-in-35-minutes/</guid>
		<description><![CDATA[<p>This evening, I installed Debian on a machine which was formerly running Gentoo. I used the new debian-installer currently in testing for release with sarge whenever that happens. It was pleasntly simple and quick, and as I said I now have KDE running and mythfrontend running with video, sound, and everything working with basically <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2004/06/17/zero-to-kde-in-35-minutes/">zero to KDE in 35 minutes</a></span>]]></description>
			<content:encoded><![CDATA[<p>This evening, I installed <a href="http://www.debian.org">Debian</a> on a machine which was formerly running <a href="http://www.gentoo.org">Gentoo</a>.  I used the new <a href="http://www.nl.debian.org/devel/debian-installer/">debian-installer</a> currently in testing for release with <a href="http://www.nl.debian.org/releases/sarge/">sarge</a> whenever that happens.  It was pleasntly simple and quick, and as I said I now have KDE running and mythfrontend running with video, sound, and everything working with basically no configuration.  I did find one hiccup in the installer with resizing existing partitions, but it was easily solved.  I installed the <a href="http://www.nl.debian.org/releases/unstable/">unstable</a> distribution for now which includes <a href="http://www.kde.org">KDE</a> 3.2 and a 2.4.26 <a href="http://www.kernel.org">kernel</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2004/06/17/zero-to-kde-in-35-minutes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ntop</title>
		<link>http://www.davidrasch.com/2004/03/27/ntop/</link>
		<comments>http://www.davidrasch.com/2004/03/27/ntop/#comments</comments>
		<pubDate>Sat, 27 Mar 2004 23:09:19 +0000</pubDate>
		<dc:creator>drasch</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.davidrasch.com/2004/03/27/ntop/</guid>
		<description><![CDATA[<p>Ntop allows you to monitor your network in an unprecedented manner. This tool will track all you could every want to know about your network in real time. </p> <p>Update: It also fills up your hard disk if you turn on the RRD plugin, and then DHCP dies. You&#8217;ll need to make sure you <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidrasch.com/2004/03/27/ntop/">ntop</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ntop.org">Ntop</a> allows you to monitor your network in an unprecedented manner.  This tool will track all you could every want to know about your network in real time.  </p>
<p><i>Update: It also fills up your hard disk if you turn on the RRD plugin, and then DHCP dies.  You&#8217;ll need to make sure you have enough free disk space. It filled about 600MB in only a few days.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidrasch.com/2004/03/27/ntop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

