<?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-4503826259998990392</id><updated>2011-11-27T16:01:37.305-08:00</updated><category term='dbapi'/><category term='pyodbc'/><category term='s3'/><category term='tsql'/><category term='decorators'/><category term='64bit'/><category term='t2'/><category term='googlecalendar'/><category term='eeepc'/><category term='dvd'/><category term='odbc'/><category term='sqldb'/><category term='mssql'/><category term='firefox'/><category term='stackoverflow'/><category term='mutt'/><category term='sqlserver'/><category term='git'/><category term='edendb'/><category term='python'/><category term='recommended'/><category term='prettyprinting'/><category term='windows'/><category term='productivity'/><category term='review'/><category term='systemadministration'/><category term='wsh'/><category term='database'/><category term='vcd'/><category term='svcd'/><category term='linux'/><category term='xml'/><category term='commandline'/><category term='wrapper'/><category term='java'/><category term='onlinestorage'/><category term='howto'/><category term='googletalk'/><category term='programming'/><category term='sqlite'/><category term='formatting'/><category term='web2py'/><category term='activedirectory'/><category term='concurrency'/><category term='gui'/><category term='sql'/><category term='xvcd'/><category term='ubuntu'/><category term='cheatsheet'/><category term='t3'/><category term='svn'/><category term='git-svn'/><title type='text'>Paul D. Eden</title><subtitle type='html'>This is my professional notebook.  Here you will find all the things that I couldn't find by a quick google search.  So, I took the time to research, experiment, try, fail, try again, etc until I had what I wanted.  And after all that work, you better believe I am going to write it down!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.pauldeden.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-5424396535939467788</id><published>2011-06-17T14:53:00.000-07:00</published><updated>2011-06-17T14:53:35.100-07:00</updated><title type='text'>How to fix the permGen memory error in Intellij 10.5</title><content type='html'>If you were like me, you were working on a large web-based java project and had intellij configured to start jetty for you.&lt;br /&gt;&lt;br /&gt;All was well until you tried to start jetty using the Intellij Run or Debug functionality and it errors out every time due to a permgen memory error. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/1451648/permgen-problems-with-lift-and-jetty"&gt;Google showed quickly&lt;/a&gt; that the problem was a memory configuration of the JVM, but how to change that configuration was not quickly apparent to me.&lt;br /&gt;&lt;br /&gt;So this is how you do it.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Find the JVM memory values you want to change from the stackoverflow.com link above. &amp;nbsp;I used&amp;nbsp;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px;"&gt;-XX:MaxPermSize=256M which worked in my case, YMMV.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Enter that configuration into the Run/Debug Configurations page in the VM parameters field.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 12px; line-height: 16px;"&gt;Voilà!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-5424396535939467788?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/5424396535939467788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=5424396535939467788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5424396535939467788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5424396535939467788'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2011/06/how-to-fix-permgen-memory-error-in.html' title='How to fix the permGen memory error in Intellij 10.5'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-6609152041769069591</id><published>2009-09-16T10:47:00.000-07:00</published><updated>2009-09-16T11:10:44.617-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='git-svn'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Merging a branch with git-svn and still retaining the association with the previous svn path</title><content type='html'>git-svn uses commit messages to tie the commits in a particular local branch to its corresponding SVN path, which works great most of the time.&lt;br /&gt;&lt;br /&gt;It causes a problem though when you want to merge branches in git and have the merged results be put back into svn. &amp;nbsp;I wanted to do this because the git merge functionality is much easier to use, IMHO, than subversion's merge command.&lt;br /&gt;&lt;br /&gt;The problem is that when you do a git merge of two remote svn folders in a local git branch the commit message path changes from the previous path to the path of the source of the merge.&lt;br /&gt;&lt;br /&gt;So, for instance, if you want your trunk in svn to match a branch (let's say branch 1.1.1), you could do the following in a git-svn checked out repo (Assuming you have already done git svn clone -s...)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;git checkout trunk&lt;br /&gt;git checkout -b localtrunk&lt;/pre&gt;You are now in the local git branch 'localtrunk' which is a copy of the trunk path of your svn repository.&lt;br /&gt;Now, let's say you want to merge changes from branch 1.1.1 into trunk, you could do this...&lt;br /&gt;&lt;pre&gt;git merge 1.1.1&lt;/pre&gt;If the merge is successful there is still a problem.  The problem is that now if you do a git svn dcommit to push the merged changes into trunk they will not go into trunk.  They will go into the 1.1.1 branch!  Bummer.  If you read the man page for git-merge you might say, "Hey, there is a --no-commit option to git-merge!  That could fix the problem."  In theory you would be right and I thought the same thing, but after many attempts (on Ubuntu 9.04) it would always commit after merging.  Bummer!  --no-log didn't work either.  So, after a lot of searching, I found a way to do this, but it only works if you don't have a lot of commits to replicate.&lt;br /&gt;Instead of running git merge as above do this.  For each commit do...&lt;br /&gt;&lt;pre&gt;git cherry-pick -e (SHA1 hash of the commit to merge from branch 1.1.1)&lt;/pre&gt;You can get those hashes from git log, after doing git checkout 1.1.1 in another terminal.&lt;br /&gt;&lt;br /&gt;Each time you do it delete the line in the commit message that starts with git-svn-id: (and the line after it, but I don't think deleting that 2nd line is technically necessary)&lt;br /&gt;&lt;br /&gt;Now do...&lt;br /&gt;&lt;pre&gt;git svn dcommit (to send the merged changes to svn while keeping your local git branch pointing to trunk!)&lt;br /&gt;git svn fetch&lt;br /&gt;git svn rebase &lt;/pre&gt;&lt;br /&gt;Check that your localbranch branch and your 1.1.1 branch are the same with...&lt;br /&gt;&lt;pre&gt;git diff 1.1.1&lt;/pre&gt;&lt;br /&gt;If there is no output they are identical.&lt;br /&gt;&lt;br /&gt;Check that your localbranch branch is still pointing to trunk by doing...&lt;br /&gt;&lt;pre&gt;git log&lt;/pre&gt;&lt;br /&gt;and verifying the git-svn-id: lines for the last commits (the ones at the top) still point to trunk@(svn commit number)&lt;br /&gt;&lt;br /&gt;All done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-6609152041769069591?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/6609152041769069591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=6609152041769069591' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6609152041769069591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6609152041769069591'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/09/merging-branch-with-git-svn-and-still.html' title='Merging a branch with git-svn and still retaining the association with the previous svn path'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-6501325350158470650</id><published>2009-06-30T10:42:00.000-07:00</published><updated>2009-06-30T10:42:21.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='decorators'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>How to easily fork python code into separate processes via a decorator</title><content type='html'>Do you have a bit of python code that is taking a long time, and you don't want to wait for it to finish?&lt;br /&gt;&lt;br /&gt;The blogger here made an excellent way of forking pieces of your code into separate processes using a decorator.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://buffis.com/2008/01/09/easy-forking-of-processes-in-python-using-generators/"&gt;http://buffis.com/2008/01/09/easy-forking-of-processes-in-python-using-generators/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It doesn't get easier than this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-6501325350158470650?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/6501325350158470650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=6501325350158470650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6501325350158470650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6501325350158470650'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/06/how-to-easily-fork-python-code-into.html' title='How to easily fork python code into separate processes via a decorator'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-7645702083935958037</id><published>2009-06-19T03:17:00.000-07:00</published><updated>2009-06-19T03:17:37.380-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>How to get the firefox java plugin working in Ubuntu 8.10 64bit</title><content type='html'>The default java plugin for Firefox on Ubuntu 8.10 is not fully functional on 64 bit machines.&amp;nbsp; It works for some applets, but not all.&lt;br /&gt;&lt;br /&gt;This blogger took the time to figure out how to replace it with Sun's plugin. Thank you for sharing!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tp0x45.blogspot.com/2009/03/openjdk-issue-in-ubuntu-810-64-bit.html"&gt;http://tp0x45.blogspot.com/2009/03/openjdk-issue-in-ubuntu-810-64-bit.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-7645702083935958037?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/7645702083935958037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=7645702083935958037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/7645702083935958037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/7645702083935958037'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/06/how-to-get-firefox-java-plugin-working.html' title='How to get the firefox java plugin working in Ubuntu 8.10 64bit'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-8118688788504611041</id><published>2009-04-17T11:14:00.000-07:00</published><updated>2009-06-04T15:57:43.751-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activedirectory'/><category scheme='http://www.blogger.com/atom/ns#' term='wsh'/><category scheme='http://www.blogger.com/atom/ns#' term='systemadministration'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Use Python for Microsoft Windows Login and Group Policy Scripts</title><content type='html'>&lt;b&gt;Background&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Microsoft's Active Directory provides a way to distribute msi files and execute scripts on login, logout, shutdown etc.  This makes it very easy to distribute a script to be run on login for a group of machines registered to Active Directory.&lt;br /&gt;&lt;br /&gt;The type of scripts that can be run are .bat files, JScript or VBScript files via Windows Script Host (WSH.  It's executables are wscript.exe (windows version) and cscript.exe (command-line version)), or windows executables (exe files).  While those options are not too bad, I much prefer python for programming so here we are going to outline how to use python for these scripts.&lt;br /&gt;&lt;br /&gt;Tim Golden has written some &lt;a href="http://timgolden.me.uk/python/index.html"&gt;excellent wrapper code&lt;/a&gt; for python to make programming for Active Directory, WMI, shell work (like creating shortcuts) amoung other windows-specific things a pleasure.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Instructions&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get the &lt;a href="http://www.activestate.com/activepython/"&gt;Python MSI&lt;/a&gt; from Active State.  We could have used the msi from &lt;a href="http://python.org/"&gt;python.org&lt;/a&gt; but we would have had installed the windows specific stuff that Mark Hammond wrote (&lt;a href="http://sourceforge.net/projects/pywin32/"&gt;pywin32&lt;/a&gt; Windows Python Extensions) separately.  And since I want to distribute this with Actirve Directory I would have had to convert the pywin32 package to an MSI as it is distributed as an exe.  I tried compiling the source distribution to an msi with distutils (i.e.,&lt;br /&gt;&lt;code&gt;python setup.py bdist_msi&lt;/code&gt;&lt;br /&gt;) but the build failed because I did not have Visual Studio 2003 installed (I was building python 2.5).  I do not want to buy or install Visual Studio (especially the old 2003 version) so I was happy that Active State packaged it all up in an msi already and distributed it for free!  Thank you Active State! &lt;/li&gt;&lt;li&gt;If you would like to install Tim Golden's wrapper code via Active Directory as well (highly recommended) it is easy since he provided the setup.py distutils scripts for each package.  Just download the zip files you want from &lt;a href="http://timgolden.me.uk/python/index.html"&gt;his site&lt;/a&gt; and then for each one run&lt;br /&gt;&lt;code&gt;python setup.py bdist_msi&lt;/code&gt;&lt;br /&gt;and an msi will be created for you.  Thank you Tim!&lt;br /&gt;&lt;/li&gt;&lt;li&gt; You can distribute any python code that you want via Active Directory this way.  Just make an msi of your code by &lt;a href="http://docs.python.org/distutils/setupscript.html"&gt;writing a setup.py script&lt;/a&gt; and then running&lt;br /&gt;&lt;code&gt;python setup.py bdist_msi&lt;/code&gt;&lt;br /&gt;.  Distutils makes it easy! &lt;/li&gt;&lt;li&gt;Then, distribute those msi files with Active Directory Group Policy.  I'll leave that to an exercise for the reader, but here is a &lt;a href="http://support.microsoft.com/kb/816102"&gt;good starting point&lt;/a&gt;.  For some reason, I had to reboot a couple of times on some workstations for them to get the msi files installed.&lt;/li&gt;&lt;li&gt;Now your setup work is done and your workstations (or servers) have python installed along with pywin32 and optionally some nice wrapper code.  From here you can write python scripts for those hosts that will be able to interact with active directory, WMI, COM, etc.  &lt;/li&gt;&lt;li&gt; Now write your python login scripts.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;To setup your login scripts to run at login you have a choice.  First, you could compile your python code into exe files.  You can do that without a lot of effort using &lt;a href="http://www.py2exe.org/"&gt;py2exe&lt;/a&gt; (a distutils extension).  This route adds a separate step (conversion to exe file) and every time you make a new exe it copies the whole python interpreter and other code with it so the exe files are large.  This is a good option if you don't want to install python on the hosts though.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Windows Script Host (WSH) integration is another good option (I won't go into calling the python intepreter on your scripts via a bat file, but that is also an option).  This way cscript.exe or wscript.exe runs the python intepreter which runs your script.  Here's what you need to do to set this up.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First, run C:\Python25\Lib\site-packages\win32comext\axscript\client\pyscript.py (adjust for your installed version of python) on each host.  This registers python as a language that Windows Script Host can run (called pyscript).  Once this is done your python files (saved with the .pys extension can be used as Windows login scripts!  You could put this command in a MSI file and distribute it with python so that when your login script runs it will already have been done.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There is one registry entry that needs to be added I have found in experimenting and below is some jscript code that does it (put it in a file in with a .js extension that you can publish it via a Group Policy in the Computer section of the policy to run on startup of the machine (best not done on logon to make sure it get's done before your python scripts run))&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;var objShell = WScript.CreateObject("WScript.Shell");&lt;br /&gt;objShell.RegWrite("HKEY_CLASSES_ROOT\\pysFile\\shell\\open\\command\\", "\"C:\\WINDOWS\\system32\\wscript.exe\" \"%1\"", "REG_SZ");&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lastly setup your new shiny .pys script to run at login user the User side of the Active Directory Group Policy Object.  Here is a &lt;a href="http://www.computerperformance.co.uk/Logon/logon_script_assign.htm"&gt;site that shows you how&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.informit.com/guides/content.aspx?g=windowsserver&amp;amp;seqNum=183"&gt;This site&lt;/a&gt; has a lot of good information as well, but I have found that you don't need to do all the steps it outlines because the msi files above do most of it.  The steps above worked for me.&lt;/li&gt;&lt;/ul&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/4503826259998990392-8118688788504611041?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/8118688788504611041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=8118688788504611041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8118688788504611041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8118688788504611041'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/04/use-python-for-microsoft-windows-login.html' title='Use Python for Microsoft Windows Login and Group Policy Scripts'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-5169719408020199742</id><published>2009-01-30T13:30:00.000-08:00</published><updated>2009-01-30T13:36:17.615-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrapper'/><category scheme='http://www.blogger.com/atom/ns#' term='edendb'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='dbapi'/><title type='text'>edendb - A thin, flexible and fast python DBAPI wrapper for those who like SQL but don't like to type</title><content type='html'>If you are like me, you have looked for ways to make connecting to database from your python code easier and less painful.&lt;br /&gt;&lt;br /&gt;For a long time I looked into the myriad ORMs available for python and they all seemed to be overkill for me.  I don't mind using SQL.  In fact I like it, but when putting it into python code and using the DBAPI I found my productivity was declining.  I needed something to make executing sql commands faster and easier from python code.  I needed something abstracted away from the DBAPI, but that also allowed me to execute straight sql if needed and easily handle all the possible values that could be returned.&lt;br /&gt;&lt;br /&gt;So, I wrote a python library to do it.&lt;br /&gt;&lt;br /&gt;Meet &lt;a href="http://code.google.com/p/edendb/"&gt;edendb&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Check it out and let me know what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-5169719408020199742?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/5169719408020199742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=5169719408020199742' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5169719408020199742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5169719408020199742'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/01/edendb-thin-flexible-and-fast-python.html' title='edendb - A thin, flexible and fast python DBAPI wrapper for those who like SQL but don&apos;t like to type'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-6831408082433021729</id><published>2009-01-29T15:23:00.000-08:00</published><updated>2009-01-29T15:24:32.723-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='googletalk'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='recommended'/><title type='text'>Google Talk on Ubuntu Linux</title><content type='html'>Chat, Voip calls, system tray, Excellent!&lt;br /&gt;&lt;br /&gt;http://jamesselvakumar.wordpress.com/2008/11/17/good-news-for-google-talk-users-on-linux/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-6831408082433021729?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/6831408082433021729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=6831408082433021729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6831408082433021729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6831408082433021729'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/01/google-talk-on-ubuntu-linux.html' title='Google Talk on Ubuntu Linux'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-8591083851006001857</id><published>2009-01-22T15:13:00.000-08:00</published><updated>2009-01-22T15:16:49.138-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutt'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='eeepc'/><title type='text'>How to configure mutt to use Gmail as smtp and imap server</title><content type='html'>The following helped me the most when configuring this.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shreevatsa.wordpress.com/2007/07/31/using-gmail-with-mutt-the-minimal-way/"&gt;http://shreevatsa.wordpress.com/2007/07/31/using-gmail-with-mutt-the-minimal-way/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The only thing I changed was&lt;br /&gt;&lt;br /&gt;set postponed =~/Mail/Drafts&lt;br /&gt;&lt;br /&gt;so that I could write messages offline and then send them when I get back to an internet connection.&lt;br /&gt;&lt;br /&gt;I can't wait to try this out on my Asus Eeepc 2G Surf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-8591083851006001857?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/8591083851006001857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=8591083851006001857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8591083851006001857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8591083851006001857'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/01/how-to-configure-mutt-to-use-gmail-as.html' title='How to configure mutt to use Gmail as smtp and imap server'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-3730171790274955586</id><published>2009-01-20T14:22:00.000-08:00</published><updated>2009-01-20T14:36:41.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='commandline'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='googlecalendar'/><title type='text'>Creating an application to insert events into Google Calendar</title><content type='html'>Here is how you can create a quick command-line application in python that will post events into Google Calendar.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get a Google Calendar account (go &lt;a href="https://www.google.com/accounts/ServiceLogin?service=cl&amp;amp;passive=true&amp;amp;nui=1&amp;amp;continue=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender&amp;amp;followup=http%3A%2F%2Fwww.google.com%2Fcalendar%2Frender"&gt;here&lt;/a&gt; to get one).&lt;/li&gt;&lt;li&gt;Install the python gdata client which you can get from &lt;a href="http://code.google.com/p/gdata-python-client/"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Find out the url to use to post to your calendars.  To do that just go to this &lt;a href="http://www.google.com/calendar/feeds/default/owncalendars/full"&gt;url&lt;/a&gt; and then view the source of the xml document that it returns to you.  Each of your google calendars will be listed with the url that you need to use for each one.  Remove the 'http://www.google.com' part of the url when you use it in your code.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Write up some code to post with.  Here is an example.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;import gdata.calendar.service&lt;br /&gt;import gdata.calendar&lt;br /&gt;import atom&lt;br /&gt;&lt;br /&gt;def add_to_gcal(item):&lt;br /&gt; cal_client = gdata.calendar.service.CalendarService()&lt;br /&gt; cal_client.email = 'youremail@gmail.com'&lt;br /&gt; cal_client.password = 'yourpassword'&lt;br /&gt; cal_client.ProgrammaticLogin()&lt;br /&gt;&lt;br /&gt; event = gdata.calendar.CalendarEventEntry()&lt;br /&gt; event.content = atom.Content(text=item)&lt;br /&gt; event.quick_add = gdata.calendar.QuickAdd(value='true');&lt;br /&gt;&lt;br /&gt; new_event = cal_client.InsertEvent(event, 'url from step 3 above')&lt;br /&gt;&lt;br /&gt;add_to_gcal('Dentist Appt today at 4pm')&lt;br /&gt;print "Your event was created"&lt;br /&gt;&lt;/pre&gt;There you have it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-3730171790274955586?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/3730171790274955586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=3730171790274955586' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/3730171790274955586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/3730171790274955586'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/01/creating-application-to-insert-events.html' title='Creating an application to insert events into Google Calendar'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-1808706862969936939</id><published>2009-01-20T14:19:00.000-08:00</published><updated>2009-01-20T14:21:56.675-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='commandline'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='prettyprinting'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Pretty Printing XML in Ubuntu on the command line</title><content type='html'>Ever wanted a quick and easy way to reformat xml so that it is more readable?&lt;br /&gt;&lt;br /&gt;In ubuntu just do this.&lt;br /&gt;&lt;br /&gt;sudo aptitude install xml-twig-tools&lt;br /&gt;&lt;br /&gt;Then you have a nice little program called xml_pp with which you can easily format xml documents.&lt;br /&gt;&lt;br /&gt;Use it like this.&lt;br /&gt;&lt;br /&gt;xml_pp document.xml | less&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-1808706862969936939?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/1808706862969936939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=1808706862969936939' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/1808706862969936939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/1808706862969936939'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/01/pretty-printing-xml-in-ubuntu-on.html' title='Pretty Printing XML in Ubuntu on the command line'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-3088202931765932646</id><published>2009-01-17T10:23:00.000-08:00</published><updated>2009-01-17T10:40:06.067-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Gears 64 Bit in Unbuntu Intrepid (8.10)</title><content type='html'>Gears (formally called Google Gears) does not (yet!) officially support 64 bit builds for linux/Ubuntu.&lt;br /&gt;&lt;br /&gt;But, I have found that there has been significant work in the open source community to overcome this shortcoming with unofficial builds/patches.&lt;br /&gt;&lt;br /&gt;Here are some links to background.&lt;br /&gt;- &lt;a href="http://groups.google.com/group/gears-users/browse_thread/thread/4584842dd14a4882?pli=1"&gt;http://groups.google.com/group/gears-users/browse_thread/thread/4584842dd14a4882?pli=1&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://code.google.com/p/gears/issues/detail?id=335"&gt;http://code.google.com/p/gears/issues/detail?id=335&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the link to the one that work for me.&lt;br /&gt;- &lt;a href="http://dev.laptop.org/%7Ejoel/gears/"&gt;http://dev.laptop.org/~joel/gears/&lt;/a&gt;&lt;br /&gt; - I used the latest version as of this writing which is gears-linux-opt-0.5.11+r3162_FIREFOX3_ONLY.xpi&lt;br /&gt;- Works in Kubuntu 8.10 Intrepid with Firefox 3&lt;br /&gt;- When you go to a page that has Gears capability, just try to enable and click the install button (even though it is already installed) and it will skip the installation and enable gears for that page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-3088202931765932646?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/3088202931765932646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=3088202931765932646' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/3088202931765932646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/3088202931765932646'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/01/gears-64-bit-in-unbuntu-intrepid-810.html' title='Gears 64 Bit in Unbuntu Intrepid (8.10)'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-5285420231579643221</id><published>2009-01-17T10:18:00.000-08:00</published><updated>2009-01-17T10:30:51.985-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 64bit</title><content type='html'>&lt;a href="http://www.goodwillaz.org/"&gt;My Employer&lt;/a&gt; just gave me a new laptop to use with a shiny dual core, 64bit processor!&lt;br /&gt;&lt;br /&gt;I installed Ubuntu 8.10 in both 32 bit and 64 bit versions and played with each just to get a feel of which is faster and to see if 64bit would be more trouble than it was worth.&lt;br /&gt;&lt;br /&gt;I have to say that I DO notice a difference in speed in the 64 bit version.&lt;br /&gt;- This may be only the &lt;a href="http://en.wikipedia.org/wiki/Placebo"&gt;placebo affect&lt;/a&gt;, but I don't care, it feels faster!&lt;br /&gt;&lt;br /&gt;The only downside I have seen to it is there are a few applications that are just not yet available in 64 bit versions.&lt;br /&gt;- The most important of which for me is Gears (formally called Google Gears) as I like to use a few key offline applications (read &lt;a href="http://www.rmilk.com/"&gt;Remember The Milk&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Next post I'll show you how I got around the gears problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-5285420231579643221?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/5285420231579643221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=5285420231579643221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5285420231579643221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5285420231579643221'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2009/01/ubuntu-64bit.html' title='Ubuntu 64bit'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-2969756989223004351</id><published>2008-12-31T11:51:00.000-08:00</published><updated>2008-12-31T12:06:35.933-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='t3'/><category scheme='http://www.blogger.com/atom/ns#' term='web2py'/><category scheme='http://www.blogger.com/atom/ns#' term='t2'/><category scheme='http://www.blogger.com/atom/ns#' term='cheatsheet'/><title type='text'>T2/T3 web2py cheat sheet</title><content type='html'>I wanted a quick reference to the new, high-level web2py functionality that was added in the T2 plugin and the T3 super-powered wiki application.&lt;br /&gt;&lt;br /&gt;Here is what I came up with.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dl.getdropbox.com/u/169957/t2_t3_cheatsheet_0_9_0.pdf"&gt;http://dl.getdropbox.com/u/169957/t2_t3_cheatsheet_0_9_0.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-2969756989223004351?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/2969756989223004351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=2969756989223004351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/2969756989223004351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/2969756989223004351'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/12/t2t3-web2py-cheat-sheet.html' title='T2/T3 web2py cheat sheet'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-8976709202466556696</id><published>2008-12-29T20:29:00.000-08:00</published><updated>2009-09-02T17:27:17.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pyodbc'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='odbc'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='sqldb'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlserver'/><title type='text'>How to setup pyodbc to connect to MSSQL from ubuntu linux</title><content type='html'>&lt;a href="http://code.google.com/p/pyodbc/"&gt;Pyodbc&lt;/a&gt; is a great python sql db 2.0 interface to odbc.  It is a mature and well written library.&lt;br /&gt;&lt;br /&gt;It's also a little hard to setup on linux due to all the pieces involved, but never fear, here are the steps on Ubuntu 8.04.   The following will show you how to setup the dsn-less setup.  This way you don't have to setup DSNs for each connection.  Thanks Guillermo for the tip.&lt;br /&gt;&lt;br /&gt;sudo aptitude install unixodbc unixodbc-dev freetds-dev tdsodbc python-dev&lt;br /&gt;&lt;br /&gt;Change /etc/odbcinst.ini to&lt;br /&gt;&lt;br /&gt;[FreeTDS]&lt;br /&gt;Description = TDS driver (Sybase/MS SQL)&lt;br /&gt;Driver      = /usr/lib/odbc/libtdsodbc.so&lt;br /&gt;Setup       = /usr/lib/odbc/libtdsS.so&lt;br /&gt;CPTimeout   =&lt;br /&gt;CPReuse     =&lt;br /&gt;&lt;br /&gt;Now unixodbc and freetds are setup.&lt;br /&gt;&lt;br /&gt;On to pyodbc itself.&lt;br /&gt;&lt;br /&gt;Download the current version of &lt;a href="http://code.google.com/p/pyodbc/"&gt;pyodbc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unzip the file.&lt;br /&gt;&lt;br /&gt;Do a&lt;br /&gt;&lt;br /&gt;sudo python setup.py install&lt;br /&gt;&lt;br /&gt;All done.&lt;br /&gt;&lt;br /&gt;Test it with&lt;br /&gt;&lt;br /&gt;python&lt;br /&gt;&gt;&gt;&gt; import pyodbc&lt;br /&gt;&gt;&gt;&gt; conn = pyodbc.connect("DRIVER={FreeTDS};SERVER=dns_or_ip_of_server;UID=username;PWD=password;DATABASE=database_name")&lt;br /&gt;&lt;br /&gt;No errors and it is installed and working!&lt;br /&gt;&lt;br /&gt;More details &lt;a href="http://www.unixodbc.org/doc/FreeTDS.html#Configuration"&gt;here&lt;/a&gt; and &lt;a href="http://freetds.org/userguide/dsnless.htm"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-8976709202466556696?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/8976709202466556696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=8976709202466556696' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8976709202466556696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8976709202466556696'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/12/how-to-setup-pyodbc-to-connect-to-mssql.html' title='How to setup pyodbc to connect to MSSQL from ubuntu linux'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-1163723348738898272</id><published>2008-12-29T07:25:00.000-08:00</published><updated>2008-12-29T07:27:04.969-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SQLite GUI Linux</title><content type='html'>Looking for a GUI for sqlite?&lt;br /&gt;&lt;br /&gt;Want it to run on Linux? Ubuntu?&lt;br /&gt;&lt;br /&gt;Try &lt;a href="http://sqlitebrowser.sourceforge.net/"&gt;sqlitebrowser&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's in the latest ubuntu repos so just run.&lt;br /&gt;&lt;br /&gt;sudo apt-get install sqlitebrowser&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-1163723348738898272?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/1163723348738898272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=1163723348738898272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/1163723348738898272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/1163723348738898272'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/12/sqlite-gui-linux.html' title='SQLite GUI Linux'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-5082987776453684075</id><published>2008-12-24T14:24:00.001-08:00</published><updated>2008-12-24T14:25:38.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='tsql'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlserver'/><title type='text'>How to make a copy of a Table via a TSQL command in Sql Server</title><content type='html'>SELECT * INTO &amp;lt;newtablename&amp;gt; FROM &amp;lt;oldtablename&amp;gt;;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-5082987776453684075?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/5082987776453684075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=5082987776453684075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5082987776453684075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5082987776453684075'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/12/how-to-make-copy-of-table-via-tsql.html' title='How to make a copy of a Table via a TSQL command in Sql Server'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-5231621704627652384</id><published>2008-12-24T06:28:00.000-08:00</published><updated>2008-12-24T06:34:43.956-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xvcd'/><category scheme='http://www.blogger.com/atom/ns#' term='vcd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='dvd'/><category scheme='http://www.blogger.com/atom/ns#' term='svcd'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>How to create a DVD/VCD/SVCD/XVCD slideshow on linux</title><content type='html'>I did this at work for some co-workers with lots of NASA pictures.&lt;br /&gt;&lt;br /&gt;Make mpeg files that are appropriate for the standard you are using (vcd, svcd, xvcd (not recommended for compatibility with dvd players, but good quality), dvd, etc).&lt;br /&gt;- Use digikam to do it.&lt;br /&gt;- Tools -&amp;gt; Create Mpeg Slideshow&lt;br /&gt;- use NTSC video type for compatibility with US DVD players&lt;br /&gt;- This takes a LONG time&lt;br /&gt;&lt;br /&gt;Burn the mpeg files with k3b using the video vcd (works for xvcd and svcd as well) or dvd project setup.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-5231621704627652384?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/5231621704627652384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=5231621704627652384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5231621704627652384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5231621704627652384'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/12/how-to-create-dvdvcdsvcdxvcd-slideshow.html' title='How to create a DVD/VCD/SVCD/XVCD slideshow on linux'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-2939345642500499136</id><published>2008-12-11T06:49:00.001-08:00</published><updated>2008-12-11T06:52:13.465-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stackoverflow'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Stackoverflow.com update</title><content type='html'>After having used Stackoverflow.com for awhile I must say that I am impressed.&lt;br /&gt;&lt;br /&gt;I always thought that having a forum specifically for computer programmers would be a good idea.&lt;br /&gt;But, I am VERY impressed with the implementation.&lt;br /&gt; - The site has an incredible following&lt;br /&gt; - The answers come very quickly and are almost always relevant and helpful&lt;br /&gt; - It's almost faster to ask a question there and get responses than to search google and read through the results even when google gives you the correct answer.&lt;br /&gt;&lt;br /&gt;Highly recommended for software developers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-2939345642500499136?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/2939345642500499136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=2939345642500499136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/2939345642500499136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/2939345642500499136'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/12/stackoverflowcom-update.html' title='Stackoverflow.com update'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-462714965746559278</id><published>2008-10-09T16:21:00.000-07:00</published><updated>2008-10-09T16:33:11.675-07:00</updated><title type='text'>Sarah's New Book - My Favorite</title><content type='html'>&lt;p&gt;My beautiful and authorily-blessed wife Sarah has just published &lt;a href="http://www.amazon.com/Price-Paid-Sarah-M-Eden/dp/144042750X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1223595041&amp;amp;sr=1-1"&gt;her first book on Amazon.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;It isn't the first book she has published (she published quite a few on lulu.com previously), but we are both excited about this one being published on Amazon because of the huge user base that Amazon has.&lt;/p&gt;&lt;p&gt;This last book; called, "The Price Paid" is a Ghost Story/Romance set in Whales during the Recency Era.  &lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;u&gt;It is my favorite of her books so far!&lt;/u&gt;&lt;/em&gt;&lt;em&gt;  &lt;/em&gt;She has written some excellent books before, but I like this one the best because it is so hard to figure out the ending.  Anyone who has read a couple of romance books (I don't read a lot of them mind you, actually just Sarah's, but she does read a lot of the clean ones and she has given me the lowdown) knows that the plot is basically the same in all of them.  Two people meet, their is something that comes between them, that something is resolved and then they are united and there is a happy ending.  I love the plot line.  Happy endings are my thing.  But this one has such a perplexing twist that you have a really hard time figuring out the end.  &lt;/p&gt;&lt;p&gt;Highly Recommended.&lt;/p&gt;&lt;p&gt;Check it out here.   &lt;a href="http://www.amazon.com/Price-Paid-Sarah-M-Eden/dp/144042750X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1223595041&amp;amp;sr=1-1"&gt;The Price Paid by Sarah M. Eden&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-462714965746559278?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/462714965746559278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=462714965746559278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/462714965746559278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/462714965746559278'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/10/sarahs-new-book-my-favorite.html' title='Sarah&apos;s New Book - My Favorite'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-5192065951739333691</id><published>2008-10-09T08:21:00.001-07:00</published><updated>2008-10-09T08:24:44.323-07:00</updated><title type='text'>Stackoverflow.com</title><content type='html'>&lt;p&gt;I have been following the development of&lt;a href="http://stackoverflow.com/"&gt; http://stackoverflow.com&lt;/a&gt; for a while now.  &lt;br /&gt;It is a joint effort between Joel (of Joel on Software fame) and Jeff Atwood (author of the popular Coding Horror blog).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I had not posted a question until today and I must say that I am pleasantly surprised how helpful it is.&lt;/p&gt;&lt;p&gt;I posted &lt;a href="http://stackoverflow.com/questions/187621/how-to-make-a-python-command-line-program-autocomplete-arbitrary-things-not-int"&gt;this question&lt;/a&gt; and then within minutes I received two excellent and different responses. &lt;/p&gt;&lt;p&gt;I will definitely be using this website more often.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-5192065951739333691?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/5192065951739333691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=5192065951739333691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5192065951739333691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5192065951739333691'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/10/stackoverflowcom.html' title='Stackoverflow.com'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-7305435160863708832</id><published>2008-10-09T07:58:00.001-07:00</published><updated>2008-10-09T07:59:29.169-07:00</updated><title type='text'>My Book Wishlist</title><content type='html'>For those of you who are curious, or would like to give me a present, here for your perusal is the &lt;a href="http://docs.google.com/Doc?id=dc5xwrxt_120dzdzj5gt"&gt;list of books I would love to read&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-7305435160863708832?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/7305435160863708832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=7305435160863708832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/7305435160863708832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/7305435160863708832'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/10/for-those-of-you-who-are-curious-or.html' title='My Book Wishlist'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-8718650294930204288</id><published>2008-10-09T07:30:00.000-07:00</published><updated>2008-10-09T07:32:10.406-07:00</updated><title type='text'>s3 Pricing drops</title><content type='html'>Just when I thought I had the cheapest and best online storage available, &lt;a href="http://aws.amazon.com/s3/#pricing"&gt;Amazon dropped their pricing on S3&lt;/a&gt;.  Granted, I won't see much of a price change because I don't store TB of information, but man, I like how this is going.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-8718650294930204288?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/8718650294930204288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=8718650294930204288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8718650294930204288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/8718650294930204288'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/10/s3-pricing-drops.html' title='s3 Pricing drops'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-5947422298892118912</id><published>2008-10-06T09:42:00.000-07:00</published><updated>2008-10-06T09:43:36.045-07:00</updated><title type='text'>Python Web Frameworks and When I Use Them</title><content type='html'>&lt;p&gt;Here is &lt;a href="http://docs.google.com/Doc?id=dc5xwrxt_119ffhfxkdh"&gt;my take&lt;/a&gt; on all the myriad python web development frameworks available.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-5947422298892118912?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/5947422298892118912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=5947422298892118912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5947422298892118912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/5947422298892118912'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/10/python-web-frameworks-and-when-i-use.html' title='Python Web Frameworks and When I Use Them'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-4895995754033379610</id><published>2008-10-06T09:27:00.000-07:00</published><updated>2008-10-06T09:36:08.471-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='onlinestorage'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='s3'/><title type='text'>Online Storage AND SYNCING</title><content type='html'>After creating my own system for syncing my documents to Amazon s3 (using the great s3cmd (python version) and optionally git) I happened upon a nice alternative.&lt;br /&gt;- For me, I don't use it because what I have works great and I get some sick satisfaction from paying people for the services they give me.&lt;br /&gt; - But I get even more satisfaction from not paying a lot.&lt;br /&gt;   - My last month bill for Amazon S3 was 20 cents.  :-)&lt;br /&gt;&lt;br /&gt;Anyway, the nice alternative is dropbox.&lt;br /&gt;- &lt;a href="http://www.getdropbox.com"&gt;http://www.getdropbox.com&lt;/a&gt;&lt;br /&gt;- First 2 GB free&lt;br /&gt;- Automatically!, and quickly, syncs anything you put in the dropbox folder on your computer to all the computers on which you have dropbox installed!&lt;br /&gt;- Made with Python (I snooped under the hood a little to find this out) which is a plus in my book, not because I can change the code (they didn't include the source, and yes I know you can reverse engineer python optcodes, but I don't want to and it is probably against their terms of service), but because this frees them up to develop new features and fix bugs very quickly.&lt;br /&gt;- Highly recommended!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-4895995754033379610?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/4895995754033379610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=4895995754033379610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/4895995754033379610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/4895995754033379610'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/10/online-storage-and-syncing.html' title='Online Storage AND SYNCING'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-6636197601257248981</id><published>2008-07-17T07:40:00.001-07:00</published><updated>2008-07-17T07:48:12.506-07:00</updated><title type='text'>Online Storage</title><content type='html'>I wanted to have some files available to me wherever I go.  A simple request, but to get it the right way, for me, was not so simple.&lt;br /&gt;&lt;br /&gt;I tried a usb drive and that works great for many things, especially for times where I don't have internet access, like at church.  (I'm in the bishopric and bring the printed program on my usb drive so it can be printed and copied at church for Sacrament Meeting).&lt;br /&gt;&lt;br /&gt;But, the usb drive takes some time to insert open, nativate to, etc.  It would seem like a trivial amount of time and sometimes it is, but other times it is just too much time, especially when I am online and working feverishly.  I'm a software developer and am online a lot.&lt;br /&gt;&lt;br /&gt;So, I looked around for free online file storage services, and while there are a plethora out there, and even for free, none had the feature set I wanted.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A programmatic API&lt;br /&gt;&lt;/li&gt;&lt;li&gt;access from Linux, specifically Ubuntu (my home and work desktop OS)&lt;/li&gt;&lt;li&gt;free or very cheap&lt;/li&gt;&lt;/ul&gt;Here is what I have found and am very happy with so far.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Amazon S3 service for the file storage (which has &lt;span style="font-style: italic;"&gt;only&lt;/span&gt; a programmatic web services API)&lt;/li&gt;&lt;li&gt;www.s3browse.com for my one-off interface needs.  It is a completely free web interface to your S3 account. Very nice!  I wonder why, or rather how, it is free though.&lt;/li&gt;&lt;/ul&gt;Now, I'm free to automate any file storage and retrieval I want when the needs arise and I'll be paying less than $5 a year (estimated).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-6636197601257248981?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/6636197601257248981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=6636197601257248981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6636197601257248981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/6636197601257248981'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/07/online-storage.html' title='Online Storage'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4503826259998990392.post-9189418224131755472</id><published>2008-07-17T07:14:00.001-07:00</published><updated>2008-07-17T07:26:10.914-07:00</updated><title type='text'>Mindmapping and access</title><content type='html'>Yesterday I tried mindmapping software for the first time.&lt;br /&gt;&lt;br /&gt;Wow!  Where before I had many huge projects floating around in my mind, now (at least for the projects that I mapped out) I have a calm and in-control feeling.  That makes mindmapping something worth doing to me.&lt;br /&gt;&lt;br /&gt;I tried first www.mindmeister.com which I liked a lot.&lt;br /&gt;Pluses&lt;br /&gt;&lt;ul&gt;&lt;li&gt;online&lt;/li&gt;&lt;li&gt;AWESOME openid login (I highly recommend everyone use openid.  It saves so much time and energy with managing logins)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;easy to use&lt;/li&gt;&lt;li&gt;Google Gears offline support&lt;br /&gt;&lt;/li&gt;&lt;li&gt;looks nice&lt;/li&gt;&lt;li&gt;responsive interface&lt;br /&gt;&lt;/li&gt;&lt;li&gt;imports from freemind and others&lt;/li&gt;&lt;li&gt;exports to rtf (even with the free account!!!)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Minuses&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You have to use it if you want to save more than 6 mind maps (after the first 30 days)&lt;/li&gt;&lt;/ul&gt;Being the cheapskate (I like to say, "frugal") that I am I decided to look into other options. &lt;br /&gt;I noticed freemind, which a coworker had been using and recommended.  Freemind was great too and seemed to have everything I needed except for the online part.&lt;br /&gt;&lt;br /&gt;So, here is what I worked out.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;use mindmeister when I need a mind map that is instantly available (I'm tempted to put my GTD lists into a mind map and online would be really nice)&lt;/li&gt;&lt;li&gt;use freemind for project mindmaps that don't need to be accessible from multiple places&lt;/li&gt;&lt;li&gt;put my freemind mindmaps into my amazon s3 storage account using www.s3browse.com (excellent free online interface to the awesome and cheap amazon s3 online storage service)&lt;/li&gt;&lt;li&gt;whenever I need to export a mindmap from mindmeister, I'll export it to rtf, open it in openoffice, and then save it as a text file.  Then, I'll use vim or python to change all initial spaces to tabs and then open the file back up in openoffice.  Now, a quick copy and paste from openoffice to freemind recreates my mindmap no matter how intricate it is!&lt;/li&gt;&lt;/ul&gt;I'm happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4503826259998990392-9189418224131755472?l=www.pauldeden.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pauldeden.com/feeds/9189418224131755472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4503826259998990392&amp;postID=9189418224131755472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/9189418224131755472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4503826259998990392/posts/default/9189418224131755472'/><link rel='alternate' type='text/html' href='http://www.pauldeden.com/2008/07/mindmapping-and-access.html' title='Mindmapping and access'/><author><name>Paul D. Eden</name><uri>http://www.blogger.com/profile/05013927660048063628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_q06_Hi0I1PE/SZJSP3rkdNI/AAAAAAAAAQE/JMVGfX1lnsw/S220/polarexpress.jpg'/></author><thr:total>1</thr:total></entry></feed>
