<?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-5372331811199572814</id><updated>2012-01-27T23:44:09.077-08:00</updated><category term='CENTOS'/><category term='DCOM'/><category term='Fedora'/><category term='Microsoft'/><category term='RHEL'/><category term='Thinkpad'/><category term='Postgresql'/><category term='Rails'/><category term='Cisco'/><category term='Windows'/><category term='Java'/><category term='Oracle'/><category term='WebLogic'/><category term='Google'/><category term='Vim'/><category term='Splunk'/><category term='IntelliJ'/><category term='VMware'/><category term='python'/><category term='payments'/><category term='Linux'/><category term='Projects'/><category term='Notes'/><category term='Software'/><category term='Apache'/><category term='Android'/><category term='Windows 7'/><title type='text'>Things I've Learned About I.T.</title><subtitle type='html'>Somewhere between a paste-bin and a monologue.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-8531145772193504921</id><published>2011-10-28T02:04:00.000-07:00</published><updated>2011-10-28T02:04:44.489-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Network settings from Run box in Windows 7</title><content type='html'>On XP and Server 2003 it was only a few clicks, Start &amp;gt; Network Connections, to get at the config screens for IP/DNS/DHCP etc.&lt;br /&gt;&lt;br /&gt;In Windows 7 its hidden a million layers down behind all kind of user friendly fluff.&lt;br /&gt;&lt;br /&gt;Luckily you can simply type this into the search box (the Windows 7 version of the Run box...):&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;ncpa.cpl&lt;/blockquote&gt;&lt;br /&gt;Much better!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-8531145772193504921?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/8531145772193504921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/10/network-settings-from-run-box-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/8531145772193504921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/8531145772193504921'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/10/network-settings-from-run-box-in.html' title='Network settings from Run box in Windows 7'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-4713961922073007152</id><published>2011-09-22T02:04:00.001-07:00</published><updated>2011-09-22T02:05:01.113-07:00</updated><title type='text'>Avoid Sharepoint Authentication Popup</title><content type='html'>One of the most galling things about Sharepoint in the configuration we have at my place of work is that you end up retyping your credentials all the time.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've previously posted some ways around this by editing security settings in IE to ensure your AD credentials are always posted through.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However I've found a much better solution! Use Google Chrome. Type in your credentials and the experience is seamless.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-4713961922073007152?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/4713961922073007152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/09/avoid-sharepoint-authentication-popup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4713961922073007152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4713961922073007152'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/09/avoid-sharepoint-authentication-popup.html' title='Avoid Sharepoint Authentication Popup'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-941517999582159941</id><published>2011-09-22T02:02:00.000-07:00</published><updated>2011-09-22T02:06:21.898-07:00</updated><title type='text'>Cannot pin Netsupport Manager to taskbar in Windows 7</title><content type='html'>I access some Windows Server boxes via Netsupport Manager at work. I'd like to pin this app to the taskbar, but as it has the word "Support" in the title Microsoft have explicitly excluded this.&lt;br /&gt;&lt;br /&gt;I would have enjoyed attending the product management meeting at Microsoft where the decision to exclude any apps with "Support" in the name was made. I hope they had tea and nice biscuits!&lt;br /&gt;&lt;br /&gt;To lift this slightly baffling restriction, you can amend the following registry key:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileAssociation\AddRemoveNames&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;It will probably look like this:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SETUP.EXE;INSTALL.EXE;ISUNINST.EXE;UNWISE.EXE;UNWISE32.EXE;ST5UNST.EXE;MSOOBE.EXE;LNKSTUB.EXE;CONTROL.EXE;SUPPORT;WERFAULT.EXE;WLRMDR.EXE;GUESTMODEMSG.EXE;MSIEXEC.EXE;DFSVC.EXE;WUAPP.EXE;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Mine now looks like this:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SETUP.EXE;INSTALL.EXE;ISUNINST.EXE;UNWISE.EXE;UNWISE32.EXE;ST5UNST.EXE;MSOOBE.EXE;LNKSTUB.EXE;CONTROL.EXE;WERFAULT.EXE;WLRMDR.EXE;GUESTMODEMSG.EXE;MSIEXEC.EXE;DFSVC.EXE;WUAPP.EXE&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;And I can now pin NetSupport.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-941517999582159941?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/941517999582159941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/09/cannot-pin-netsupport-manager-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/941517999582159941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/941517999582159941'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/09/cannot-pin-netsupport-manager-to.html' title='Cannot pin Netsupport Manager to taskbar in Windows 7'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-114592623038357813</id><published>2011-04-21T13:34:00.001-07:00</published><updated>2011-04-24T12:12:46.772-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Postgresql'/><title type='text'>SYSDATE in Postgres</title><content type='html'>The equivalent of Oracle's SYSDATE in Postgres is CURRENT_TIMESTAMP.&lt;br /&gt;&lt;br /&gt;At least in the context I needed it in!&lt;br /&gt;&lt;br /&gt;I learnt about timestamp arithmetic in Postgres from here:&amp;nbsp;&lt;a href="http://wiki.postgresql.org/wiki/Working_with_Dates_and_Times_in_PostgreSQL#WORKING_with_DATETIME.2C_DATE.2C_and_INTERVAL_VALUES"&gt;http://wiki.postgresql.org/wiki/Working_with_Dates_and_Times_in_PostgreSQL#WORKING_with_DATETIME.2C_DATE.2C_and_INTERVAL_VALUES&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-114592623038357813?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/114592623038357813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/04/sysdate-in-postgres.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/114592623038357813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/114592623038357813'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/04/sysdate-in-postgres.html' title='SYSDATE in Postgres'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1735337440784022551</id><published>2011-04-07T05:28:00.001-07:00</published><updated>2011-04-07T05:28:08.847-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='IntelliJ'/><title type='text'>IntelliJ hang</title><content type='html'>If you find IntellJ just hangs and you have the kill the process, then you restart and it hangs again, its probably an issue with your JDK. I followed the steps here marked workaround:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://devnet.jetbrains.net/docs/DOC-1193"&gt;http://devnet.jetbrains.net/docs/DOC-1193&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically this involved editing the JVM startup properties to disable cardmarking or some such. The details are all contained in the link.&lt;br /&gt;&lt;br /&gt;IntelliJ worked perfectly afterward. Its quite ironic as I was thinking how much I liked IntelliJ just before it happened. At least it was an easy fix. I am using the version 10 Community edition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1735337440784022551?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1735337440784022551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/04/intellij-hang.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1735337440784022551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1735337440784022551'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/04/intellij-hang.html' title='IntelliJ hang'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-4136104553261737983</id><published>2011-04-06T10:49:00.000-07:00</published><updated>2011-04-06T10:50:49.747-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Windows 7 RDP Slow</title><content type='html'>If your RDP connections in Windows 7 are slow, over a VPN or whatever then go:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;netsh interface tcp set global autotuninglevel=highlyrestricted&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From an administrator command shell on the machine initiating the RDP connection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-4136104553261737983?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/4136104553261737983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/04/windows-7-rdp-slow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4136104553261737983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4136104553261737983'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/04/windows-7-rdp-slow.html' title='Windows 7 RDP Slow'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3633164688300860853</id><published>2011-03-21T09:52:00.000-07:00</published><updated>2011-03-21T09:52:48.474-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><title type='text'>Automating VMWare ESX</title><content type='html'>*&amp;nbsp;&lt;a href="http://ben.neise.co.uk/index.php/2009/03/intro-to-powercli/"&gt;http://ben.neise.co.uk/index.php/2009/03/intro-to-powercli/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3633164688300860853?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3633164688300860853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/03/automating-vmware-esx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3633164688300860853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3633164688300860853'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/03/automating-vmware-esx.html' title='Automating VMWare ESX'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3078414650597838735</id><published>2011-03-12T01:01:00.000-08:00</published><updated>2011-03-12T01:01:08.839-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><title type='text'>Various Thoughts on Puppet</title><content type='html'>For:&amp;nbsp;&lt;a href="http://lsimons.wordpress.com/2011/01/04/fusion-puppet-gitolite/"&gt;http://lsimons.wordpress.com/2011/01/04/fusion-puppet-gitolite/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Against:&amp;nbsp;&lt;a href="http://blog.ianbicking.org/2010/03/10/configuration-management-push-vs-pull/"&gt;http://blog.ianbicking.org/2010/03/10/configuration-management-push-vs-pull/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3078414650597838735?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3078414650597838735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/03/various-thoughts-on-puppet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3078414650597838735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3078414650597838735'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/03/various-thoughts-on-puppet.html' title='Various Thoughts on Puppet'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-4553653998711504645</id><published>2011-03-06T05:59:00.001-08:00</published><updated>2011-03-06T05:59:50.227-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Behaviour Driven Development</title><content type='html'>&lt;a href="http://dannorth.net/introducing-bdd/"&gt;http://dannorth.net/introducing-bdd/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-4553653998711504645?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/4553653998711504645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/03/behaviour-driven-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4553653998711504645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4553653998711504645'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/03/behaviour-driven-development.html' title='Behaviour Driven Development'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-4666454662700886953</id><published>2011-02-14T13:41:00.000-08:00</published><updated>2011-02-14T14:08:53.932-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebLogic'/><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><category scheme='http://www.blogger.com/atom/ns#' term='RHEL'/><title type='text'>WebLogic silent.xml for Centos / RHEL 5.5 Production</title><content type='html'>&lt;div&gt;Oracle do provide a sample, and there are links on the Web but after much frustration, this one actually works.&lt;/div&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/826606.js?file=silent.xml"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Assuming the bin file has been downloaded from Oracle, then:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create the Middleware directory beforehand.&lt;/li&gt;&lt;li&gt;Specify &lt;code&gt;-mode=silent -silent_xml=/full/path/to/silent.xml&amp;nbsp;&lt;/code&gt;on the command line.&lt;/li&gt;&lt;li&gt;This will install everything required, &amp;nbsp;but not the Server examples domain, which is dangerous on a production server.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-4666454662700886953?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/4666454662700886953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/02/weblogic-silentxml-for-centos-redhat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4666454662700886953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4666454662700886953'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/02/weblogic-silentxml-for-centos-redhat.html' title='WebLogic silent.xml for Centos / RHEL 5.5 Production'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1605565700653244295</id><published>2011-01-17T13:27:00.001-08:00</published><updated>2011-01-17T13:30:56.614-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Postgresql'/><title type='text'>Postgresql Repo for CENTOS</title><content type='html'>&lt;a href="http://yum.pgrpms.org/rpmchart.php"&gt;http://yum.pgrpms.org/rpmchart.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1605565700653244295?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1605565700653244295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/postgresql-repo-for-centos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1605565700653244295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1605565700653244295'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/postgresql-repo-for-centos.html' title='Postgresql Repo for CENTOS'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3887034487629842902</id><published>2011-01-15T01:32:00.001-08:00</published><updated>2011-01-15T01:32:17.132-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><title type='text'>Install EPEL Repository on CENTOS</title><content type='html'>Just putting this here:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;pre style="background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; font-size: 2.6ex; line-height: 1.1em; margin-bottom: 1.5ex; margin-left: 0px; margin-right: 0px; margin-top: 0.5ex; overflow-x: auto; overflow-y: auto; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;"&gt;rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm&lt;/pre&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3887034487629842902?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3887034487629842902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/install-epel-repository-on-centos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3887034487629842902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3887034487629842902'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/install-epel-repository-on-centos.html' title='Install EPEL Repository on CENTOS'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-4868107357182141760</id><published>2011-01-12T14:30:00.000-08:00</published><updated>2011-01-12T14:30:29.889-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Install latest Python on Centos</title><content type='html'>This script will download, compile and install a newer version of Python on CENTOS / RedHat 5.* in a way which respects the underlying Python 2.4 used by Yum etc.&lt;br /&gt;&lt;br /&gt;Based on&amp;nbsp;&lt;a href="http://www.venkysblog.com/install-python264-modwsgi-and-django-on-cento#more"&gt;http://www.venkysblog.com/install-python264-modwsgi-and-django-on-cento&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://binarysushi.com/blog/2009/aug/19/CentOS-5-3-python-2-5-virtualevn-mod-wsgi-and-mod-rpaf/"&gt;http://binarysushi.com/blog/2009/aug/19/CentOS-5-3-python-2-5-virtualevn-mod-wsgi-and-mod-rpaf/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/777001.js?file=install_python.sh"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-4868107357182141760?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/4868107357182141760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/install-latest-python-on-centos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4868107357182141760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4868107357182141760'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/install-latest-python-on-centos.html' title='Install latest Python on Centos'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5774014867045282797</id><published>2011-01-12T11:10:00.000-08:00</published><updated>2011-01-15T04:53:12.217-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><title type='text'>ZSH and .zshrc</title><content type='html'>Apparently ZSH is quite good so I'm going to try it out. On most Linux distros this is going to be installed anyway, but the steps are:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;yum install zsh&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;chsh -s /bin/zsh&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; line-height: normal;"&gt;Here are some links about customizing it:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://grml.org/zsh/zsh-lovers.pdf"&gt;http://grml.org/zsh/zsh-lovers.pdf&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://stackoverflow.com/questions/171563/whats-in-your-zshrc"&gt;http://stackoverflow.com/questions/171563/whats-in-your-zshrc&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 19px;"&gt;&lt;a href="http://pthree.org/2008/11/23/727/"&gt;http://pthree.org/2008/11/23/727/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;li&gt;&lt;a href="http://aperiodic.net/phil/prompt/"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://aperiodic.net/phil/prompt/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jeff.robbins.ws/reference/my-zshrc-file"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://jeff.robbins.ws/reference/my-zshrc-file&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://my.opera.com/blackbelt_jones/blog/2007/06/05/zsh-prompt-configuration-issue-solved"&gt;http://my.opera.com/blackbelt_jones/blog/2007/06/05/zsh-prompt-configuration-issue-solved&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5774014867045282797?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5774014867045282797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/zsh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5774014867045282797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5774014867045282797'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/zsh.html' title='ZSH and .zshrc'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-2869769029611757523</id><published>2011-01-02T07:51:00.001-08:00</published><updated>2011-01-02T08:12:38.662-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Unicode</title><content type='html'>Seems like a good article, this has always seemed a little mysterious.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;http://www.joelonsoftware.com/articles/Unicode.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I especially found the part about http-equiv content type useful. It had always bothered me how you could specify the character encoding after the start of the file. As it turns out it is a compromise and I am not the only person who had wondered about it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-2869769029611757523?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/2869769029611757523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/unicode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2869769029611757523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2869769029611757523'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2011/01/unicode.html' title='Unicode'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-6639882269591302005</id><published>2010-11-30T03:50:00.000-08:00</published><updated>2010-11-30T03:50:23.679-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Unit Testing In Python</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.pylonshq.com/community/testing.html"&gt;http://docs.pylonshq.com/community/testing.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Worth making a note of. Also this link to the "Art of Unix Programming".&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.faqs.org/docs/artu/ch01s07.html"&gt;http://www.faqs.org/docs/artu/ch01s07.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-6639882269591302005?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/6639882269591302005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/11/unit-testing-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6639882269591302005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6639882269591302005'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/11/unit-testing-in-python.html' title='Unit Testing In Python'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-4466959788903290682</id><published>2010-11-02T05:36:00.000-07:00</published><updated>2010-11-02T05:36:33.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>Bug Reports</title><content type='html'>Its really important to keeping things simple and clear. This article struck me as excellent, and so I'm posting it here, so I don't forget about it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/eric_brechner/archive/2010/11/01/am-i-bugging-you-bug-reports.aspx"&gt;http://blogs.msdn.com/b/eric_brechner/archive/2010/11/01/am-i-bugging-you-bug-reports.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-4466959788903290682?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/4466959788903290682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/11/bug-reports.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4466959788903290682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4466959788903290682'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/11/bug-reports.html' title='Bug Reports'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1900846741896755857</id><published>2010-08-30T01:56:00.001-07:00</published><updated>2010-10-27T04:13:04.094-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vim'/><title type='text'>Seven pointers for editing in Vi / Vim</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.moolenaar.net/habits.html"&gt;http://www.moolenaar.net/habits.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.oualline.com/vim-cook.html"&gt;http://www.oualline.com/vim-cook.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2010/7/29/sharing-vim-tricks"&gt;http://lucumr.pocoo.org/2010/7/29/sharing-vim-tricks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tnerual.eriogerg.free.fr/vimqrc.html"&gt;http://tnerual.eriogerg.free.fr/vimqrc.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jeetworks.org/node/89"&gt;http://jeetworks.org/node/89&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jmcpherson.org/editing.html"&gt;http://jmcpherson.org/editing.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://amix.dk/blog/post/19486#The-ultimate-vim-configuration-vimrc"&gt;http://amix.dk/blog/post/19486#The-ultimate-vim-configuration-vimrc&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/5372331811199572814-1900846741896755857?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1900846741896755857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/seven-pointers-for-editing-in-vi-vim.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1900846741896755857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1900846741896755857'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/seven-pointers-for-editing-in-vi-vim.html' title='Seven pointers for editing in Vi / Vim'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5311788376456901641</id><published>2010-08-29T07:09:00.001-07:00</published><updated>2010-08-29T07:09:05.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Remote Desktop Keyboard Shortcuts</title><content type='html'>Handy:&amp;nbsp;&lt;a href="http://www.codinghorror.com/blog/2006/04/remote-desktop-tips-and-tricks.html"&gt;http://www.codinghorror.com/blog/2006/04/remote-desktop-tips-and-tricks.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5311788376456901641?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5311788376456901641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/remote-desktop-keyboard-shortcuts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5311788376456901641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5311788376456901641'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/remote-desktop-keyboard-shortcuts.html' title='Remote Desktop Keyboard Shortcuts'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3644645408786068835</id><published>2010-08-27T03:57:00.000-07:00</published><updated>2010-08-27T03:57:07.392-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Hidden Features of Python</title><content type='html'>Spotted this on StackOverflow.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/101268/hidden-features-of-python/111176#111176"&gt;http://stackoverflow.com/questions/101268/hidden-features-of-python/111176#111176&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3644645408786068835?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3644645408786068835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/hidden-features-of-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3644645408786068835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3644645408786068835'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/hidden-features-of-python.html' title='Hidden Features of Python'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1597192274444341546</id><published>2010-08-24T08:02:00.000-07:00</published><updated>2010-08-27T00:41:58.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DCOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>COM / DCOM In Python : The comtypes library</title><content type='html'>There are all kinds of crazy reasons you might want to use COM in Python. There are two main libraries for doing so. If you can use pywin32, then do- its high level, Pythonic and relatively functional. If you want to instantiate Word, or Excel, call a few methods, pass some simple data in, get some simple data back, fill your boots:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;(part of)&amp;nbsp;&lt;a href="http://sourceforge.net/projects/pywin32/files/"&gt;http://sourceforge.net/projects/pywin32/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.boddie.org.uk/python/COM.html"&gt;http://www.boddie.org.uk/python/COM.html&lt;/a&gt;&amp;nbsp;(seems a good howto)&lt;/li&gt;&lt;li&gt;&lt;a href="http://oreilly.com/catalog/pythonwin32/chapter/ch12.html"&gt;http://oreilly.com/catalog/pythonwin32/chapter/ch12.html&lt;/a&gt;&amp;nbsp;(maybe too indepth)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For more hardcore COM stuff you need to use the much lower level and partly undocumented comtypes library. The following bullets define "hardcore":&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Subscribing to a COM event notification sink.&lt;/li&gt;&lt;li&gt;Building your own COM server (are you mad?)&lt;/li&gt;&lt;li&gt;Sending and receiving more complex datatypes.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;It was my strong desire to automate certain tasks my group is responsible for by creating a DCOM client to hook into our management agents on the several hundred servers in our datacenter. This required an event sink.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I don't want to be unfair to comtypes, it is a great library, and when it works is very satisfying and robust. The main problems are the gaps in documentation.&amp;nbsp;So without further ado, here's my pointers on using comtypes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Download it and give it a try. &lt;/b&gt;Python 3.0 is unsupported afaik.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/comtypes/"&gt;http://sourceforge.net/projects/comtypes/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Do read the existing documentation. &lt;/b&gt;Carefully, what exists is of good quality.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://starship.python.net/crew/theller/comtypes/"&gt;http://starship.python.net/crew/theller/comtypes/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://starship.python.net/crew/theller/comtypes/server.html"&gt;http://starship.python.net/crew/theller/comtypes/server.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/COM/python-comtypes-interop.aspx"&gt;http://www.codeproject.com/KB/COM/python-comtypes-interop.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Use the mailing list archive. &lt;/b&gt;Seriously, its the only way forward.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/search/?group_id=115265&amp;amp;type_of_search=mlists"&gt;http://sourceforge.net/search/?group_id=115265&amp;amp;type_of_search=mlists&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://lists.sourceforge.net/lists/listinfo/comtypes-users/"&gt;https://lists.sourceforge.net/lists/listinfo/comtypes-users/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Have the IDL handy. &lt;/b&gt;The IDL is the file which defines the COM interfaces for your object, which the TypeLib is generated from. Most likely, if you need to use comtypes this file will be available to you, and will be a vital reference.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Turn on logging. &lt;/b&gt;If you're having issues you can turn on comtypes logging.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;script src="http://gist.github.com/547656.js?file=logging%20comtypesh.py"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Read the source of comtypes.&amp;nbsp;&lt;/b&gt;Once nice thing about Python is the source code is very readable. There are some useful comments in there also. On my machine the source can be found:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;C:\Python26\Lib\site-packages\comtypes&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Files which I found of interest were __init__.py, automation.py (types) and client._events.py (for events stuff).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Understand the type&amp;nbsp;coercion. &lt;/b&gt;Much of the work that comtypes does for you is in the type coercion. If you get stuck wondering why your specific type of VARIANT is not getting coerced quite how you expected then &amp;nbsp;take a look in automation.py, and read the following Mailing list post (which should really be in the docs):&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/mailarchive/message.php?msg_id=loom.20080709T011456-715%40post.gmane.org"&gt;http://sourceforge.net/mailarchive/message.php?msg_id=loom.20080709T011456-715%40post.gmane.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/mailarchive/message.php?msg_id=fv947v$bfm$1%40ger.gmane.org"&gt;http://sourceforge.net/mailarchive/message.php?msg_id=fv947v$bfm$1%40ger.gmane.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/mailarchive/message.php?msg_id=g8fa1i$fjb$1%40ger.gmane.org"&gt;http://sourceforge.net/mailarchive/message.php?msg_id=g8fa1i$fjb$1%40ger.gmane.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Keep your Sink in scope.&amp;nbsp;&lt;/b&gt;This may be because I'm an idiot, but I was declaring my "advise" object in a constructor and then not keeping it. Make sure your advise object is still in scope when you call PumpEvents().&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Understand the domain.&lt;/b&gt;&amp;nbsp;Chances are you are going to have to learn about the bizarre world of C++ and COM. Frankly COM could only ever have seemed to make sense to a C++ programmer. Make sure you at least have a hazy notion of the following concepts, ideally in their C++ sense:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Interface&lt;/li&gt;&lt;li&gt;VARIANT&lt;/li&gt;&lt;li&gt;Pointer&lt;/li&gt;&lt;li&gt;Structure&lt;/li&gt;&lt;li&gt;Array&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Also, realize why COM came about. Back in the day Windows had "dll hell" so Microsoft wanted a "code registry" which allowed for multiple versions and implementations, rather than just a system folder full of DLLs. Java was on the horizon with the idea of the "component model" and "code reuse", and Microsoft needed to compete. RAD languages such as Delphi were getting big too - so Visual Basic compatibility was another talking point. Server side Software Engineering problems which Windows Server was being utilized to solve were getting larger than a single machine: so it made sense to whack a bit of RPC in the mix (DCOM).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Built on ctypes. &lt;/b&gt;Be mindful the comtypes is build upon ctypes, especially when you get into type based confusion the docs there can be very enlightening.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.python.org/library/ctypes.html#structures-and-unions"&gt;http://docs.python.org/library/ctypes.html#structures-and-unions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1597192274444341546?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1597192274444341546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/com-dcom-in-python-comtypes-library.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1597192274444341546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1597192274444341546'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/com-dcom-in-python-comtypes-library.html' title='COM / DCOM In Python : The comtypes library'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1761210041364383605</id><published>2010-08-06T02:12:00.000-07:00</published><updated>2010-08-06T02:16:47.597-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='payments'/><title type='text'>Working with PayPal Web Payments Pro</title><content type='html'>For a web based store, to process credit card transactions is a requirement. PayPal offers some simpler integrations than fully blown gateways such as Authorise.net. My plan was to "ramp up" using PayPal to get a working flow, then migrate to a "proper gateway" later on if it seemed justified.&lt;br /&gt;&lt;br /&gt;Getting PayPal up and running is simpler than it seems, however I found there is something "bewildering" about the PayPal website, the range of options they offer and their sandbox. This is to share the things I have learnt.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Inappropriate Options&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://cms.paypal.com/us/cgi-bin/?&amp;amp;cmd=_render-content&amp;amp;content_ID=developer/howto_api_overview"&gt;https://cms.paypal.com/us/cgi-bin/?&amp;amp;cmd=_render-content&amp;amp;content_ID=developer/howto_api_overview&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;i&gt;Mass Payments&lt;/i&gt; is sending money to a large number of people. Not useful for me. &lt;i&gt;Website Payments Standard &lt;/i&gt;offers lots of "clever" buttons which you can embed on a static site. Forget about it. &lt;i&gt;Mobile Checkout&lt;/i&gt; is engineered for WAP. Not interested. &lt;i&gt;Payflow Pro &lt;/i&gt;has PayPal act as an&amp;nbsp;intermediary&amp;nbsp;to a third party gateway. Can't see the point in this.&lt;i&gt; Website Payment Pro Payflow &lt;/i&gt;edition is just a variant on Payflow, so again, not interested.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Website Payments Pro (Express Checkout and Direct Payment)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Once I focussed my mind on&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;Website Payments Pro&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;, things slotted into place. WPP consists of&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;Express Checkout&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;- where you dump your customer at PayPal and they use their PayPal account, and&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;Direct Payment&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;where you grab customer's credit card data your end, and post it to PayPal in the background. Direct Payment does not require a PayPal account - however it should be obvious that SSL is a requirement, as you are grabbing sensitive info your end.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;Direct Payments&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; is the real win here effectively its a very simple to use payment gateway at a reasonable cost from PayPal. However - the WPP offering is the combination of them both - Express Checkout and Direct Payments - so if you implement Direct Payments you are obliged to offer Express Checkout too - in order to redirect people into creating&amp;nbsp;PayPal&amp;nbsp;accounts I would&amp;nbsp;warrant. This is not too much sweat however.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. Creating a PayPal developer account.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;First step is to create a PayPal developer account, this is not the same thing as the account you will use to access the API - this is the account you need to then create test API accounts. So this is a first step:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://developer.paypal.com/cgi-bin/devscr?cmd=_signup-run"&gt;https://developer.paypal.com/cgi-bin/devscr?cmd=_signup-run&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. Create Sandbox account to test with.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Once you are logged into the PayPal sandbox "center" then you can create an account within the Sandbox to test with. There is a macro for creating preconfigured types of accounts- effectively you want the test version of a merchant account with WPP enabled. Select "add account" and then add a WPP test account. It will generate some rubbish email address based on what you enter. Emails sent to this address in the course of testing (i.e. notification of purchases etc) will go to an integrated webmail section of the Sandbox site. Don't forget the password you use to create the sandbox merchant account! It is different from the API password and you will need it to view the status of transactions during testing.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;At this point also treat yourself by setting up an additional account to act as the customer when testing express payments.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Once you have created your Sandbox merchant WPP account, you can then browse the details of this account on the "API Credentials" menu item. You should have the following details:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;API_USER_NAME: This is just a test Merchant username for API calls.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;API_PASSWORD: The password.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;API_SIGNATURE: This is the additional signature for accessing the API.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;However, with these three items you should be set to access the API. I'll be doing so using Python.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. Hit the NVP API webservice and do stuff.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;At this stage its worth digressing on the sorts of flows which will need to be implemented. Step -1 is that your marketing will work, the customer will come to your site, feel excited / relieved to have found something they want to buy, and will use whatever system of button pressing you have implemented to add the item to their shopping cart. The following account begins at the point where they click "checkout".&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Express Checkout:&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;You offer the customer the option to enter credit card details on your site (&lt;i&gt;Direct Payments&lt;/i&gt;) or use &lt;i&gt;Express Checkout&lt;/i&gt;. They choose the latter.&lt;/li&gt;&lt;li&gt;You POST using the NVP API to the &lt;i&gt;SetExpressPayment&lt;/i&gt; method. This POST includes your API key, the amount of the transaction plus return and cancel URLs for PayPal to return your customer to.&lt;/li&gt;&lt;li&gt;You receive an "express checkout token" in response. You construct a URL based off a static PayPal URI plus this token, and redirect your customer to it.&lt;/li&gt;&lt;li&gt;The customer completes their purchase in PayPal by either entering their PayPal account details or creating a new PayPal account.&lt;/li&gt;&lt;li&gt;PayPal will then redirect the customer back to your site, appending URL parameters containing the Express Checkout token and the Payer ID, which identifies the customer.&lt;/li&gt;&lt;li&gt;You then call &lt;i&gt;DoExpressCheckoutPayment &lt;/i&gt;method using the NVP API passing in the "express checkout token", the Payer ID you got back in step 5 and the same amount you passed along in the first instance. PayPal sends you a confirmation as a reply in NVP.&lt;/li&gt;&lt;li&gt;The customer gets a confirmation email from PayPal, and the test merchant account has the transaction posted into it. You can check this from the Sandbox "center" site "Test Email" section.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;So here's a sample script for this which can be run from the command line / IDLE etc. Note you need to copy paste the payer ID from query URL in the browser after you get back from PayPal into the script.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;script src="http://gist.github.com/511080.js?file=gistfile1.py"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div&gt;The above is heavily based on the example here&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://djangosnippets.org/snippets/1181/"&gt;http://djangosnippets.org/snippets/1181/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;So that's Express Checkout - given this post has turned into a complete monster I'm going to leave Direct Payments for another day and another post. Hope someone finds this post useful!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1761210041364383605?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1761210041364383605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/working-with-paypal-web-payments-pro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1761210041364383605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1761210041364383605'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/08/working-with-paypal-web-payments-pro.html' title='Working with PayPal Web Payments Pro'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3194047948545414481</id><published>2010-07-31T04:05:00.000-07:00</published><updated>2010-07-31T04:05:00.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Production Flask app on CENTOS and Apache via mod_wsgi</title><content type='html'>Flask is a Python web framework which embraces simplicity and seems to work. It is based on Werkzeug so it is a WSGI application.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://flask.pocoo.org/"&gt;http://flask.pocoo.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://werkzeug.pocoo.org/"&gt;http://werkzeug.pocoo.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface"&gt;http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I've had some luck in the past using mod_wsgi to run Django apps, so I suspect getting a Flask app to run will be similar.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/modwsgi/"&gt;http://code.google.com/p/modwsgi/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://things-ive-learned-about-it.blogspot.com/2010/04/using-modwsgi-to-support-django.html"&gt;http://things-ive-learned-about-it.blogspot.com/2010/04/using-modwsgi-to-support-django.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using Google, I found the following in the Werkzeug Docs, which I reviewed for the following steps:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://werkzeug.pocoo.org/documentation/dev/deployment/mod_wsgi.html"&gt;http://werkzeug.pocoo.org/documentation/dev/deployment/mod_wsgi.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;1. Install python2.7, mod_wsgi and Flask on production server.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Using Centos&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;5.4&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;(unbranded RHEL) comes with with python 2.4 and apache 2.2. Centos (and RHEL) use Python extensively under the hood (for Yum, among other things). I want to use a later version of Python, but one may not simply "upgrade" the version of Python- without breaking the OS - you need to install an additional version.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;I followed the steps in this guide, under the head "Install Python":&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.venkysblog.com/2009/12/centos-python-wsgi-dango/"&gt;http://www.venkysblog.com/2009/12/centos-python-wsgi-dango/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I chose to use Python 2.7 as its the last stable release of Python 2, and I don't intend going Python 3.* for a while. I hope I don't regret that. I needed to change a few things in obvious places as the guide covers Python 2.6.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.python.org/ftp/python/2.7/Python-2.7.tgz"&gt;http://www.python.org/ftp/python/2.7/Python-2.7.tgz&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Next I carried out the steps labelled "Install Setuptools" as this is necessary.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg"&gt;http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Next I carried out the steps labelled "Install mod_wsgi", restarted httpd and it started!&lt;br /&gt;&lt;br /&gt;To install Flask I ran SetupTools explicitly from the location inside of /opt/python2.7/ to install 'pip' into the 2.7 Python distribution. Next I added an alias to pip to the ~/.bash_profile in the same way this was done for the python binary in the VenkysBlog page. Finally I used the source command to load the alias and ran:&lt;br /&gt;&lt;br /&gt;pip install Flask&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Create an appropriate wsgi file.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;WSGI uses a file with the extension .wsgi as the interface between the wsgi container (in this case Apache / mod_wsgi) and the app. Flask has excellent documentation:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://flask.pocoo.org/docs/deploying/?highlight=wsgi"&gt;http://flask.pocoo.org/docs/deploying/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Steps are as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Place Flask application in a subfolder of the webroot (for testing I just used the "Flask is Fun" example:&amp;nbsp;&lt;a href="http://flask.pocoo.org/"&gt;http://flask.pocoo.org/&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Make a file called 'yourapp.wsgi' in the same structure - this is written in Python syntax - here you need to import your app and bind it to the name 'application'. mod_wsgi will then call this object in the appropriate way.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. Edit apache configuration to invoke wsgi application.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Finally some directives need adding to httpd.conf. The LoadModule statement was added as part of step 1, however the wsgi file need to be referenced vs. the appropriate virtual root.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://flask.pocoo.org/docs/deploying/mod_wsgi/#configuring-apache"&gt;http://flask.pocoo.org/docs/deploying/mod_wsgi/#configuring-apache&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Great so everything worked!&amp;nbsp;Wasn't that easy?&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3194047948545414481?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3194047948545414481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/07/production-flask-app-on-centos-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3194047948545414481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3194047948545414481'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/07/production-flask-app-on-centos-and.html' title='Production Flask app on CENTOS and Apache via mod_wsgi'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-6540822088176074883</id><published>2010-06-10T13:09:00.001-07:00</published><updated>2010-07-30T02:38:45.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vim'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Vim Color scheme for terms / consoles</title><content type='html'>Best I've found so far:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=1326"&gt;http://www.vim.org/scripts/script.php?script_id=1326&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-6540822088176074883?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/6540822088176074883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/06/vim-color-scheme-for-terms-consoles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6540822088176074883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6540822088176074883'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/06/vim-color-scheme-for-terms-consoles.html' title='Vim Color scheme for terms / consoles'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-593042712985644825</id><published>2010-06-01T02:57:00.000-07:00</published><updated>2010-07-30T02:38:45.129-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Getting VirtualEnv going</title><content type='html'>Everywhere I read the benefits of virtualenv, but each time I try it I get fed up as it seems a lot to get setup. Here's to trying again:.&lt;br /&gt;&lt;br /&gt;yum - y python-setuptools&lt;br /&gt;easy_install pip&lt;br /&gt;pip install virtualenv&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-593042712985644825?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/593042712985644825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/06/getting-virtualenv-going.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/593042712985644825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/593042712985644825'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/06/getting-virtualenv-going.html' title='Getting VirtualEnv going'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1894803171204988619</id><published>2010-05-05T08:47:00.000-07:00</published><updated>2010-07-30T02:38:45.130-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thinkpad'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><title type='text'>Installing Fedora 12 on an IBM / Lenovo Thinkpad X60s / X60</title><content type='html'>Having blasted my X60s and nearly pulled all my own hair out here is a recipe to do this. It is really rather straight-forward, and will leave your Windows in tact.&lt;br /&gt;&lt;br /&gt;1. Grab your 4gb memory key and insert into a Windows box. If you have an x60 and no external drive you really you should have one of these:&amp;nbsp;&lt;a href="http://www.amazon.co.uk/Lexar-4GB-JumpDrive-Firefly-White/dp/B000HA9RZM/ref=sr_1_1?ie=UTF8&amp;amp;s=electronics&amp;amp;qid=1273074258&amp;amp;sr=8-1"&gt;[ put it on your keyring! ]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Grab this from a Windows box:&amp;nbsp;&lt;a href="http://sourceforge.net/projects/unetbootin/"&gt;http://sourceforge.net/projects/unetbootin/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Select Fedora, Live and then OK.&lt;br /&gt;&lt;br /&gt;4. When done, insert into your X60 and boot.&lt;br /&gt;&lt;br /&gt;5. When logged in select "install to harddrive".&lt;br /&gt;&lt;br /&gt;Job done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1894803171204988619?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1894803171204988619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/05/installing-fedora-12-on-ibm-lenovo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1894803171204988619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1894803171204988619'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/05/installing-fedora-12-on-ibm-lenovo.html' title='Installing Fedora 12 on an IBM / Lenovo Thinkpad X60s / X60'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-662983337184093716</id><published>2010-04-16T13:37:00.001-07:00</published><updated>2010-07-30T02:38:45.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vim'/><title type='text'>Toggle NERDTree</title><content type='html'>&lt;a href="http://www.catonmat.net/blog/vim-plugins-nerdtree-vim"&gt;http://www.catonmat.net/blog/vim-plugins-nerdtree-vim&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-662983337184093716?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/662983337184093716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/toggle-nerdtree.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/662983337184093716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/662983337184093716'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/toggle-nerdtree.html' title='Toggle NERDTree'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-2163992463628850525</id><published>2010-04-16T03:14:00.001-07:00</published><updated>2010-07-30T02:38:45.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Putty Colours Config</title><content type='html'>Just pop this here - for setup on Windows machine:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dag.wieers.com/blog/content/improving-putty-settings-on-windows"&gt;dag.wieers.com/blog/content/improving-putty-settings-on-windows&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Don't forget to save this as your "default settings".&lt;br /&gt;&lt;br /&gt;Another nice touch is turning font anti-aliasing on and selecting a funkier font.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-2163992463628850525?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/2163992463628850525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/putty-colours-config.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2163992463628850525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2163992463628850525'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/putty-colours-config.html' title='Putty Colours Config'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1496179736662271609</id><published>2010-04-02T15:32:00.001-07:00</published><updated>2010-07-30T02:38:45.133-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Apache SSL configuration and Django</title><content type='html'>&lt;a href="https://help.ubuntu.com/9.10/serverguide/C/httpd.html"&gt;https://help.ubuntu.com/9.10/serverguide/C/httpd.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1496179736662271609?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1496179736662271609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/apache-ssl-configuration-and-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1496179736662271609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1496179736662271609'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/apache-ssl-configuration-and-django.html' title='Apache SSL configuration and Django'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-7932726935838316868</id><published>2010-04-02T06:42:00.000-07:00</published><updated>2010-07-30T02:38:45.133-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Using mod_wsgi to support Django development via Apache</title><content type='html'>I'm building a Django shop which integrates PHP components in the form of a blog (Wordpress) and needs testing with SSL. As discussed in the last blog entry- that means I can't well test holistically using only the Django dev server.&amp;nbsp;On production I am using mod_python at the moment, which is inappropriate for development as I would need to restart the server each time I make a change.&lt;br /&gt;&lt;br /&gt;I'm looking to follow a recipe, using&amp;nbsp;&lt;a href="http://code.google.com/p/modwsgi/"&gt;mod_wsgi&lt;/a&gt;&amp;nbsp;for two purposes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To have a dev server running via apache, to integrate PHP and SSL components, as well as having "hot code replacement" to support development.&lt;/li&gt;&lt;li&gt;To evaluate mod_wsgi on the basis of the claim: "for hosting WSGI applications in conjunction with Apache it has a lower memory overhead and performs better than mod_python".&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Step 1&lt;/b&gt; will be to deploying using mod_wsgi on my dev laptop per the mod_wsgi docs. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;sudo apt-get install libapache2-mod-wsgi [ubuntu]&lt;/li&gt;&lt;li&gt;restart apache&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Step 2&lt;/b&gt; is a standard integration with Apache. Per &lt;a href="http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango"&gt;http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;create appropriate .wsgi file&lt;/li&gt;&lt;li&gt;edit apache.conf with directive (see below)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Step 3&lt;/b&gt; is getting it to then run in&amp;nbsp;daemon&amp;nbsp;mode. This is a little like what mod_jk or ruby passenger / mod_rails does. It brokers requests off to a separate sub process which forks and brokers off to individual Python Django scripts.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4, &lt;/b&gt;finally&amp;nbsp;per:&amp;nbsp;&lt;a href="http://blog.dscpl.com.au/2008/12/using-modwsgi-when-developing-django.html"&gt;http://blog.dscpl.com.au/2008/12/using-modwsgi-when-developing-django.html&lt;/a&gt;, is to add a monitor.py (the source of which is&amp;nbsp;&lt;a href="http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Restarting_Daemon_Processes"&gt;here&lt;/a&gt;) and reference it in the .wsgi file.&lt;br /&gt;&lt;br /&gt;Here are example apache / httpd.conf:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/353266.js?file=wsgi+httpd.conf"&gt;&lt;/script&gt;&lt;br /&gt;And dev.wsgi (based of putting a monitor.py in the root of the django app):&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/353277.js?file=gistfile1.py"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-7932726935838316868?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/7932726935838316868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/using-modwsgi-to-support-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7932726935838316868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7932726935838316868'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/using-modwsgi-to-support-django.html' title='Using mod_wsgi to support Django development via Apache'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1960869338992980920</id><published>2010-04-02T04:38:00.000-07:00</published><updated>2010-07-30T02:38:45.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Apache Virtual Hosts</title><content type='html'>In putting together this online shop, I'm going to integrate a Wordpress Blog, and need SSL in addition to my Django app. The Django development server is not going to cut it.&lt;br /&gt;&lt;br /&gt;In order to build out my Dev laptop I'm going to setup Apache with virtual hosts, and setup Django to run in a dev mode but behind Apache. This is a hit in time upfront, but should sharpen a few skills on the sysadmin side, make development testing and deployment more straightforward on an ongoing basis.&amp;nbsp;I should consider future project also, so I need to specify the clients as well as the&amp;nbsp;sub-project&amp;nbsp;in the URL.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://onlamp.com/apache/2003/07/24/graphics/apache-vhost.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="249" src="http://onlamp.com/apache/2003/07/24/graphics/apache-vhost.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://onlamp.com/pub/a/apache/2003/07/24/vhosts.html"&gt;http://onlamp.com/pub/a/apache/2003/07/24/vhosts.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://onlamp.com/pub/a/apache/2003/07/24/vhosts.html"&gt;&lt;/a&gt;So, I'm going to add a few hosts into my laptops host file based name resolver. So using "sudo vi /etc/hosts" I add these as aliases for the IP Apache is listening on.&lt;br /&gt;&lt;br /&gt;127.0.1.1 hostname blog.client1.net&amp;nbsp;www.client1.net&lt;br /&gt;&lt;br /&gt;I test these out with a browser and they all take me to the same default page served by Apache on port 80. Per:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: 12px;"&gt;If Apache has no&amp;nbsp;&lt;em&gt;vhosts&lt;/em&gt;, it will use the main server's&amp;nbsp;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;DocumentRoot&lt;/span&gt;&lt;/code&gt;&amp;nbsp;directory (often set to&amp;nbsp;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;/var/www/html&lt;/span&gt;&lt;/code&gt;).&lt;/span&gt;&lt;/blockquote&gt;Bingo.&amp;nbsp;Now to change the behaviour of Apache.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: 12px;"&gt;Within a&amp;nbsp;&lt;em&gt;vhost&lt;/em&gt;&amp;nbsp;block--between&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;virtualhost&gt;&lt;/virtualhost&gt;&lt;/span&gt;&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;/span&gt;&lt;/code&gt;&amp;nbsp;tags in&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;httpd.conf&lt;/span&gt;&lt;/code&gt;--many directives may be given, but only two are typically required: the&amp;nbsp;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;ServerName&lt;/span&gt;&lt;/code&gt;&amp;nbsp;and the&amp;nbsp;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;DocumentRoot&lt;/span&gt;&lt;/code&gt;&amp;nbsp;directives.&amp;nbsp;As a matter of good form,&lt;em&gt;vhost&lt;/em&gt;&amp;nbsp;blocks and related directives should go at the end of the&amp;nbsp;&lt;code&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;httpd.conf&lt;/span&gt;&lt;/code&gt;&amp;nbsp;file.&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;So using "sudo vi /etc/apache2/apache2.conf",&amp;nbsp;added the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/353103.js?file=apache+virtual+hosts"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1960869338992980920?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1960869338992980920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/apache-virtual-hosts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1960869338992980920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1960869338992980920'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/04/apache-virtual-hosts.html' title='Apache Virtual Hosts'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3977794484559265007</id><published>2010-03-26T13:50:00.000-07:00</published><updated>2010-07-30T02:38:45.134-07:00</updated><title type='text'>Github</title><content type='html'>I've got some money I made from creating websites for people. I don't make much money making websites for people but my instinct is to reinvest it.&amp;nbsp;I&amp;nbsp;instinctively&amp;nbsp;like&amp;nbsp;Git-hub- see the wisdom of source control, benefits of Git, need for a private&amp;nbsp;repository&amp;nbsp;so I subscribed. We shall see how it goes.&lt;br /&gt;&lt;br /&gt;I plan to fork. [&lt;a href="http://help.github.com/forking/"&gt;http://help.github.com/forking/&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;Then use a Wiki page to chart development progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3977794484559265007?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3977794484559265007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/03/github.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3977794484559265007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3977794484559265007'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/03/github.html' title='Github'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5905566868762944493</id><published>2010-02-17T19:18:00.001-08:00</published><updated>2010-07-30T02:38:45.136-07:00</updated><title type='text'>Nothing new under the sun...</title><content type='html'>&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: tahoma, arial, sans-serif; font-size: small;"&gt;The web, so far, is semantically implemented exactly the same way as COBOL/3270 code, circa 1970. You have a dumb datastore, managed by bespoke code, talking to a semi-smart block mode terminal.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: tahoma, arial, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: tahoma, arial, sans-serif; font-size: small;"&gt;&lt;a href="http://www.artima.com/forums/flat.jsp?forum=106&amp;amp;thread=281005&amp;amp;start=30&amp;amp;msRange=15"&gt;http://www.artima.com/forums/flat.jsp?forum=106&amp;amp;thread=281005&amp;amp;start=30&amp;amp;msRange=15&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5905566868762944493?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5905566868762944493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/02/web-so-far-is-semantically-implemented.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5905566868762944493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5905566868762944493'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/02/web-so-far-is-semantically-implemented.html' title='Nothing new under the sun...'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1752365823844651893</id><published>2010-02-15T03:07:00.001-08:00</published><updated>2010-07-30T02:38:45.136-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><title type='text'>Upgrading Centos 5.3 to 5.4</title><content type='html'>&lt;span class="Apple-style-span" style="color: #646464; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #fafafa; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 180, 190); border-bottom-style: dotted; border-bottom-width: 1px; border-left-color: rgb(180, 180, 180); border-left-style: solid; border-left-width: 20px; border-right-color: rgb(170, 180, 190); border-right-style: dotted; border-right-width: 1px; border-top-color: rgb(170, 180, 190); border-top-style: dotted; border-top-width: 1px; color: seagreen; font-family: 'Courier New', Courier, monospace; font-size: 11px; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 5px; padding-left: 10px; padding-right: 0px; padding-top: 5px; white-space: pre-wrap;"&gt;yum clean all&lt;br /&gt;yum update glibc\*&lt;br /&gt;yum update yum\* rpm\* python\*&lt;br /&gt;yum clean all&lt;br /&gt;yum update&lt;br /&gt;shutdown -r now&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1752365823844651893?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1752365823844651893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/02/upgrading-centos-53-to-54.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1752365823844651893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1752365823844651893'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/02/upgrading-centos-53-to-54.html' title='Upgrading Centos 5.3 to 5.4'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-4716187394408650832</id><published>2010-02-03T15:28:00.000-08:00</published><updated>2010-07-30T02:38:45.137-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='RHEL'/><title type='text'>RHCE Cramming Cheat Sheet</title><content type='html'>This week I'm taking the RHCE Fast track course. I have some Linux experience, but I am basically winging it. Others on the course had taken Red Hat's advised course of taking the RHCT first, which substantially shares a lot of content. First two days they were moaning we were covering old ground.&lt;br /&gt;&lt;br /&gt;The key is knowing the commands associated with each learning objectice, I think. As then its possible to lookup the man page if unsure about the syntax. This seems like a great cheatsheet, for that purpose, for cramming:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://conigliaro.org/wiki/rhce"&gt;http://conigliaro.org/wiki/rhce&lt;/a&gt;&lt;br /&gt;&lt;a href="http://conigliaro.org/wiki/rhce?do=export_html"&gt;http://conigliaro.org/wiki/rhce?do=export_html&lt;/a&gt;&amp;nbsp;version to view from my phone :P&lt;br /&gt;&lt;br /&gt;Test is on Friday coming...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-4716187394408650832?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/4716187394408650832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/02/rhce-cramming-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4716187394408650832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/4716187394408650832'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/02/rhce-cramming-cheat-sheet.html' title='RHCE Cramming Cheat Sheet'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-6083650684289324638</id><published>2010-01-23T14:51:00.000-08:00</published><updated>2010-07-30T02:38:45.138-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Android application with location awareness</title><content type='html'>Building on the last post, last week- I've developed further with my experiments with Android applications. It stuck me the most compelling aspect was the GPS capability, so I have progressed to a location aware base application.&lt;br /&gt;&lt;br /&gt;The following blogs were all I really needed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.smnirven.com/?p=39"&gt;http://www.smnirven.com/?p=39&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/1389811/gps-not-update-location-after-close-and-reopen-app-on-android"&gt;http://stackoverflow.com/questions/1389811/gps-not-update-location-after-close-and-reopen-app-on-android&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The first, I followed until it worked, and the second was a tweak to the design. I also added the project to Github:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://github.com/LeonigMig/metrics"&gt;http://github.com/LeonigMig/metrics&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-6083650684289324638?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/6083650684289324638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/01/android-application-with-location.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6083650684289324638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6083650684289324638'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/01/android-application-with-location.html' title='Android application with location awareness'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-2540988329661727530</id><published>2010-01-16T12:29:00.000-08:00</published><updated>2010-07-30T02:38:45.138-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android Development Environment on Ubuntu</title><content type='html'>I bought a Nexus One Google phone. Some day I thought I'd play around with the development possibilities, and in an idle moment last night, I wondered how hard it would be to get a "hello world" going.&lt;br /&gt;&lt;br /&gt;I started with my laptop running Ubuntu 9.10, my Google phone and the USB cable to connect the two together.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/sdk/index.html"&gt;http://developer.android.com/sdk/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step one is to download the SDK. The link is indicated above. I just downloaded the Linux version and decompressed it into a folder under my user directory I set aside for Android stuff. I edited my ~/.bash.rc to add the tools directory to the path as they recommended also (see link below).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/sdk/installing.html#Installing"&gt;http://developer.android.com/sdk/installing.html#Installing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next step was to install the ADT, which is an IDE based on Eclipse with all kinds of niceties for developing and compiling Android apps. Think of it like Visual Studio for Android. First step is to install the base version of Eclipse, so I can then add ADT as a plugin. So to begin, from the terminal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sudo apt-get install eclipse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After that installs (over 200mb) I started up Eclipse (installs a link under "Programming" in the Gnome menu bar, which I moved to the desktop where I like my icons). As an aside I understand version 3.5.1 of Eclipse is required by the ADT, however by co-incidence this is the version which is installed by default in Ubuntu 9.10 when you apt-get eclipse. So those using another distro or version may need additional steps to ensure the correct version of Eclipse.&lt;br /&gt;&lt;br /&gt;I then followed the steps below to install the ADT into Eclipse, basically going to help &amp;gt; install software and adding the URL Google provide for the ADT, and next, next finishing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/sdk/installing.html#InstallingADT"&gt;http://developer.android.com/sdk/eclipse-adt.html#installing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However there was one "gotcha", in that some third party libraries could not be found. I found the answer in a mailing list post (second link below) - basically I needed to add the Eclipse update site to the install of Eclipse - so the ADT can pull in some third party libraries. This allowed me to complete the ADT installation, which by the way took about 20 mins.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/android-developers/browse_thread/thread/1da899d34557f2e8"&gt;http://groups.google.com/group/android-developers/browse_thread/thread/1da899d34557f2e8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The final step in setting the ADT up is to associate the SDK with the ADT install. This is done by going into window &amp;gt; preferences in Eclipse, and on the Android page pointing at the location where the SDK is installed.&lt;br /&gt;&lt;br /&gt;So, having downloaded the SDK, decompressed it, installed eclipse, installed the ADT into Eclipse and pointing it at the SDK I was ready to go? Not quite - Google have different version of the Android OS, and provide different modules for each. The Nexus One is Android 2.1, or API level 7. Frankly I don't really care about older versions, so I was just interested in the 2.1 SDK. I therefore followed these steps to install the 2.1 SDK:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/sdk/adding-components.html#InstallingComponents"&gt;http://developer.android.com/sdk/adding-components.html#InstallingComponents&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All that being complete I followed the documentation to write a "hello world application".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/guide/tutorials/hello-world.html"&gt;http://developer.android.com/guide/tutorials/hello-world.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As indicated in the tutorial, as a first step I ran the app on the emulator which I created as part of the tutorial. But really I was interested in seeing the application on my phone. The steps for that were here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/guide/developing/device.html"&gt;http://developer.android.com/guide/developing/device.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Again the Google documentation was excellent - however one Gotcha on Ubuntu was the adb server needs to be run as root, otherwise you see an access denies message. This can be done by starting the server as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sudo /path/to/sdk/tools/adb start-server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And that was it! I had the "Hello world" on my phone. We were watching Raiders of the Lost ark in the background while I was tinkling on my laptop, and as a guide I started this when Ballac takes the statue off Jones in the Andes, and was completely finished by the time Jones miraculously arrives at the submarine base towards the end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-2540988329661727530?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/2540988329661727530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/01/android-development-environment-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2540988329661727530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2540988329661727530'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/01/android-development-environment-on.html' title='Android Development Environment on Ubuntu'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-7300216523491930137</id><published>2010-01-07T11:27:00.000-08:00</published><updated>2010-07-30T02:38:45.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>A configuration file with an encrypted password in Python</title><content type='html'>I need to set configuration by environment in quite a few Python utils. I'd like to create an object with a filename as a constructor variable, and then get a dict of the values. One issue is the password -&amp;nbsp;&amp;nbsp;better not to keep it in plain text. So I need to make them "encrypted", or a better phrase might be "non-human readable".&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/273393.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gist.github.com/273393"&gt;http://gist.github.com/273393&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I got my head round the python unittest framework when writing this, and also got my head round the ConfigParser and optparse libraries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-7300216523491930137?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/7300216523491930137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/01/configuration-file-with-encrypted.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7300216523491930137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7300216523491930137'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2010/01/configuration-file-with-encrypted.html' title='A configuration file with an encrypted password in Python'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-2036508690529903190</id><published>2009-12-30T08:58:00.001-08:00</published><updated>2010-07-30T02:38:45.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python: Determine location of Site-Packages / Dist-Packages</title><content type='html'>Nice tip from the Django tutorial page.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.djangoproject.com/en/dev/topics/install/"&gt;http://docs.djangoproject.com/en/dev/topics/install/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-2036508690529903190?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/2036508690529903190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/python-determine-location-of-site.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2036508690529903190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2036508690529903190'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/python-determine-location-of-site.html' title='Python: Determine location of Site-Packages / Dist-Packages'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-6972827583239133709</id><published>2009-12-23T10:18:00.000-08:00</published><updated>2010-07-30T02:38:45.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Show only directories in bash using ls</title><content type='html'>In Windows you can just go "dir /ad" on Linux its not so obvious:&lt;br /&gt;&lt;br /&gt;ls -d */&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-6972827583239133709?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/6972827583239133709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/show-only-directories-in-bash-using-ls.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6972827583239133709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6972827583239133709'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/show-only-directories-in-bash-using-ls.html' title='Show only directories in bash using ls'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-7178466922868278484</id><published>2009-12-21T23:33:00.000-08:00</published><updated>2010-07-30T02:40:57.809-07:00</updated><title type='text'>Elements of a web-store</title><content type='html'>&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;span style="font-size: medium;"&gt;I want to build on existing solutions as much as possible, but remain flexible.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Static info.&lt;/li&gt;&lt;li&gt;Navigation / Categories.&lt;/li&gt;&lt;li&gt;Product Presentation.&lt;/li&gt;&lt;li&gt;Visitor tracking,&amp;nbsp;analytics, landing pages.&lt;/li&gt;&lt;li&gt;Shopping Cart.&lt;/li&gt;&lt;li&gt;Customer login / registration.&lt;/li&gt;&lt;li&gt;Checkout / payment processing.&lt;/li&gt;&lt;li&gt;Dispatch workflow.&lt;/li&gt;&lt;li&gt;Customer / marketing database.&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/5372331811199572814-7178466922868278484?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/7178466922868278484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/elements-of-web-store.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7178466922868278484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7178466922868278484'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/elements-of-web-store.html' title='Elements of a web-store'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-8362624863417550824</id><published>2009-12-18T11:17:00.000-08:00</published><updated>2010-07-30T02:38:45.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Chrome Keyboard Shortcuts</title><content type='html'>With the Linux and Mac versions, Google Chrome is becoming pretty ubiquitous as a browser.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/support/chrome/bin/answer.py?hl=en&amp;amp;answer=95743"&gt;http://www.google.com/support/chrome/bin/answer.py?hl=en&amp;amp;answer=95743&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ctrl-t&gt;[CTRL-T] &amp;nbsp;= new tab&lt;/ctrl-t&gt;&lt;br /&gt;&lt;ctrl-pgup/down&gt;[CTRL-PGUP/DOWN] = move between tabs&lt;/ctrl-pgup/down&gt;&lt;br /&gt;&lt;ctrl-pgup/down&gt;[CTRL-W] &amp;nbsp;= close tab&lt;/ctrl-pgup/down&gt;&lt;br /&gt;[CTRL-E] = perform search&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-8362624863417550824?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/8362624863417550824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/google-chrome-keyboard-shortcuts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/8362624863417550824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/8362624863417550824'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/google-chrome-keyboard-shortcuts.html' title='Google Chrome Keyboard Shortcuts'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-7769464564027573143</id><published>2009-12-18T08:14:00.000-08:00</published><updated>2010-07-30T02:38:45.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>BitchX</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mkdir BitchX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cd BitchX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;wget http://www.bitchx.com/download/BitchX-1.1-final-linux.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;tar xvf BitchX*.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;./BitchX &lt;username&gt; &lt;server&gt;&lt;/server&gt;&lt;/username&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://linuxreviews.org/software/irc/bitchx/"&gt;http://linuxreviews.org/software/irc/bitchx/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-7769464564027573143?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/7769464564027573143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/bitchx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7769464564027573143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7769464564027573143'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/bitchx.html' title='BitchX'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-281308631612781366</id><published>2009-12-17T12:34:00.001-08:00</published><updated>2010-07-30T02:38:45.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Useful Cisco Commands</title><content type='html'>show ip traffic&lt;div&gt;show tcp&lt;/div&gt;&lt;div&gt;show ip dhcp bindings&lt;/div&gt;&lt;div&gt;show interface atm 0&lt;/div&gt;&lt;div&gt;show interface dot11&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-281308631612781366?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/281308631612781366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/useful-cisco-commands.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/281308631612781366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/281308631612781366'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/useful-cisco-commands.html' title='Useful Cisco Commands'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-7521569385590871058</id><published>2009-12-17T09:45:00.000-08:00</published><updated>2010-07-30T02:38:45.143-07:00</updated><title type='text'>New 'Rapid-Carbon' Web Application</title><content type='html'>An e-commerce web application providing the following functional requirements:&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Database of customers.&lt;/li&gt;&lt;li&gt;Database of products.&lt;/li&gt;&lt;li&gt;Amazon / other e-payment integration.&lt;/li&gt;&lt;li&gt;Wiki pages for manuals etc.&lt;/li&gt;&lt;li&gt;Internationalisation.&lt;/li&gt;&lt;li&gt;Views edited by someone else.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Non-functional:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Easy / Quick to deploy.&lt;/li&gt;&lt;li&gt;Move between hosts.&lt;/li&gt;&lt;li&gt;Backup.&lt;/li&gt;&lt;li&gt;Quick to develop.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Technologies:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;MySQL&lt;/li&gt;&lt;li&gt;Apache&lt;/li&gt;&lt;li&gt;Django&lt;/li&gt;&lt;li&gt;git&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://github.com/LeonigMig/gitproj/blob/master/README"&gt;http://github.com/LeonigMig/gitproj/blob/master/README&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-7521569385590871058?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/7521569385590871058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/new-rapid-carbon-web-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7521569385590871058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7521569385590871058'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/new-rapid-carbon-web-application.html' title='New &apos;Rapid-Carbon&apos; Web Application'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-703306260060411594</id><published>2009-12-09T01:42:00.000-08:00</published><updated>2010-07-30T02:38:45.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Repeated Sharepoint Credentials Box when opening Office Doc in IE on Windows 7.</title><content type='html'>We have a Sharepoint server at work used to share documents via WebDav. It is authenticated via the Active Directory, using the current logged on user credentials. It has always been the case, on IE on XP that you needed to carry out the following steps to access files without seeing an annoying credentials box:&lt;br /&gt;&lt;br /&gt;1. Add the Sharepoint host to Trusted Sites in IE.&lt;br /&gt;2.a. &amp;nbsp;From the security tab, select "custom level" for Trusted Sites.&lt;br /&gt;2.b. &amp;nbsp;Scroll to bottom of options and select "Automatic Logon with current username and password".&lt;br /&gt;&lt;br /&gt;However since moving to W7, this continues to work but I keep getting prompted for my credentials after opening an Office Document. This is annoying as repeatedly typing the correct password has no effect, and only by clicking "cancel" does the document download.&lt;br /&gt;&lt;br /&gt;Seem this is a bug, due to the fact that:&lt;br /&gt;&lt;br /&gt;1. We don't have a proxy, i.e. MS ISA Server.&lt;br /&gt;2. We are using a fully qualified domain name.&lt;br /&gt;&lt;br /&gt;Don't think I understand how MS missed this state of affairs as valid use case / test case, but anyhow.&lt;br /&gt;&lt;br /&gt;There is hotfix for Vista to fix this, however the patch does not work on Window 7. However following the manual steps in the article below fixed the problem and worked for me (editing the registry):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/?id=943280"&gt;http://support.microsoft.com/?id=943280&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-703306260060411594?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/703306260060411594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/repeated-sharepoint-credentials-box.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/703306260060411594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/703306260060411594'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/repeated-sharepoint-credentials-box.html' title='Repeated Sharepoint Credentials Box when opening Office Doc in IE on Windows 7.'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-6055088071871212630</id><published>2009-12-05T02:44:00.000-08:00</published><updated>2010-07-30T02:38:45.145-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux on the Desktop : Ubuntu Karmic</title><content type='html'>Linux is the server operating system, but honestly I wouldn't consider it on the desktop - except for development. I've installed Ubuntu Karmic on my Thinkpad X60s as a dual boot with XP for one reason - as a platform for developing an Django application. The deployment issues I had with my last application, a Rails project, developing on XP then migrating to Linux (especially with Imaging libraries) was unreal - so I'd prefer to develop on the same platform the application will run in production.&lt;br /&gt;&lt;br /&gt;My first instinct was to run CENTOS, the same platform as my host, however I stumbled across the ChromiumOS build page and it was clear Google developers were using Ubuntu Karmic, so I thought, if its good enough for them, I'll try it. Honestly I'm very impressed, it was actually a slick experience. I run Windows 7 on my desktop at work and on my Media PC, and the experience isn't better (and of course the compatibility isn't there on Ubuntu, however for developing a Django web app, in Vi and using all the nice Python deployment tools Ubuntu is ideal.&lt;br /&gt;&lt;br /&gt;Basic stuff, but this article helped me get the default GUI how I wanted it:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.techotopia.com/index.php/Customizing_the_Ubuntu_GNOME_Desktop_Panels"&gt;http://www.techotopia.com/index.php/Customizing_the_Ubuntu_GNOME_Desktop_Panels&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-6055088071871212630?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/6055088071871212630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/linux-on-desktop-ubuntu-karmic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6055088071871212630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6055088071871212630'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/12/linux-on-desktop-ubuntu-karmic.html' title='Linux on the Desktop : Ubuntu Karmic'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-663954337676391111</id><published>2009-11-12T08:33:00.000-08:00</published><updated>2010-07-30T02:38:45.145-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Wave First Impression</title><content type='html'>I have blagged a Google Wave account. Yet to understand it fully.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jOnigsl6tFg/Svw4p0WmqyI/AAAAAAAAAEM/Jgl2lgP5poo/s1600-h/google_wave.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jOnigsl6tFg/Svw4p0WmqyI/AAAAAAAAAEM/Jgl2lgP5poo/s320/google_wave.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The first impression, running it in Chrome, is that it looks more like an actual application than a web application. More like a real app than any Web App I've seen so far...&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;UPDATE: A week later, its like a waste land. Obviously not enough friends on the Platform to make use of it yet.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;UPDATE2: People have started asking me for invites. Now some people from work have it, there may be some scope to use it properly.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;UPDATE3: Trying to use it at work for some development of ideas exchanges. Will have to see how far we get. &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-663954337676391111?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/663954337676391111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/google-wave-first-impression.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/663954337676391111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/663954337676391111'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/google-wave-first-impression.html' title='Google Wave First Impression'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jOnigsl6tFg/Svw4p0WmqyI/AAAAAAAAAEM/Jgl2lgP5poo/s72-c/google_wave.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-450970560067196760</id><published>2009-11-03T04:19:00.000-08:00</published><updated>2010-07-30T02:38:45.146-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='RHEL'/><title type='text'>How to Tar and Gzip a folder via Bash</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px; "&gt;tar -cvzpf archivefile.tar.gz folder&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-450970560067196760?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/450970560067196760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/how-to-tar-and-gzip-folder-via-bash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/450970560067196760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/450970560067196760'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/how-to-tar-and-gzip-folder-via-bash.html' title='How to Tar and Gzip a folder via Bash'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-8533828518077761346</id><published>2009-11-03T02:55:00.000-08:00</published><updated>2010-07-30T02:38:45.147-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Keyboard shortcuts in BASH on RHEL / Centos</title><content type='html'>&lt;div&gt;&lt;ul&gt;&lt;li&gt;Ctrl + R - Let’s you search through previously used commands&lt;/li&gt;&lt;li&gt;Ctrl + K - Clear the line after the cursor&lt;/li&gt;&lt;li&gt;Tab      - Auto-complete files and folder names&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/"&gt;http://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-8533828518077761346?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/8533828518077761346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/keyboard-shortcuts-in-bash-on-rhel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/8533828518077761346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/8533828518077761346'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/keyboard-shortcuts-in-bash-on-rhel.html' title='Keyboard shortcuts in BASH on RHEL / Centos'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5265056727596100451</id><published>2009-11-03T02:20:00.000-08:00</published><updated>2010-07-30T02:38:45.147-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Restarting Apache in CENTOS / RHEL</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 13px; line-height: 21px; "&gt;/sbin/service httpd restart&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 13px; line-height: 21px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Verdana, Tahoma, Arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 21px;"&gt;May work without the /sbin/ depending on the path.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5265056727596100451?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5265056727596100451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/restarting-apache-in-centos-rhel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5265056727596100451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5265056727596100451'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/restarting-apache-in-centos-rhel.html' title='Restarting Apache in CENTOS / RHEL'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5614536625042817122</id><published>2009-11-02T03:15:00.001-08:00</published><updated>2010-07-30T02:38:45.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='CENTOS'/><category scheme='http://www.blogger.com/atom/ns#' term='RHEL'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Automated Rails Website Clone / Mirror with WGet and FTP script.</title><content type='html'>&lt;div&gt;As a bit of paid work outside of my day job I wrote a css layout for someone's business website. It was just a product presentation site. Eventually I was being asked to update it all the time so I wrote a rails app to allow stuff to be added by the customer in a 'wiki' style manner: [&lt;a href="http://code.google.com/p/rapid-space/"&gt;http://code.google.com/p/rapid-space/&lt;/a&gt;].&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;At first I had this served from my host, but it was a bit slow and occasionally my host had issues. So I've moved the rails app onto another domain, and each week I'm looking to configure a copy process to mirror the rails site, then FTP it up to my customer's own public host.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Clone locally&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;First step is to clone the site generated from the rails app into a static folder on my host, which is running CENTOS. I did this using wget:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;[root@host ~]# wget --mirror -w 2 -p --convert-links -P foldertocopy2 http://rooturltomirror/&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;Annoyingly, the site came out unviewable: the HTML was OK, but the link to the CSS and the images were all broken. This was due to a random number appended to each CSS and Image URL such as ?323124124. These were generated using the Rails Asset Tag helper:&amp;nbsp;&lt;a href="http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html"&gt;http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Given the scale of this site, there is no benefit to leaving the asset timestamps feature switched on, so I turned it off as follows ... in /config/environment.rb add:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;ENV['RAILS_ASSET_ID'] = ''&lt;/li&gt;&lt;/ul&gt;Per: &lt;a href="http://blog.patrick-morgan.net/2008/02/how-to-disable-asset-timestamps-in.html"&gt;http://blog.patrick-morgan.net/2008/02/how-to-disable-asset-timestamps-in.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, I was missing files which were linked to via the CSS file, i.e. via @import url("importthis.css"); or images which are only referenced by the css file. Given these files are not subject to change, I'm going to overwrite them from a static folder when I upload to the public host- I can use the same mechanism to blank out the forms (which won't work on a static host).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;FTP to the public domain.&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I just tried to use the ftp client built into CENTOS for this, and echo the commands into it via the EOF mechanism in a shell script, per: &lt;a href="http://www.cyberciti.biz/faq/linux-unix-autologin-cron-ftp-script/"&gt;http://www.cyberciti.biz/faq/linux-unix-autologin-cron-ftp-script/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, using the standard ftp command you can't recurse through directories. I.e. you can copy all files in a directory, but not descend into sub directories. First I looked at a scripted option such as:&amp;nbsp;&lt;a href="http://expect.nist.gov/example/rftp"&gt;http://expect.nist.gov/example/rftp&lt;/a&gt;&amp;nbsp;. T&lt;b&gt;&lt;span style="font-weight: normal;"&gt;his approach made me nervous so I upgraded to lftp on my host ... [&lt;b&gt;&lt;span style="font-weight: normal;"&gt;yum install lftp], and found I could upload the site as follows (with the command 'mirror -R'):&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;[root@host ~]# lftp public-host-ftp-server -u ftpusername, ftppassword -e "mirror -R /local/source /remote/destination"&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5614536625042817122?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5614536625042817122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/automated-website-clone-with-wget-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5614536625042817122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5614536625042817122'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/automated-website-clone-with-wget-and.html' title='Automated Rails Website Clone / Mirror with WGet and FTP script.'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-2936846012512585602</id><published>2009-11-01T08:38:00.000-08:00</published><updated>2010-07-30T02:38:45.149-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django Shopping Kart - Satchmo or Django-Kart?</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.satchmoproject.com/"&gt;http://www.satchmoproject.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/django-cart/"&gt;http://code.google.com/p/django-cart/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://vaig.be/2009/03/django-cart-released.html"&gt;http://vaig.be/2009/03/django-cart-released.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-2936846012512585602?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/2936846012512585602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/django-shopping-kart-satchmo-or-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2936846012512585602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2936846012512585602'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/django-shopping-kart-satchmo-or-django.html' title='Django Shopping Kart - Satchmo or Django-Kart?'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5011074617053928219</id><published>2009-11-01T08:35:00.000-08:00</published><updated>2010-07-30T02:38:45.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python Coding Standards &amp;  Resources</title><content type='html'>&lt;div&gt;Style Guides:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://google-styleguide.googlecode.com/svn/trunk/pyguide.html"&gt;http://google-styleguide.googlecode.com/svn/trunk/pyguide.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/soc/wiki/PythonStyleGuide?revdep-rebuild"&gt;http://code.google.com/p/soc/wiki/PythonStyleGuide?revdep-rebuild&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Skeletons:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/2387272/what-is-the-best-python-module-skeleton-code"&gt;http://stackoverflow.com/questions/2387272/what-is-the-best-python-module-skeleton-code&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://github.com/ctb/SomePackage"&gt;http://github.com/ctb/SomePackage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;Readability:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.23.nu/c0re/2007/06/antville-15208/"&gt;http://blogs.23.nu/c0re/2007/06/antville-15208/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.python.org/dev/peps/pep-0008/"&gt;http://www.python.org/dev/peps/pep-0008/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Templates Etc.:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=bDgD9whDfEY&amp;amp;feature=PlayList&amp;amp;p=6A6A5E3079506BCC&amp;amp;index=0&amp;amp;playnext=1"&gt;http://www.youtube.com/watch?v=bDgD9whDfEY&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=y7vwZ20SDzc&amp;amp;feature=PlayList&amp;amp;p=6A6A5E3079506BCC&amp;amp;index=1"&gt;http://www.youtube.com/watch?v=y7vwZ20SDzc&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5011074617053928219?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5011074617053928219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/python-coding-standards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5011074617053928219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5011074617053928219'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/python-coding-standards.html' title='Python Coding Standards &amp;  Resources'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3336723031963044522</id><published>2009-11-01T03:42:00.000-08:00</published><updated>2010-07-30T02:38:45.150-07:00</updated><title type='text'>Online Payment Systems</title><content type='html'>&lt;div&gt;Online stores are public Internet web applications. They allow people to find information about a set of products, and order them for delivery. Checkout and payments is a pretty standard use case regardless of the product, and there are all kinds of nasty security issues which could be got wrong. These two points alone justify using a third party, 'hosted' checkout service rather than growing your own, especially for a smallish site.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This blog article makes another point, in relation to Amazon's experience in the early days of web shopping in the nineties:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;observation at the time was that many customers repeatedly pay with same payment method and the same ship-to address. By keeping them on file, and establishing clear defaults, Amazon could shorten the purchase process&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://paymentsviews.com/2009/10/29/amazon-payphrase-one-size-doesnt-fit-all/"&gt;http://paymentsviews.com/2009/10/29/amazon-payphrase-one-size-doesnt-fit-all/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://paymentsviews.com/2009/10/29/amazon-payphrase-one-size-doesnt-fit-all/"&gt;&lt;/a&gt;Kind of obvious, but it relies on a network effect, or economy of scale- in that you are using the same platform across many different product purchases. Again, for a small site this is another reason to use a third party payment platform. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will take a look at the options as per today, with the following requirements, which are appropriate for the kinds of thing I am trying to do:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Limited in scope - i.e. I want a framework which can assist with checkout and payments, not a full stack e-commerce solution.&lt;/li&gt;&lt;li&gt;Adoption - i.e. how much can we benefit from the network effect - i.e. how many people already are subscribed to the platform.&lt;/li&gt;&lt;li&gt;Simplicity - of API and to signup.&lt;/li&gt;&lt;li&gt;Cost.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Google Checkout&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href="http://code.google.com/apis/checkout/developer/index.html"&gt;http://code.google.com/apis/checkout/developer/index.html&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href="http://googlecheckoutapi.blogspot.com/"&gt;http://googlecheckoutapi.blogspot.com/&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Amazon Payments&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href="https://payments.amazon.com/sdui/sdui/index.htm"&gt;https://payments.amazon.com/sdui/sdui/index.htm&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href="http://www.amazonpaymentsblog.com/amazon_payments_blog/"&gt;http://www.amazonpaymentsblog.com/amazon_payments_blog/&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://payments.amazon.com/sdui/sdui/business?sn=cba/what#APM"&gt;https://payments.amazon.com/sdui/sdui/business?sn=cba/what#APM&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Paypal&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&amp;amp;content_ID=developer/home"&gt;https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&amp;amp;content_ID=developer/home&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:post in progress:&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3336723031963044522?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3336723031963044522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/online-payment-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3336723031963044522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3336723031963044522'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/11/online-payment-systems.html' title='Online Payment Systems'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5272935692786212239</id><published>2009-10-28T02:51:00.001-07:00</published><updated>2010-07-30T02:38:45.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>VMware vSphere Client on Windows 7</title><content type='html'>&lt;div&gt;Frustratingly there is an issue here. After installing the client, and trying to connect, this message is shown:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;“Error parsing the server “server name” “clients.xml” file.”&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.techhead.co.uk/running-vmware-vsphere-client-on-windows-7"&gt;http://www.techhead.co.uk/running-vmware-vsphere-client-on-windows-7&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above blog post worked for me. Irritated I had to though.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5272935692786212239?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5272935692786212239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/vmware-vsphere-client-on-windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5272935692786212239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5272935692786212239'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/vmware-vsphere-client-on-windows-7.html' title='VMware vSphere Client on Windows 7'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-7912803807097973015</id><published>2009-10-26T07:32:00.000-07:00</published><updated>2010-07-30T02:38:45.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Active Directory for Windows 7</title><content type='html'>&lt;div&gt;The remote management tools, what in XP was the Administrative Tools Pack, i.e. the AD Users and Group manager, DHCP, DNS, etc ... are available for Windows 7 but its a bit more tricky.&lt;br /&gt;&lt;br /&gt;1. Download from here:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Install as normal.&lt;br /&gt;&lt;br /&gt;3. Go Start &amp;gt; Control Panel &amp;gt; Programs and Features &amp;gt; Turn Windows Features on or Off&lt;br /&gt;&lt;br /&gt;4. Go to "Remote Administration Tools" and turn on any features you need.&lt;br /&gt;&lt;br /&gt;5. Start the appropriate snap-ins from Start &amp;gt; Administrative Tools&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-7912803807097973015?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/7912803807097973015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/active-directory-from-windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7912803807097973015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7912803807097973015'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/active-directory-from-windows-7.html' title='Active Directory for Windows 7'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-6360082321684558159</id><published>2009-10-26T02:29:00.000-07:00</published><updated>2010-07-30T02:38:45.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Rotating Flikr Wallpaper and Screensaver with Windows 7</title><content type='html'>This isn't very enterprise IT, but its a neat way of varying my desktop wallpaper and screensaver dynamically with Windows 7.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Setup or use current Flikr account to upload pictures to.&lt;/li&gt;&lt;li&gt;Via account section, create a free API key: http://www.flickr.com/services/api/keys&lt;/li&gt;&lt;li&gt;Download Slikr Screensaver: &lt;a href="http://code.google.com/p/slickr-dotnet/downloads/list"&gt;http://code.google.com/p/slickr-dotnet/downloads/list&lt;/a&gt;&lt;/li&gt;&lt;li&gt;On the 64 bit version of Windows 7 I had to uncheck "Open GL Check" within Slikr properties (via screensaver properties).&lt;/li&gt;&lt;li&gt;Then put the API key into Slikr and sync it up with your user account.&lt;/li&gt;&lt;li&gt;Then as a wallpapers, select %userprofile%\pictures\slikr\user\youruser&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The upshot is any pictures you add to your Flikr will automatically join the group of pictures on your screensaver, and by extension your wallpapers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you access privileged data or systems from the user account you set this up on, check "On resume, prompt for login".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-6360082321684558159?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/6360082321684558159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/rotating-flikr-wallpaper-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6360082321684558159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6360082321684558159'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/rotating-flikr-wallpaper-and.html' title='Rotating Flikr Wallpaper and Screensaver with Windows 7'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-6325423576886535860</id><published>2009-10-26T02:00:00.000-07:00</published><updated>2010-07-30T02:38:45.153-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Notes'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Migrating / Move Lotus Notes from one PC to another.</title><content type='html'>First a digression: Notes is the singularly worst piece of widely adopted enterprise software I know of.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The key is the data folder. Each user has a Notes Data folder which contains their settings. On the old PC, which was XP and had migrated from 6.5 -&gt; 7 -&gt; 8 -&gt; 8.5 this was at:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;c:\program files\notes\lotus\data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I installed Notes 8.5 on the new machine and copied the data to:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;%userprofile%\appdata\local\lotus\notes\data&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Selecting to overwrite or replace all conflicts. I then started Notes, cancelled a few meaningless wizards and messages (one about "Internet Mail", one about "IM" and a "Cannot create folder").&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However after 15 mins of Notes "churning", I can see my inbox, and I'm migrated.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-6325423576886535860?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/6325423576886535860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/migrating-move-lotus-notes-from-one-pc.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6325423576886535860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/6325423576886535860'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/migrating-move-lotus-notes-from-one-pc.html' title='Migrating / Move Lotus Notes from one PC to another.'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-7185967028798597449</id><published>2009-10-24T04:57:00.000-07:00</published><updated>2010-07-30T02:38:45.153-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Run CENTOS VM in background on Windows for Free with VMware</title><content type='html'>A developer at work wanted to do this and here are the pointers I gave him. &lt;div&gt;&lt;ol&gt;&lt;li&gt;Download VMware Server for free from VMware. [&lt;a href="http://www.vmware.com/products/server/"&gt;http://www.vmware.com/products/server/&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Download the ISO for CENTOS and put it in your "C:\Virtual Machines" folder, then mount it from within VMware from the "Datastore". [I get them from &lt;a href="http://www.kernel.org"&gt;http://www.kernel.org&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Make sure the Intel VM Extensions are enabled in your BIOS if you have them.&lt;/li&gt;&lt;li&gt;Install CENTOS on VM as you would for a Physical PC.&lt;/li&gt;&lt;li&gt;Setup SSH and SCP and then interact with your box via PuTTY, WinSCP and HTTP.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;He seemed pretty pleased with the outcome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-7185967028798597449?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/7185967028798597449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/run-centos-vm-in-background-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7185967028798597449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/7185967028798597449'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/run-centos-vm-in-background-on-windows.html' title='Run CENTOS VM in background on Windows for Free with VMware'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-2028888506692526603</id><published>2009-10-24T04:25:00.000-07:00</published><updated>2010-07-30T02:38:45.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Disable Driver Signature Enforcement - Cisco PI21AG</title><content type='html'>I've got a Cisco PI21AG WiFi PCI NIC card for my media box PC. Cisco don't supply a driver for the 64bit Windows 7 in the final release version. However there was a Microsoft driver in the W7 beta which worked perfectly (but taken out in RC and RTM versions of W7). After installing the release version of W7-64 I just installed the driver that had come with the Beta. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Problem is the "driver signature enforcement" is invalid so the driver won't load. Although this can be disabled by pressing F8 each time the PC boots and selecting the "disable enforcement" option, this is tedious so I Googled and tried this:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Run command prompt as administrator.&lt;/li&gt;&lt;li&gt;bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;This did NOT WORK. Apparently it does work on some versions of Vista, but who cares Vista is a waste of time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Seemed dodgy, but I then tried this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.ngohq.com/home.php?page=dseo"&gt;http://www.ngohq.com/home.php?page=dseo&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically its a case of switching the OS to a driver developer "test mode" and then applying a sort of "self signing" to the driver in question. So by going into Device Manager and selecting the device, properties, driver tab, driver details - I can see it is athrx.sys which is not signed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So using the app I applied both these steps and rebooted. Worked great  - No more F8 and I can keep using my expensive bulletproof Cisco Wifi NIC on the Media Box PC.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-2028888506692526603?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/2028888506692526603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/disable-driver-signature-enforcement.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2028888506692526603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/2028888506692526603'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/disable-driver-signature-enforcement.html' title='Disable Driver Signature Enforcement - Cisco PI21AG'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-3858867154063072207</id><published>2009-10-21T13:20:00.000-07:00</published><updated>2010-07-30T02:38:45.155-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vim'/><title type='text'>Search and Replace in Vim</title><content type='html'>:%s/search/replace&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-3858867154063072207?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/3858867154063072207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/search-and-replace-in-vim.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3858867154063072207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/3858867154063072207'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/search-and-replace-in-vim.html' title='Search and Replace in Vim'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5207469753062694397</id><published>2009-10-21T12:32:00.000-07:00</published><updated>2010-07-30T02:38:45.155-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Splunk'/><title type='text'>Splunk 4.0 out the box cleanup.</title><content type='html'>&lt;ul&gt;&lt;li&gt;Download&lt;/li&gt;&lt;li&gt;Install&lt;/li&gt;&lt;li&gt;Disable all apps [except search :P ]&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Calibri, Arial, Helvetica, sans-serif;font-size:14px;"&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt; set in &lt;code&gt;default_namespace = search&lt;/code&gt;&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;in $SPLUNK_HOME/etc/apps/user-prefs/local/user-prefs.conf&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Square one.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5207469753062694397?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5207469753062694397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/splunk-40-out-box-cleanup.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5207469753062694397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5207469753062694397'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/splunk-40-out-box-cleanup.html' title='Splunk 4.0 out the box cleanup.'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1998682466344123257</id><published>2009-10-19T02:59:00.000-07:00</published><updated>2010-07-30T02:38:45.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Cisco 877W Factory Reset Password Recovery</title><content type='html'>Bought a Cisco 877W off eBay, as a reliable router / access point for home. It came configured as a "The Cloud" free WiFi Hotspot.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you need to do a "factory reset" on one of these you can. &lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Connect to the console using serial cable.&lt;/li&gt;&lt;li&gt;Switch on while hitting [FN-CTRL-BREAK]&lt;fn&gt;&lt;ctrl&gt;-&lt;break&gt; (I have a Thinkpad, [FN]&lt;fn&gt; not needed on a desktop keyboard). Tricky, may take a few attempts - need to be hitting it really early on in the boot process. &lt;/fn&gt;&lt;/break&gt;&lt;/ctrl&gt;&lt;/fn&gt;&lt;/li&gt;&lt;li&gt;Get rommon&gt; prompt. [&lt;a href="http://www.roadkillnetworks.com/cisco/tftp_rom_monitor_appendc.htm"&gt;http://www.roadkillnetworks.com/cisco/tftp_rom_monitor_appendc.htm&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&gt;confreg, &gt;yes, &gt;no to everything except "ignore system config info".&lt;/li&gt;&lt;li&gt;&gt;reset&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;It will then reboot from an alternate configuration file, and you're in! Now however, to clear the existing setup and revert the router to a good state.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Router&gt;enable&lt;/li&gt;&lt;li&gt;Router#conf t&lt;/li&gt;&lt;li&gt;Router(config)config-register 0x2102&lt;/li&gt;&lt;li&gt;Router(config)exit&lt;/li&gt;&lt;li&gt;Router&gt;write memory&lt;/li&gt;&lt;li&gt;Router&gt;reload&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Useful guide:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.petri.co.il/forums/showthread.php?t=9328"&gt;http://www.petri.co.il/forums/showthread.php?t=9328&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cisco.com/en/US/products/sw/iosswrel/ps5187/products_tech_note09186a00802017a1.shtml"&gt;http://www.cisco.com/en/US/products/sw/iosswrel/ps5187/products_tech_note09186a00802017a1.shtml&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1998682466344123257?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1998682466344123257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/cisco-877w-factory-reset.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1998682466344123257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1998682466344123257'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/cisco-877w-factory-reset.html' title='Cisco 877W Factory Reset Password Recovery'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-1731754377207994195</id><published>2009-10-17T02:32:00.000-07:00</published><updated>2010-07-30T02:38:45.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Useful Windows freeware utilities</title><content type='html'>In my optimistic migration to Windows 7, I am reloading my laptop from scratch. Here is a list of useful free utilities I installed.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Notepad++&lt;/div&gt;&lt;div&gt;* gVim&lt;/div&gt;&lt;div&gt;* Paint.NET&lt;/div&gt;&lt;div&gt;* 7-Zip&lt;/div&gt;&lt;div&gt;* Stickies&lt;/div&gt;&lt;div&gt;* ProcExp (minimized on startup)&lt;/div&gt;&lt;div&gt;* KillNotes / KillDomino&lt;/div&gt;&lt;div&gt;* MagicISO&lt;/div&gt;&lt;div&gt;* Putty&lt;/div&gt;&lt;div&gt;* imgBurn&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-1731754377207994195?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/1731754377207994195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/useful-windows-freeware-utilities.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1731754377207994195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/1731754377207994195'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/useful-windows-freeware-utilities.html' title='Useful Windows freeware utilities'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5372331811199572814.post-5452480952262591608</id><published>2009-10-16T13:19:00.001-07:00</published><updated>2010-07-30T02:38:45.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Windows 7 Application Settings Access Denied</title><content type='html'>Microsoft have moved some standard system folders round in Windows 7. "To keep us on our toes" :P&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;'Documents and Settings' has become 'Users' and 'Application Data' has become 'Appdata', among others.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For backward compatibility they have symbolic links setup. Being Microsoft they need to pretend they invented them (&lt;a href="http://en.wikipedia.org/wiki/Symbolic_link#POSIX_and_Unix-like_operating_systems"&gt;1983&lt;/a&gt;) and called them &lt;a href="http://msdn.microsoft.com/en-us/library/aa365006(VS.85).aspx"&gt;"Junctions"&lt;/a&gt;. I'm sure there is some subtlety.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In any case if you try and hit them in Explorer you get "Access Denied". Microsoft excel at meaningful messages. I would expect hitting this folder in Explorer is pretty common as Application Data is a hidden folder in XP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, if you are like me looking for:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;%USERDATA%\Application Data\Folder\&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You need:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;%USERDATA%\AppData\Roaming\Folder&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No idea why the Roaming is necessary. However this does the trick. On 32 bit.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5372331811199572814-5452480952262591608?l=things-ive-learned-about-it.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://things-ive-learned-about-it.blogspot.com/feeds/5452480952262591608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/windows-7-application-settings-access.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5452480952262591608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5372331811199572814/posts/default/5452480952262591608'/><link rel='alternate' type='text/html' href='http://things-ive-learned-about-it.blogspot.com/2009/10/windows-7-application-settings-access.html' title='Windows 7 Application Settings Access Denied'/><author><name>Leonig Mig</name><uri>http://www.blogger.com/profile/12570823683366887121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_jOnigsl6tFg/TFKeiTugKAI/AAAAAAAAAGA/-GT28Tq5-JU/S220/4ueEQarpt6GVMLnuh147xU92TpODx3Z3avbBMAGrTOdFYSHMbQyvG4JHOEOBPgjh.jpg'/></author><thr:total>1</thr:total></entry></feed>
