<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5456501469780974712</id><updated>2011-12-08T15:22:06.823Z</updated><category term='emacs'/><category term='python'/><category term='emacs N900'/><category term='emacs windows'/><category term='tips'/><category term='book review'/><category term='distractions'/><category term='freebsd gnome tips'/><category term='cfdg'/><category term='graphics'/><category term='freebsd'/><category term='elisp'/><category term='work'/><title type='text'>Technology and Me</title><subtitle type='html'>A blog of my ideas, findings and thoughts about the stuff I do with technology</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-1097026118041168226</id><published>2011-05-24T14:41:00.002+01:00</published><updated>2011-05-24T15:10:46.564+01:00</updated><title type='text'>Setting up Mercurial on IIS</title><content type='html'>I have just set up a Mercurial server using IIS to serve the requests.  I found that the following blog post was a great step by step guide to setting it up &lt;a href="http://blog.schuager.com/2010/03/how-to-setup-mercurial-server-on.html"&gt;http://blog.schuager.com/2010/03/how-to-setup-mercurial-server-on.html&lt;/a&gt;.  

However I had a few issues that were not covered in the blog post:
   
The first was that I was getting a "DLL load failed" error for several modules.  The reason for this is that I had installed the standalone version of Mercurial and that it could not reference the compiled C versions of the python modules. 

I fixed this by copying the pure python modules into the lib directory. You can find the pure python modules for the 1.8.3 version of Mercurial at &lt;a href="http://selenic.com/repo/hg/file/3cb1e95676ad/mercurial/pure"&gt;http://selenic.com/repo/hg/file/3cb1e95676ad/mercurial/pure&lt;/a&gt;

The second issue was that IIS refused to serve cs files, as the Request Filtering feature was enabled.  I disabled this for the whole repo by adding the following to the web.config at the top level of the IIS hg app.  
&lt;pre&gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;system.webServer&amp;gt;
        &amp;lt;security&amp;gt;
            &amp;lt;requestFiltering&amp;gt;
                &amp;lt;fileExtensions&amp;gt;
                    &amp;lt;clear/&amp;gt;
                &amp;lt;/fileExtensions&amp;gt;
            &amp;lt;/requestFiltering&amp;gt;
        &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-1097026118041168226?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/1097026118041168226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=1097026118041168226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1097026118041168226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1097026118041168226'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2011/05/setting-up-mercurial-on-iis.html' title='Setting up Mercurial on IIS'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-4693768069411898548</id><published>2011-05-24T02:00:00.002+01:00</published><updated>2011-05-24T02:21:08.466+01:00</updated><title type='text'>Simple Python Command to generate a random GUID</title><content type='html'>Every so often I need to generate a GUID for a MS Proj file.  
The simple python command will create one for me:
&lt;pre&gt;python -c "import uuid;print uuid.uuid4()"&lt;/pre&gt;
Changing that to a emacs function so I can insert them where ever I need we get:
&lt;pre&gt;
(defun genUUID ()
  "Generates a UUID"
  (interactive)
  (shell-command "python -c \"import uuid;print uuid.uuid4()\"" t)
)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-4693768069411898548?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/4693768069411898548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=4693768069411898548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4693768069411898548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4693768069411898548'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2011/05/simple-python-command-to-generate.html' title='Simple Python Command to generate a random GUID'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-3100376998878821871</id><published>2011-04-12T20:33:00.001+01:00</published><updated>2011-04-12T20:33:56.508+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Remember to just read the code</title><content type='html'>
&lt;p&gt;The problem that I had was that I needed a repeating Timer object in python.  I googled, but the answers that I found didn't sit right, and then I remembered that I could just read the code for the threading module
and see how the Timer object was implemented, then just use that.  Below is the code I came up with.
&lt;/p&gt;
&lt;p&gt;
But the moral of the story is that having the source code for your language's core libaries around is a good thing.
&lt;/p&gt;



&lt;pre class="src src-python"&gt;&lt;span style="color: #8ac6f2;"&gt;class&lt;/span&gt; &lt;span style="color: #9e6ffe;"&gt;RepeatingTimer&lt;/span&gt;(threading.Thread):
    &lt;span style="color: #95e454;"&gt;"""Call a function after a specified number of seconds, it will then repeat again after the specified number of seconds
       Note: If the function provided takes time to execute, this time is NOT taken from the next wait period

    t = RepeatingTimer(30.0, f, args=[], kwargs={})
    t.start()
    t.cancel() # stop the timer's actions
    """&lt;/span&gt;

    &lt;span style="color: #8ac6f2;"&gt;def&lt;/span&gt; &lt;span style="color: #ff5996;"&gt;__init__&lt;/span&gt;(&lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;, interval, function, args=[], kwargs={}):
        threading.Thread.__init__(&lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;)
        &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.interval = interval
        &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.function = function
        &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.args = args
        &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.kwargs = kwargs
        &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.finished = threading.Event()

    &lt;span style="color: #8ac6f2;"&gt;def&lt;/span&gt; &lt;span style="color: #ff5996;"&gt;cancel&lt;/span&gt;(&lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;):
        &lt;span style="color: #95e454;"&gt;"""Stop the timer if it hasn't finished yet"""&lt;/span&gt;
        &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.finished.set()

    &lt;span style="color: #8ac6f2;"&gt;def&lt;/span&gt; &lt;span style="color: #ff5996;"&gt;run&lt;/span&gt;(&lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;):
        &lt;span style="color: #8ac6f2;"&gt;while&lt;/span&gt; &lt;span style="color: #8ac6f2;"&gt;not&lt;/span&gt; &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.finished.is_set():
            &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.finished.wait(&lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.interval)
            &lt;span style="color: #8ac6f2;"&gt;if&lt;/span&gt; &lt;span style="color: #8ac6f2;"&gt;not&lt;/span&gt; &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.finished.is_set():  &lt;span style="color: #99968b;"&gt;#In case someone has canceled while waiting
&lt;/span&gt;                &lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.function(*&lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.args, **&lt;span style="color: #8ac6f2;"&gt;self&lt;/span&gt;.kwargs)
&lt;/pre&gt;


