<?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>linsec.ca blog &#187; Programming</title>
	<atom:link href="http://linsec.ca/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://linsec.ca/blog</link>
	<description>You can have it right, or you can have it now.  But you can&#039;t have it right now.</description>
	<lastBuildDate>Sat, 05 May 2012 22:03:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Some quick git tips</title>
		<link>http://linsec.ca/blog/2012/01/05/some-quick-git-tips/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=some-quick-git-tips</link>
		<comments>http://linsec.ca/blog/2012/01/05/some-quick-git-tips/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 19:16:52 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git config]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=1045</guid>
		<description><![CDATA[As I&#8217;ve been git-ifying some stuff around here, I&#8217;ve run into a few tips that might be useful for other git beginners. The first is to setup some global options, some of which are nice for folks coming from Subversion. Having a global ignore file is useful. Mine has the following contents: *~ *.orig *.rej [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve been git-ifying some stuff around here, I&#8217;ve run into a few tips that might be useful for other git beginners.</p>
<p>The first is to setup some global options, some of which are nice for folks coming from Subversion.  Having a global ignore file is useful.  Mine has the following contents:</p>
<pre>
*~
*.orig
*.rej
*.swp
.#*
*.o
.DS_Store
</pre>
<p>Then adjust some global git options:</p>
<pre>
$ git config --global core.excludesfile ~/.gitignore
$ git config --global alias.st status
$ git config --global alias.ci commit
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
$ git config --global core.editor "vim"
$ git config --global color.branch auto
$ git config --global color.diff auto
$ git config --global color.interactive auto
$ git config --global color.status auto
</pre>
<p>The last few allow for colorized output, which I like (makes things like git status easier to read).</p>
<p>I also found out that I had screwed up the remote origin when setting up a new repository, and didn&#8217;t want to re-do everything, so found this useful one-liner:</p>
<pre>
$ git remote rm origin
</pre>
<p>Git n00bs like me will appreciate the above.  =)  (Note to self, express git urls as ssh://git.remote.com/path/to/repo.git rather than ssh://git.remote.com:/path/to/repo.git!)</p>
<p>Finally, I found an excellent resource called <a href="http://qugstart.com/blog/ruby-and-rails/create-a-new-git-remote-repository-from-some-local-files-or-local-git-repository/">Create a new Git Remote Repository from some local files (or local git repository)</a>.  Very accurate, very clear, and very easy to follow.  Essentially I was taking a 4GB set of documents and wanted to turn it into a remote repository so that I could push/pull from my laptop and using this article, I was able to do so easily.</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2012/01/05/some-quick-git-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rsec and AIDE+gpg now on github</title>
		<link>http://linsec.ca/blog/2011/10/29/rsec-and-aidegpg-now-on-github/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rsec-and-aidegpg-now-on-github</link>
		<comments>http://linsec.ca/blog/2011/10/29/rsec-and-aidegpg-now-on-github/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 23:41:46 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[AIDE+gpg]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[rsec]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=1029</guid>
		<description><![CDATA[Ok, so the last of my git-related topics today (I need to get back to washing windows, sadly). I&#8217;ve pulled out AIDE+gpg and rsec from the Annvix tools subversion repository and they are now on github: AIDE+gpg on github rsec on github The next step, maybe for around Christmas, is to turn these into Fedora [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so the last of my git-related topics today (I need to get back to washing windows, sadly).</p>
<p>I&#8217;ve pulled out AIDE+gpg and rsec from the Annvix tools subversion repository and they are now on github:</p>
<p><a href="https://github.com/vdanen/AIDE_gpg">AIDE+gpg on github</a><br />
<a href="https://github.com/vdanen/rsec">rsec on github</a></p>
<p>The next step, maybe for around Christmas, is to turn these into Fedora and/or EPEL packages so that I can (finally?) actually be a Fedora contributor beyond just filing security bugs.  I may be the only one made happy by that, but I think it would be cool.  =)</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2011/10/29/rsec-and-aidegpg-now-on-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dissecting part of a subversion repo to git</title>
		<link>http://linsec.ca/blog/2011/10/29/dissecting-part-of-a-subversion-repo-to-git/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dissecting-part-of-a-subversion-repo-to-git</link>
		<comments>http://linsec.ca/blog/2011/10/29/dissecting-part-of-a-subversion-repo-to-git/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 19:14:48 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=1027</guid>
		<description><![CDATA[Well, that was pretty easy to figure out. As per my last post, I was going to try to break out the AIDE+gpg part of the Annvix tools subversion repo to be it&#8217;s own git repo. It was scary simple. First, the location of AIDE+gpg in the subversion repo was &#8220;tools/AIDE+gpg&#8221; and it had one [...]]]></description>
			<content:encoded><![CDATA[<p>Well, that was pretty easy to figure out.  As per my last post, I was going to try to break out the AIDE+gpg part of the Annvix tools subversion repo to be it&#8217;s own git repo.  It was scary simple.</p>
<p>First, the location of AIDE+gpg in the subversion repo was &#8220;tools/AIDE+gpg&#8221; and it had one sub-directory, &#8220;trunk&#8221;.  I never did end up using tags or branches or anything there.  So the entire step from start to finish to do it was as follows:</p>
<pre>
git init AIDE
cd AIDE
echo "vdanen = Vincent Danen <[my email]>" >authors.txt
git svn init -T trunk svn+ssh://[repo]/tools/AIDE+gpg --no-metadata
git svn fetch -A authors.txt
git init --bare ../tmp
cd ../tmp
git symbolic-ref HEAD refs/heads/trunk
cd ../AIDE
git remote add bare ../tmp
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
cd ../tmp
git branch -a
git branch -m trunk master
mv tmp AIDE+gpg.git
</pre>
<p>Presto.  Done.  Apparently I should now put this repo somewhere public (like github).  I will figure that part out after lunch.</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2011/10/29/dissecting-part-of-a-subversion-repo-to-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Figuring this git thing out</title>
		<link>http://linsec.ca/blog/2011/10/29/figuring-this-git-thing-out/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=figuring-this-git-thing-out</link>
		<comments>http://linsec.ca/blog/2011/10/29/figuring-this-git-thing-out/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 18:37:29 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=1019</guid>
		<description><![CDATA[I&#8217;m a little old-school in that I like subversion. I&#8217;ve used subversion for years, and have had it as a big part of my workflow for a really really long time. Unfortunately, there&#8217;s this git thing popping up all over the place and I&#8217;m starting to feel dated. (It&#8217;s bad enough that my daughter turned [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a little old-school in that I like subversion.  I&#8217;ve used subversion for years, and have had it as a big part of my workflow for a really really long time.  Unfortunately, there&#8217;s this git thing popping up all over the place and I&#8217;m starting to feel dated.  (It&#8217;s bad enough that my daughter turned 10 this month, which makes me feel old, so I have to find other ways of not feeling out-dated!).</p>
<p>The problem is that all of my version control repos are in subversion, and I hate losing history.  On some, I went through a painful CVS->SVN migration when I first started using subversion, and I was pleasantly surprised that git makes it quite a bit easier.  I found <a href="http://www.albin.net/git/convert-subversion-to-git">this blog posting</a> that helped me (for the most part&#8230; if you don&#8217;t use tags and branches, etc. you want to pay attention when doing some of the steps&#8230; took me a bit to figure that out).  Most notably, in steps four and five when changing the &#8220;trunk&#8221; to &#8220;master&#8221;; it assumes you have the standard trunk/, tags/, branches/ layout (which I do in some repos, and not in others).  If you use that convention, it works fine.  If not, you can run into problems like I did.</p>
<p>The posting indicates to use:</p>
<pre>
git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt \
   --stdlayout ~/temp
...
git init --bare ~/new-bare.git
cd ~/new-bare.git
git symbolic-ref HEAD refs/heads/trunk
cd ~/temp
git remote add bare ~/new-bare.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
cd ~/new-bare.git
git branch -m trunk master
</pre>
<p>But this didn&#8217;t work for me, as &#8211;stdlayout isn&#8217;t so standard in my case (no tags/trunk/branches, so the top-level is the &#8220;trunk&#8221;).  Instead I had to do:</p>
<pre>
git svn clone [svn repo] -A authors-transform.txt ~/tmp/git
cd ~/tmp/git
git init --bare ~/git/scripts.git
git remote add bare ~/git/scripts.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
cd ~/git/scripts.git
git branch -m git-svn master
</pre>
<p>In this case, the only branch is the &#8220;git-svn&#8221; branch, so we want to turn &#8220;git-svn&#8221; into &#8220;master&#8221; (rather than trying to hunt down some non-existant branch called &#8220;trunk&#8221;).  There might have been a better way to do this, but I&#8217;m a n00b so forgive me.  All the explanation for the above is in that blog post I mentioned before (I&#8217;m mostly noting this as undoubtably I&#8217;ll bump my head against this again).</p>
<p>Some other useful links I found were <a href="http://wiki.sourcemage.org/Git_Guide#How_do_I_get_my_copy_of_the_repository.3F">this git guide</a> and a piece on <a href="http://gofedora.com/how-to-install-configure-gitweb/">setting up gitweb on Fedora</a> (works on RHEL also).  Gitweb was essential, as I&#8217;m used to using viewvc with my subversion repos.</p>
<p>So will I use git for all my repos?  Probably not.  There are some old ones that don&#8217;t need to be converted because it&#8217;s all legacy code, and there are some others that I&#8217;ve built up with too much automation.  I would like to try to extract some pieces of existing subversion repos into git, however.  The AIDE+gpg scripts are one; they&#8217;re in the Annvix tools repo, and I&#8217;d like to try to break it out into it&#8217;s own git repo with history&#8230; not sure if this is possible but I&#8217;ll poke around and see what I can come up with.  There are a few other Annvix tools that I&#8217;d do the same with (the rsec tool for one).  Since Annvix isn&#8217;t in development anymore, I&#8217;d like to &#8220;untie&#8221; those tools from it and offer them as stand-alone things (probably on github or something).</p>
<p>So that&#8217;s my Saturday adventures for this weekend.  =)</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2011/10/29/figuring-this-git-thing-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rq tool now on fedorahosted</title>
		<link>http://linsec.ca/blog/2011/01/29/rq-tool-now-on-fedorahosted/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rq-tool-now-on-fedorahosted</link>
		<comments>http://linsec.ca/blog/2011/01/29/rq-tool-now-on-fedorahosted/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 14:46:51 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[help!]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rq]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=911</guid>
		<description><![CDATA[So the RPM Query (rq) tool that I inherited as &#8216;srpm&#8217; from Stew Benedict back in the day at Mandriva is now on fedorahosted,org. Unfortunately, it&#8217;s missing history because I had a dickens of a time trying to extract it from my existing svn repo (I got it so just the relevant commits where in [...]]]></description>
			<content:encoded><![CDATA[<p>So the RPM Query (rq) tool that I inherited as &#8216;srpm&#8217; from Stew Benedict back in the day at Mandriva is now on fedorahosted,org.  Unfortunately, it&#8217;s missing history because I had a dickens of a time trying to extract it from my existing svn repo (I got it so just the relevant commits where in there, but the entire history of the other repo came with it which does me no good).  You can check it out at <a href="https://fedorahosted.org/rq/wiki">https://fedorahosted.org/rq/wiki</a>.</p>
<p>But the problem I&#8217;m having now, and maybe someone on the lazyweb can help me with this, is that it is absolutely freaking slow.  Querying the database is fast enough when you&#8217;re searching for something, but doing the imports and especially handling the updates is a process of hours.  For instance, to have it manage the updates for Fedora 14 (the SRPMs), I&#8217;m looking at 1311 package updates and 353 new packages being added.  It&#8217;s been running since last night (I don&#8217;t know the specific time it started, but it has to be well over 10hrs ago) and it&#8217;s still in the &#8220;remove old package records&#8221; stage.  That seems highly excessive to me.</p>
<p>But the database is big:</p>
<pre>
rqs 0.6 ($Id: rqs 425 2011-01-21 23:37:19Z vdanen@ANNVIX.CA $)

Database statistics:

   Database  => User: rq, Host: localhost, Database: rqs
   Data size => 9.96 GB

   Tag records  : 5                Package records : 21629
   File records : 9554598          Source records  : 76031
   Ctags records: 56300434         Requires records: 100345
</pre>
<p>And what it is doing is first removing all of the old records (packages, files, ctags, requires, source files) before it can add in the new.  Of course, it does this one at a time:</p>
<pre>
if self.type == 'source':
  tables = ('packages', 'sources', 'files', 'ctags', 'buildreqs')
for rnum in to_remove:
  r_count = r_count + 1
  for table in tables:
    query  = "DELETE FROM %s WHERE p_record = %d" % (table, rnum)
    result = self.db.do_query(query)
</pre>
<p>I think the problem is I&#8217;ve reached my limit of understanding of efficient MySQL as I&#8217;ve never dealt with data sets this huge.  What would be the best way to handle this?  Would using temporary tables work best?  Would having each rpm repo on its own table work better?  That would logistically be more work as I&#8217;d have to create SQL tables on the fly (and while I would like this thing to be portable between db types at some point, it currently isn&#8217;t &#8212; but this would have an impact when I want to make it portable).  The problem then is if I want to query and look for &#8216;sshd.c&#8217; for instance, I&#8217;d have to look across multiple tables (such as &#8216;rqs_f14_source&#8217; and &#8216;rqs_rhel6_source&#8217; instead of just &#8216;source&#8217;), but my concern is that might increase the query time (querying right now is pretty fast, and I don&#8217;t want to negatively impact querying times, but this import/update time now is ridiculous).</p>
<p>But maybe that is the answer?  Multiple tables, grouped by repo (or tag, as rq calls them) as opposed to giant tables now?  I mean, looking at the number of rows in the ctags table (56,300,434), this is a pretty huge dataset.  Or can you remove from multiple tables at the same time (the p_record column is identical across tables&#8230; same name, same data).</p>
<p>Any hints to speed this sucker up?</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2011/01/29/rq-tool-now-on-fedorahosted/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Learning Python: module import issues</title>
		<link>http://linsec.ca/blog/2009/03/08/learning-python-module-import-issues/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=learning-python-module-import-issues</link>
		<comments>http://linsec.ca/blog/2009/03/08/learning-python-module-import-issues/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 20:28:34 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=424</guid>
		<description><![CDATA[So I&#8217;ve taken it upon myself to learn Python, which is something I&#8217;ve wanted to do for a while. I usually write code in PHP or shellscript, with the odd thing in Perl every once in a while (but I&#8217;m not a real big fan of perl and I don&#8217;t have the desire to dig [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve taken it upon myself to learn Python, which is something I&#8217;ve wanted to do for a while.  I usually write code in PHP or shellscript, with the odd thing in Perl every once in a while (but I&#8217;m not a real big fan of perl and I don&#8217;t have the desire to dig into it more).  A lot of my more sophisticated projects that can&#8217;t be done in shellscript are usually done with CLI PHP.  But Python is something I&#8217;ve wanted to learn, so I&#8217;ve started digging into it and my first dive is rewriting a CLI PHP program &#8220;suite&#8221; that creates and scours a database for RPM information (dependencies, requires, files, etc.).</p>
<p>I&#8217;ve been at it for about 2 weeks now with what little time I have and the original suite consists of two programs: rqp and rqs.  These two programs were a result of a rewrite of the &#8220;srpm&#8221; PHP program that Stew Benedict wrote years ago for the Mandriva secteam (and which has proven invaluable of the years).  It handled only src.rpm files, so I rewrote and extended it to handle binary and source rpm files (rqp and rqs respectively).  It was a quick-n-dirty extension that was used for a few years on the Mandriva secteam and worked really well (and probably is still working well for them).</p>
<p>I&#8217;ve gotten rqp converted to Python and it&#8217;s working quite well.  Because rqp and rqs share a *lot* of functions, I wanted to write rqp.py and rqs.py and have a shared module between them (rq.py) and this is where I&#8217;m having issues.  Does anyone know how to have a module get access to an object from the calling program?  For instance, rqp uses the optparse module to nicely handle the commandline arguments, but a lot of the modules use options.foo to look up arguments that were passed.  The functions in rq.py (the module) can&#8217;t seem to get the value of options, and while I could put the optparse stuff in the module, it would leave the actual rqp and rqs programs really really small (and I&#8217;d have to either put in two functions because the two programs use different syntax).  So I&#8217;ve got in rqp.py:</p>
<pre>
import rq
</pre>
<p>which works ok, but if rq.db_connect() requires options.database (for instance), it can&#8217;t get it.  So in rq.py, I tried doing a circular import or whatever it&#8217;s called by doing:</p>
<pre>
import options from rqp
</pre>
<p>But this doesn&#8217;t want to work either.  The output looks quite sad:</p>
<pre>
% ./rqp.py -d
rqp 0.2 ($Id: rqp 275 2009-03-07 22:34:15Z vdanen $)

Traceback (most recent call last):
  File "./rqp.py", line 548, in <module>
    import rq
  File "/Users/vdanen/svn/scripts/rq/trunk/rq.py", line 11, in <module>
    from rqp import options
ImportError: cannot import name options
</pre>
<p>There has to be a way to make the options variable (and one or two others I think) accessible to the module, but I haven&#8217;t been able to find a way to do it.  Does anyone know how this can be accomplished?</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2009/03/08/learning-python-module-import-issues/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Check out subversion repositories with ViewVC</title>
		<link>http://linsec.ca/blog/2009/02/10/check-out-subversion-repositories-with-viewvc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=check-out-subversion-repositories-with-viewvc</link>
		<comments>http://linsec.ca/blog/2009/02/10/check-out-subversion-repositories-with-viewvc/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 21:18:06 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[techmail]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=409</guid>
		<description><![CDATA[This week&#8217;s TechMail is Check out subversion repositories with ViewVC which is pretty much just about installing and configuring the ViewVC web-based tool to view subversion repositories (works with cvs too).]]></description>
			<content:encoded><![CDATA[<p>This week&#8217;s TechMail is <a href="http://blogs.techrepublic.com.com/opensource/?p=364">Check out subversion repositories with ViewVC</a> which is pretty much just about installing and configuring the ViewVC web-based tool to view subversion repositories (works with cvs too).</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2009/02/10/check-out-subversion-repositories-with-viewvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>If programming languages were religions&#8230;</title>
		<link>http://linsec.ca/blog/2008/12/17/if-programming-languages-were-religions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=if-programming-languages-were-religions</link>
		<comments>http://linsec.ca/blog/2008/12/17/if-programming-languages-were-religions/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 15:34:56 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[humour]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=347</guid>
		<description><![CDATA[Found this really cute/funny blog post today about programming languages being religions, or the comparison of programming languages to religions (i.e. C being Judaism, Visual Basic being Satanism, etc.). Quite funny. Here&#8217;s the link: If programming languages were religions&#8230;.]]></description>
			<content:encoded><![CDATA[<p>Found this really cute/funny blog post today about programming languages being religions, or the comparison of programming languages to religions (i.e. C being Judaism, Visual Basic being Satanism, etc.).  Quite funny.</p>
<p>Here&#8217;s the link: <a href="http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html">If programming languages were religions&#8230;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2008/12/17/if-programming-languages-were-religions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is the new Komodo 5 toolset worth the upgrade?</title>
		<link>http://linsec.ca/blog/2008/12/02/is-the-new-komodo-5-toolset-worth-the-upgrade/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=is-the-new-komodo-5-toolset-worth-the-upgrade</link>
		<comments>http://linsec.ca/blog/2008/12/02/is-the-new-komodo-5-toolset-worth-the-upgrade/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 03:50:56 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[komodo]]></category>
		<category><![CDATA[techmail]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=334</guid>
		<description><![CDATA[This week&#8217;s Techmail looks at some of the new features of ActiveState&#8217;s Komodo IDE and asks Is the new Komodo 5 toolset worth the upgrade?. Personally, I think it was. Others may or may not agree&#8230; someone else has already posted about using a &#8220;real&#8221; IDE (Eclipse). Gag me with a spoon.]]></description>
			<content:encoded><![CDATA[<p>This week&#8217;s Techmail looks at some of the new features of <a href="http://www.activestate.com/products/komodo/">ActiveState&#8217;s Komodo IDE</a> and asks <a href="http://blogs.techrepublic.com.com/opensource/?p=303">Is the new Komodo 5 toolset worth the upgrade?</a>.  Personally, I think it was.  Others may or may not agree&#8230; someone else has already posted about using a &#8220;real&#8221; IDE (Eclipse).  Gag me with a spoon.</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2008/12/02/is-the-new-komodo-5-toolset-worth-the-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zsh tab completion with subversion 1.5</title>
		<link>http://linsec.ca/blog/2008/11/08/zsh-tab-completion-with-subversion-15/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=zsh-tab-completion-with-subversion-15</link>
		<comments>http://linsec.ca/blog/2008/11/08/zsh-tab-completion-with-subversion-15/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 17:13:03 +0000</pubDate>
		<dc:creator>vdanen</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://linsec.ca/blog/?p=310</guid>
		<description><![CDATA[This has ticked me off for a bit, and I finally decided to find out why. Tab completion in zsh was returning the following every time I tried to use it, after upgrading to subversion 1.5: _arguments:comparguments:303: invalid argument: ARG Looks like the reason is that the subversion developers changed &#8220;arg&#8221; to &#8220;ARG&#8221;. So when [...]]]></description>
			<content:encoded><![CDATA[<p>This has ticked me off for a bit, and I finally decided to find out why.  Tab completion in zsh was returning the following every time I tried to use it, after upgrading to subversion 1.5:</p>
<p><code>_arguments:comparguments:303: invalid argument: ARG</code></p>
<p>Looks like the reason is that the subversion developers changed &#8220;arg&#8221; to &#8220;ARG&#8221;.  So when I googled I found this helpful post:</p>
<p><a href="http://mkoga.com/zsh-tab-completion-fix-for-subversion-1-5">ZSH Tab Completion Fix for Subversion 1.5</a> which basically points to this <a href="http://gvn.googlecode.com/svn/trunk/contrib/zsh/_subversion">new _subversion functions file</a> to be plopped into the zsh functions directory (/usr/share/zsh/4.3.4/functions; change the version to suit of course &#8212; the directory may also be slightly different on Linux vs OS X).</p>
<p>Now tab completion works properly and life is good.  =)</p>
]]></content:encoded>
			<wfw:commentRss>http://linsec.ca/blog/2008/11/08/zsh-tab-completion-with-subversion-15/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

