<?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-80852718082287733</id><updated>2011-12-10T03:00:05.758+08:00</updated><category term='yumi'/><category term='linux'/><category term='network tools'/><category term='location twitter tweetmondo layar latitude maps android'/><category term='android developer jailbreak security market'/><category term='usb'/><category term='twitter augmented reality howto android tweetmondo layar'/><category term='multi boot'/><category term='howto'/><category term='gmail android app sdk open attachment'/><category term='QR code barcode scanner android market intent street art'/><category term='hosts'/><category term='open source'/><category term='VB'/><category term='pcs7'/><category term='work productivity busy'/><category term='windows 7'/><category term='os client'/><category term='tcp'/><category term='download'/><category term='excel'/><category term='lmhosts'/><category term='twitter'/><category term='openvpn'/><category term='software development backseat programming'/><category term='windows'/><category term='thumb drive'/><category term='project management'/><category term='social media'/><category term='cmd'/><category term='error'/><category term='utilities'/><category term='RepRap 3D Printing CNC Maker DIY'/><category term='RDP windows server 2003 non-administrator user WMIC'/><category term='long board surf fibreglass diy'/><title type='text'>Carving Code</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-3907173290802137603</id><published>2011-11-28T20:25:00.001+08:00</published><updated>2011-11-28T20:39:14.021+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yumi'/><category scheme='http://www.blogger.com/atom/ns#' term='thumb drive'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='multi boot'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><title type='text'>Multi Boot Thumb Drive with YUMI</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1wIEJTnXF4Q/TtN9xV2Sr0I/AAAAAAAABcc/4TOgn6XNDG8/s1600/Yumi.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="201" src="http://4.bp.blogspot.com/-1wIEJTnXF4Q/TtN9xV2Sr0I/AAAAAAAABcc/4TOgn6XNDG8/s320/Yumi.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;There are a couple of Linux distros I use regularly for such activities as &lt;a href="http://carvingcode.blogspot.com/2010/10/building-recoverable-developer-computer.html" target="_blank"&gt;creating recovery images of developer machines&lt;/a&gt; and communications debugging. To avoid software installation on production systems I simply run these distros from a bootable thumb drive created with the help of a very useful tool called &lt;a href="http://www.pendrivelinux.com/yumi-multiboot-usb-creator/" target="_blank"&gt;YUMI&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: left;"&gt;YUMI automates the installation of a number of supported distros onto the one thumb drive using a simple GUI. Once the distros are installed I simply create a folder on the thumb drive called "Data" and keep any docs etc that I need in there the same as I would on any other thumb drive.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-3907173290802137603?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/3907173290802137603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2011/11/multi-boot-thumb-drive-with-yumi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/3907173290802137603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/3907173290802137603'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2011/11/multi-boot-thumb-drive-with-yumi.html' title='Multi Boot Thumb Drive with YUMI'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-1wIEJTnXF4Q/TtN9xV2Sr0I/AAAAAAAABcc/4TOgn6XNDG8/s72-c/Yumi.png' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Perth WA, Australia</georss:featurename><georss:point>-31.9528536 115.8573389</georss:point><georss:box>-31.9797991 115.8178569 -31.9259081 115.89682090000001</georss:box></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8151427514619479167</id><published>2011-04-04T11:10:00.000+08:00</published><updated>2011-04-04T11:10:31.474+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lmhosts'/><category scheme='http://www.blogger.com/atom/ns#' term='hosts'/><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='os client'/><category scheme='http://www.blogger.com/atom/ns#' term='pcs7'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>Hosts File Fixes PCS7 OS Project Download Errors</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BwiDSI18I34/TZk2DpLAAJI/AAAAAAAABaM/lyYWDoss6NA/s1600/pcs7.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-BwiDSI18I34/TZk2DpLAAJI/AAAAAAAABaM/lyYWDoss6NA/s1600/pcs7.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;I was getting error message whenever attempting to download a PCS7 OS Client project. The Client PC had two network interfaces, one on the terminal network and another on an office network. On further investigation I found the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pinging by PC name from the PCS7 Engineering Server was resolving to the address on the office network, not that of the terminal network.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The Engineering Server LHMOSTS file had the client PC with the terminal network address&lt;/li&gt;&lt;li&gt;ipconfig /flushdns did not fix the problem&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;After some googling I stumbled on the solution - the &lt;b&gt;hosts&amp;nbsp;&lt;/b&gt;file! It seems that&amp;nbsp;&lt;a href="http://support.microsoft.com/kb/105997"&gt;lmhosts and hosts are used by different utilites&lt;/a&gt;&amp;nbsp;and ping is one of the utilites that uses hosts.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After adding the correct name and ip address to hosts ping resolved to the desired address and PCS7 downloaded the OS client project without errors. This would indicate that PCS7 also uses hosts or at least the tcp/ip utilies like ping that reference it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8151427514619479167?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8151427514619479167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2011/04/hosts-file-fixes-pcs7-os-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8151427514619479167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8151427514619479167'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2011/04/hosts-file-fixes-pcs7-os-project.html' title='Hosts File Fixes PCS7 OS Project Download Errors'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-BwiDSI18I34/TZk2DpLAAJI/AAAAAAAABaM/lyYWDoss6NA/s72-c/pcs7.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8346446267319146770</id><published>2011-01-07T10:36:00.001+08:00</published><updated>2011-01-07T10:36:44.063+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RDP windows server 2003 non-administrator user WMIC'/><title type='text'>RDP to Windows Server for Non-Administrator Users</title><content type='html'>Windows Server 2003 by default does not allow Remote Desktop Connections from users that are not part of the Administrators group.&lt;br /&gt;&lt;br /&gt;To get around this open a command prompt and enter the following:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: lime;"&gt;C:\&amp;gt; WMIC RDPermissions where "TerminalName='console'" call AddAccount "Remote Desktop Users", 2&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: lime;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;Any user added to the &lt;i&gt;Remote Desktop Users&lt;/i&gt;&amp;nbsp;group on the server will now be able to start an RDP session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8346446267319146770?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8346446267319146770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2011/01/rdp-to-windows-server-for-non.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8346446267319146770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8346446267319146770'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2011/01/rdp-to-windows-server-for-non.html' title='RDP to Windows Server for Non-Administrator Users'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8501651565827562278</id><published>2010-10-04T15:32:00.001+08:00</published><updated>2010-10-04T15:32:11.556+08:00</updated><title type='text'>Building a Recoverable Developer Computer</title><content type='html'>&lt;p&gt;I wanted a developers computer that can easily be reimaged to a vanilla XP install at the completion of each project. My main reason for this is due to the fact that control systems software does not always play well with products from other vendors so it is best to start a new project with a fresh install.&lt;/p&gt; &lt;p&gt;The tool I ended up selecting to help with with this task was &lt;a href="http://partedmagic.com/"&gt;Parted Magic&lt;/a&gt;. This is basically a live cd Linux distribution that includes partitioning and cloning tools.&lt;/p&gt; &lt;p&gt;The computer I performed this setup on originally had one full size system partition with Windows XP installed. What I wanted was three partitions.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;C: “System”&lt;/li&gt; &lt;li&gt;E: “Recovery”&lt;/li&gt; &lt;li&gt;F: “Data”&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;My plan being to store the vanilla XP &lt;em&gt;System&lt;/em&gt; image on the &lt;em&gt;Recovery&lt;/em&gt; partition where it can be easily restored over the used &lt;em&gt;System &lt;/em&gt;partition at the commencement of a new project. The &lt;em&gt;Data&lt;/em&gt; partition is the same as is seen everywhere to keep important data separate from OS installations.&lt;/p&gt; &lt;p&gt;The steps I followed.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Download the &lt;a href="http://partedmagic.com/download.html"&gt;Parted Magic ISO&lt;/a&gt; and burn to a CD&lt;/li&gt; &lt;li&gt;Boot into the Parted Magic environment from the live CD&lt;/li&gt; &lt;li&gt;Use the &lt;a href="http://partedmagic.com/documentation/119-using-gparted.html"&gt;GParted tool as described on the Parted Magic site&lt;/a&gt; to shrink my &lt;em&gt;System &lt;/em&gt;partition&lt;/li&gt; &lt;li&gt;Boot back into Windows XP and create the &lt;em&gt;Recovery&lt;/em&gt; and &lt;em&gt;Data &lt;/em&gt;Partitions. I made the &lt;em&gt;Recovery&lt;/em&gt; partition identical in size to the &lt;em&gt;System&lt;/em&gt; partition to avoid potential problems with imaging later&lt;/li&gt; &lt;li&gt;Setup the XP system to a state that I want to be able to restore to later&lt;/li&gt; &lt;li&gt;Boot into the Parted Magic environment&lt;/li&gt; &lt;li&gt;Select System Tools –&amp;gt; Clonezilla&lt;/li&gt; &lt;li&gt;&lt;em&gt;device-image&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;local_dev&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;sda2 (Recovery)&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Expert&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;saveparts&lt;/em&gt;&lt;/li&gt; &lt;li&gt;I used the name “Vanilla-XP-img”&lt;/li&gt; &lt;li&gt;&lt;em&gt;sda1&lt;/em&gt;&lt;/li&gt; &lt;li&gt;Agree to default options&lt;/li&gt; &lt;li&gt;Increase the size of image file splits to something large to prevent splitting e.g &lt;em&gt;51200&lt;/em&gt;&lt;/li&gt; &lt;li&gt;Agree to defaults and start&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;This leaves an image file on the recovery partition that can then be restored to the &lt;em&gt;System&lt;/em&gt; partition to get back to a plain “Vanilla” XP install.&lt;/p&gt; &lt;p&gt;The steps to recover a partition from an image are nearly identical to the above, with the exception of selection &lt;em&gt;&lt;strong&gt;restoreparts&lt;/strong&gt;&lt;/em&gt; instead of &lt;em&gt;saveparts&lt;/em&gt;.&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:881b24a5-1af3-4f1c-871e-caafa48b2b62" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/clonezilla" rel="tag"&gt;clonezilla&lt;/a&gt;,&lt;a href="http://technorati.com/tags/windows" rel="tag"&gt;windows&lt;/a&gt;,&lt;a href="http://technorati.com/tags/xp" rel="tag"&gt;xp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/image" rel="tag"&gt;image&lt;/a&gt;,&lt;a href="http://technorati.com/tags/recovery" rel="tag"&gt;recovery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/partition" rel="tag"&gt;partition&lt;/a&gt;,&lt;a href="http://technorati.com/tags/howto" rel="tag"&gt;howto&lt;/a&gt;,&lt;a href="http://technorati.com/tags/parted+magic" rel="tag"&gt;parted magic&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8501651565827562278?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8501651565827562278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/10/building-recoverable-developer-computer.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8501651565827562278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8501651565827562278'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/10/building-recoverable-developer-computer.html' title='Building a Recoverable Developer Computer'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5896152021494193184</id><published>2010-09-21T15:42:00.001+08:00</published><updated>2010-09-21T15:42:05.166+08:00</updated><title type='text'>P2PU: Drupal Introduction #1</title><content type='html'>&lt;p&gt;I’ve started two drupal courses through P2PU and want to keep my work on each separated. &lt;/p&gt; &lt;p&gt;To achieve this I need:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Two separate drupal folders  &lt;li&gt;Two separate drupal databases  &lt;li&gt;Two separate virtual sites for apache&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I made the first site “drupalintro” in the same manner as outlined in my earlier post &lt;a href="http://carvingcode.blogspot.com/2010/09/p2pu-drupal-social-web-application-1.html"&gt;P2PU: Drupal Social Web Application #1&lt;/a&gt; with the following changes.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The drupal directory was named &lt;em&gt;/var/www/&lt;strong&gt;drupalintro&lt;/strong&gt;&lt;/em&gt; &lt;/li&gt; &lt;li&gt;$ mysqladmin –u root –p create &lt;strong&gt;drupalintro&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;mysql&amp;gt; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON &lt;strong&gt;drupalintro&lt;/strong&gt;.* TO &lt;a href="mailto:drupaluser&amp;rsquo;@&amp;rsquo;localhost&amp;rsquo;"&gt;‘&amp;lt;drupaluser&amp;gt;’@’localhost’&lt;/a&gt; IDENTIFIED BY ‘&amp;lt;drupalpass&amp;gt;’; &lt;/li&gt; &lt;li&gt;mysql&amp;gt; FLUSH PRIVILEGES; &lt;/li&gt; &lt;li&gt;mysql&amp;gt; \q &lt;/li&gt; &lt;li&gt;$ vim /var/www/&lt;strong&gt;drupalintro&lt;/strong&gt;/sites/default/settings.php &lt;/li&gt; &lt;li&gt;edit:&amp;nbsp; &lt;em&gt;$db_url = ‘mysql://&amp;lt;drupaluser&amp;gt;:&amp;lt;drupalpass&amp;gt;@localhost/&lt;strong&gt;drupalintro&lt;/strong&gt;’;&lt;/em&gt; &lt;/li&gt; &lt;li&gt;$ cp /etc/apache2/sites-available/default /etc/apache2/sites-available/&lt;strong&gt;drupalintro&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;$ vim /etc/apache2/sites-available/&lt;strong&gt;drupalintro&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;edit: &lt;em&gt;DocumentRoot /var/www/&lt;strong&gt;drupalintro&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;edit: Directory /var/www/drupalintro&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now to make the second site called “openhippel” I did the same again with the following changes:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The drupal directory was named &lt;em&gt;/var/www/openhippel&lt;/em&gt;&lt;/li&gt; &lt;li&gt;$ mysqladmin –u root –p create &lt;strong&gt;openhippel&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;mysql&amp;gt; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON &lt;strong&gt;openhippel&lt;/strong&gt;.* TO &lt;a href="mailto:drupaluser&amp;rsquo;@&amp;rsquo;localhost&amp;rsquo;"&gt;‘&amp;lt;drupaluser&amp;gt;’@’localhost’&lt;/a&gt; IDENTIFIED BY ‘&amp;lt;drupalpass&amp;gt;’; &lt;/li&gt; &lt;li&gt;mysql&amp;gt; FLUSH PRIVILEGES; &lt;/li&gt; &lt;li&gt;mysql&amp;gt; \q &lt;/li&gt; &lt;li&gt;$ vim /var/www/&lt;strong&gt;openhippel&lt;/strong&gt;/sites/default/settings.php &lt;/li&gt; &lt;li&gt;edit:&amp;nbsp; &lt;em&gt;$db_url = ‘mysql://&amp;lt;drupaluser&amp;gt;:&amp;lt;drupalpass&amp;gt;@localhost/&lt;strong&gt;openhippel&lt;/strong&gt;;&lt;/em&gt; &lt;/li&gt; &lt;li&gt;$ cp /etc/apache2/sites-available/default /etc/apache2/sites-available/&lt;strong&gt;openhippel&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;$ vim /etc/apache2/sites-available/&lt;strong&gt;openhippel&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;edit: &lt;em&gt;DocumentRoot /var/www/&lt;strong&gt;openhippel&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;edit: Directory /var/www/&lt;strong&gt;openhippel&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now to change between the two virtual sites I simply use the following (shown for selecting &lt;em&gt;drupalintro&lt;/em&gt;)&lt;/p&gt; &lt;ol&gt; &lt;li&gt;$ sudo a2dissite openhippel &amp;amp;&amp;amp; sudo a2ensite drupalintro&lt;/li&gt; &lt;li&gt;$ sudo /etc/init.d/apache2 reload&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Then I can browse to my localhost address and see the home page for the desired site.&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9dc2220b-3187-400b-8591-829e71e00770" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/drupal" rel="tag"&gt;drupal&lt;/a&gt;,&lt;a href="http://technorati.com/tags/p2pu" rel="tag"&gt;p2pu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/apache" rel="tag"&gt;apache&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/howto" rel="tag"&gt;howto&lt;/a&gt;,&lt;a href="http://technorati.com/tags/virtual+sites" rel="tag"&gt;virtual sites&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mysql" rel="tag"&gt;mysql&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5896152021494193184?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5896152021494193184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/09/p2pu-drupal-introduction-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5896152021494193184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5896152021494193184'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/09/p2pu-drupal-introduction-1.html' title='P2PU: Drupal Introduction #1'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-3184502129808234604</id><published>2010-09-18T23:15:00.001+08:00</published><updated>2010-09-18T23:15:32.227+08:00</updated><title type='text'>P2PU: Drupal Social Web Application #2</title><content type='html'>&lt;p&gt;Just finished the first Tokbox session for the Drupal Social Web course. Bit of a bumpy start with the first session starting half an hour late! &lt;/p&gt; &lt;p&gt;I’m starting by forking three repositories from GitHub that will be used for this project. The repositories as I understand them are:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;a href="http://github.com/openhippel/hippel_idea"&gt;hippel_idea&lt;/a&gt; the features package&lt;/li&gt; &lt;li&gt;&lt;a href="http://github.com/openhippel/hippel_kit"&gt;hippel_kit&lt;/a&gt; which will contain drush makefiles&lt;/li&gt; &lt;li&gt;&lt;a href="http://github.com/openhippel/hippelicious"&gt;hippelicious&lt;/a&gt; a hippel theme&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;It looks like the idea this week is to make sure we can fork these and edit them locally before commiting, pushing back to our own github forks and sending a pull request to the original repository.&lt;/p&gt; &lt;p&gt;At this stage I will consider it an added bonus if I can make these work in my drupal install…&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f518a357-28d3-45b0-aef4-3aacbcc70103" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/p2pu" rel="tag"&gt;p2pu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/drupal" rel="tag"&gt;drupal&lt;/a&gt;,&lt;a href="http://technorati.com/tags/openhippel" rel="tag"&gt;openhippel&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-3184502129808234604?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/3184502129808234604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/09/p2pu-drupal-social-web-application-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/3184502129808234604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/3184502129808234604'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/09/p2pu-drupal-social-web-application-2.html' title='P2PU: Drupal Social Web Application #2'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-2987648219526515796</id><published>2010-09-15T22:08:00.001+08:00</published><updated>2010-09-15T22:08:07.197+08:00</updated><title type='text'>P2PU: Drupal Social Web Application #1</title><content type='html'>&lt;p&gt;I’ve enrolled in a P2PU course called &lt;a href="http://p2pu.org/webcraft/drupal-social-web-application"&gt;Drupal Social Web Application&lt;/a&gt;. Over the next 6 weeks I’ll be learning how to use Drupal and git while working on development of the Open Hippel platform. Most of this stuff is pretty new to me so I’ll be in over my head. I’ll also be moving house at the same time, hopefully without too much of a no interwebs period. When it rains it pours!&lt;/p&gt; &lt;p&gt;I’ve been getting acquainted with Drupal this week and after some trials with the Ubuntu &lt;em&gt;drupal6&lt;/em&gt; package I’ve opted for the &lt;a href="https://help.ubuntu.com/community/Drupal"&gt;manual installation of Drupal&lt;/a&gt; as outlined in the Ubuntu Community Documentation. The manual installation allows me some more flexibility in terms of where I keep my files and which version I use when compared to a package install.&lt;/p&gt; &lt;p&gt;Here is a brief outline of the steps I followed on an Ubuntu Server 10.04 virtual machine.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;$ cd ~&lt;/li&gt; &lt;li&gt;$ wget &lt;a title="http://ftp.drupal.org/files/projects/drupal-6.19.tar.gz" href="http://ftp.drupal.org/files/projects/drupal-6.19.tar.gz"&gt;http://ftp.drupal.org/files/projects/drupal-6.19.tar.gz&lt;/a&gt;&lt;/li&gt; &lt;li&gt;$ tar zxvf drupal-6.19.tar.gz&lt;/li&gt; &lt;li&gt;$ sudo mkdir /var/www/drupal&lt;/li&gt; &lt;li&gt;$ sudo mv drupal-6.19/* drupal-6.19/.htaccess /var/www/drupal&lt;/li&gt; &lt;li&gt;$ sudo mkdir /var/www/drupal/sites/default/files&lt;/li&gt; &lt;li&gt;$ sudo chown www-data:www-data /var/www/drupal/sites/default/files&lt;/li&gt; &lt;li&gt;$ sudo cp /var/www/drupal/sites/default/default.settings.php /var/www/drupal/sites/default/settings.php&lt;/li&gt; &lt;li&gt;$ sudo chown www-data:www-data /var/www/drupal/sites/default/settings.php&lt;/li&gt; &lt;li&gt;$ mysqladmin –u root –p create drupal&lt;/li&gt; &lt;li&gt;$ mysql –u root –p&lt;/li&gt; &lt;li&gt;mysql&amp;gt; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON drupal.* TO &lt;a href="mailto:drupaluser&amp;rsquo;@&amp;rsquo;localhost&amp;rsquo;"&gt;‘&amp;lt;drupaluser&amp;gt;’@’localhost’&lt;/a&gt; IDENTIFIED BY ‘&amp;lt;drupalpass&amp;gt;’;&lt;/li&gt; &lt;li&gt;mysql&amp;gt; FLUSH PRIVILEGES;&lt;/li&gt; &lt;li&gt;mysql&amp;gt; \q&lt;/li&gt; &lt;li&gt;$ vim /var/www/drupal/sites/default/settings.php&lt;/li&gt; &lt;li&gt;edit:&amp;nbsp; &lt;em&gt;$db_url = ‘mysql://&amp;lt;drupaluser&amp;gt;:&amp;lt;drupalpass&amp;gt;@localhost/drupal’;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;$ cp /etc/apache2/sites-available/default /etc/apache2/sites-available/drupal&lt;/li&gt; &lt;li&gt;$ vim /etc/apache2/sites-available/drupal&lt;/li&gt; &lt;li&gt;edit: &lt;em&gt;DocumentRoot /var/www/drupal&lt;/em&gt;&lt;/li&gt; &lt;li&gt;$ sudo a2dissite default &amp;amp;&amp;amp; a2ensite drupal&lt;/li&gt; &lt;li&gt;$ sudo /etc/init.d/apache2 reload&lt;/li&gt; &lt;li&gt;From the host (or any machine on the same network) browse to “&amp;lt;server ip&amp;gt;/install.php” and follow the web based setup for Drupal&lt;/li&gt;&lt;/ol&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:77570534-f5eb-4cef-9f03-a8b7173d3b10" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/p2pu" rel="tag"&gt;p2pu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/drupal" rel="tag"&gt;drupal&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/howto" rel="tag"&gt;howto&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-2987648219526515796?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/2987648219526515796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/09/p2pu-drupal-social-web-application-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2987648219526515796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2987648219526515796'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/09/p2pu-drupal-social-web-application-1.html' title='P2PU: Drupal Social Web Application #1'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5081706502892986266</id><published>2010-09-14T21:28:00.001+08:00</published><updated>2010-09-14T21:28:30.156+08:00</updated><title type='text'>Mount a Windows Share in Ubuntu Server</title><content type='html'>&lt;p&gt;It is really ease to access a windows share from the console of Ubuntu Server. The following steps were performed on Ubuntu Server 10.04 to access a share on a QNAP NAS with no username or password required.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;$sudo apt-get install smbfs&lt;/li&gt; &lt;li&gt;$mkdir ~/temp&lt;/li&gt; &lt;li&gt;$sudo mount.cifs //192.168.0.x/public ~/temp&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now it is possible to cd into temp and ls the contents of the public share.&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9dc5cb7f-9c24-466c-ab26-09609fec24db" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/windows" rel="tag"&gt;windows&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/share" rel="tag"&gt;share&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mount" rel="tag"&gt;mount&lt;/a&gt;,&lt;a href="http://technorati.com/tags/howto" rel="tag"&gt;howto&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5081706502892986266?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5081706502892986266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/09/mount-windows-share-in-ubuntu-server.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5081706502892986266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5081706502892986266'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/09/mount-windows-share-in-ubuntu-server.html' title='Mount a Windows Share in Ubuntu Server'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-2145644199926218753</id><published>2010-08-31T14:34:00.001+08:00</published><updated>2010-08-31T14:34:41.651+08:00</updated><title type='text'>Git and GitHub</title><content type='html'>&lt;p&gt;I recently brought up version control systems at a circuit hacking evening at the &lt;a href="http://artifactory.org.au/"&gt;Artifactory&lt;/a&gt;. Not surprisingly for a room of open source/linux type people almost everyone was in favour of using &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt;. I was even pointed to a youtube video of &lt;a href="http://www.youtube.com/watch?v=4XpnKHJAok8"&gt;Linus Torvalds on git&lt;/a&gt; which is not a tutorial on how to use git but does provide a good overview of why it might be better than other version control systems. I also found the video quite amusing due to Linus’ famously abrupt manner.&lt;/p&gt; &lt;p&gt;My concern with using git was that I am a windows user and didn’t expect it to work natively with windows. It doesn’t matter how many ways git is superior to other version control systems, if it doesn’t work well on windows it’s not for me.&lt;/p&gt; &lt;p&gt;Fearing that I would be wasting my time I tried out &lt;a href="http://code.google.com/p/msysgit/"&gt;msysgit&lt;/a&gt; (git for windows) which includes such goodies as shell integration that allows for a gui or bash interface for managing repositories. It actually turned out to be quite good. The interface is not as nice as TortoiseSVN but the distributed version control nature of git more than makes up for that.&lt;/p&gt; &lt;p&gt;The only way to properly test something like this out is to use it on a real project so I started using git for version control of my &lt;a href="http://carvingcode.blogspot.com/2010/07/balancebot-2.html"&gt;BalanceBot&lt;/a&gt; project on my laptop. &lt;/p&gt; &lt;p&gt;I don’t like to have anything which is important to me stored in only one location so after checking out my options I started a &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; account. It’s a safe place to push repositories to and it’s free as long as your projects are open source. There is also a neat &lt;em&gt;Watch&lt;/em&gt; function that allows you to track other interesting repositories, kind of like social media for code.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-2145644199926218753?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/2145644199926218753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/08/git-and-github.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2145644199926218753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2145644199926218753'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/08/git-and-github.html' title='Git and GitHub'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-4441038860081038353</id><published>2010-07-26T22:14:00.001+08:00</published><updated>2010-07-26T22:14:48.036+08:00</updated><title type='text'>BalanceBot 2</title><content type='html'>&lt;p&gt;I finally have communication between an Arduino and an ADXL345 accelerometer over SPI! &lt;/p&gt; &lt;p&gt;I used the SPI library from the Arduino playground but was still having trouble so in the end resorted to following the example source code provided by sparkfun for the ATmega328.&lt;/p&gt; &lt;p&gt;The following listing is copied straight from my Arduino environment.&lt;/p&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;#include &amp;lt;Spi.h&amp;gt; &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;/*&lt;br&gt;&amp;nbsp; BalanceBot&lt;br&gt;&amp;nbsp; Read from an accelerometer ADXL345.&lt;br&gt;&amp;nbsp; ADXL345 max clock speed is 5MHz, default arduino CLKi/o is 16MHz/64 (OK)&lt;br&gt;&amp;nbsp; ***SPI Pins***&lt;br&gt;&amp;nbsp; SCK&amp;nbsp;&amp;nbsp;&amp;nbsp; PB5&amp;nbsp;&amp;nbsp;&amp;nbsp; 13 &lt;br&gt;&amp;nbsp; MISO&amp;nbsp;&amp;nbsp;&amp;nbsp; PB4&amp;nbsp;&amp;nbsp;&amp;nbsp; 12&lt;br&gt;&amp;nbsp; MOSI&amp;nbsp;&amp;nbsp;&amp;nbsp; PB3&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&lt;br&gt;&amp;nbsp; SS&amp;nbsp;&amp;nbsp;&amp;nbsp; Any&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&lt;br&gt;&amp;nbsp; Ben Caldwell&lt;br&gt; */ &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;byte tmp;&lt;br&gt;byte readData; //The byte that data read from SPI interface will be stored in &lt;br&gt;byte fifo[6]; //data read for x,y,z axis from the accelerometer's FIFO buffer&lt;br&gt;float x,y,z; //The ranged x,y,z data&lt;br&gt;float range; //The range of the x,y,z data returned &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;// The setup() method runs once, when the sketch starts &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;void setup()&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp; Serial.begin(9600);&lt;br&gt;&amp;nbsp; Spi.mode((1&amp;lt;&amp;lt;SPE) | (1&amp;lt;&amp;lt;MSTR) | (1&amp;lt;&amp;lt;CPOL) | (1&amp;lt;&amp;lt;CPHA) | (1&amp;lt;&amp;lt;SPR1) | (1&amp;lt;&amp;lt;SPR0)); &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;&amp;nbsp; Serial.println("Starting Setup");&lt;br&gt;&amp;nbsp; //Set SS high, slave disabled waiting to pull low for first exchange&lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp; delay(4000);&lt;br&gt;&amp;nbsp; //Wait for POWER_CTL register to go to correct state&lt;br&gt;&amp;nbsp; readData = 0x00;&lt;br&gt;&amp;nbsp; while (readData != 0x28)&lt;br&gt;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //POWER_CTL register: measure&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; digitalWrite(SS_PIN, LOW);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Spi.transfer(0x2D);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Spi.transfer(0x28); //Measure&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay(5);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; digitalWrite(SS_PIN, LOW);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Spi.transfer(1&amp;lt;&amp;lt;7 | 0x2D); //Set "read" MSb&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readData = Spi.transfer(0x00); //Send dummy byte to keep clock pulse going!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("POWER_CTL: ");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(readData, HEX);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay(1000);&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp; //Set FORMAT&lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, LOW);&lt;br&gt;&amp;nbsp; Spi.transfer(0x31);&lt;br&gt;&amp;nbsp; Spi.transfer(0x08); &lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp; delay(5);&lt;br&gt;&amp;nbsp; //Readback FORMAT&lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, LOW);&lt;br&gt;&amp;nbsp; Spi.transfer(1&amp;lt;&amp;lt;7 | 0x31);&lt;br&gt;&amp;nbsp; readData = Spi.transfer(0x00); &lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp; readData = readData &amp;amp; 0x03;&lt;br&gt;&amp;nbsp; switch (readData)&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; range = 2.0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; range = 4.0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 2:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; range = 8.0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 3:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; range = 16.0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp; Serial.print("FORMAT: ");&lt;br&gt;&amp;nbsp; Serial.println(readData, HEX);&lt;br&gt;&amp;nbsp; //Set FIFO&lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, LOW);&lt;br&gt;&amp;nbsp; Spi.transfer(0x38);&lt;br&gt;&amp;nbsp; Spi.transfer(0x00); &lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp; delay(5);&lt;br&gt;&amp;nbsp; //Readback FIFO&lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, LOW);&lt;br&gt;&amp;nbsp; Spi.transfer(1&amp;lt;&amp;lt;7 | 0x38);&lt;br&gt;&amp;nbsp; readData = Spi.transfer(0x00); &lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp; Serial.print("FIFO: ");&lt;br&gt;&amp;nbsp; Serial.println(readData, HEX);&lt;br&gt;&amp;nbsp; delay(4000);&lt;br&gt;} &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;// the loop() method runs over and over again,&lt;br&gt;// as long as the Arduino has power &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;void loop()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;{ &lt;br&gt;&amp;nbsp;&amp;nbsp; //All x,y,z data must be read from FIFO in a multiread burst&lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, LOW);&lt;br&gt;&amp;nbsp; //Start reading at 0x32 and set "Read" and "Multi" bits&lt;br&gt;&amp;nbsp; Spi.transfer(1&amp;lt;&amp;lt;7 | 1&amp;lt;&amp;lt;6 | 0x32);&lt;br&gt;&amp;nbsp; for (int i=0; i&amp;lt;6; i++)&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fifo[i] = Spi.transfer(0x00);&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp; digitalWrite(SS_PIN, HIGH);&lt;br&gt;&amp;nbsp; delay(5);&lt;br&gt;&amp;nbsp; //The measurements in the FIFO 10bit&amp;nbsp; &lt;br&gt;&amp;nbsp; x = (float)((fifo[1]&amp;lt;&amp;lt;8) | fifo[0]) * range / 512.0;&lt;br&gt;&amp;nbsp; y = (float)((fifo[3]&amp;lt;&amp;lt;8) | fifo[2]) * range / 512.0;&lt;br&gt;&amp;nbsp; z = (float)((fifo[5]&amp;lt;&amp;lt;8) | fifo[4]) * range / 512.0;&lt;br&gt;&amp;nbsp; Serial.println("********************");&lt;br&gt;&amp;nbsp; Serial.print("[X,Y,Z](g): [");&lt;br&gt;&amp;nbsp; Serial.print(x);&lt;br&gt;&amp;nbsp; Serial.print(",");&lt;br&gt;&amp;nbsp; Serial.print(y);&lt;br&gt;&amp;nbsp; Serial.print(",");&lt;br&gt;&amp;nbsp; Serial.print(z);&lt;br&gt;&amp;nbsp; Serial.println("]");&lt;br&gt;&amp;nbsp; delay(1000); &lt;/font&gt; &lt;p&gt;&lt;font color="#00ff00"&gt;}&lt;/font&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;References&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The SEN-09156 breakout board:&lt;br&gt;&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9156"&gt;http://www.sparkfun.com/commerce/product_info.php?products_id=9156&lt;/a&gt; &lt;li&gt;Sparkfun example code:&lt;br&gt;&lt;a title="http://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345-talktest.zip" href="http://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345-talktest.zip"&gt;http://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345-talktest.zip&lt;/a&gt;  &lt;li&gt;Arduino SPI library:&lt;br&gt;&lt;a href="http://www.arduino.cc/playground/Code/Spi"&gt;http://www.arduino.cc/playground/Code/Spi&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ce827323-b4ac-4b65-be44-9562bbb3d686" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/arduino" rel="tag"&gt;arduino&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ADXL345" rel="tag"&gt;ADXL345&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SPI" rel="tag"&gt;SPI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/accelerometer" rel="tag"&gt;accelerometer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/howto" rel="tag"&gt;howto&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-4441038860081038353?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/4441038860081038353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/07/balancebot-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4441038860081038353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4441038860081038353'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/07/balancebot-2.html' title='BalanceBot 2'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-7083972505088893424</id><published>2010-07-09T09:49:00.001+08:00</published><updated>2010-07-09T09:49:57.592+08:00</updated><title type='text'>Convert DVDs to MKV</title><content type='html'>&lt;p&gt;I’ve been looking at options for ripping my DVDs to my home &lt;a href="http://www.qnap.com/pro_detail_feature.asp?p_id=135"&gt;NAS&lt;/a&gt; that I connect to with a &lt;a href="http://store.westerndigital.com/store/wdau/en_AU/DisplayProductDetailsPage/ThemeID.13825600/categoryID.38679000/parid.38677900/catid.38678100"&gt;media streamer&lt;/a&gt;. Anyone who has ever tried ripping DVDs will know that this can be an overly complicated and often disappointing task.&lt;/p&gt; &lt;p&gt;I recently had the most success to date using a utility called &lt;a href="http://www.makemkv.com/"&gt;MakeMKV&lt;/a&gt;. This utility takes the files in the Audio_TS and Video_TS folders and encapsulates them in a single .&lt;a href="http://en.wikipedia.org/wiki/Matroska"&gt;mkv&lt;/a&gt; file for each title on the DVD.&lt;/p&gt; &lt;p&gt;My &lt;a href="http://store.westerndigital.com/store/wdau/en_AU/DisplayProductDetailsPage/ThemeID.13825600/categoryID.38679000/parid.38677900/catid.38678100"&gt;WD TV Live&lt;/a&gt; plays MKV files perfectly, the quality looks the same as the original DVD to me. For PC playback I was disappointed to see WMP does not play MKV files out of the box, but there are plenty of options out there in the form of &lt;a href="http://www.cccp-project.net/"&gt;codecs&lt;/a&gt; and &lt;a href="http://www.videolan.org/vlc/"&gt;alternative free players&lt;/a&gt;.&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a3957e90-354e-4b6a-abcd-c362e119ec66" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/dvd" rel="tag"&gt;dvd&lt;/a&gt;,&lt;a href="http://technorati.com/tags/rip" rel="tag"&gt;rip&lt;/a&gt;,&lt;a href="http://technorati.com/tags/convert" rel="tag"&gt;convert&lt;/a&gt;,&lt;a href="http://technorati.com/tags/nas" rel="tag"&gt;nas&lt;/a&gt;,&lt;a href="http://technorati.com/tags/media+streamer" rel="tag"&gt;media streamer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mkv" rel="tag"&gt;mkv&lt;/a&gt;,&lt;a href="http://technorati.com/tags/howto" rel="tag"&gt;howto&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-7083972505088893424?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/7083972505088893424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/07/convert-dvds-to-mkv.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7083972505088893424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7083972505088893424'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/07/convert-dvds-to-mkv.html' title='Convert DVDs to MKV'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-4761814770212966717</id><published>2010-06-29T21:58:00.001+08:00</published><updated>2010-06-29T21:58:01.299+08:00</updated><title type='text'>BalanceBot</title><content type='html'>&lt;p&gt;I decided on a new project while at circuit hacking night at Artifactory last night. In my head it looks something like an unmanned segway…&lt;/p&gt; &lt;p&gt;For the controller I’ll be using an Arduino Duemilanove that I already have, and the accelerometer will be an ADXL345 3 axis accelerometer with a SPI/I2C digital interface. It seemed less than elegant to me to use an accelerometer with analog outputs as a digital signal would need to go through a D/A converter before travelling through a length of hookup wire then through an A/D converter where it can finally be used by my program in the Arduino. &lt;/p&gt; &lt;p&gt;So my first step is going to be getting data from the accelerometer to the Arduino, and not knowing the first thing about SPI or I2C is going to make this a steep learning curve!&lt;/p&gt; &lt;p&gt;I’ve created a BalanceBot library in Eagle and created an ADXL345 device. This should allow me to not only create a schematic for bread boarding but a PCB later if I’m so inclined.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-4761814770212966717?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/4761814770212966717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/06/balancebot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4761814770212966717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4761814770212966717'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/06/balancebot.html' title='BalanceBot'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5017098354948843265</id><published>2010-06-21T13:29:00.001+08:00</published><updated>2010-06-21T13:29:07.904+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><title type='text'>Remove Linefeeds from an Excel Document</title><content type='html'>&lt;p&gt;I recently received an Excel document that needed to be massaged to suit the requirements of a DCS. One of the changes required was the removal of line feeds from within cells.&amp;nbsp; There were over 500 rows nearly all with multiple line feeds so I did not want to do this manually.&lt;/p&gt; &lt;p&gt;Some googling revealed an easy way to do this and a cool new tool to try – immediate mode in VBE.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;On the Excel worksheet select all cells that may contain a line feed to remove &lt;li&gt;Open VBE using alt+F11 &lt;li&gt;Enter Immediate mode by pressing ctrl+G &lt;li&gt;In the Immediate box type &lt;font color="#00ff00"&gt;Selection.Replace Chr(10),””&lt;/font&gt; In Immediate whenever you hit enter your command is executed. &lt;li&gt;Go back to the worksheet and all line feeds are removed&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Note that the argument for the Chr function is a char code. Char codes are the same as ASCII codes for the first 32 control code characters so line feed is alt+0010 or Chr(10).&lt;/p&gt; &lt;p&gt;References:&lt;br&gt;&lt;a href="http://www.ozgrid.com/forum/showthread.php?t=20451"&gt;http://www.ozgrid.com/forum/showthread.php?t=20451&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5017098354948843265?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5017098354948843265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/06/remove-linefeeds-from-excel-document.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5017098354948843265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5017098354948843265'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/06/remove-linefeeds-from-excel-document.html' title='Remove Linefeeds from an Excel Document'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5219808913039741116</id><published>2010-06-14T20:42:00.001+08:00</published><updated>2010-06-14T20:42:40.383+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>GanttProject</title><content type='html'>&lt;p&gt;In a &lt;a href="http://carvingcode.blogspot.com/2010/03/open-source-project-management-software.html"&gt;previous post&lt;/a&gt; I mentioned that I was looking into open source project management software. I was a little sad to find that most of the software I tried had one glaring oversight or another. The program that I tried initially and then kept coming back to was &lt;a href="http://www.ganttproject.biz/"&gt;GanttProject&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;The GanttProject features that I use are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Gantt chart&lt;/li&gt; &lt;li&gt;Linking (start-finish, start-start etc.)&lt;/li&gt; &lt;li&gt;Resources can be created/imported and assigned to tasks. Resource utilisation is calculated automatically&lt;/li&gt; &lt;li&gt;Completion tracking on the Gantt chart&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This is a simple feature set and by far the best of what is on offer from the open source world for project management.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5219808913039741116?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5219808913039741116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/06/ganttproject.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5219808913039741116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5219808913039741116'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/06/ganttproject.html' title='GanttProject'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8050803433354340731</id><published>2010-05-04T21:47:00.001+08:00</published><updated>2010-05-04T21:47:44.749+08:00</updated><title type='text'>HP Flight Button Fixed with a ROM Update</title><content type='html'>&lt;p&gt;I’ve been mildly annoyed for the last week with a malfunction of the flight mode button on my HP 6730s laptop. Out of the blue the button started toggling between wifi and bluetooth radios. Pressing the button allowed me to choose between bluetooth or wifi but I could never turn both radios on, or more importantly for flying turn both radios off!&lt;/p&gt;  &lt;p&gt;After a short and very helpful online chat with HP support I updated my BIOS and everything is fixed! HP support has been awesome every time I’ve needed it.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:79e71cdd-c9ec-43ef-93d4-d89984ea7cf0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Laptop" rel="tag"&gt;Laptop&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HP" rel="tag"&gt;HP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/flight+mode" rel="tag"&gt;flight mode&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wifi" rel="tag"&gt;wifi&lt;/a&gt;,&lt;a href="http://technorati.com/tags/bluetooth" rel="tag"&gt;bluetooth&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ROM" rel="tag"&gt;ROM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BIOS" rel="tag"&gt;BIOS&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8050803433354340731?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8050803433354340731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/05/hp-flight-button-fixed-with-rom-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8050803433354340731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8050803433354340731'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/05/hp-flight-button-fixed-with-rom-update.html' title='HP Flight Button Fixed with a ROM Update'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-4839416615882201121</id><published>2010-04-28T20:09:00.001+08:00</published><updated>2010-04-28T20:12:09.636+08:00</updated><title type='text'>Creating a WCF Web Service with VS2010 Express</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Last night while I was reading up on OPC-XML the interwebs took me on a merry trail of SOAP, XML-RPC and the like that ended with WCF Web Services. I found a very good tutorial on WCF Services at &lt;a href="http://www.xvpj.net/2008/03/08/wcf-step-by-step-tutorial/"&gt;http://www.xvpj.net/2008/03/08/wcf-step-by-step-tutorial/&lt;/a&gt; but this was for Visual Studio 2005. I only have express versions of Visual Studio 2010 so there were some things that needed to be done differently. In the interests of posterity here is how I wrote a very simple WCF web service and a WPF client that accesses it using only Visual Web Developer 2010 Express and Visual C# 2010 Express.&lt;/p&gt;  &lt;h3&gt;Configure the Development Environment&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Install Microsoft Visual C# 2010 Express &lt;/li&gt;    &lt;li&gt;Install Microsoft Visual Web Developer 2010 Express installed (you can download all Express editions on one iso image at &lt;a href="http://www.microsoft.com/express/Downloads/#2010-All"&gt;http://www.microsoft.com/express/Downloads/#2010-All&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Enable Windows features:      &lt;ol&gt;       &lt;li&gt;IIS Metabase and IIS 6 configuration compatibility &lt;/li&gt;        &lt;li&gt;IIS Management Console &lt;/li&gt;        &lt;li&gt;ASP.NET          &lt;br /&gt;&amp;#160; &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="iis_features" border="0" alt="iis_features" src="http://lh5.ggpht.com/_9NmpACXyf3o/S9glToP-umI/AAAAAAAABUk/UyEDDoV4aZY/iis_features5.png?imgmax=800" width="207" height="244" /&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;In IIS Manager, under Application Pools right click DefaultAppPool, select Basic Settings then change .NET framework version to v4.0.x      &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iis_manager" border="0" alt="iis_manager" src="http://lh3.ggpht.com/_9NmpACXyf3o/S9glUdV9u2I/AAAAAAAABUo/ZckYP2X2QJg/iis_manager4.png?imgmax=800" width="269" height="162" /&gt; &lt;/li&gt;    &lt;li&gt;Install Windows SDK. This can be downloaded from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en&lt;/a&gt;&amp;#160; &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Create the Web Service&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;First we will create the web service. To do this we need to run Visual Web Developer 2010 Express with administrator privileges so hit the start button type in “web dev” or similar and when Web Developer is highlighted press ctrl+shift+enter. This will start it as an administrator and show the UAC prompt. Alternatively locate Web Developer in the start menu then right click and select run as administrator.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select File –&amp;gt; New web site and choose WCF Service and name it MultiplyService      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_9NmpACXyf3o/S9glVPqpqpI/AAAAAAAABUs/CFEH2k51zbg/s1600-h/new_web_site2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="new_web_site" border="0" alt="new_web_site" src="http://lh6.ggpht.com/_9NmpACXyf3o/S9glVzEqtaI/AAAAAAAABUw/n84NwxUGrD4/new_web_site_thumb.png?imgmax=800" width="244" height="157" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Add code App_Code / IService.cs&amp;#160;&amp;#160; &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_9NmpACXyf3o/S9glWYjwAFI/AAAAAAAABU0/CaxKLhudJGw/s1600-h/IService%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IService" border="0" alt="IService" src="http://lh6.ggpht.com/_9NmpACXyf3o/S9glXEtpsEI/AAAAAAAABU4/M7PChVeMMiA/IService_thumb%5B4%5D.png?imgmax=800" width="418" height="188" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Add code to App_Code / Service.cs      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_9NmpACXyf3o/S9glXg42ruI/AAAAAAAABU8/NbJgc9p1pxk/s1600-h/Service%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Service" border="0" alt="Service" src="http://lh4.ggpht.com/_9NmpACXyf3o/S9glYQr-wnI/AAAAAAAABVA/ajOXxEb-X5k/Service_thumb%5B2%5D.png?imgmax=800" width="416" height="220" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Run the service by pressing ctrl F5 and click the Service.svc link in the page that opens. Nothing much to see here yet, you need a client to view this data. As indicated on the page you need to run the svcutil.exe utility to generate code that will be used by the client application      &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/S9glZHM3MzI/AAAAAAAABWQ/Hn5F7D9YWcE/s1600-h/svcutil1%5B7%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="svcutil1" border="0" alt="svcutil1" src="http://lh6.ggpht.com/_9NmpACXyf3o/S9glZg4jKLI/AAAAAAAABWU/Vxa12b4k8Tg/svcutil1_thumb%5B5%5D.png?imgmax=800" width="454" height="36" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;The svcutil.exe utility is installed with the Windows SDK and can be found at &lt;em&gt;c:\Program Files\Microsoft SDKs\Windows\v6.0a\bin&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;To create the Service.cs file on the desktop try the following in a cmd prompt:       &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/S9glaYUa5sI/AAAAAAAABWc/ixWn6aZ4_pI/s1600-h/svcutil2%5B7%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="svcutil2" border="0" alt="svcutil2" src="http://lh3.ggpht.com/_9NmpACXyf3o/S9glbCc2E3I/AAAAAAAABWk/YXdqjk7R47w/svcutil2_thumb%5B5%5D.png?imgmax=800" width="457" height="119" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;That ends the WCF service. Leave all of this running, including the internet explorer window that Web Developer opened and open Visual C# Express to start on the client application. &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Create the Client Application&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Start up Visual C# 2010 Express and select File –&amp;gt; New Project. Select WPF Application and name it MultiplyClient. &lt;/li&gt;    &lt;li&gt;Add a Service Reference      &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/S9glb-xYDGI/AAAAAAAABVU/7BJqICe1Xu0/s1600-h/service_ref%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="service_ref" border="0" alt="service_ref" src="http://lh5.ggpht.com/_9NmpACXyf3o/S9glc1V5NFI/AAAAAAAABVY/Ft2pyaRpuLY/service_ref_thumb%5B1%5D.png?imgmax=800" width="298" height="149" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;In the Service Reference dialog paste in the address from the internet explorer window that web developer opened. Select the service and select OK       &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_9NmpACXyf3o/S9gldbjQ6XI/AAAAAAAABVc/GTq51KCifPw/s1600-h/Service_ref2%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Service_ref2" border="0" alt="Service_ref2" src="http://lh6.ggpht.com/_9NmpACXyf3o/S9gleCERoWI/AAAAAAAABVg/edfayjHbAPQ/Service_ref2_thumb%5B2%5D.png?imgmax=800" width="397" height="317" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Copy the Service.cs file on the desktop that was generated by svcutil into the root folder of the project      &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/S9gle2NgtZI/AAAAAAAABVk/cTKlEZiVanI/s1600-h/add_cs%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="add_cs" border="0" alt="add_cs" src="http://lh5.ggpht.com/_9NmpACXyf3o/S9glfktuNxI/AAAAAAAABVo/2LPu-rG-9Hc/add_cs_thumb%5B1%5D.png?imgmax=800" width="188" height="200" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Add two entry textboxes, a multiply button and a result textbox to the MainWindow.xaml      &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/S9glgLxXXvI/AAAAAAAABVs/sWaUmwXIt6k/s1600-h/mainwindow%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mainwindow" border="0" alt="mainwindow" src="http://lh6.ggpht.com/_9NmpACXyf3o/S9glgqcDu0I/AAAAAAAABVw/odhMlNAoHGM/mainwindow_thumb%5B2%5D.png?imgmax=800" width="390" height="202" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Add code to MainWindow.xaml.cs to call the service when the multiply button is clicked      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_9NmpACXyf3o/S9glhHC9m0I/AAAAAAAABV0/rZAbOGRzLCU/s1600-h/mainwindow2%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mainwindow2" border="0" alt="mainwindow2" src="http://lh4.ggpht.com/_9NmpACXyf3o/S9gliKcbujI/AAAAAAAABV4/lH6OkDPEXsg/mainwindow2_thumb%5B3%5D.png?imgmax=800" width="425" height="290" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Modify the app.config file. Simply change the contract value from “ServiceReference1.IService” to “IService”      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_9NmpACXyf3o/S9gli2-O2fI/AAAAAAAABWs/3Hz0f5NPJe4/s1600-h/appconfig%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="appconfig" border="0" alt="appconfig" src="http://lh5.ggpht.com/_9NmpACXyf3o/S9glj6JxFXI/AAAAAAAABWw/577BxgXhoQQ/appconfig_thumb%5B4%5D.png?imgmax=800" width="422" height="252" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Press ctrl+F5 to run the WPF application. Enter two values to multiply and hit the Multiply button, you should see the answer in the result textbox!      &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_9NmpACXyf3o/S9glkephuQI/AAAAAAAABWE/s_PleuZCKpg/s1600-h/clientapp%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clientapp" border="0" alt="clientapp" src="http://lh5.ggpht.com/_9NmpACXyf3o/S9gllGfAB9I/AAAAAAAABWM/Q5EbDCBJGmM/clientapp_thumb%5B2%5D.png?imgmax=800" width="397" height="266" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;References&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;The basic gist of WCF services:      &lt;br /&gt;&lt;a href="http://www.xvpj.net/2008/03/08/wcf-step-by-step-tutorial/"&gt;http://www.xvpj.net/2008/03/08/wcf-step-by-step-tutorial/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Adding IIS features:      &lt;br /&gt;&lt;a href="http://www.howtogeek.com/howto/windows-vista/how-to-install-iis-on-windows-vista/"&gt;http://www.howtogeek.com/howto/windows-vista/how-to-install-iis-on-windows-vista/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Where to find the svcutil.exe utility:      &lt;br /&gt;&lt;a href="http://www.dotnetspider.com/forum/239950-Where-find-svcutil-exe.aspx"&gt;http://www.dotnetspider.com/forum/239950-Where-find-svcutil-exe.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4c2f76d9-ebbb-4493-a8a1-4bf1163e94e3" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+Service" rel="tag"&gt;Web Service&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tutorial" rel="tag"&gt;Tutorial&lt;/a&gt;,&lt;a href="http://technorati.com/tags/How+to" rel="tag"&gt;How to&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+C%23+2010+Express" rel="tag"&gt;Visual C# 2010 Express&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Web+Developer+2010+Express" rel="tag"&gt;Visual Web Developer 2010 Express&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-4839416615882201121?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/4839416615882201121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/04/creating-wcf-web-service-with-vs2010.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4839416615882201121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4839416615882201121'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/04/creating-wcf-web-service-with-vs2010.html' title='Creating a WCF Web Service with VS2010 Express'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_9NmpACXyf3o/S9glToP-umI/AAAAAAAABUk/UyEDDoV4aZY/s72-c/iis_features5.png?imgmax=800' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-813668929542023657</id><published>2010-04-09T21:17:00.001+08:00</published><updated>2010-04-09T21:17:59.296+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='openvpn'/><category scheme='http://www.blogger.com/atom/ns#' term='network tools'/><title type='text'>OpenVPN on Windows 7</title><content type='html'>&lt;p&gt;&lt;a href="http://openvpn.net/index.php/open-source/downloads.html"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="OpenVPN" border="0" alt="OpenVPN" align="right" src="http://lh4.ggpht.com/_9NmpACXyf3o/S78pBlm-VII/AAAAAAAABTs/tr1JXuRxxaQ/tryus%5B8%5D.png?imgmax=800" width="121" height="120" /&gt;&lt;/a&gt;I had some trouble getting OpenVPN to work on my Windows 7 laptop. After a lot of messing around it turns out to be a fairly simple operation, so to save others the messing around part here are the steps to follow.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download the &lt;strong&gt;latest&lt;/strong&gt; OpenVPN windows installer from &lt;a href="http://openvpn.net/index.php/open-source/downloads.html"&gt;http://openvpn.net/index.php/open-source/downloads.html&lt;/a&gt; I used openvpn-2.1.1-install.exe&lt;/li&gt;    &lt;li&gt;Completely uninstall any previous versions of OpenVPN from your machine&lt;/li&gt;    &lt;li&gt;Install OpenVPN&lt;/li&gt;    &lt;li&gt;On the start menu right click “OpenVPN GUI” and click properties. On the Compatibility tab select “Change settings for all users” then tick the box “Run this program as an administrator”&lt;/li&gt;    &lt;li&gt;This step is not so obvious. Open the network and sharing centre and click on “Change adapter settings”. There should be a Local Area Connection with the type TAP-Win32 Adapter, right click on this and select properties. Tick the boxes next to “Internet Protocol Version 6 (TCP/IPv6)” and “Internet Protocol Version 4 (TCP/IPv4)”&lt;/li&gt;    &lt;li&gt;Copy your config and credentials files into the C:\Program Files\OpenVPN\config folder&lt;/li&gt;    &lt;li&gt;Now click OpenVPN-GUI in the start menu. You’ll have to enter your Administrator password to run it. When it’s running just right click on the OpenVPN icon in the system tray and select connect&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;And that’s it! I hope it works for you too, leave a comment to let me know…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-813668929542023657?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/813668929542023657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/04/openvpn-on-windows-7.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/813668929542023657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/813668929542023657'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/04/openvpn-on-windows-7.html' title='OpenVPN on Windows 7'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_9NmpACXyf3o/S78pBlm-VII/AAAAAAAABTs/tr1JXuRxxaQ/s72-c/tryus%5B8%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-6597690538109975334</id><published>2010-03-24T21:14:00.001+08:00</published><updated>2010-03-24T21:14:16.069+08:00</updated><title type='text'>Open Source Project Management Software</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I work for a small business and lately it is becoming apparent that we need some project management software. The budget price at the moment is $0 so to stay legal I’m investigating what options are available from the open source side of the fence.&lt;/p&gt;  &lt;p&gt;Our primary business is the development of automation software but the scope of projects often includes managing third party hardware production and procurement. The features I’m looking for in project management software are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Task scheduling &lt;/li&gt;    &lt;li&gt;Resource scheduling &lt;/li&gt;    &lt;li&gt;Time tracking &lt;/li&gt;    &lt;li&gt;Percentage completion tracking &lt;/li&gt;    &lt;li&gt;Charting – Gantt charts at least &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Using the above criteria in a trawl of the web I found the packages &lt;a href="http://www.redmine.org/"&gt;Redmine&lt;/a&gt;, &lt;a href="http://openproj.org/openproj"&gt;OpenProj&lt;/a&gt;, &lt;a href="http://www.ganttproject.biz/"&gt;Gantt Project&lt;/a&gt; and &lt;a href="http://www.clockingit.com/"&gt;ClockingIT&lt;/a&gt;. I will follow up with a post on my experience with each of these in the coming weeks.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ab6a6fb9-347e-4138-8637-52ce356fbb46" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Project+Management" rel="tag"&gt;Project Management&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Open+Source" rel="tag"&gt;Open Source&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gantt+Chart" rel="tag"&gt;Gantt Chart&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-6597690538109975334?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/6597690538109975334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/03/open-source-project-management-software.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6597690538109975334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6597690538109975334'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/03/open-source-project-management-software.html' title='Open Source Project Management Software'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8753754683714775897</id><published>2010-03-18T22:01:00.002+08:00</published><updated>2010-03-22T08:55:00.125+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RepRap 3D Printing CNC Maker DIY'/><title type='text'>The Machines are Breeding</title><content type='html'>&lt;p&gt;I checked out the &lt;a href="http://artifactory.org.au/" target="_blank"&gt;Artifactory&lt;/a&gt; space in Mt Lawley on Monday night and was really impressed with the enthusiasm of everyone there and the quality of what people are working on. There were a couple of very impressive homebrew CNC machines downstairs and three 3D printers in various stages of completion upstairs including two &lt;a href="http://www.makerbot.com/" target="_blank"&gt;MakerBots&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/S6IyKk17ocI/AAAAAAAABTE/mwLpgsJYYgI/s1600-h/DSC_0057%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="MakerBot" border="0" alt="MakerBot" align="right" src="http://lh4.ggpht.com/_9NmpACXyf3o/S6IyLbCsn7I/AAAAAAAABTI/ujWaXYfviuA/DSC_0057_thumb%5B2%5D.jpg?imgmax=800" width="244" height="164" /&gt;&lt;/a&gt;One of the really exciting things being built here is a &lt;a href="http://en.wikipedia.org/wiki/RepRap_Project" target="_blank"&gt;RepRap&lt;/a&gt; or Replicating Rapid Prototyper. This is essentially a 3D printer that is capable of producing components that can be assembled to make a replica of itself, a concept that is both liberating for makers and incredibly scary at the same time. This ability to rapidly create new and improved generations of 3D printers using the current generation will ensure rapid improvement in this technology over the next few years.&lt;/p&gt;&lt;p&gt;The 3D printing process is something akin to a hot glue gun being controlled by a robot with 3 axes of movement. A long plastic extrusion (I’m told the plastic is the same stuff as Lego is made from) is fed into a heated extrusion head which squirts a very thin trail of molten plastic in layers to build up a 3D object.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_9NmpACXyf3o/S6IyMPt6AuI/AAAAAAAABTM/sTgfgdYMhPk/s1600-h/DSC_0058%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="RepRap" border="0" alt="RepRap" align="left" src="http://lh5.ggpht.com/_9NmpACXyf3o/S6IyM7VPGUI/AAAAAAAABTQ/Cta6ScKHLUU/DSC_0058_thumb%5B2%5D.jpg?imgmax=800" width="244" height="164" /&gt;&lt;/a&gt;The white plastic component pictured here was printed on a 3D printer and is currently mounted on a RepRap that is under construction. The designs for these components are made freely available on the web allowing anyone with the time and inclination to get started on 3D printing.&lt;/p&gt;&lt;p&gt;One of the most interesting stories I heard at Artifactory was that a 3D printer being used to print a referee whistle – with the pea inside! This design was published on the web and within a very short period of time had been reproduced at several locations around the world. Something very significant to come from this event was the fact that the whistle was printed in places quicker than it could have been shipped there. If this concept was developed sufficiently we would have something approaching teleportation possible for printable objects.&lt;/p&gt;&lt;p&gt;I will definitely be heading back to Artifactory soon to catch up on what’s been happening with the RepRap and maybe even get my hands dirty with a bit of 3D printing this time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8753754683714775897?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8753754683714775897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/03/machines-are-breeding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8753754683714775897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8753754683714775897'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/03/machines-are-breeding.html' title='The Machines are Breeding'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_9NmpACXyf3o/S6IyLbCsn7I/AAAAAAAABTI/ujWaXYfviuA/s72-c/DSC_0057_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-6993740279572619400</id><published>2010-03-17T21:33:00.001+08:00</published><updated>2010-03-17T21:33:56.098+08:00</updated><title type='text'>Wind Down</title><content type='html'>&lt;p&gt;I went for a windsurf at Scarborough last night and sadly it feels like the season is winding down and we’re heading into that time of year where we have marginal winds and early sunsets.&lt;/p&gt;  &lt;p&gt;I’ve decided not to mothball my windsurfing gear completely this winter. I’ll try for a sail every few weeks so I don’t go backwards too far before next summer. The swell is much better in winter but the wind can be difficult so I’ll be trying out a few new spots to see how they handle the prevailing onshore storms or early morning easterlies. &lt;/p&gt;  &lt;p&gt;I’ll probably keep the spots a secret though…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-6993740279572619400?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/6993740279572619400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/03/wind-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6993740279572619400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6993740279572619400'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/03/wind-down.html' title='Wind Down'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-7623340371043874059</id><published>2010-03-11T21:40:00.001+08:00</published><updated>2010-03-11T21:40:56.312+08:00</updated><title type='text'>My New Arduino</title><content type='html'>&lt;p&gt;To my horror I recently turned 30. The experience was sweetened significantly by some great and thoughtful gifts, one of these being an &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9284" target="_blank"&gt;Arduino Starter Kit&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It literally took me fifteen minutes from opening the box to playing a touch sensitive musical instrument that I built using a Softpot in a resistive divider and a magnetic buzzer. I was able to reuse the code from an example that comes with the Arduino environment, just modifying the frequency range I wanted the buzzer to work in. The code from the example Arduino sketch shown below is C and uses some very user friendly libraries for Arduino specific functions.&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Century Gothic"&gt;/*     &lt;br /&gt;&amp;#160; Pitch follower      &lt;br /&gt; Plays a pitch that changes based on a changing analog input circuit:      &lt;br /&gt; * 8-ohm speaker on digital pin 8      &lt;br /&gt; * photoresistor on analog 0 to 5V      &lt;br /&gt; * 4.7K resistor on analog 0 to ground      &lt;br /&gt; created 21 Jan 2010      &lt;br /&gt; by Tom Igoe       &lt;br /&gt;&lt;/font&gt;&lt;a href="http://arduino.cc/en/Tutorial/Tone2"&gt;&lt;font size="1" face="Century Gothic"&gt;http://arduino.cc/en/Tutorial/Tone2&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font size="1" face="Century Gothic"&gt; */ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Century Gothic"&gt;void setup() {     &lt;br /&gt;&amp;#160; // initialize serial communications (for debugging only):      &lt;br /&gt;&amp;#160; Serial.begin(9600);      &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Century Gothic"&gt;void loop() {     &lt;br /&gt;&amp;#160; // read the sensor:      &lt;br /&gt;&amp;#160; int sensorReading = analogRead(0);      &lt;br /&gt;&amp;#160; // print the sensor reading so you know its range      &lt;br /&gt;&amp;#160; Serial.println(sensorReading);      &lt;br /&gt;&amp;#160; // map the pitch to the range of the analog input.      &lt;br /&gt;&amp;#160; // change the minimum and maximum input numbers below      &lt;br /&gt;&amp;#160; // depending on the range your sensor's giving:      &lt;br /&gt;&amp;#160; int thisPitch = map(sensorReading, 0, 1000, 50, 3000); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Century Gothic"&gt;&amp;#160; // play the pitch:     &lt;br /&gt;&amp;#160; tone(8, thisPitch, 10); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Century Gothic"&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The open source nature of the Arduino hardware and software allows amazingly rapid realisation of a project. The hard work done by others previously can be used as customisable building blocks, which can then be shared for use as the building blocks of the next project.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;We live in exciting times!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-7623340371043874059?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/7623340371043874059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/03/my-new-arduino.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7623340371043874059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7623340371043874059'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/03/my-new-arduino.html' title='My New Arduino'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-1106811852453036520</id><published>2010-03-10T20:44:00.001+08:00</published><updated>2010-03-10T20:44:18.735+08:00</updated><title type='text'>BabelFish</title><content type='html'>&lt;p&gt;A colleague recently recommended using &lt;a href="http://www.issgroup.com.au/PRODUCTS/BabelFishFoundation/BabelFishFoundationServer/BabelFishPortal/tabid/70/language/en-US/Default.aspx" target="_blank"&gt;BabelFish&lt;/a&gt; as a data historian after viewing it in action on an oil and gas site.&lt;/p&gt;  &lt;p&gt;I’ve only had a quick look at the &lt;a href="http://www.issgroup.com.au/PRODUCTS/BabelFishFoundation/BabelFishFoundationServer/BabelFishPortal/tabid/70/language/en-US/Default.aspx" target="_blank"&gt;website&lt;/a&gt; but based on the features listed here and described to me by the colleague I think BabelFish bears a detailed review, which I will post here if time and trial versions permit.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-1106811852453036520?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/1106811852453036520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/03/babelfish.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/1106811852453036520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/1106811852453036520'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/03/babelfish.html' title='BabelFish'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-3868745058567799259</id><published>2010-03-09T21:00:00.001+08:00</published><updated>2010-03-09T21:00:30.814+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmd'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='network tools'/><title type='text'>Pathping Command</title><content type='html'>&lt;p&gt;I’ve just discovered a new windows command line utility called &lt;a href="http://en.wikipedia.org/wiki/PathPing" target="_blank"&gt;pathping&lt;/a&gt; today. I’m a bit of a purist and hate installing extra utilities to use from the command line so I was happy to see that this one was included with my Windows 7 Professional installation. &lt;/p&gt;  &lt;p&gt;This command produces something similar to the output from both the ping and tracert commands but if you are prepared to wait for the data collection period it provides statistics of each node based on data collected over that time.&lt;/p&gt;  &lt;p&gt;This is the output from &lt;em&gt;pathping google.com&lt;/em&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#008000" size="1"&gt;Tracing route to google.com [66.102.11.104]       &lt;br /&gt;over a maximum of 30 hops:        &lt;br /&gt;&amp;#160; 0&amp;#160; ######### [192.168.0.5]        &lt;br /&gt;&amp;#160; 1&amp;#160; 192.168.0.1        &lt;br /&gt;&amp;#160; 2&amp;#160; nexthop.wa.iinet.net.au [203.59.14.16]        &lt;br /&gt;&amp;#160; 3&amp;#160; te7-1.per-qv1-bdr1.iinet.net.au [203.215.4.18]        &lt;br /&gt;&amp;#160; 4&amp;#160; gi15-1-1.syd-ult-core1.iinet.net.au [203.215.20.4]        &lt;br /&gt;&amp;#160; 5&amp;#160; as15169.sydney.pipenetworks.com [218.100.2.97]        &lt;br /&gt;&amp;#160; 6&amp;#160; 66.249.95.232        &lt;br /&gt;&amp;#160; 7&amp;#160; 64.233.174.242        &lt;br /&gt;&amp;#160; 8&amp;#160; syd01s01-in-f104.1e100.net [66.102.11.104] &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#008000" size="1"&gt;Computing statistics for 200 seconds...       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Source to Here&amp;#160;&amp;#160; This Node/Link        &lt;br /&gt;Hop&amp;#160; RTT&amp;#160;&amp;#160;&amp;#160; Lost/Sent = Pct&amp;#160; Lost/Sent = Pct&amp;#160; Address        &lt;br /&gt;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ######### [192.168.0.5] &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#008000" size="1"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |       &lt;br /&gt;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160; 5ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160; 192.168.0.1        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |        &lt;br /&gt;&amp;#160; 2&amp;#160;&amp;#160; 22ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160; nexthop.wa.iinet.net.au [203.59.14        &lt;br /&gt;.16]        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |        &lt;br /&gt;&amp;#160; 3&amp;#160;&amp;#160; 20ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160; te7-1.per-qv1-bdr1.iinet.net.au [2        &lt;br /&gt;03.215.4.18]        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |        &lt;br /&gt;&amp;#160; 4&amp;#160;&amp;#160; 81ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1/ 100 =&amp;#160; 1%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1/ 100 =&amp;#160; 1%&amp;#160; gi15-1-1.syd-ult-core1.iinet.net.a        &lt;br /&gt;u [203.215.20.4]        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |        &lt;br /&gt;&amp;#160; 5&amp;#160;&amp;#160; 81ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160; as15169.sydney.pipenetworks.com [2        &lt;br /&gt;18.100.2.97]        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |        &lt;br /&gt;&amp;#160; 6&amp;#160;&amp;#160; 76ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160; 66.249.95.232        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |        &lt;br /&gt;&amp;#160; 7&amp;#160;&amp;#160; 79ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160; 64.233.174.242        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160; |        &lt;br /&gt;&amp;#160; 8&amp;#160;&amp;#160; 82ms&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0/ 100 =&amp;#160; 0%&amp;#160; syd01s01-in-f104.1e100.net [66.102        &lt;br /&gt;.11.104] &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#008000" size="1"&gt;Trace complete. &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#000000"&gt;I had to wait 200 seconds for these results but they are pretty comprehensive. The link looks pretty good – only one packet lost on the hop between Perth and Sydney.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-3868745058567799259?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/3868745058567799259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/03/pathping-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/3868745058567799259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/3868745058567799259'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/03/pathping-command.html' title='Pathping Command'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5262723220470912681</id><published>2010-02-11T21:44:00.002+08:00</published><updated>2010-02-11T21:45:18.380+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work productivity busy'/><title type='text'>Flood Gates</title><content type='html'>&lt;p&gt;Things have been crazy busy at work for the last few weeks. My phone has been ringing non stop and there is often a line of people standing next to me with requests. &lt;/p&gt;&lt;p&gt;When I am in this situation my natural tendency is to hurry to try and get through everything that needs to be done and satisfy the queue of people. My observation this week has been that this is absolutely counterproductive. Hurrying has caused some stupid mistakes on my behalf that I would normally not make. In fact when relating one experience to a good friend who is close enough to be brutally honest he chastised me with “you should know better”. &lt;/p&gt;&lt;p&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://t3.gstatic.com/images?q=tbn:kKFfwvSAF1AtsM:http://ic2.pbase.com/v3/49/485649/1/49976437.pbDSC_2190ecsWeirDamIII.jpg" /&gt;So what is the answer? For the next week I will be making a conscious effort to improve my “flood gates”. When work piles up and everyone wants something from me, rather than scramble to compress the time that everything takes to please everyone I need to take a moment to prioritise then let a manageable trickle through the flood gates.&lt;/p&gt;&lt;p&gt;Engineering is a tricky thing that requires concentration and time, it is not something that should be done when in a rush. I have a queue of people at my desk because people are happy with my work, I can’t then let the pressure of that queue cause the quality of my work to drop.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5262723220470912681?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5262723220470912681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/02/flood-gates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5262723220470912681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5262723220470912681'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/02/flood-gates.html' title='Flood Gates'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-7717124745522242395</id><published>2010-01-05T21:12:00.001+08:00</published><updated>2010-01-05T21:12:07.731+08:00</updated><title type='text'>Finished Longboard Repair</title><content type='html'>&lt;p&gt;By the way, that longboard repair I was working on earlier turned out quite well. Here is a quick follow up for Brenden, so far the only confirmed reader of this blog…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_9NmpACXyf3o/S0M6mj8dKyI/AAAAAAAABLc/koxCGMEUCQ0/s1600-h/2009-08-09%2011.58.19%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="2009-08-09 11.58.19" border="0" alt="2009-08-09 11.58.19" align="left" src="http://lh5.ggpht.com/_9NmpACXyf3o/S0M6npkn7cI/AAAAAAAABLg/qUr-n8hDChY/2009-08-09%2011.58.19_thumb%5B1%5D.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once the divinycell repair was cured and sanded back to a smooth uniform surface I masked off the board with newspaper, found some (sort of) matching spray paint from the Repco shop down the road and went to town.&lt;/p&gt;  &lt;p&gt;After a few previous failures painting surfboards I decided to spray the paint directly onto the foam then glass over the top. I had some concerns that a layer of paint between the foam and the glass would weaken the bond and the end result would have less strength, but it does&amp;#160; looks as though this is what is typically done in surfboard construction. This might be a good argument for buying unpainted boards though….&lt;/p&gt;  &lt;p&gt;After spraying a number of very thin coats of paint, in fact heaps of white coats of paint to cover up the dark coloured divinycell, I applied resin and a couple of layers of glass. After squeegeeing out the excess resin I left what looked like a very neat repair to cure. But when I came back to my horror there was a large air bubble. It seems that there was a small void somewhere in the divinycell which heated up during curing and blew a bubble under my glass. Arggghhh!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_9NmpACXyf3o/S0M6ogbbdNI/AAAAAAAABLk/1ZY5vzGijhM/s1600-h/2009-09-18%2016.10.27%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="2009-09-18 16.10.27" border="0" alt="2009-09-18 16.10.27" align="right" src="http://lh6.ggpht.com/_9NmpACXyf3o/S0M6pm-g8tI/AAAAAAAABLo/ksRet5WdyhY/2009-09-18%2016.10.27_thumb%5B1%5D.jpg?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;So, next step was to drill a couple of small holes in and around the bubble then syringe in a brilliant two part expanding urethane foam I have in the shed. About 20ml of mixed foam completely filled the hole plus about 2 litres of whatever buckets I could find to contain it! After curing, I sanded back and applied another glass and resin patch to my glass and resin patch. &lt;/p&gt;  &lt;p&gt;So after sanding this final patch back with increasingly fine grades of wet and dry sandpaper I have the fairly pleasing result shown here. Not as neat as I would have liked, but not too bad considering!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:734397e2-5bc9-4a21-b89d-ce928860b0fa" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Fibreglass" rel="tag"&gt;Fibreglass&lt;/a&gt;,&lt;a href="http://technorati.com/tags/surfboard" rel="tag"&gt;surfboard&lt;/a&gt;,&lt;a href="http://technorati.com/tags/diy" rel="tag"&gt;diy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/repair" rel="tag"&gt;repair&lt;/a&gt;,&lt;a href="http://technorati.com/tags/divinycell" rel="tag"&gt;divinycell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/foam" rel="tag"&gt;foam&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-7717124745522242395?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/7717124745522242395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2010/01/finished-longboard-repair.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7717124745522242395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7717124745522242395'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2010/01/finished-longboard-repair.html' title='Finished Longboard Repair'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_9NmpACXyf3o/S0M6npkn7cI/AAAAAAAABLg/qUr-n8hDChY/s72-c/2009-08-09%2011.58.19_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8221618870255414101</id><published>2009-12-15T21:03:00.001+08:00</published><updated>2009-12-15T21:03:17.915+08:00</updated><title type='text'>DIY Null Modem</title><content type='html'>&lt;p&gt;I know serial ports are heading&amp;#160; towards obsolescence but I still need to use them occasionally. One piece of hardware often required for serial connections is a null modem. The following describes how I made a DB9 null modem.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;I started off by purchasing two cheap plastic DB9 shells, a DB9 plug and a DB9 socket.&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://lh5.ggpht.com/_9NmpACXyf3o/SyeI-NvtGII/AAAAAAAABHI/hlOzy8MhHms/s1600-h/DSC_0177%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="DSC_0177" border="0" alt="DSC_0177" align="right" src="http://lh3.ggpht.com/_9NmpACXyf3o/SyeI_Zt644I/AAAAAAAABHM/euSaB1EQBcg/DSC_0177_thumb%5B3%5D.jpg?imgmax=800" width="244" height="164" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Next I screwed the shells together and hacksawed through the cable side of the screw holes on one shell and the plug side of the screw holes on the other shell.&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://lh5.ggpht.com/_9NmpACXyf3o/SyeJAitbwTI/AAAAAAAABHQ/i1n7FzXy7rY/s1600-h/DSC_0178%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="DSC_0178" border="0" alt="DSC_0178" align="right" src="http://lh6.ggpht.com/_9NmpACXyf3o/SyeJBxkT4AI/AAAAAAAABHU/eM7qtJLkSHY/DSC_0178_thumb%5B1%5D.jpg?imgmax=800" width="244" height="164" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;After gluing the two cut down shells together I had a shell with a space for installing a DB9 connector in both ends.&lt;/td&gt;        &lt;td valign="top" width="200"&gt;         &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/SyeJDe6j-kI/AAAAAAAABHY/LS6TKX4dW74/s1600-h/DSC_0179%5B7%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC_0179" border="0" alt="DSC_0179" src="http://lh5.ggpht.com/_9NmpACXyf3o/SyeJEz8-4gI/AAAAAAAABHc/UwKI2UokndI/DSC_0179_thumb%5B5%5D.jpg?imgmax=800" width="244" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;From here it was a simple soldering job following the &lt;a href="http://www.nullmodem.com/NullModem.htm" target="_blank"&gt;null modem pinouts from nullmodem.com&lt;/a&gt; and I had a compact DB9 null modem to put in my toolkit!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1d8f9562-f47d-4d0c-a2da-e4987afd583b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/null+modem" rel="tag"&gt;null modem&lt;/a&gt;,&lt;a href="http://technorati.com/tags/serial" rel="tag"&gt;serial&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DB9" rel="tag"&gt;DB9&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RS232" rel="tag"&gt;RS232&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DIY" rel="tag"&gt;DIY&lt;/a&gt;,&lt;a href="http://technorati.com/tags/electronics" rel="tag"&gt;electronics&lt;/a&gt;,&lt;a href="http://technorati.com/tags/hack" rel="tag"&gt;hack&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_9NmpACXyf3o/SyeJAitbwTI/AAAAAAAABHQ/i1n7FzXy7rY/s1600-h/DSC_0178%5B3%5D.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_9NmpACXyf3o/SyeJDe6j-kI/AAAAAAAABHY/LS6TKX4dW74/s1600-h/DSC_0179%5B7%5D.jpg"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8221618870255414101?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8221618870255414101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/12/diy-null-modem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8221618870255414101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8221618870255414101'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/12/diy-null-modem.html' title='DIY Null Modem'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_9NmpACXyf3o/SyeI_Zt644I/AAAAAAAABHM/euSaB1EQBcg/s72-c/DSC_0177_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-2692685196473343229</id><published>2009-12-15T20:49:00.001+08:00</published><updated>2009-12-15T20:49:39.968+08:00</updated><title type='text'>Transfer Drivers When Rebuilding a PC</title><content type='html'>&lt;p&gt;A colleague of mine was recently rebuilding a pc for a remote site with no internet access. He had installed pretty much all the required software he could think of in the office before taking the new pc to site and we were talking through the job when he realised he would need a driver for an obscure serial PCI card.&lt;/p&gt;  &lt;p&gt;Without any precise details of the card he was unable to find a driver to download before heading to site. And with no internet access on site he couldn’t rely on windows to find a driver online.&lt;/p&gt;  &lt;p&gt;The card in question was still installed in the existing pc which could be run for 15 minutes or so without blue screening so I suggested that it may be possible to extract the driver for the card from the existing pc and transfer it to the new one. A quick Google showed up a couple of excellent driver backup utilities that will find all installed drivers on a pc and back them up to a folder. &lt;/p&gt;  &lt;p&gt;I tested a few of these applications. My favourite is &lt;a href="http://davehope.co.uk/projects/driver-backup/" target="_blank"&gt;Driver Backup&lt;/a&gt; which is a tiny c# application that doesn’t require an install. Just beware that because this is a c# application the .net framework needs to be installed on the pc you are grabbing drivers from&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e8128b53-58d4-480c-8e76-5ec9a56493e2" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/driver" rel="tag"&gt;driver&lt;/a&gt;,&lt;a href="http://technorati.com/tags/backup" rel="tag"&gt;backup&lt;/a&gt;,&lt;a href="http://technorati.com/tags/computer" rel="tag"&gt;computer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/rebuild" rel="tag"&gt;rebuild&lt;/a&gt;,&lt;a href="http://technorati.com/tags/c%23" rel="tag"&gt;c#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dotnet" rel="tag"&gt;dotnet&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-2692685196473343229?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/2692685196473343229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/12/transfer-drivers-when-rebuilding-pc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2692685196473343229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2692685196473343229'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/12/transfer-drivers-when-rebuilding-pc.html' title='Transfer Drivers When Rebuilding a PC'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-1764952883565750463</id><published>2009-11-25T08:17:00.001+08:00</published><updated>2009-11-25T08:17:24.885+08:00</updated><title type='text'>Technorati Claim</title><content type='html'>&lt;p&gt;I’m claiming this blog for my Technorati profile, using token QV9BTY3WFXZU&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-1764952883565750463?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/1764952883565750463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/11/technorati-claim.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/1764952883565750463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/1764952883565750463'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/11/technorati-claim.html' title='Technorati Claim'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-7296488217525100694</id><published>2009-11-18T20:12:00.001+08:00</published><updated>2009-11-18T20:12:28.658+08:00</updated><title type='text'>Recording a Webcast</title><content type='html'>&lt;p&gt;I often register for webcasts with the best intentions of attending, but they often end up running at times that conflict with other work of a higher priority.&lt;/p&gt;  &lt;p&gt;Today I decided to record a webcast so I can watch it at my leisure. I did this using a very nice screen recording utility called &lt;a href="http://camstudio.org/" target="_blank"&gt;CamStudio&lt;/a&gt; which costs absolutely nothing!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://camstudio.org/" target="_blank"&gt;CamStudio&lt;/a&gt; captures the graphics and audio currently occurring on your PC and records them to an avi file. So I was able to simply join my webcast, start &lt;a href="http://camstudio.org/" target="_blank"&gt;CamStudio&lt;/a&gt; then run off to a meeting. When I came back from the meeting I stopped the recording and used Windows Movie Maker to trim the excess from the end, add a title and export as a .wmv that I can watch and pass around to my colleagues.&lt;/p&gt;  &lt;p&gt;One thing I had to work out before I could start recording with &lt;a href="http://camstudio.org/" target="_blank"&gt;CamStudio&lt;/a&gt; was how to get sound to record. A few things have to be done here:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In CamStudio select &lt;em&gt;Options–&amp;gt;Record audio from speakers&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;In &lt;em&gt;Control Panel–&amp;gt;Hardware and Sound–&amp;gt;Sound&lt;/em&gt; select the &lt;em&gt;Recording&lt;/em&gt; tab. Right click on &lt;em&gt;Stereo Mix&lt;/em&gt; and &lt;em&gt;Enable&lt;/em&gt; the right click on &lt;em&gt;Microphone &lt;/em&gt;and &lt;em&gt;Disable &lt;/em&gt;(on Windows 7)&lt;em&gt; &lt;/em&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now the sound recording will be from whatever is sent to your PC speakers rather than your microphone.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:15e7f5e1-e476-44cf-a67f-275550984692" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Screen" rel="tag"&gt;Screen&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Record" rel="tag"&gt;Record&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Capture" rel="tag"&gt;Capture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Webcast" rel="tag"&gt;Webcast&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-7296488217525100694?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/7296488217525100694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/11/recording-webcast.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7296488217525100694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7296488217525100694'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/11/recording-webcast.html' title='Recording a Webcast'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5780010668662442272</id><published>2009-11-15T14:34:00.001+08:00</published><updated>2009-11-15T14:34:37.196+08:00</updated><title type='text'>Steve Irwin in Fremantle</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_9NmpACXyf3o/Sv-g9NX67cI/AAAAAAAABDk/kn2Wuhx56gw/s1600-h/DSC_0004%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="The Steve Irwin" border="0" alt="The Steve Irwin" align="right" src="http://lh6.ggpht.com/_9NmpACXyf3o/Sv-g-FpCIgI/AAAAAAAABDo/HmREQ_M4MtA/DSC_0004_thumb%5B2%5D.jpg?imgmax=800" width="244" height="164" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.seashepherd.org/" target="_blank"&gt;Sea Shepherd&lt;/a&gt; vessel &lt;em&gt;Steve Irwin&lt;/em&gt; is currently docked at C shed in Fremantle making preparations to head off on &lt;em&gt;Operation Waltzing Matilda&lt;/em&gt; in early December to disrupt the Japanese whaling fleet.&lt;/p&gt;  &lt;p&gt;We took a family trip down to Freo yesterday and went on a fantastic guided tour of this imposing black ship. Our tour guide was a &lt;a href="http://www.seashepherd.org/" target="_blank"&gt;Sea Shepherd&lt;/a&gt; volunteer who will be heading south on the &lt;em&gt;Steve Irwin&lt;/em&gt; in December. &lt;/p&gt;  &lt;p&gt;One thing our guide made clear was that the &lt;a href="http://www.seashepherd.org/" target="_blank"&gt;Sea Shepherd&lt;/a&gt; crews are not engaging in anything illegal. It is international law that the hunting of endangered species is illegal. The problem is that no country is prepared to enforce those laws in international waters. So it is up to an independent organisation to enforce this law.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.seashepherd.org/" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="The Steve Irwin Helicopter" border="0" alt="The Steve Irwin Helicopter" align="left" src="http://lh3.ggpht.com/_9NmpACXyf3o/Sv-g-yyU2OI/AAAAAAAABDs/941MHDMGW8g/DSC_0017%5B5%5D.jpg?imgmax=800" width="244" height="164" /&gt; Sea Shepherd&lt;/a&gt; relies completely on donations to continue its operations, and the donation must be generous with the &lt;em&gt;Steve Irwin&lt;/em&gt; costing in excess of one million dollars a year to run. The majority of the running costs are for the fuel required to intercept and harass the Japanese whaling fleet in the southern ocean. &lt;/p&gt;  &lt;p&gt;Hollywood is heavily involved with Sea Shepherd. Anthony Kiedis of Red Hot Chili Peppers donated a large amount of money to fund the initial purchase of the &lt;em&gt;Steve Irwin&lt;/em&gt; while Darryl Hannah and Pierce Brosnan are among those who have made a voyage to the southern ocean. &lt;/p&gt;  &lt;p&gt;Tours run Friday to Sunday 9:30-5:30 PM and I recommend taking a look while the &lt;em&gt;Steve Irwin&lt;/em&gt; is in town.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:61a8d3fa-54fc-42c5-ac1a-f67ea7aa26da" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Sea+Shepherd" rel="tag"&gt;Sea Shepherd&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Whaling" rel="tag"&gt;Whaling&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Steve+Irwin" rel="tag"&gt;Steve Irwin&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Conservation" rel="tag"&gt;Conservation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Oceans" rel="tag"&gt;Oceans&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Antarctica" rel="tag"&gt;Antarctica&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Hollywood" rel="tag"&gt;Hollywood&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5780010668662442272?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5780010668662442272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/11/steve-irwin-in-fremantle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5780010668662442272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5780010668662442272'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/11/steve-irwin-in-fremantle.html' title='Steve Irwin in Fremantle'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_9NmpACXyf3o/Sv-g-FpCIgI/AAAAAAAABDo/HmREQ_M4MtA/s72-c/DSC_0004_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-203476663680343359</id><published>2009-11-12T20:50:00.001+08:00</published><updated>2009-11-12T20:50:10.463+08:00</updated><title type='text'>Tether Your Phone Without Rooting it</title><content type='html'>&lt;p&gt;Good news Android users, you no longer have to “root your phone” to tether it to a laptop! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.junefabrics.com/android/index.php" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="android160" border="0" alt="android160" align="right" src="http://lh5.ggpht.com/_9NmpACXyf3o/SvwEgNvI2XI/AAAAAAAABDI/0G_oLIbAOy8/android160%5B4%5D.jpg?imgmax=800" width="164" height="164" /&gt;&lt;/a&gt;A tidy little application called &lt;a href="http://www.junefabrics.com/android/index.php" target="_blank"&gt;PdaNet&lt;/a&gt; makes this&amp;#160; possible. From what I understand &lt;a href="http://www.junefabrics.com/android/index.php" target="_blank"&gt;PdaNet&lt;/a&gt; is actually a two part installation. The first part is a small application that you install on your PC. The second part happens automatically when you plug your android phone in via USB. The &lt;a href="http://www.junefabrics.com/android/index.php" target="_blank"&gt;PdaNet&lt;/a&gt; application actually installs a small android app on your phone which is used to access its data (3G etc) connection.&lt;/p&gt;  &lt;p&gt;I’ve tried &lt;a href="http://www.junefabrics.com/android/index.php" target="_blank"&gt;PdaNet&lt;/a&gt; on a windows 7 laptop and it works beautifully. Now I need to investigate whether I can set my laptop to prevent such things as windows updates happening when I’m connected to my phone and using up the measly 500MB of my phone plan.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:01bdb903-ba6f-4fc0-9062-e6a7063fe9e7" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Android" rel="tag"&gt;Android&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tether" rel="tag"&gt;Tether&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Root" rel="tag"&gt;Root&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PdaNet" rel="tag"&gt;PdaNet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mobile" rel="tag"&gt;Mobile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Data" rel="tag"&gt;Data&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Phone" rel="tag"&gt;Phone&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-203476663680343359?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/203476663680343359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/11/tether-your-phone-without-rooting-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/203476663680343359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/203476663680343359'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/11/tether-your-phone-without-rooting-it.html' title='Tether Your Phone Without Rooting it'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_9NmpACXyf3o/SvwEgNvI2XI/AAAAAAAABDI/0G_oLIbAOy8/s72-c/android160%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5016874193155208563</id><published>2009-10-27T20:06:00.002+08:00</published><updated>2009-10-27T20:09:04.438+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development backseat programming'/><title type='text'>Back Seat Programming</title><content type='html'>&lt;p&gt;Having an audience watch over my shoulder while I bang the keyboard looking for a solution to a tricky problem can be an unpleasant feeling. The unpleasantness ranges from a niggling feeling of self doubt after I make a silly typo to a hot itchy feeling when it becomes apparent that the peanut gallery knows a more elegant command prompt shortcut than the one I just used.&lt;/p&gt;&lt;p&gt;But back seat programming is so effective that is something I think we just have to learn to deal with. The reason it is effective, I believe, has something to do with our minds inability to operate on more than one scale at a time. &lt;/p&gt;&lt;p&gt;Stay with me here… the poor monkey at the keyboard is working on a fine grained scale, that is concentrating on syntax, pointers and file paths. While he is handling these details his audience is free to ponder in a more coarse grained manner on such things as system architecture. Combine the two scales and you have direction and implementation happening in real time.&lt;/p&gt;&lt;p&gt;I suspect that anyone who has worked solo on a project with an undercooked specification will know all too well how the code can spiral into unnecessary complexity. I believe this is a result of only working on the fine grained scale, and could be prevented with a regular back seat programmer.&lt;/p&gt;&lt;p&gt;I should qualify all of this by saying that it is imperative to have the right sort of back seat programmer. It needs to be someone whose technical ability you respect, someone who gives you a moment to see your own syntax errors before saying something and someone who keeps their damned fingers off the screen!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5016874193155208563?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5016874193155208563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/10/back-seat-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5016874193155208563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5016874193155208563'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/10/back-seat-programming.html' title='Back Seat Programming'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-1385635627532686744</id><published>2009-10-26T20:25:00.001+08:00</published><updated>2009-10-26T20:25:07.976+08:00</updated><title type='text'>Take Your Time and Get More Done</title><content type='html'>&lt;p&gt;I’ve been trying to adopt something of a life philosophy lately where I avoid multitasking in favour of solid concentration on a single task for a prolonged period. Whenever I find I’m starting to hurry I try to catch myself and slow back down. I seem to get much more done this way and what I produce is of a higher quality with the added benefit of experiencing far less stress.&lt;/p&gt;  &lt;p&gt;The hardest part of implementing this life philosophy is protecting my concentration from interruptions. So far I am doing this by designating times of the day that I make myself slightly inaccessible. I do my best work before lunch, so I start each day by choosing&amp;#160; a single large, important or difficult task to work on solidly all morning while ignoring email and requests from colleagues as much as possible. My afternoon is then devoted to the backlog of small tasks that has formed during the morning that would have become distractions from my core task if I had attended to them at the time.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-1385635627532686744?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/1385635627532686744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/10/take-your-time-and-get-more-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/1385635627532686744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/1385635627532686744'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/10/take-your-time-and-get-more-done.html' title='Take Your Time and Get More Done'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-6135221883845483236</id><published>2009-10-26T20:00:00.001+08:00</published><updated>2009-10-26T20:00:35.613+08:00</updated><title type='text'>Losing Your Life in Half Hour Blocks</title><content type='html'>&lt;p&gt;When I got home from work this afternoon I didn’t turn the television on for my daily blast of high intensity advertising. Instead I’ve just spent half an hour eating dinner with my wife before she went out for the evening, then an hour in the hammock with my laptop reading my favourite blogs, then half an hour doing some soldering on one of my projects.&lt;/p&gt;  &lt;p&gt;I perceived time as moving quite quickly during my evening and felt that it must be getting late, but when I checked the time it was only 7:30. If I’d sat down to watch TV my evening would have gone in a flash and I’d still be feeling not quite relaxed with work on my mind.&lt;/p&gt;  &lt;p&gt;A regular TV free evening might be a really good thing…&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ba21fd92-85a6-4d70-87bb-6b7c1f222593" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/television" rel="tag"&gt;television&lt;/a&gt;,&lt;a href="http://technorati.com/tags/time" rel="tag"&gt;time&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-6135221883845483236?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/6135221883845483236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/10/losing-your-life-in-half-hour-blocks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6135221883845483236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6135221883845483236'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/10/losing-your-life-in-half-hour-blocks.html' title='Losing Your Life in Half Hour Blocks'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-6531625933193107657</id><published>2009-10-20T20:21:00.001+08:00</published><updated>2009-10-20T20:21:30.155+08:00</updated><title type='text'>Save the Planet, Take the Bus</title><content type='html'>&lt;p&gt;I was catching up on my reading tonight and read an interesting article in the September issue of &lt;a href="http://www.engineersaustralia.org.au/" target="_blank"&gt;Engineers Australia&lt;/a&gt; on energy efficiency of different modes of transport. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.abareconomics.com/interactive/09_auEnergy/htm/chapter_9.htm" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Energy Efficiency of Australian Passenger Transport Modes in 2004-05" border="0" alt="Energy Efficiency of Australian Passenger Transport Modes in 2004-05" align="right" src="http://lh5.ggpht.com/_9NmpACXyf3o/St2rSNA3YEI/AAAAAAAABCU/3_9aacIieG0/transport_efficiency%5B17%5D.jpg?imgmax=800" width="431" height="227" /&gt;&lt;/a&gt;The report showed a graph of passenger vehicle fuel efficiency from 2004-05 which I was unable to find online. I did however find the same graph (show here) from 2005-06 in an Australian Government publication &lt;a href="http://www.abareconomics.com/interactive/09_auEnergy/index.html" target="_blank"&gt;Energy in Australia 2009&lt;/a&gt; under the &lt;a href="http://www.abareconomics.com/interactive/09_auEnergy/htm/chapter_9.htm" target="_blank"&gt;Transport and Infrastructure&lt;/a&gt; section. This graph highlights some surprising comparisons of efficiencies. &lt;/p&gt;  &lt;p&gt;For example motorcycles and international aviation are nearly on par for efficiency in terms of passenger km/GJ. This is a measure of how much energy it takes to move one person for a kilometre.&lt;/p&gt;  &lt;p&gt;And while the carbon footprint of travelling by plane was a hot topic recently, it is actually on par with light rail for efficiency. The Engineers Australia report notes that the surprisingly low efficiency of light rail is due to its dependence on electricity which is generated relatively inefficiently from brown coal. A reasonable conclusion from this is that electric cars are possibly not the environmental saviour that many claim them to be.&lt;/p&gt;  &lt;p&gt;So if you were looking for a way to reduce the carbon footprint of your daily commute don’t bother buying a motorcycle. You may as well catch the train or even the plane. As can be clearly seen in the graph above, the best option by far is to jump on the the bus!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2de2303d-fd99-4c7d-b496-cfe213513e06" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/transport" rel="tag"&gt;transport&lt;/a&gt;,&lt;a href="http://technorati.com/tags/efficiency" rel="tag"&gt;efficiency&lt;/a&gt;,&lt;a href="http://technorati.com/tags/environment" rel="tag"&gt;environment&lt;/a&gt;,&lt;a href="http://technorati.com/tags/carbon" rel="tag"&gt;carbon&lt;/a&gt;,&lt;a href="http://technorati.com/tags/australia" rel="tag"&gt;australia&lt;/a&gt;,&lt;a href="http://technorati.com/tags/conservation" rel="tag"&gt;conservation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/electric+car" rel="tag"&gt;electric car&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-6531625933193107657?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/6531625933193107657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/10/save-planet-take-bus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6531625933193107657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/6531625933193107657'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/10/save-planet-take-bus.html' title='Save the Planet, Take the Bus'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_9NmpACXyf3o/St2rSNA3YEI/AAAAAAAABCU/3_9aacIieG0/s72-c/transport_efficiency%5B17%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5559238827304467863</id><published>2009-10-13T20:20:00.001+08:00</published><updated>2009-10-13T20:20:09.826+08:00</updated><title type='text'>iTunes Movie Rentals – Fix the iFreeze</title><content type='html'>&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:309653aa-b1c5-4c8e-b092-d452f020f1f1" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/iTunes" rel="tag"&gt;iTunes&lt;/a&gt;,&lt;a href="http://technorati.com/tags/movie+rental" rel="tag"&gt;movie rental&lt;/a&gt;,&lt;a href="http://technorati.com/tags/freeze" rel="tag"&gt;freeze&lt;/a&gt;,&lt;a href="http://technorati.com/tags/hang" rel="tag"&gt;hang&lt;/a&gt;,&lt;a href="http://technorati.com/tags/media+centre" rel="tag"&gt;media centre&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTPC" rel="tag"&gt;HTPC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/howto" rel="tag"&gt;howto&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;I’ve had some long waits for the more popular movies in my Quickflix queue lately. When I heard that iTunes downloads are quota free for iinet customers I decided to give the iTunes movie rental service a try.&lt;/p&gt;  &lt;p&gt;My first thought when I started browsing the movies in the iTunes store was that they are a little more expensive to rent than Quickflix at $6.99 each compared $15 a month for four movies. The instant (well less than 3 hours anyway) gratification of downloading almost makes up for this though. &lt;/p&gt;  &lt;p&gt;So I found &lt;a href="http://en.wikipedia.org/wiki/Seven_Pounds" target="_blank"&gt;Seven Pounds&lt;/a&gt; and started downloading. Three hours later when I started trying to play my movie I hit a major showstopper. Playback lasted about two seconds then iTunes froze so badly I had to kill it with task manager. A quick search on the forums provided an easy fix though. I just had to change the preferences in iTunes to play movies in a new window and everything worked perfectly. &lt;/p&gt;  &lt;p&gt;An added bonus was that iTunes just works with my MCE remote! The basic play, pause and volume functions work right out of the box. After running MythTV on my mediacentre PC for a couple of years I am terribly impressed when &lt;strong&gt;anything&lt;/strong&gt; just works!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5559238827304467863?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5559238827304467863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/10/itunes-movie-rentals-fix-ifreeze.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5559238827304467863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5559238827304467863'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/10/itunes-movie-rentals-fix-ifreeze.html' title='iTunes Movie Rentals – Fix the iFreeze'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-2850938429635012798</id><published>2009-10-11T19:37:00.001+08:00</published><updated>2009-10-11T19:37:21.447+08:00</updated><title type='text'>Brand New Second Hand</title><content type='html'>&lt;p&gt;After nearly a year of saving $10 here and $20 there, I broke open my piggy bank this weekend and bought a brand new second hand waveboard from &lt;a href="http://www.windsurfingperth.com.au" target="_blank"&gt;Windsurfing Perth&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_9NmpACXyf3o/StHDbWnby8I/AAAAAAAABBE/z8H57hSyHCM/s1600-h/waveboard%5B11%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="2007 JP Real World Wave 69L" border="0" alt="2007 JP Real World Wave 69L" align="right" src="http://lh6.ggpht.com/_9NmpACXyf3o/StHDcEYod4I/AAAAAAAABBI/WT-8UcItcC4/waveboard_thumb%5B9%5D.jpg?imgmax=800" width="200" height="260" /&gt;&lt;/a&gt;I’ve been riding a 96 litre Fanatic Freewave for the last four years and love it, especially when I’m first to plane in marginal conditions. But at 72 kilograms I’m a lightweight and just can’t hold the rails down when the wind blows above 25 knots. So for when it blows I decided to go small, really small and got a 2007 model 69 litre JP Real World Wave (shown here). &lt;/p&gt;  &lt;p&gt;I picked up two G10 Real World Wave fins with it, a 23” and a 20” to match my 5.8 and 4.7 sails respectively. The 5.8 may be pushing the big side for this board but with the right tuning I think I can make it work for me.&lt;/p&gt;  &lt;p&gt;Now I just have to wait for a decent blow to try it out. The temptation to take it out in marginal conditions just so we can get to know each other is there. But I know if the wind drops the paltry 69 litres won’t even float me so it will be a long swim back to the beach.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-2850938429635012798?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/2850938429635012798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/10/brand-new-second-hand.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2850938429635012798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2850938429635012798'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/10/brand-new-second-hand.html' title='Brand New Second Hand'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_9NmpACXyf3o/StHDcEYod4I/AAAAAAAABBI/WT-8UcItcC4/s72-c/waveboard_thumb%5B9%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-5546169225611983233</id><published>2009-10-06T21:06:00.001+08:00</published><updated>2009-10-06T21:06:34.581+08:00</updated><title type='text'>Inspiring Reading</title><content type='html'>&lt;p&gt;I’ve recently given up treating my Google Reader account like an inbox.&amp;#160; Every lunch time I would log in for a quick read and be stressed out when I saw that I had over 400 new posts to read! Now I just treat it more like a magazine rack in the waiting room and flick through an almost limitless number of awesome articles hand picked to suit my interests. &lt;/p&gt;  &lt;p&gt;A couple of feeds that I am finding particularly inspiring at the moment:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blog.makezine.com/" target="_blank"&gt;Make Magazine&lt;/a&gt; features the work of a wide variety of eccentric inventors. I find an infectious joy present in these articles on making for the sheer creative joy of it&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.boingboing.net/" target="_blank"&gt;Boing Boing&lt;/a&gt; is an online magazine of technology, culture and fantastic quirkiness&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.adafruit.com/blog/" target="_blank"&gt;Adafruit&lt;/a&gt; has regular articles on open source electronic projects and kits. A great source of inspiration for projects and diversions around the home&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now that I have stopped trying to apply a zero inbox philosophy to reader I can feel free to add more great feeds like the above so I always have something interesting to suit my varying moods.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8c48ca3f-9d0d-4295-80e7-cd8f3adc6273" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/reader" rel="tag"&gt;reader&lt;/a&gt;,&lt;a href="http://technorati.com/tags/feeds" rel="tag"&gt;feeds&lt;/a&gt;,&lt;a href="http://technorati.com/tags/rss" rel="tag"&gt;rss&lt;/a&gt;,&lt;a href="http://technorati.com/tags/zero+inbox" rel="tag"&gt;zero inbox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/making" rel="tag"&gt;making&lt;/a&gt;,&lt;a href="http://technorati.com/tags/open+source" rel="tag"&gt;open source&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-5546169225611983233?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/5546169225611983233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/10/inspiring-reading.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5546169225611983233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/5546169225611983233'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/10/inspiring-reading.html' title='Inspiring Reading'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-672636875918124470</id><published>2009-09-03T11:39:00.001+08:00</published><updated>2009-09-03T11:39:15.371+08:00</updated><title type='text'>Androblogger Test</title><content type='html'>Just a quick post from my phone to try out the Androblogger app for android. So far it has validated my account fine and the editor is simple and does what it needs too. One small improvement would be auto caps for the start of sentences, I know it's possible as I've done it in my own apps. &lt;br /&gt;&lt;br /&gt;Well done to the develops for a much needed app.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-672636875918124470?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/672636875918124470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/09/androblogger-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/672636875918124470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/672636875918124470'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/09/androblogger-test.html' title='Androblogger Test'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8477801634882353996</id><published>2009-08-28T20:38:00.001+08:00</published><updated>2009-08-28T20:38:56.661+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social media'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Tweet Hate</title><content type='html'>&lt;p&gt;So often when I mention that I am a twitter user I come across haters. The most common reason for the hate is that “twitter is pointless” and “tweets are boring”. Aside from the fact that these opinions are usually second hand (the worst kind of opinions) they are also misguided. &lt;/p&gt;  &lt;p&gt;The reason these opinions are misguided is that they blame twitter for the banality of some of its users. Twitter is simply a new medium for communication much like the mobile phone was not so long ago, and is thus entirely incapable of being banal or interesting.&lt;/p&gt;  &lt;p&gt;If you have to listen to a boring friend on the phone do you tell everyone that phones suck and phone users are boring? Of course you don’t, you just screen their calls and find someone more interesting to talk to. You might also consider the fact that it is possible that you are boring to listen to yourself, and you need to work on being a more interesting human being.&lt;/p&gt;  &lt;p&gt;So my message to the haters - twitter is not boring, just you and your friends are.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8477801634882353996?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8477801634882353996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/tweet-hate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8477801634882353996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8477801634882353996'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/tweet-hate.html' title='Tweet Hate'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-4711932857965184872</id><published>2009-08-23T09:45:00.000+08:00</published><updated>2009-08-24T09:30:35.529+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='location twitter tweetmondo layar latitude maps android'/><title type='text'>Google Latitude vs Tweetmondo</title><content type='html'>&lt;p&gt;I've just been trying out &lt;a href="http://www.google.com/intl/en_us/latitude/intro.html"&gt;Google Latitude&lt;/a&gt; this week on my Android phone. I have also been using the Tweetmondo layer on Layar (see &lt;a href="http://carvingcode.blogspot.com/2009/08/augmented-reality-phone-tweeting.html"&gt;Augmented Reality Phone Tweeting&lt;/a&gt;), so I thought I'd do a quick comparison for anyone thinking of adding location services to their social media suite.&lt;/p&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Tweetmondo/Layar&lt;/th&gt;&lt;th&gt;Latitude&lt;/th&gt;&lt;tr&gt;&lt;th&gt;Location&lt;/th&gt;&lt;td&gt;Default is "suburb" accuracy, I'm not too bothered if strangers can see what suburb I am in, and it only updates when the Tweetmondo layer is open. Locations are show on a map or augmented reality view&lt;/td&gt;&lt;td&gt;Location is scarily accurate, but only available to friends I have invited to view it. Once again this only updates while the Google maps application is running. Location is only shown over google maps (no AR)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Updates&lt;/th&gt;&lt;td&gt;Done in twitter after updating location on Tweetmondo layer in Layar, so have to use two separate apps&lt;/td&gt;&lt;td&gt;Done from within latitude as "shout outs", all integrated and easy to use&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Following/Privacy&lt;/th&gt;&lt;td&gt;Just like twitter, you are visible to anyone who's looking!&lt;/td&gt;&lt;td&gt;Invite only, so more privacy but this makes it harder to find new friends&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;After creating this table I'm starting to think that the title of this post is perhaps a little innacurate. Latitude and Tweetmondo compete in slightly different niches of the social media space so this is not really a "vs" situation. I see myself using both applications. I will still use Tweetmondo to interact with people I don't know (trust?) in my immediate vicinity, but those people I get to know and trust will eventually be promoted from a tweep to a latitude friend.&lt;br /&gt;&lt;br /&gt;Feel free to leave a comment and let me know which of these apps you use, and how much you trust your tweeps and friends.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-4711932857965184872?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/4711932857965184872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/google-latitude-vs-tweetmondo.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4711932857965184872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4711932857965184872'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/google-latitude-vs-tweetmondo.html' title='Google Latitude vs Tweetmondo'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8661419594262098045</id><published>2009-08-20T10:09:00.000+08:00</published><updated>2009-08-20T11:03:11.385+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twitter augmented reality howto android tweetmondo layar'/><title type='text'>Augmented Reality Phone Tweeting</title><content type='html'>The &lt;a href="http://en.wikipedia.org/wiki/Augmented_reality"&gt;augmented reality&lt;/a&gt; app &lt;a href="http://layar.com/"&gt;Layar&lt;/a&gt; has just been released (17th August) on the global Android market. If you have an Android phone and you tweet then you will love the &lt;a href="http://www.tweetmondo.com/"&gt;Tweetmondo&lt;/a&gt; layer. This layer takes the image from your phone and overlays an impression of recent tweets that happened close to where you are standing. For a youtube video of the app in action check out the &lt;a href="http://blog.tweetmondo.com/"&gt;Layar Blog&lt;/a&gt;, it works for me just like it shows here.&lt;br /&gt;&lt;br /&gt;This app is great for an early release, but it can be a little confusing to get started and I couldn't find any instructions. Here is what you can do to get started.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the Layar app on your phone&lt;/li&gt;&lt;li&gt;Start up Layar, go to the &lt;em&gt;Featured&lt;/em&gt; tab and hit &lt;em&gt;Tweetmondo&lt;/em&gt;&lt;/li&gt;&lt;li&gt;The &lt;em&gt;Filter Settings&lt;/em&gt; dialog opens, you can probably just hit &lt;em&gt;Apply&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Your gps icon will show in the notifications bar and you should see the output from your phone camera with a grid overlay and hopefully some bird icons representing tweeters&lt;/li&gt;&lt;li&gt;Tap one of the tweeter bird icons then tap again on the info bar that appears at the bottom of the screen&lt;/li&gt;&lt;li&gt;Select &lt;em&gt;Privacy&lt;/em&gt; then you will be redirected to register your phone with Tweetmondo. Enter your Twitter credentials&lt;/li&gt;&lt;li&gt;Now whenever the Tweetmondo layer is open on your phone your location is updated with Tweetmondo servers. By default this is not too fine-grained, for example my location shows up as something like &lt;em&gt;Scarborough, Perth&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Now you can use your regular everyday Twitter app (I use &lt;a href="http://twidroid.com/"&gt;Twidroid&lt;/a&gt;) to tweet and it will show up on Layar at your location.&lt;/li&gt;&lt;/ol&gt;&lt;span style="color:#000000;"&gt;One showstopper with the above instructions is that if you are in an area with no other Tweetmondo users you can't set up your phone to update your location through the Tweetmondo layer. When this happens you will just have to wait until you are somewhere busier and try again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I think this is really cool for the extra level of engagement it offers to tweeters, but I'm sure just like Twitter itself this will not be everyone's cup of tea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8661419594262098045?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8661419594262098045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/augmented-reality-phone-tweeting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8661419594262098045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8661419594262098045'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/augmented-reality-phone-tweeting.html' title='Augmented Reality Phone Tweeting'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-2858464343434836061</id><published>2009-08-14T07:38:00.000+08:00</published><updated>2009-08-14T08:40:20.626+08:00</updated><title type='text'>How to Open Gmail Attachments with Android Apps</title><content type='html'>I've just added a new feature to my Android cook book application &lt;a href="http://sites.google.com/site/caldwellcode/"&gt;Bites&lt;/a&gt;! You can now send and receive recipes as xml files attached to emails.&lt;br /&gt;&lt;br /&gt;From the users point of view the feature works like this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;The sender simply long clicks on a recipe and selects send via email in the context menu. The gmail application opens up with the recipe attached to an email, all that is left to do is enter a contact name in the to field and hit send. &lt;/em&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;The receiver simply opens their gmail inbox and hits the preview button next to the recipe file attachment, then Bites opens with a dialog box asking if they want to import the recipe. That's it, couldn't be easier!&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Now the technical details for those of your that are looking to include the ability to open a gmail file attachment in your own Android applications.&lt;/p&gt;&lt;p&gt;First up you'll need an intent filter to handle the attachment file type you are interested in opening with your activity, so to open xml files your activity needs the following in the manifest (leading underscores to allow display in blogger).&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;_intent-filter&gt;&lt;br /&gt;&lt;_action name="android.intent.action.VIEW"&gt;&lt;br /&gt;&lt;_category name="android.intent.category.DEFAULT"&gt;&lt;br /&gt;&lt;_data mimetype="text/xml"&gt;&lt;br /&gt;&lt;_/intent-filter&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Then in your activity you'll need to handle the gmail attachment intent uri which has a &lt;em&gt;content://&lt;/em&gt; scheme. This intent contains a uri to a gmail content provider that points to the file attachment on google servers. To read a file attachment you have to open an input stream from the content provider using the uri in the intent created by the gmail application like this:&lt;br /&gt;&lt;br /&gt;if (getIntent().getScheme().equals("content")) {&lt;br /&gt;&lt;em&gt;InputStream attachment = getContentResolver().openInputStream(getIntent().getData());&lt;br /&gt;...&lt;br /&gt;}&lt;/em&gt;&lt;em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;In my application this input stream is an xml file, which I can then create a document object from and parse using the following:&lt;/p&gt;&lt;p&gt;&lt;em&gt;DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();&lt;br /&gt;Document doc = builder.parse(attachment);&lt;br /&gt;attachment.close();&lt;br /&gt;Element recipe = doc.getDocumentElement();&lt;br /&gt;String strRecipe = recipe.getAttribute("name");&lt;br /&gt;...&lt;/em&gt;&lt;/p&gt;&lt;p&gt;To see the full code in context take a look at the &lt;a href="http://code.google.com/p/bites-android/source/browse/#svn/trunk/Bites"&gt;Bites source code&lt;/a&gt; (available under GPLv3).&lt;/p&gt;&lt;p&gt;If you would like to install Bites just scan the QR code below with your Android phone (you'll need to use the barcode scanner app). &lt;img id="BLOGGER_PHOTO_ID_5366674064314478098" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 135px; CURSOR: hand; HEIGHT: 135px" alt="" src="http://1.bp.blogspot.com/_9NmpACXyf3o/SnpBoKzELhI/AAAAAAAAA5I/eVuxenJg3UA/s200/chart.png" border="0" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-2858464343434836061?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/2858464343434836061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/how-to-open-gmail-attachments-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2858464343434836061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2858464343434836061'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/how-to-open-gmail-attachments-with.html' title='How to Open Gmail Attachments with Android Apps'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9NmpACXyf3o/SnpBoKzELhI/AAAAAAAAA5I/eVuxenJg3UA/s72-c/chart.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-111469975995623929</id><published>2009-08-08T12:20:00.000+08:00</published><updated>2009-08-08T12:51:47.746+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='long board surf fibreglass diy'/><title type='text'>Foam Dust</title><content type='html'>&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_9NmpACXyf3o/Snz-YCdRoEI/AAAAAAAAA6A/a_PmKsjzCak/s1600-h/P8080133.JPG"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 200px; FLOAT: right; HEIGHT: 150px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5367444544848764994" border="0" alt="" src="http://4.bp.blogspot.com/_9NmpACXyf3o/Snz-YCdRoEI/AAAAAAAAA6A/a_PmKsjzCak/s200/P8080133.JPG" /&gt;&lt;/a&gt;After a bingle on the water the other weekend with an old guy in a floppy hat my long board was looking a tad sad. What looked like a minor crack in the gloss at first inspection turned out to be a pretty decent crunch with the foam crumbled and soft behind it for several inches.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So after cursing old guys floppy hats and crowded beaches for a few minutes I checked out &lt;a href="http://www.boardlady.com/"&gt;the board lady's&lt;/a&gt; site for some sage advice, then took a trip to Bunnings and bought a new 5" rotary sander. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;After grinding out all the damaged material with great enthusiasm I was left with a pretty scary looking hole. Following the board lady's advice I then filled this up with even scarier looking blocks of foam (divinycell), which I first heated in the oven so I could shape them to the hole. The chemical aroma that emanated from my oven would indicate that it would not be a good idea to cook a pie at the same time as heating up divinycell.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_9NmpACXyf3o/Sn0CauF_ODI/AAAAAAAAA6I/vOdk77vcxTw/s1600-h/P8080134.JPG"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 200px; FLOAT: left; HEIGHT: 150px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5367448988968499250" border="0" alt="" src="http://1.bp.blogspot.com/_9NmpACXyf3o/Sn0CauF_ODI/AAAAAAAAA6I/vOdk77vcxTw/s200/P8080134.JPG" /&gt;&lt;/a&gt;After applying resin, glass cloth and masking tape to hold the whole mess together I left it to dry and was left with the lumping looking result in the picture above. I then sanded this back down to the rather pleasing result show here.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;After filling in a couple of little holes with some glass fibre dust mixed with resin I'm putting my feet up for the next drying phase. Look for my next post on painting this and glassing over it, hopefully to restore my longboard to like new condition.&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/80852718082287733-111469975995623929?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/111469975995623929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/foam-dust.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/111469975995623929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/111469975995623929'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/foam-dust.html' title='Foam Dust'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_9NmpACXyf3o/Snz-YCdRoEI/AAAAAAAAA6A/a_PmKsjzCak/s72-c/P8080133.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-2240142894720639615</id><published>2009-08-07T10:34:00.000+08:00</published><updated>2009-08-07T10:58:24.012+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gmail android app sdk open attachment'/><title type='text'>No Gmail in Android SDK</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_9NmpACXyf3o/SnuWvE6_V3I/AAAAAAAAA5Q/Q1QA-W-8nXw/s1600-h/gmail-icon-v2.jpeg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5367049116461258610" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 114px; CURSOR: hand; HEIGHT: 79px" alt="" src="http://1.bp.blogspot.com/_9NmpACXyf3o/SnuWvE6_V3I/AAAAAAAAA5Q/Q1QA-W-8nXw/s200/gmail-icon-v2.jpeg" border="0" /&gt;&lt;/a&gt;I've been frustrated in recent days by the Android SDK not including the gmail app. The email app included with the SDK works differently to the gmail app which is what all the users will be using.&lt;br /&gt;&lt;br /&gt;I'm trying to include a new feature in &lt;a href="http://code.google.com/p/bites-android/"&gt;Bites&lt;/a&gt; where users can share recipes via email attachments. The sending part is working. The receiving part is not, and finding out why is not so easy as the gmail application is not available to debug with on the emulator.&lt;br /&gt;&lt;br /&gt;The only option available to me so far is debugging on a physical device, which reduces me to old school debugging using the Log.d function and logcat in DDMS. This is quite tedious when compared to the step through debugging possible when using the emulator.&lt;br /&gt;&lt;br /&gt;Google, if you are listening can we please have gmail in the SDK. I'm not bothered if it is a closed source binary, I just want to test with it.&lt;br /&gt;&lt;br /&gt;Stay tuned for my post on how to open gmail attachments with your app (as soon as I work out how to do it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-2240142894720639615?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/2240142894720639615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/no-gmail-in-android-sdk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2240142894720639615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/2240142894720639615'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/no-gmail-in-android-sdk.html' title='No Gmail in Android SDK'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9NmpACXyf3o/SnuWvE6_V3I/AAAAAAAAA5Q/Q1QA-W-8nXw/s72-c/gmail-icon-v2.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-7337416264883689607</id><published>2009-08-06T10:25:00.000+08:00</published><updated>2009-08-06T11:58:48.284+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QR code barcode scanner android market intent street art'/><title type='text'>QR Codes for Android Market Apps</title><content type='html'>I'm really excited about QR codes at the moment! Data entry and searching are great on new smartphones but still a little slow and tedious compared to the instant gratification we are used to on a pc. So the ability to just aim my phone camera at a code and receive information or navigate to a url is very cool. &lt;div&gt;&lt;/div&gt;&lt;div&gt;When I was checking out my application listing on &lt;a href="http://www.androlib.com/android.application.caldwell-ben-bites-jBEE.aspx"&gt;AndroLib&lt;/a&gt; I realised that these guys are using QR codes to create Android Intents. There are just so many possibilities with this.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The QR code listed for my app &lt;a href="http://code.google.com/p/bites-android/"&gt;Bites&lt;/a&gt; on AndroLib looks like this:&lt;a href="http://1.bp.blogspot.com/_9NmpACXyf3o/SnpBoKzELhI/AAAAAAAAA5I/eVuxenJg3UA/s1600-h/chart.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5366674064314478098" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 135px; CURSOR: hand; HEIGHT: 135px" alt="" src="http://1.bp.blogspot.com/_9NmpACXyf3o/SnpBoKzELhI/AAAAAAAAA5I/eVuxenJg3UA/s200/chart.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&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;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;When I decoded this with the online &lt;a href="http://zxing.org/w/decode.jspx"&gt;zxing decoder&lt;/a&gt; I found it contained the string &lt;span style="color:#000099;"&gt;&lt;em&gt;market://search?q=pname:caldwell.ben.bites &lt;/em&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;which when scanned with my phone opens the market with a search result for Bites. What an easy way to get data and intents between a pc and a phone!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;There are just so many creative and subversive ways to use QR codes, they have even found their way into &lt;a href="http://2d-code.co.uk/qr-code-street-art/"&gt;street art&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Well done to the &lt;a href="http://code.google.com/p/zxing/"&gt;ZXing&lt;/a&gt; guys too, I use their barcode scanner app from the Android market for barcode scanning and I have to say they have done a fantastic job!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-7337416264883689607?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/7337416264883689607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/qr-codes-for-android-market-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7337416264883689607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/7337416264883689607'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/qr-codes-for-android-market-apps.html' title='QR Codes for Android Market Apps'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9NmpACXyf3o/SnpBoKzELhI/AAAAAAAAA5I/eVuxenJg3UA/s72-c/chart.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-8799372724212552358</id><published>2009-08-04T06:32:00.000+08:00</published><updated>2009-08-04T06:45:43.119+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android developer jailbreak security market'/><title type='text'>Testing Android Apps Without Jailbreaking Your Phone</title><content type='html'>I've been hard at work developing the next update of &lt;em&gt;Bites,&lt;/em&gt; my cookbook app for Android phones and now I want to start testing on a physical device not just the sdk emulator.&lt;br /&gt;&lt;br /&gt;I don't like the idea of jailbreaking my phone, it is still my main source of communication and I don't want to risk paying out the rest of a 24 month contract while having a useless bricked phone. So last night I found that I can test an app update without releasing to market. Here is what I did:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Export the signed .apk as per a market release&lt;/li&gt;&lt;li&gt;Post the .apk on my code hosting site as a testing release&lt;/li&gt;&lt;li&gt;Navigate to the .apk using my phone browser and click to install&lt;/li&gt;&lt;li&gt;The phone tells me it cannot install apps from outside the market then allows me to go to a settings page on which I can tick a box allowing apps from outside the market&lt;/li&gt;&lt;li&gt;Try again and the app installs&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I'm assuming this will only work with apps that have already been released to market. I tested this with an unsigned .apk and my phone would not install it, so it looks this is a neat little backdoor for honest developers. &lt;/p&gt;&lt;p&gt;There is a potential for security problems but only if a developer turns bad or an app signing key is liberated. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-8799372724212552358?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/8799372724212552358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/testing-android-apps-without.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8799372724212552358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/8799372724212552358'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/testing-android-apps-without.html' title='Testing Android Apps Without Jailbreaking Your Phone'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-80852718082287733.post-4233357296715068949</id><published>2009-08-03T09:13:00.000+08:00</published><updated>2009-08-03T09:37:12.174+08:00</updated><title type='text'>Carving &amp; Code</title><content type='html'>Bam! My first blog post. Carving Code is going to be my online record of how I did what I did after I did it and found that it worked. The focus will be on my main passions: surfing, windsurfing and open source software, but I'm quite sure I will diverge into other topics as the mood takes me.&lt;br /&gt;&lt;br /&gt;Currently I'm fixing a rail ding on my 9'1" longboard and updating my recipe book application for Android phones so expect a post on one of these sometime soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/80852718082287733-4233357296715068949?l=carvingcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carvingcode.blogspot.com/feeds/4233357296715068949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://carvingcode.blogspot.com/2009/08/carving-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4233357296715068949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/80852718082287733/posts/default/4233357296715068949'/><link rel='alternate' type='text/html' href='http://carvingcode.blogspot.com/2009/08/carving-code.html' title='Carving &amp; Code'/><author><name>Ben Caldwell</name><uri>http://www.blogger.com/profile/12302040031314588676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
