<?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>Rob Raux: Running, Programming, Parenting, Living... &#187; Programming</title>
	<atom:link href="http://www.dragonslife.org/programming/technology/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dragonslife.org</link>
	<description></description>
	<lastBuildDate>Sun, 04 Apr 2010 13:20:57 +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>4 things I dislike about my programming</title>
		<link>http://www.dragonslife.org/4-things-i-dont-like-about-programming/personal/</link>
		<comments>http://www.dragonslife.org/4-things-i-dont-like-about-programming/personal/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 14:43:25 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[unit tests]]></category>

		<guid isPermaLink="false">http://www.dragonslife.org/?p=178</guid>
		<description><![CDATA[Here&#8217;s a list I have compiled of things that I dislike about programming. Some of these things have happened in the past, some happen currently to me.  I feel like I am in control of these, so the fault is simply my own.  It can be difficult to break out of the status quo once [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a list I have compiled of things that I dislike about programming. Some of these things have happened in the past, some happen currently to me.  I feel like I am in control of these, so the fault is simply my own.  It can be difficult to break out of the status quo once the ball gets rolling.</p>
<ol>
<li><strong>Regression testing through unit tests.</strong> It is so easy to skip writing unit tests.  If they don&#8217;t exist, someone needs to keep testing functionality that has been tested in the past.<br clear=”none”/> <br clear=”none”/> This is an expensive endeavor and seemingly violates the whole purpose of using a computer.  A computer should be utilized to complete repetitive tasks. To me, there&#8217;s nothing more repetitive than testing every case you can think of over and over again.<br clear=”none”/> <br clear=”none”/>Other issues occur when things break you wouldn&#8217;t expect to break. Who knew that changing A would break something in B?  We didn&#8217;t, so we didn&#8217;t think to test it.  It&#8217;s not wonderful to find that out <em>after</em> the code is already live and it reflects poorly on you as a company.This type of things is even more pronounced in a smaller environment where  time is tight, testing is tough, and a few screw ups are expected.<br clear=”none”/> <br clear=”none”/>If unit tests get built as the application is created, you always have a full test suite which guarantees base functionality is not interrupted for your users.  More importantly, you have guaranteed peace of mind.<br />
<blockquote><p>The biggest resistance to 									dedicating this amount of time to unit tests is a fast approaching deadline. But during the life of a project an 									automated test can save you a hundred times the cost to create it by finding and guarding against bugs. The harder 									the test is to write the more you need it because the greater your savings will be. Automated unit tests offer 									a pay back far greater than the cost of creation. [<a href="http://www.extremeprogramming.org/rules/unittests.html">source</a>]</p></blockquote>
</li>
<li><strong>Presentation is mixed with logic.</strong> Even having separate views, there is still way too much logic in display templates.  It seems that logic is inherently part of a view.  It would be fantastic if one could simply have a designer perform all of the HTML/templating, and leave the supply of the data sources up to the programmer.<br clear=”none”/> <br clear=”none”/>Most great programmers don&#8217;t make great designers, hey, they&#8217;re programmers.  And most designers don&#8217;t make decent programmers.  I&#8217;m sure the exceptions exist, however I certainly haven&#8217;t seen them.  If we are able to separate something along those two lines, imagine how much better an application could look, while still allowing for updates post design.<br clear=”none”/> <br clear=”none”/>There is the <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a>, which is probably the best main stream architecture pattern there is, but I want more.</li>
<li><strong>Databases changes are a pain to track.</strong> Making changes to the database are hard to track and easy to lose. When did we add that field?  Is it on production &#8212; we have to look.  What if we need to rollback? Yuck.<br clear=”none”/> <br clear=”none”/>The best solution I&#8217;ve seen is the <a href="http://wiki.rubyonrails.com/rails/pages/UnderstandingMigrations">Ruby on Rails migrations</a>. You can rollback, be database agnostic, keep changing in revision control, etc.</li>
<li><strong>Requirements are not clear.</strong> Requirements should be semi-transparent before beginning work. Often times the programmer thinks that the person writing the requirements has thought through every case and has covered all of the important points.  They are often very wrong.  Not only is it difficult for the writer of the requirements to make things clear, they often are not aware of the underlying software architecture (or at least sub-architecture) that they are requesting be altered.  <br clear=”none”/> <br clear=”none”/>That means the solution to this problem lies with the programmer.  Questioning, planning, and reviewing before beginning the task can save significant grief in the long term.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.dragonslife.org/4-things-i-dont-like-about-programming/personal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xemacs &#8211; how to use replace-regexp</title>
		<link>http://www.dragonslife.org/xemacs-how-to-use-replace-regexp/programming/emacs/</link>
		<comments>http://www.dragonslife.org/xemacs-how-to-use-replace-regexp/programming/emacs/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 20:45:32 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[emacs]]></category>

		<guid isPermaLink="false">http://www.dragonslife.org/?p=86</guid>
		<description><![CDATA[The documentation available is terse on how to use the replace-regexp function.  Lately I have needed to do a rather large number of complex replacement&#8217;s across code.  Here are some things that I should definitely remember next time:


M-x replace-regexp RET \(.*\)-safe RET \1 RET

Parenthesis used for matching values for replace always need to be escaped [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.xemacs.org/Documentation/21.5/html/xemacs_15.html#SEC125">documentation</a> available is terse on how to use the replace-regexp function.  Lately I have needed to do a rather large number of complex replacement&#8217;s across code.  Here are some things that I should definitely remember next time:</p>
<ol>
<li>
<pre>M-x replace-regexp <kbd>RET</kbd> \(.*\)-safe <kbd>RET</kbd> \1 <kbd>RET</kbd></pre>
<ul>
<li>Parenthesis used for matching values for replace always need to be escaped in emacs.  There are no exceptions and you will go insane if you do not remember this.</li>
</ul>
</li>
<li> <samp>&#8216;</samp><samp>\&amp;</samp>&#8216; in <var>newstring</var> stands for the entire text being replaced. You don&#8217;t need to match the entire string to add to it.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.dragonslife.org/xemacs-how-to-use-replace-regexp/programming/emacs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL: Find tables with a given column name</title>
		<link>http://www.dragonslife.org/mysql-find-tables-with-a-given-column-name/programming/</link>
		<comments>http://www.dragonslife.org/mysql-find-tables-with-a-given-column-name/programming/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 15:10:26 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dragonslife.org/?p=85</guid>
		<description><![CDATA[To get a list of tables in mysql which have a given column name (or regex of your choosing, etc.) use the following SQL:
select TABLE_NAME FROM  information_schema.COLUMNS WHERE TABLE_SCHEMA = &#8216;dbName&#8217; and COLUMN_NAME like &#8216;%ColName%&#8217;;
]]></description>
			<content:encoded><![CDATA[<p>To get a list of tables in mysql which have a given column name (or regex of your choosing, etc.) use the following SQL:</p>
<blockquote><p>select TABLE_NAME FROM  information_schema.COLUMNS WHERE TABLE_SCHEMA = &#8216;dbName&#8217; and COLUMN_NAME like &#8216;%ColName%&#8217;;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.dragonslife.org/mysql-find-tables-with-a-given-column-name/programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl One Liner search and replace</title>
		<link>http://www.dragonslife.org/perl-one-liner-search-and-replace/programming/</link>
		<comments>http://www.dragonslife.org/perl-one-liner-search-and-replace/programming/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 18:35:22 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dragonslife.org/?p=84</guid>
		<description><![CDATA[I wanted to add this so I don&#8217;t have to scour the web every time I need it:
perl -p -i -e 's/oldstring/newstring/g' *
This will replace all occurrences of oldstring with newstring in all of the files in your current directory. Being able to do this quickly and easily is absolutely awesome, but what if you [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to add this so I don&#8217;t have to scour the web every time I need it:</p>
<p><code>perl -p -i -e 's/oldstring/newstring/g' *</code></p>
<p>This will replace all occurrences of oldstring with newstring in all of the files in your current directory. Being able to do this quickly and easily is absolutely awesome, but what if you want to do this recursively across the current directory and all directories below that? I’m sure that there are plenty of ways to do this, the one below is the method that seems the easiest:</p>
<p><code>perl -p -i -e 's/oldstring/newstring/g' `find ./ -name *.html`</code></p>
<p>If you wanted to be more precise you could replace find with grep and only perform the search and replace on files that you know already contain oldstring, like this:</p>
<p><code>perl -p -i -e 's/oldstring/newstring/g' `grep -ril oldstring *`</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dragonslife.org/perl-one-liner-search-and-replace/programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Radeon 9250 (Radeon 9200 Pro) on Ubuntu Gutsy</title>
		<link>http://www.dragonslife.org/radeon-9250-radeon-9200-pro-on-ubuntu-gutsy/programming/</link>
		<comments>http://www.dragonslife.org/radeon-9250-radeon-9200-pro-on-ubuntu-gutsy/programming/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 02:35:12 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dragonslife.org/radeon-9250-radeon-9200-pro-on-ubuntu-gutsy/2008/03/10</guid>
		<description><![CDATA[I have been trying to setup a new 64 bit Quad Intel Core with a Radeon 9250 video card.  My operating system of choice for this rig was going to be Ubuntu Gutsy 7.10. I have enjoyed using Gutsy in the past and saw no reason to change from my standard.
When I began the [...]]]></description>
			<content:encoded><![CDATA[<p>I have been trying to setup a new 64 bit Quad Intel Core with a Radeon 9250 video card.  My operating system of choice for this rig was going to be Ubuntu Gutsy 7.10. I have enjoyed using Gutsy in the past and saw no reason to change from my standard.</p>
<p>When I began the installation process I needed to burn a Gutsy AMD64 bit 7.10 version CD, I popped it in and waited.  After hitting the regular &#8220;install&#8221; option, the boot process went about half way through.  At this point, the monitor lost the signal and the process locked.  No amount of CTRL+ALT+DELETE or CTRL+F1-F10 could get a signal back.  </p>
<p>What the hell happened?</p>
<p>I proceeded to install the OS through the graphically restricted option.  Once the 64 bit system was installed I rebooted.  From this point on, the only driver that would load the video card was &#8220;vesa&#8221; &#8212;  that is it.</p>
<p>Fglrx, the ati binary driver dropped support for the 9500 and less series of Radeon cards some time ago.</p>
<p>It turns out the 64 bit ATI driver, literally &#8220;ati&#8221; in xorg, would not work.  The driver causes the monitor to lose the signal no matter what options I attempted to pass in.</p>
<p>Thinking that this may just be a 64 bit problem, I installed the 32 bit version of Ubuntu.  The CD booted up immediately and the install went off without a hitch.  The &#8220;ati&#8221; driver was detected and the machine was running with 3D DRI libraries activated.  This is exactly what I wanted, and I would have kept using, had it not been for the fact that the machine has 8 GB of RAM.  Dought!</p>
<p>There is no reason to simply waste 4 GB of RAM, which is the max a 32 bit install will support.  With this in mind, I decided to try my old OS of choice, Gentoo.</p>
<p>After painfully installing a stage3 build (and I say painfully because compiling things isn&#8217;t fun for me anymore), I managed to get an XServer running.  The best I can get right now are the newest (masked) ATI Drivers (the open source variety), no DRI (3d) support.  Xrandr 1.2 is running beautifully though!  I am able to get the dual output from the card working well and dynamically adjust both monitors.  </p>
<p>Currently Working:</p>
<ul>
<li>Dual Monitors output from both DVI and VGA port</li>
<li>Xrandr 1.2 automatic resize,  rotation, and alignment</li>
</ul>
<p>Not working:</p>
<ul>
<li>Monitor rotation works, however the refresh is awful and unusable. The screen refreshes like someone is wiping it off with a squeegee.  It&#8217;s like the &#8220;wipe&#8221; animation effect you often see used in Power Point.  </li>
<li>No 3D support.  Not a huge deal for me, but I have the video card memory so it&#8217;s a bit of a waste</li>
</ul>
<p>I have researched this quite extensively but still feel like I&#8217;m missing pieces. If anyone has any thoughts please post them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dragonslife.org/radeon-9250-radeon-9200-pro-on-ubuntu-gutsy/programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