&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-3100376998878821871?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/3100376998878821871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=3100376998878821871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3100376998878821871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3100376998878821871'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2011/04/remember-to-just-read-code.html' title='Remember to just read the code'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-3003516656576890944</id><published>2011-03-11T20:28:00.002Z</published><updated>2011-03-11T20:29:45.767Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='elisp'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Installing org-googlecl.el on Windows</title><content type='html'>&lt;p&gt;Here is how I installed org-googlecl.el (found at &lt;a href="http://www.emacswiki.org/emacs/org-googlecl"&gt;http://www.emacswiki.org/emacs/org-googlecl&lt;/a&gt;) onto my Windows 7 box at work.
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
I droped the el file into my emacs extentions directory
&lt;/li&gt;
&lt;li&gt;
I added the following to my .emacs
&lt;/li&gt;
&lt;/ul&gt;




&lt;pre class="example"&gt;(setq load-path (cons "C:/emacs/org-googlecl" load-path))
(require 'org-googlecl)
(setq googlecl-blogname "Technology and Me")
(setq googlecl-username "my google username")
(setq googlecl-footer "") ;;Add no footer
(setq googlecl-blog-exists t) ;;Ask me if the blog exists before posting
(setq googlecl-list-regexp "\\(.*\\),\\(http.*\\),?\\(.*\\)$") ;;update the reg-ex for listing (see below)
&lt;/pre&gt;


&lt;ul&gt;
&lt;li&gt;
I pip installed the google commandline as per &lt;a href="http://code.google.com/p/googlecl/wiki/Install"&gt;http://code.google.com/p/googlecl/wiki/Install&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
The &lt;code&gt;google&lt;/code&gt; command would not work out of the box for me so I had to add a batch script to the windows path
&lt;/li&gt;
&lt;/ul&gt;




&lt;pre class="example"&gt;python c:\python\26\Scripts\google %*
&lt;/pre&gt;


&lt;ul&gt;
&lt;li&gt;
Once the google command was working I found that the &lt;code&gt;org-googlecl-list-blogs&lt;/code&gt; was not running.  
&lt;ul&gt;
&lt;li&gt;
The problem was that the regex was wrong as I had not added any tags to my posts. So I updated the &lt;code&gt;googlecl-list-regexp&lt;/code&gt; to account for the missing ,
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
The final tweek is that the quoting was wrong for windows on some of the commands so I changed it to match the windows style within org-googlecl

&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-3003516656576890944?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/3003516656576890944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=3003516656576890944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3003516656576890944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3003516656576890944'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2011/03/installing-org-googleclel-on-windows_7522.html' title='Installing org-googlecl.el on Windows'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-437787237721374541</id><published>2011-03-11T17:02:00.001Z</published><updated>2011-03-11T17:02:03.267Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='elisp'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Testing org-googlecl</title><content type='html'>&lt;br /&gt;&lt;p&gt;Just installed the org-googlecl emacs module.  Hoping it will mean that I will blog more than once a year :)&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-437787237721374541?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/437787237721374541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=437787237721374541' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/437787237721374541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/437787237721374541'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2011/03/testing-org-googlecl.html' title='Testing org-googlecl'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-3821136104378918630</id><published>2010-01-21T17:21:00.004Z</published><updated>2010-01-21T17:36:26.692Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs N900'/><title type='text'>N900 - now with Emacs!</title><content type='html'>Thanks to &lt;a href="http://sumoudou.org/%E7%9B%B8%E6%92%B2%E5%A4%96%EF%BC%9AGNU%20Emacs%20for%20Nokia%20N900.html"&gt;this post&lt;/a&gt;.  I have installed and configured emacs 23.1.1 onto my N900.  

The only problem was that the minibuffer wasn't displaying, I found that the fix for this was to specify a max-height to the maxframe configuration mentioned in the post.  I added the following line to my .emacs:
&lt;pre&gt;(setq mf-max-height 430)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-3821136104378918630?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/3821136104378918630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=3821136104378918630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3821136104378918630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3821136104378918630'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2010/01/n900-now-with-emacs.html' title='N900 - now with Emacs!'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-6485916521166234295</id><published>2010-01-19T14:14:00.002Z</published><updated>2010-01-19T14:45:13.260Z</updated><title type='text'>A simple solution to downloading matching instance files in CC.net</title><content type='html'>At &lt;a href="http://www.ssgl.com"&gt;Serverside&lt;/a&gt; we use &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;Cruise Control .Net&lt;/a&gt; as our continuous build server.  I have found it to be easy to use and it integrates with NAnt and NUnit really well.

Today I hit upon a interesting problem in one of our builds:  We needed a instance code line to be updated every time the base code line was updated.  Where an instance is just a specific branded website of the base code.   The instances are in the same repo, but in different "lines" of the repository, so we couldn't just update the whole trunk line.

The way I solved it was that every time the CC.Net project is triggered, the first task that CC.Net runs is a svn update on the instance lines.  

I run svn in a &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Executable+Task"&gt;exec&lt;/a&gt; task.  The trick here is to remember to use the --username and --password arguments to make sure that you update with the right user.

My final exec node looks something like:
&lt;pre&gt;&amp;lt;exec&amp;gt;
 &amp;lt;executable&amp;gt;svn&amp;lt;/executable&amp;gt;
 &amp;lt;baseDirectory&amp;gt;instance trunk directory&amp;lt;/baseDirectory&amp;gt;
 &amp;lt;buildArgs&amp;gt;update --username xxx --password yyy&amp;lt;/buildArgs&amp;gt;
&amp;lt;/exec&amp;gt;&lt;/pre&gt;
simple as that.  

The only problem is that the build is not run when instance code is checked in.  However it looks like I may have to re write the build script to get that to work correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-6485916521166234295?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/6485916521166234295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=6485916521166234295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6485916521166234295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6485916521166234295'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2010/01/simple-solution-to-downloading-matching.html' title='A simple solution to downloading matching instance files in CC.net'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-4358370096153706708</id><published>2009-11-25T19:59:00.003Z</published><updated>2011-12-08T15:22:06.828Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs windows'/><title type='text'>Inserting the BOM into a file</title><content type='html'>I have been working with Windows UTF-8 files a lot today, and I found that just saving the file as UTF-8 isn't enough for ASP.NET (well 1.1 at least).  Even though emacs says that it will save the buffer with the BOM (&lt;a href="http://unicode.org/faq/utf_bom.html#BOM"&gt;Byte Order Mark&lt;/a&gt;) it doesn't seem to if the file doesn't start with one.  So I wrote myself a little helper function to add the BOM into the start of the file.  It works by going to the start of the buffer you are in, and adding the BOM FEFF.  The exact bytes comprising the BOM for the Unicode character U+FEFF are converted into the UTF-8 format by emacs when it saves the file (which for reference are EF BB BF -- thanks to pnkfelix for pointing that out).

&lt;pre&gt;
;;Insert the BOM at the start of a file for UTF
(defun insert-BOM()
  (interactive)
  (goto-char (point-min))
  (ucs-insert (string-to-number "FEFF" 16)) 
)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-4358370096153706708?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/4358370096153706708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=4358370096153706708' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4358370096153706708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4358370096153706708'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/11/inserting-bom-into-file.html' title='Inserting the BOM into a file'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-2430078546160719236</id><published>2009-10-30T15:58:00.002Z</published><updated>2009-10-30T16:06:07.928Z</updated><title type='text'>My first SSG blog post</title><content type='html'>I just posted my first blog post over at &lt;a href="http://www.ssgl.com/blog"&gt;http://www.ssgl.com/blog&lt;/a&gt;.  Its just a short comment on why my development team is better than the rest!  You can see it &lt;a href="http://www.ssgl.com/blog/2009/10/30/DevelopersTurningTheBestCardMarketingIdeasIntoReality.aspx"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-2430078546160719236?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/2430078546160719236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=2430078546160719236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/2430078546160719236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/2430078546160719236'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/10/my-first-ssg-blog-post.html' title='My first SSG blog post'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-958073446344646612</id><published>2009-10-21T20:36:00.002+01:00</published><updated>2009-10-21T22:09:27.692+01:00</updated><title type='text'>Why didn't I follow the checklist!?!</title><content type='html'>Today I upgraded our Subversion server to 1.6.5.  It was a nightmare and all because I tried to do it from memory.  It seemed simple, just uninstall and install a few services and then I would be away laughing.  However I was shown why pride comes before a fall.  

All was going well till Apache wouldn't start. After pushing and pulling at the configuration and reading the error logs, it turned out I should have installed mod_python.  All shiny, but why isn't Trac working!  Many hours later, oh yes I should reinstall the python bindings to Subversion.  Look at that now it works.  

Later checking the wiki (to make sure it still works) I read the article I wrote on how to upgrade subversion.  There in black and white was the steps as I should have taken them.  Including the missing mod_python and python bindings. Why didn't I just follow my own checklist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-958073446344646612?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/958073446344646612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=958073446344646612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/958073446344646612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/958073446344646612'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/10/why-didnt-i-follow-checklist.html' title='Why didn&apos;t I follow the checklist!?!'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-4711703541607475665</id><published>2009-10-15T19:28:00.003+01:00</published><updated>2009-10-15T19:39:16.135+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Serverside's new Blog</title><content type='html'>I finally finished putting the companies blog live.  So if I blog there I will tell you all about here.  You can find it at &lt;a href="http://www.ssgl.com/blog"&gt;http://www.ssgl.com/blog&lt;/a&gt;.  It is a simple &lt;a href="http://www.dasblog.info/"&gt;dasBlog&lt;/a&gt; running off our UK cluster.  I am hoping that the clustered set up that I went for is going to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-4711703541607475665?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/4711703541607475665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=4711703541607475665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4711703541607475665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4711703541607475665'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/10/serversides-new-blog.html' title='Serverside&apos;s new Blog'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-2242894371701303576</id><published>2009-09-11T19:34:00.003+01:00</published><updated>2009-09-11T19:57:15.819+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cfdg'/><title type='text'>My First Context Free Upload</title><content type='html'>So impressed by the &lt;a href="http://www.penny-arcade.com/2009/7/31/"&gt;Penny Arcade Automata Wall Paper&lt;/a&gt; that I have created my first &lt;a href="http://www.contextfreeart.org/gallery/view.php?id=2004"&gt;context free upload&lt;/a&gt;.  The idea is that I build up a set of units (I have called them Notes) that could be seen as patterns in the image.  The patterns are meant to be based on the distribution English language letters so that the image looks more "natural" to the eye. Tell me what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-2242894371701303576?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/2242894371701303576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=2242894371701303576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/2242894371701303576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/2242894371701303576'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/09/my-first-context-free-upload.html' title='My First Context Free Upload'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-8280374242856211987</id><published>2009-08-12T20:14:00.002+01:00</published><updated>2009-08-12T20:59:20.693+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs 23 - impressions</title><content type='html'>I am still waiting for Emacs 23.1 on my FreeBSD home laptop.  However I am using Emacs 23.1 on my Windows machine at work and am loving it.  
The main things I am noticing are:&lt;ul&gt;&lt;li&gt;The horizontal split when a new buffer is created for something like a *compile*&lt;/li&gt;&lt;li&gt;The unicode support is much better, I no longer get the unicode "dot" at the start of a file saved by someone with Visual Studio.&lt;/li&gt;&lt;li&gt;M-x butterfly - this is the sort of stuff that I love about Emacs, is it a hard core editor, yes, but it also wants to have fun!&lt;/li&gt;&lt;/ul&gt;  I am yet to try the new daemon setting on the Windows machine, as I am still using gnuserv.  But I don't really restart my machine that often, only on the day after update Tuesday really, so I don't really notice.

So good reviews for Emacs 23.1, thanks to the whole team that have made it happen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-8280374242856211987?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/8280374242856211987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=8280374242856211987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8280374242856211987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8280374242856211987'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/08/emacs-23-impressions.html' title='Emacs 23 - impressions'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-5118111944648536011</id><published>2009-07-29T20:33:00.002+01:00</published><updated>2009-07-29T20:34:09.105+01:00</updated><title type='text'>Emacs 23</title><content type='html'>I am eagerly awaiting Emacs 23, should be out any time soon.  I hope!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-5118111944648536011?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/5118111944648536011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=5118111944648536011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5118111944648536011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5118111944648536011'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/07/emacs-23.html' title='Emacs 23'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-307444942768182537</id><published>2009-07-03T22:48:00.005+01:00</published><updated>2009-08-12T21:00:19.399+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><title type='text'>Firefox 3.5</title><content type='html'>I have now upgraded to Firefox 3.5 on FreeBSD.  It was a bit more tricky than I expected, it wouldn't just install using portinstall.  Instead I had to  make it from the port tree manually, in the end it the commands I used were:&lt;pre&gt;cd /usr/ports/www/firefox35
make config
make
pkg_delete firefox-3.0.11,4
make install&lt;/pre&gt;I am guessing it was the fact that I needed to uninstall firefox3 before installing firefox35 was stopping portinstall from working.  Also it turned out that I needed to load the sem module too, as per the pkg-message (I should really start reading them).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-307444942768182537?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/307444942768182537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=307444942768182537' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/307444942768182537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/307444942768182537'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/07/firefox-35.html' title='Firefox 3.5'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-3708892970368085001</id><published>2009-06-29T21:21:00.004+01:00</published><updated>2009-06-29T22:40:15.235+01:00</updated><title type='text'>CouchDB</title><content type='html'>I am giving &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt; a look over.  I had heard about it from several blogs, and decided to take the plunge on the weekend.  

As always it was simple to install with "port-install couchdb" the longest part was waiting for the Erlang OTP platform to build.  All in all it took a episode of some trash TV to install.

I have a bit of a problem with the rc.d script, which doesn't seem work, but apart from that it seems pretty cool.    

Will try to port StarTracker to it over the next little while...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-3708892970368085001?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/3708892970368085001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=3708892970368085001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3708892970368085001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3708892970368085001'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/06/couchdb.html' title='CouchDB'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-234245246829647397</id><published>2009-06-10T21:12:00.024+01:00</published><updated>2009-06-13T11:11:55.294+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd gnome tips'/><title type='text'>The 3 ways to stop gnome automounting</title><content type='html'>&lt;b&gt;Problem&lt;/b&gt;
I had some hard drive slices I didn't want gnome to mount when it started up.  On first glance I didn't think this was so hard to fix. However after a bit of fruitless googling, I was none the wiser of where I would go to stop the auto mounting.  I knew it was happening in gnome somewhere, but where.

&lt;b&gt;The journey&lt;/b&gt;
On reading a blog about the new geom functionality in FreeBSD 7.2 I tried to change my fstab file.  A few kernal panics later I have the file correct with the slice names in the file and the noauto option set but that did not to work.  After more googling I hit upon the solution of turning off auto-mounting completely in Nautilus using a configuration setting.  This works, but it seems to be a little heavy handed as it would stop my CD-ROM from auto-mounting when I put a disk in.  So I followed the code back in Nautilus and I found that it was just asking HAL and the fstab file what drives it could mount and then mounting them, so my next solution was to make HAL ignore the slices, much reading later I had a fdi file that ignored the geom labels.  This worked, but again I was troubled as to why the noauto route didn't work as it should.  This is when I re-read the blog post again, and worked out that you should reference the slices with the geom label names rather than the slice names.  It seems that the new GEOM functionality leaves the labels active and then HAL picks them up and offers them to Nautilus, so you have to set them in the fstab to noauto.  

&lt;b&gt;Solutions&lt;/b&gt;&lt;ol&gt;&lt;li&gt;As of Gnome 2.22 Nautilus is responsible for doing the auto-mounting so the first solution is to turn off all auto-mounting completely in nautilus.  We can do this by setting the configuration &lt;pre&gt;/apps/nautilus/preferences/media_automount&lt;/pre&gt; to false.  You can do this with the &lt;i&gt;configuration editor&lt;/i&gt; or from the shell with &lt;pre&gt;gconftool-2 -s --type bool /apps/nautilus/preferences/media_automount false&lt;/pre&gt;The problem with this solution is that it will stop Nautilus from auto-mounting anything.&lt;/li&gt;
&lt;li&gt;The next option is to make HAL ignore the slices so they are not exposed to Nautilus.  The way to do this is to create a &lt;i&gt;fdi&lt;/i&gt; file that will tell HAL what to do.  You can list the hal properties of everything on you system with &lt;i&gt;lshal&lt;/i&gt; in my case the key is &lt;i&gt;block.device&lt;/i&gt; and we can use the &lt;i&gt;contains_ncase&lt;/i&gt; to find the slices we want to ignore. &lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;

&amp;lt;deviceinfo version="0.2"&amp;gt;
  &amp;lt;device&amp;gt;
    &amp;lt;match key="block.device" contains_ncase="/dev/ufsid/"&amp;gt;
        &amp;lt;merge key="info.ignore" type="bool"&amp;gt;true&amp;lt;/merge&amp;gt;
    &amp;lt;/match&amp;gt;
  &amp;lt;/device&amp;gt;
&amp;lt;/deviceinfo&amp;gt;&lt;/pre&gt; This works, but again it seems to be a bit of over kill.&lt;/li&gt;
&lt;li&gt;The last solution is to set your fstab file to set the &lt;i&gt;noauto&lt;/i&gt; option.  This is the most simple. Just make sure to us the glabel name for the slice &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Links to supporting docs&lt;/b&gt; 
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.freebsd.org///gnome/docs/halfaq.html"&gt;HAL FAQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://people.freedesktop.org/~david/hal-spec/hal-spec.html#device-properties-block"&gt;HAL spec (on block device)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://git.gnome.org/cgit/nautilus/tree/src/nautilus-application.c?h=gnome-2-26#n240"&gt;Where Nautilus uses the media_automount setting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freebsd.org/cgi/man.cgi?query=glabel&amp;sektion=8"&gt;glabel(8)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freebsd.org/cgi/man.cgi?query=fstab&amp;sektion=5&amp;apropos=0&amp;manpath=FreeBSD+7.2-RELEASE"&gt;fstab(5)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freebsd.org/cgi/man.cgi?query=mount&amp;sektion=8&amp;apropos=0&amp;manpath=FreeBSD+7.2-RELEASE"&gt;mount(8)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ivoras.sharanet.org/blog/tree/2009-05-20.geom_label-ufsid.html"&gt;GEOM Blog post&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-234245246829647397?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/234245246829647397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=234245246829647397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/234245246829647397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/234245246829647397'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/06/3-ways-to-stop-gnome-automounting.html' title='The 3 ways to stop gnome automounting'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-3238118416448131213</id><published>2009-05-17T10:50:00.003+01:00</published><updated>2009-05-17T11:37:58.408+01:00</updated><title type='text'>Python Decorators</title><content type='html'>I created my first python decorator today, I have been using them for a while in cherrypy and others, but never have had to create my own.  

In my case I was using it to ensure that a method attribute was converted to an int before it hit the actual function, as the attribute could be passed as a string.  Having several functions that had this behaviour creating a decorator seemed the best option rather than adding the conversion code to each function, that and I wanted to know how they worked.  

Decorators work by creating a function that returns a function (though they can be classes, anything callable I believe).  The function that is returned is the one that is to be run rather than the one that was originally written, which in my book is kind of funky (and that's good funky).  Once you have created a decorator function you can then just add @functionname to the top of your actual function and then the actual function becomes the function that you output in your decorator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-3238118416448131213?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/3238118416448131213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=3238118416448131213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3238118416448131213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/3238118416448131213'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/05/python-decorators.html' title='Python Decorators'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-8750178332609223483</id><published>2009-05-15T20:53:00.003+01:00</published><updated>2009-05-17T10:50:15.740+01:00</updated><title type='text'>Stack Overflow flair</title><content type='html'>Like the true sheep I am I have added the &lt;a href="http://stackoverflow.com/users/flair"&gt;Stack Overflow&lt;/a&gt; and &lt;a href="http://serverfault.com/users/flair"&gt;Server fault&lt;/a&gt; to my blog widgets.  Now everyone can see that I follow the trends.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-8750178332609223483?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/8750178332609223483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=8750178332609223483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8750178332609223483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8750178332609223483'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/05/stackover-flow-flair.html' title='Stack Overflow flair'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-5020809979985308010</id><published>2009-05-05T21:36:00.002+01:00</published><updated>2009-05-05T21:40:46.673+01:00</updated><title type='text'>Upgrading to FreeBSD 7.2</title><content type='html'>Find the &lt;a href="http://www.freebsd.org/releases/7.2R/announce.html"&gt;announcement&lt;/a&gt;.

its as easy as:
&lt;ul&gt;&lt;li&gt;freebsd-update upgrade -r 7.2-RELEASE&lt;/li&gt;&lt;li&gt;freebsd-update install&lt;/li&gt;&lt;li&gt;shutdown -r now&lt;/li&gt;&lt;li&gt;freebsd-update install&lt;/li&gt;&lt;li&gt;shutdown -r now&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-5020809979985308010?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/5020809979985308010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=5020809979985308010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5020809979985308010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5020809979985308010'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/05/upgrading-to-freebsd-72.html' title='Upgrading to FreeBSD 7.2'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-4553650085230265105</id><published>2009-04-27T20:49:00.012+01:00</published><updated>2009-04-28T21:55:42.059+01:00</updated><title type='text'>Using pygame to develop with context free</title><content type='html'>A problem I have had while playing round with Context Free, is that every time I change the cfdg file, I have to rerun cfdg and then display the resulting image.

This got me thinking that there must be a good way to monitor the file and every time it changes just re-run and display the image.  My mind wondered back to a pycon UK when I saw a guy using pygame to display his slides.  The reason being that as pygame is essentially a framework for displaying images and handling events without the tedious bits around the edges, he could very easily create a slide show that could run on anything without an extra program required.  Putting this to work against my problem I could just create a python app that would monitor the file and every time the file changed, rerun cfdg and display the image in pygame.  

It turns out that this is ridiculously easy:
1) Initialise a pygame window
2) Start a thread to monitor the file.  The thread just runs the cfdg with popen and displays the image created to the pygame window.  I found it better to just run every second that way I could see the different images created by the random branching in context free.
3) Keep going till a keystoke kills the process.

So here it is (python 2.5): 

&lt;pre&gt;import pygame, sys, threading, time, os
pygame.init()

def setupScreen(width, height):
    screen = pygame.display.set_mode( (width,height) )
    pygame.display.flip()
    return screen
    
def waitForKeyStroke():
    runProgram = True
    while runProgram:
        event = pygame.event.wait()
        if event.type == pygame.QUIT or event.type == pygame.KEYDOWN:
            runProgram = False

def displayImage( screen, path ):
    px = pygame.image.load(path)
    screen.blit(px, px.get_rect())
    pygame.display.flip()
    return px

class updator(object):
    
    def __init__(self, screen, cfdgPath, imagePath):
        self.running = True
        self.screen = screen
        self.cfdgPath = cfdgPath
        self.imagePath = imagePath
        self.updatePeriod = 1

    def updateScreen(self):
        while self.running:
            f = os.popen('cfdg %s %s' % (self.cfdgPath, self.imagePath))
            txt = f.read()
            if f.close():
                print txt
            displayImage(self.screen,self.imagePath)
            time.sleep(self.updatePeriod)

def mainLoop(screen, cfdgPath, imagePath):
    u = updator(screen,cfdgPath,imagePath)
    t = threading.Thread(target=u.updateScreen)
    t.start()
    waitForKeyStroke()
    u.running = False
    t.join(10)
    
if __name__ == "__main__":
    "Usage cfdgviewer.py &lt;file to monitor&gt; &lt;output image name&gt;"
    screen = setupScreen(500,500)
    mainLoop(screen, sys.argv[1], sys.argv[2])&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-4553650085230265105?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/4553650085230265105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=4553650085230265105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4553650085230265105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4553650085230265105'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/04/using-pygame-to-develop-with-context.html' title='Using pygame to develop with context free'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-6692782184597698724</id><published>2009-04-15T17:51:00.006+01:00</published><updated>2009-04-15T19:06:11.489+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs - Copying a whole line without killing it</title><content type='html'>For some reason I always find myself trying to copy a whole line and then pasting back somewhere else.  I have never found a good way in Emacs to do this except for &lt;i&gt;&amp;lt;home&amp;gt; C-k C-y&lt;/i&gt; until today, when I wrote this little function to do it for me and bound it to M-k because I never use kill-sentence anyway.  (the excessive commenting is for people learning Lisp like me)
&lt;pre&gt;;Create a COPY line function
(defun copy-total-line ()
  "Copy the whole line that the cursor is on"
  (interactive)
   ;We want to return to where we started
  (save-excursion      
    ;Jump to the start of the line          
    (beginning-of-line)           
    ;Store the start of the line         
    (let* ((startpos (point)))    
      ;Move to the end of the line
      (end-of-line)
      ;Add it all to the kill ring as M-w would                       
      (kill-ring-save startpos (point) )  
      )
    )
  )
;Bind it to M-k (cause I never use kill sentence)
(define-key global-map "\M-k" 'copy-total-line)&lt;/pre&gt;  On further searching &lt;a href="http://www.emacswiki.org/emacs/CopyingWholeLines"&gt;the Emacs wiki has some other functions to do this&lt;/a&gt;, but this way I learned some lisp!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-6692782184597698724?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/6692782184597698724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=6692782184597698724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6692782184597698724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6692782184597698724'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/04/emacs-copying-whole-line-without.html' title='Emacs - Copying a whole line without killing it'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-7896600483172632854</id><published>2009-04-15T01:08:00.002+01:00</published><updated>2009-04-15T01:35:13.964+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='distractions'/><title type='text'>Context Free Art</title><content type='html'>A few months ago I stumbled upon &lt;a href="http://www.contextfreeart.org"&gt;Context Free Art&lt;/a&gt;.  It is basically a way of drawing images by using a &lt;a href="http://en.wikipedia.org/wiki/Context-free_grammar"&gt;context free grammar&lt;/a&gt;.  

The &lt;a href="http://www.contextfreeart.org/gallery/"&gt;images&lt;/a&gt; on the site were pretty nifty, but after unsuccessfully compiling the source I gave up forlorn that I would never be able to use a context free grammar to create images.  Only to check back on the site every once and a while to see what new images others had created.  

Today I found myself with nothing better to do so I was going to give compiling the program another try.  While seeing if I had the required libraries I had the brain wave to search every field in the FreeBSD ports website for &lt;a href="http://www.freebsd.org/cgi/cvsweb.cgi/ports/graphics/cfdg/"&gt;"context"&lt;/a&gt;.  Bingo!  A quick &lt;i&gt;portinstall cfdg&lt;/i&gt; and I had it on my laptop.  So now I am free to context free myself into odd fractal patterns.  

The &lt;b&gt;moral&lt;/b&gt; of the story is that FreeBSD ports is a truly amazing tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-7896600483172632854?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/7896600483172632854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=7896600483172632854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/7896600483172632854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/7896600483172632854'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/04/context-free-art.html' title='Context Free Art'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-4245409278060459995</id><published>2009-03-26T22:02:00.002Z</published><updated>2009-03-26T22:06:58.088Z</updated><title type='text'>Star tracker v0.2 release</title><content type='html'>Wow, StarTracker v0.2 is now live.  
With new Nomination usability fixes.  Now you don't need to guess the username, and the "star" is easier to pick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-4245409278060459995?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/4245409278060459995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=4245409278060459995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4245409278060459995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4245409278060459995'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/03/star-tracker-v02-release.html' title='Star tracker v0.2 release'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-5939628067500384707</id><published>2009-03-19T20:55:00.005Z</published><updated>2009-03-19T21:18:40.362Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Using openssl to test https sites</title><content type='html'>Here is a little gem I found in &lt;i&gt;Absolute FreeBSD&lt;/i&gt; - Chapter 9 that lets you test the certificate used by a web server to start a https connection.  Basically what happens is that openssl opens a SSL connection to the web site, prints all the details of the connection and then you can enter a HTTP request as if you were connected via telnet to port 80.  Reading the output gives you a good idea of what is wrong or right with your cert.  Seeing I had to use it twice today to check our certificates I would say it is really useful. &lt;br&gt;
Here is an example of use:
&lt;pre&gt;openssl s_client -connect www.google.com:443&lt;/pre&gt;
Which yelds:
&lt;pre&gt;CONNECTED(00000003)
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
 1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQPI06ZO4Y3RtzC6GS7viYGzANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wODA1MDIxNzAyNTVaFw0w
OTA1MDIxNzAyNTVaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRcw
FQYDVQQDEw53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEAmxntXaVWr0lm23n9whx4Tk8RpYqs4pTu4+JLwAMlp5nMZeHslK6u8KeZvBDX
7YcwR81Q+a/T0/QLjUeKLuLOU5uRmX8eXPkb1umTZ+NK+M/EjAxo0ZdURw4KJDCn
gpSu3q4/v7oUxviykI42reHQvhaas15yOEnadKE//9KHge0CAwEAAaOB5zCB5DAo
BgNVHSUEITAfBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEATA2BgNVHR8E
LzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlU0dDQ0EuY3Js
MHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3Rl
LmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3dGUuY29tL3JlcG9zaXRv
cnkvVGhhd3RlX1NHQ19DQS5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUF
AAOBgQAxCmyinulUGRZomZHWQ8trtMxszLD78e6BvwArb1ASxq8CKjbBKN7FTFYg
bfU9QrkYgSCy3Vdd674yhFBFUW7N5C4qOIifUu0o//yNV7WtZK5NDg7ZPay4/mZM
FY9EUvp8PATtfzdhBP7V6bmwnv6lEWnJY9ZGgW8A2HIvgjdEwQ==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1765 bytes and written 322 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
    Session-ID: xxx
    Session-ID-ctx: 
    Master-Key: xxx
    Key-Arg   : None
    Start Time: 1237496532
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-5939628067500384707?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/5939628067500384707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=5939628067500384707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5939628067500384707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5939628067500384707'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/03/using-openssl-to-test-https-sites.html' title='Using openssl to test https sites'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-5971313635406567142</id><published>2009-03-11T15:50:00.004Z</published><updated>2009-03-11T16:46:32.307Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='freebsd'/><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><title type='text'>Absolute FreeBSD 2nd edition</title><content type='html'>In a vain attempt to learn more about FreeBSD I bought &lt;a href="http://nostarch.com/abs_bsd2.htm"&gt;Absolute FreeBSD 2nd edition&lt;/a&gt;.  I am already up to the 5th Chapter and finding it a good read.  It reads well as the author has a very conversational tone, while giving you more than enough information on the topic at hand.  He drops in jokes and honest truths, as if you were talking to him in a bar.  I imagine that it would be a bit lacking if you were a hard core Unix admin, but then I guess you wouldn't be reading the book.  

Chapters read so far:
&lt;span style="font-weight:bold;"&gt;Chapter 1 - Getting More Help&lt;/span&gt;
A very solid discussion into how to find information on the FreeBSD system in front of you.  My favorite part is the section that describes how to write an email to the BSD user groups when you need support.  I wish I could get anyone that sends me a support request to read this section before they do.  If only so they can understand why they get so many polite emails back asking for more detail than "its broken".    

&lt;span style="font-weight:bold;"&gt;Chapter 2 - Installing BSD&lt;/span&gt;
I skimmed this chapter as I already have FreeBSD installed, but will most likely go back and read it when I need to reinstall (due to human error)

&lt;span style="font-weight:bold;"&gt;Chapter 3 - Start Me Up! The Boot Process&lt;/span&gt;
This chapter was enlightening, I now have more insight into what the messages at boot time mean, and more importantly I found out that I could change the loader logo to a colour beastie.  By adding the following to /boot/loader.conf: &lt;pre style="margin-left:10px"&gt;loader_logo="beastie&lt;/pre&gt;
Its this sort of useless fact that I love, and while maybe not as important as some other configuration options, I now know that there is a loader.conf and what it does.  

&lt;span style="font-weight:bold;"&gt;Chapter 4 - Read this before you break something else! (Backup and Recovery)&lt;/span&gt;
I was ready to skip this chapter, when my eyes fell upon the section on Revision Control for config files.  This is something I have been wondering how to do this properly for a while now, so I stopped skimming and read on.  Once again this section was straight forward and explains both the whys and the hows.  No more thinking "I should really have this under version control" for me :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-5971313635406567142?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/5971313635406567142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=5971313635406567142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5971313635406567142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5971313635406567142'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/03/absolute-freebsd-2nd-edition.html' title='Absolute FreeBSD 2nd edition'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-1001320743147339058</id><published>2009-03-01T20:41:00.002Z</published><updated>2009-03-01T20:44:36.140Z</updated><title type='text'>Star Tracker v 0.1 Live</title><content type='html'>Finally I have got my act together and got star tracker released to the Civet server. 

So you can see version 0.1 at &lt;a href="http://caffeinesoftware.no-ip.org/startracker/index"&gt;http://caffeinesoftware.no-ip.org/startracker/index&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-1001320743147339058?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/1001320743147339058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=1001320743147339058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1001320743147339058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1001320743147339058'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/03/star-tracker-v-01-live.html' title='Star Tracker v 0.1 Live'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-6479609311204345420</id><published>2009-02-24T15:38:00.006Z</published><updated>2009-02-24T16:03:43.865Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Changing the length of comments for C mode</title><content type='html'>For a long time I was irked by Emacs' habit off auto wrapping my comments especially when I was adding them to the end of lines in csharp-mode.  Finally I have worked out what the problem was, after many hours of searching.

As it turns out comments in c mode have been set to auto fill, and all I had to do was adjust my &lt;span style="font-style:italic;"&gt;fill-column&lt;/span&gt; property to something large, (at the moment 200) and then it will only wrap the comment when the column length gets to 200. Genius.

Given that I don't really use auto-fill for anything else it was a simple matter of:
&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;M-x customize-variable fill-column&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Set the value and "Save for Future Sessions"&lt;/li&gt;
&lt;/ul&gt;

More info at &lt;a href="http://www.gnu.org/software/emacs/elisp/html_node/Filling.html"&gt;http://www.gnu.org/software/emacs/elisp/html_node/Filling.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-6479609311204345420?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/6479609311204345420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=6479609311204345420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6479609311204345420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6479609311204345420'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/02/changing-length-of-comments-for-c-mode.html' title='Changing the length of comments for C mode'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-4362718075760506841</id><published>2009-02-04T02:48:00.002Z</published><updated>2009-02-04T02:50:13.527Z</updated><title type='text'>Book Reviews</title><content type='html'>I have finished both new python books, but I forgot how hard it is to write book reviews.  Will try to post on them when I have re-read and taken notes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-4362718075760506841?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/4362718075760506841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=4362718075760506841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4362718075760506841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4362718075760506841'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/02/book-reviews.html' title='Book Reviews'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-4162719876404842563</id><published>2009-01-28T13:01:00.002Z</published><updated>2009-01-28T13:12:11.033Z</updated><title type='text'>A very cool idea</title><content type='html'>My python blog stream picked up &lt;a href="http://www.snakebite.org/"&gt;http://www.snakebite.org/&lt;/a&gt; today.

It is a farm of computers with lots of different OSs on it so that Python can be constantly built and made to build on them.  It is an amazing idea.  

I have always wondered how a sparse organisation, like a open source project, have the resources to build on so many platforms.  It turns out they just rely on their members to have the OSs laying around to build on.  Now Python doesn't have that problem.  Big Win.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-4162719876404842563?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/4162719876404842563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=4162719876404842563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4162719876404842563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/4162719876404842563'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/01/very-cool-idea.html' title='A very cool idea'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-6045924541862483076</id><published>2009-01-23T20:12:00.002Z</published><updated>2009-01-23T20:33:06.655Z</updated><title type='text'>Name on Patent</title><content type='html'>My company just got one of its patents through and my name is on it. &lt;a href="http://v3.espacenet.com/publicationDetails/biblio?KC=A1&amp;date=20081210&amp;NR=1999698A1&amp;DB=EPODOC&amp;locale=en_EP&amp;CC=EP&amp;FT=D"&gt;See it here&lt;/a&gt;

For the record it is: 
European Patent Application No. 07712914.6 - Image Design System in the name of Serverside Group Limited - Our Ref:  601256PEP (066371-0075)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-6045924541862483076?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/6045924541862483076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=6045924541862483076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6045924541862483076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/6045924541862483076'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/01/name-on-patent.html' title='Name on Patent'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-1185769330080954056</id><published>2009-01-19T22:02:00.003Z</published><updated>2009-01-19T22:04:14.582Z</updated><title type='text'>New Books</title><content type='html'>Amazon delivered "Expert Python Programming" and "CherryPy Essentials" today.  Once they are read reviews will be written.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-1185769330080954056?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/1185769330080954056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=1185769330080954056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1185769330080954056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1185769330080954056'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/01/new-books.html' title='New Books'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-5343525418985466195</id><published>2009-01-14T00:34:00.001Z</published><updated>2009-01-14T00:36:55.632Z</updated><title type='text'>CherryPy</title><content type='html'>I am loving &lt;a href="http://www.cherrypy.org"&gt;CherryPy&lt;/a&gt;.  I just ported my star tracker to it in about 2 hours.  Maybe I will put it up somewhere.  Or just bring it back at work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-5343525418985466195?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/5343525418985466195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=5343525418985466195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5343525418985466195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5343525418985466195'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/01/cherrypy.html' title='CherryPy'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-8274501564239137132</id><published>2009-01-11T20:46:00.002Z</published><updated>2009-01-11T20:50:23.630Z</updated><title type='text'>.emacs</title><content type='html'>Is it wrong to be becoming increasingly proud of my .emacs file?  It is still very small, but I love it.   Maybe it has something with slowly learning some lisp.  Now I have to find a good way to sync it between work and home.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-8274501564239137132?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/8274501564239137132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=8274501564239137132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8274501564239137132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8274501564239137132'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/01/emacs.html' title='.emacs'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-8490016274874615005</id><published>2009-01-07T19:38:00.008Z</published><updated>2009-01-07T20:50:44.055Z</updated><title type='text'>Running CherryPy behind Apache</title><content type='html'>&lt;p&gt;There are a couple of options on to run CherryPy behind Apache.  I have chosen to go for mod_python as the mod_rewrite runs the CherryPy server at the same time (from what I can tell) and it seems to be a little silly to run two servers at once.&lt;/p&gt;&lt;p&gt;It all comes down to the Apache config (which goes in &lt;span style="font-family:courier"&gt;/usr/local/etc/apache22/Includes/cherrypy.conf&lt;/span&gt; on my laptop) once you have mod_python installed and in your base Apache config&lt;/p&gt;&lt;p&gt;The actual configuration file for CherryPy takes the following form: 
&lt;span style="font-family:courier;font-size:9pt"&gt;&amp;lt;Location "/"&amp;gt;
    PythonPath "sys.path+['&lt;span style="color:blue;font-style:italic;"&gt;&amp;lt;path to any python modules required&amp;gt;&lt;/span&gt;']"
    SetHandler python-program
    PythonHandler cherrypy._cpmodpy::handler
    PythonOption cherrypy.setup &lt;span style="color:blue;font-style:italic"&gt;&amp;lt;python module to run&amp;gt;&lt;/span&gt;::&lt;span style="color:blue;font-style:italic"&gt;&amp;lt;function in module to run&amp;gt;&lt;/span&gt;
    PythonDebug On
&amp;lt;/Location&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;so on my system with a basic app:&lt;pre&gt;&amp;lt;Location "/"&amp;gt;
    PythonPath "sys.path+['/usr/local/www/cherrypy/']"
    SetHandler python-program
    PythonHandler cherrypy._cpmodpy::handler
    PythonOption cherrypy.setup myapp::serverless
    PythonDebug On
&amp;lt;/Location&amp;gt;&lt;/pre&gt;&lt;p&gt;My references:
&lt;a href="http://www.cherrypy.org/wiki/ModPython"&gt;The CherryPy wiki on the subject&lt;/a&gt;
&lt;a href="http://www.modpython.org/live/current/doc-html/directives.html"&gt;Mod_Python docs&lt;/a&gt;
Now just to write some code that actually makes use of it all :) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-8490016274874615005?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/8490016274874615005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=8490016274874615005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8490016274874615005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/8490016274874615005'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/01/running-cherrypy-behind-apache.html' title='Running CherryPy behind Apache'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-362391117185363781</id><published>2009-01-05T20:54:00.003Z</published><updated>2009-01-06T07:20:46.325Z</updated><title type='text'>Upgrading to FreeBSD 7.1</title><content type='html'>FreeBSD 7.1 is out (&lt;a href="http://www.freebsd.org/releases/7.1R/announce.html"&gt;see here&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-362391117185363781?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/362391117185363781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=362391117185363781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/362391117185363781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/362391117185363781'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2009/01/upgrading-to-freebsd-71.html' title='Upgrading to FreeBSD 7.1'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-1869652504446732438</id><published>2008-12-31T09:12:00.003Z</published><updated>2008-12-31T09:34:11.630Z</updated><title type='text'>57 pounds and counting</title><content type='html'>&lt;p&gt;So I am starting a new project with a friend, we have been meaning to do something for a while, but we have never got round to it.&lt;/p&gt;&lt;p&gt;There is a problem of course and that is we really don't know what we are creating, we have a few ideas (even some code) but no real direction.  Because of this we have spent a lot of time discussing how do we show value in a project which does not yet have a name.  We at least know how much we have spent on it so far.  57 pounds.  Which consists of: two lunches, coffees and beer.&lt;/p&gt;&lt;p&gt;We expect this number to grow before we get anywhere, but the concern is that how do we claw back some of this number in at least in virtual terms.  We have no ideas for now, but we are certain that we will work something out (even if it is the amount of electricity we leech from coffee shops)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-1869652504446732438?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/1869652504446732438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=1869652504446732438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1869652504446732438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1869652504446732438'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2008/12/57-pounds-and-counting.html' title='57 pounds and counting'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-1348714218882424686</id><published>2008-11-05T10:41:00.003Z</published><updated>2008-11-05T10:55:38.548Z</updated><title type='text'>Emacs Replace Carriage Return for Line Feed</title><content type='html'>I recently got a file from a main frame with some crazy use of line feeds and carriage return, thanks to &lt;a href="http://www.emacsblog.org/2007/04/30/quick-tip-dos2unix-et-al/"&gt;this blog&lt;/a&gt; it became really easy.

It comes down to replace Carriage Return (if by itself will be shown as a ^M) for Line Feed (which is the same as a ^J).  The problem is getting emacs to replace one non-printable character for another.  As it turns out &lt;span style="font-family: courier new; color: rgb(0, 153, 0);"&gt;C-q&lt;/span&gt; lets you type in a linefeed (&lt;span style="font-family: courier new; color: rgb(0, 153, 0);"&gt;C-j&lt;/span&gt;) as a quoted character.

The final steps were:
&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: courier new; color: rgb(0, 102, 0);"&gt;M-%&lt;/span&gt;  [Search and Replace]&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: courier new; color: rgb(0, 102, 0);"&gt;C-q C-m&lt;/span&gt; [search for quoted character ^M (carriage return)] &lt;/li&gt;&lt;li&gt;&lt;span style="font-family: courier new; color: rgb(0, 102, 0);"&gt;C-q C-j&lt;/span&gt; [replace with quoted character ^J (line feed)]&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: courier new; color: rgb(0, 102, 0);"&gt;!&lt;/span&gt; [replace all]&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-1348714218882424686?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/1348714218882424686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=1348714218882424686' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1348714218882424686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/1348714218882424686'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2008/11/emacs-replace-carriage-return-for-line.html' title='Emacs Replace Carriage Return for Line Feed'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5456501469780974712.post-5589642607925483544</id><published>2008-10-14T17:21:00.002+01:00</published><updated>2008-10-14T17:23:46.475+01:00</updated><title type='text'>StackOverFlow</title><content type='html'>After a while of lurking around &lt;a href="http://stackoverflow.com"&gt;Stack overflow&lt;/a&gt; I have taken the plunge and answered a question or two.  I can see why people can be addicted to it.  Much more fun than checking my email :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5456501469780974712-5589642607925483544?l=andrewcoxtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewcoxtech.blogspot.com/feeds/5589642607925483544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5456501469780974712&amp;postID=5589642607925483544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5589642607925483544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5456501469780974712/posts/default/5589642607925483544'/><link rel='alternate' type='text/html' href='http://andrewcoxtech.blogspot.com/2008/10/stackoverflow.html' title='StackOverFlow'/><author><name>Andrew Cox</name><uri>http://www.blogger.com/profile/02840216441205467003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_AA7xC2Ev5yk/SoMWc-GDOiI/AAAAAAAAAAM/iPJCH_P0vIM/S220/dsc_0573.jpg'/></author><thr:total>0</thr:total></entry></feed>
