<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en"><title type="text">aleatory</title><link rel="alternate" type="text/html" href="http://aleatory.clientsideweb.net" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/aleatory" /><updated>2012-01-19T18:53:37+00:00</updated><generator>http://wordpress.org/?v=3.3.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/aleatory" /><feedburner:info uri="aleatory" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>aleatory</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry><title type="text">Deploying Updates from Windows Dev Box to Linux Server</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/-uihTtUCEHY/" /><category term="Tech Labours" /><author><name>rutherford</name></author><updated>2012-01-17T18:19:43-08:00</updated><id>http://aleatory.clientsideweb.net/?p=530</id><summary type="html">I develop on my local Windows 7 (or XP netbook when out of town) and to test/deploy projects I need to send them to my Gentoo Linux server. While manual copying of files quickly becomes a pain in the arse a fully fledged continuous integration environment is needlessly complex for a single programmer project so [...]</summary><content type="html">&lt;p&gt;I develop on my local Windows 7 (or XP netbook when out of town) and to test/deploy projects I need to send them to my Gentoo Linux server. While manual copying of files quickly becomes a pain in the arse a fully fledged continuous integration environment is needlessly complex for a single programmer project so I created the following batch script that once run checks my windows folders for new &amp;#038; updated files since the last time the script was run then sends them across the ether using scp&lt;a name="1inline"/&gt;&lt;a href="#1ref"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The script has been tested on XP &amp;#038; 7 successfully.&lt;/p&gt;
&lt;p&gt;For the linux side of things I run a python paster instance with the &amp;#8212;reload flag that means paster will pickup changes and restart automatically, making deployment from my windows box a single click action.&lt;/p&gt;
&lt;p&gt;Initially I started out a little rusty in my command line knowledge &lt;span id="more-530"&gt;&lt;/span&gt;and had set about getting timestamps from first principles &amp;#8211; lots of find, substring comparisons and messy embedded if control statements. Then I found command extensions which gave convenient access to file properties. Forfile and robocopy were potentially very useful shortcuts but neither are found in the base WinXP system so I eventually arrived at the following solution. The key part where datetime comparisons are made is in the main loop:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="qbasic" style="font-family:monospace;"&gt;dir &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;b &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;tw &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;od !folder!%timestampfile% !file! | more &lt;span style="color: #66cc66;"&gt;+&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; %tmpfile%
set &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;p latest&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; %tmpfile%
del %tmpfile%&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here the [tmp] timestamp file is compared with the current file in the recursive loop and ranked in ascending order of modification datetime (/b cuts out unwanted output from dir, /tw tells it to use file modification time for sorting and /od tells it to order by oldest first). This is piped to more which takes the bottom line (the newest file) and throws it into %tmpfile%. The variable !latest! then gets set to the value (/p switch tells set to expect a single line of input) and the temporary file is deleted. Afterwards we test to ensure !latest! is actually a file we want to transfer and not the timestamp file (or the batch file for that matter) and if so we copy it across to our transfer folder. Anyways:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="qbasic" style="font-family:monospace;"&gt;@echo &lt;span style="color: #000066;"&gt;OFF&lt;/span&gt;
&amp;nbsp;
REM IMPORTANT: 
REM &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;. after you checkout your project into the working directory&lt;span style="color: #66cc66;"&gt;,&lt;/span&gt; create this batch file &lt;span style="color: #000066;"&gt;AND&lt;/span&gt; a blank txt file named %timestampfile% in your top level project directory. 
REM &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;. make sure timestampfile &lt;span style="color: #000066;"&gt;IS&lt;/span&gt; unique &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;no other &lt;span style="color: #000066;"&gt;FILES&lt;/span&gt; with this &lt;span style="color: #000066;"&gt;NAME&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; within all subfolders of your working directory
REM &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;. make sure tmpfile &lt;span style="color: #000066;"&gt;IS&lt;/span&gt; unique within pwd
REM &lt;span style="color: #cc66cc;"&gt;3&lt;/span&gt;. make sure tmp &lt;span style="color: #000066;"&gt;IS&lt;/span&gt; unique directory
REM &lt;span style="color: #cc66cc;"&gt;4&lt;/span&gt;. set your pscp&lt;span style="color: #66cc66;"&gt;,&lt;/span&gt; conn &amp;amp; pw strings &lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt; appropriate values
REM
REM original post: http:&lt;span style="color: #66cc66;"&gt;//&lt;/span&gt;aleatory.clientsideweb.net&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;2012&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;01&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;18&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;deploying&lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;windows&lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;dev&lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;to&lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;linux&lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;server
&amp;nbsp;
set tmp&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;C:\tmp\
set tmpfile&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;tmp.txt
set timestampfile&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;timestamp.txt
set pscp&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;C:\path\to\pscp.exe&amp;quot;&lt;/span&gt;
set conn&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;user@server:&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;path&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;directory
set pw&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;yourpasswdhere
&amp;nbsp;
REM ensure w2k command extensions are enabled &lt;span style="color: #000066;"&gt;AND&lt;/span&gt; delayed expansion &lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; the control &lt;span style="color: #a1a100;"&gt;LOOP&lt;/span&gt;
setlocal enableextensions enabledelayedexpansion
&amp;nbsp;
REM tmp directory &lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; copying modified &lt;span style="color: #000066;"&gt;FILES&lt;/span&gt; across
&lt;span style="color: #000066;"&gt;MKDIR&lt;/span&gt; %tmp%
&lt;span style="color: #a1a100;"&gt;CALL&lt;/span&gt; :strlen prelen %~dp0
set &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;a &lt;span style="color: #000066;"&gt;LEN&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;+&lt;/span&gt;prelen
&amp;nbsp;
REM need &lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt; copy timestampfile temporarily &lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt; each subfolder &lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; datetime comparison in main &lt;span style="color: #a1a100;"&gt;LOOP&lt;/span&gt;.
&lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;d &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;r %%j in &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;*&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #a1a100;"&gt;DO&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;
	copy %timestampfile% %%j
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
REM substring %var:~start&lt;span style="color: #66cc66;"&gt;,&lt;/span&gt;length% &lt;span style="color: #66cc66;"&gt;-&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;based
REM &lt;span style="color: #a1a100;"&gt;LOOP&lt;/span&gt; through all &lt;span style="color: #000066;"&gt;FILES&lt;/span&gt; in directory &amp;amp; &lt;span style="color: #a1a100;"&gt;SUB&lt;/span&gt; directories
REM &lt;span style="color: #a1a100;"&gt;IF&lt;/span&gt; last modified time greater than %timestampfile% &lt;span style="color: #66cc66;"&gt;-&lt;/span&gt; copy &lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt; set &lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt; ssh across
&lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;r %%i in &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;*&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #a1a100;"&gt;DO&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;
	set file&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;%%~dpnxi
	set file&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;!file:~%len%!
	set folder&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;%%~dpi
	set folder&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;!folder:~%len%!
&amp;nbsp;
	REM below will find last modified time &lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; each &lt;span style="color: #000066;"&gt;AND&lt;/span&gt; &lt;span style="color: #a1a100;"&gt;RETURN&lt;/span&gt; latest file
	REM always returns 2nd file &lt;span style="color: #a1a100;"&gt;IF&lt;/span&gt; both were modified in the same minute&lt;span style="color: #66cc66;"&gt;,&lt;/span&gt; so we should &lt;span style="color: #000066;"&gt;PUT&lt;/span&gt; source file 2nd.
	REM t the moment &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;tw doesn&lt;span style="color: #808080;"&gt;'t work as expected when comparing timestampfile with files inside different folders; &lt;/span&gt;
	REM so the only immediate solution &lt;span style="color: #000066;"&gt;IS&lt;/span&gt; &lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt; have a temp copy of timestampfile in the same directory &lt;span style="color: #000066;"&gt;ON&lt;/span&gt; each &lt;span style="color: #a1a100;"&gt;LOOP&lt;/span&gt;...
	dir &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;b &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;tw &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;od !folder!%timestampfile% !file! | more &lt;span style="color: #66cc66;"&gt;+&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; %tmpfile%
	set &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;p latest&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt; %tmpfile%
	del %tmpfile%
&amp;nbsp;
	REM &lt;span style="color: #a1a100;"&gt;IF&lt;/span&gt; latest isn&lt;span style="color: #808080;"&gt;'t this batch file or the timestamp file then copy across, maintaining relative folder structure&lt;/span&gt;
	&lt;span style="color: #a1a100;"&gt;IF&lt;/span&gt; &lt;span style="color: #000066;"&gt;NOT&lt;/span&gt; !latest!&lt;span style="color: #66cc66;"&gt;==&lt;/span&gt;%~nx0 &lt;span style="color: #a1a100;"&gt;IF&lt;/span&gt; &lt;span style="color: #000066;"&gt;NOT&lt;/span&gt; !latest!&lt;span style="color: #66cc66;"&gt;==&lt;/span&gt;%timestampfile% &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; 
		echo %tmp%!folder!!file!
		&lt;span style="color: #000066;"&gt;MKDIR&lt;/span&gt; %tmp%!folder! &amp;amp; copy !file! %tmp%!folder!
	&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
REM timestampfile cleanup
&lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;d &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;r %%j in &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;*&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #a1a100;"&gt;DO&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;
	del %%j\%timestampfile%
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
%pscp% &lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;batch &lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;pw %pw% &lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;r %tmp%&lt;span style="color: #66cc66;"&gt;*&lt;/span&gt; %conn%
&lt;span style="color: #000066;"&gt;RMDIR&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;s &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;q %tmp%
&amp;nbsp;
REM update timestamp file
echo %date%&lt;span style="color: #66cc66;"&gt;-&lt;/span&gt;%time%&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;%timestampfile%
&amp;nbsp;
&lt;span style="color: #a1a100;"&gt;GOTO&lt;/span&gt; :&lt;span style="color: #000066;"&gt;EOF&lt;/span&gt;
&amp;nbsp;
REM &lt;span style="color: #a1a100;"&gt;FUNCTION&lt;/span&gt; &lt;span style="color: #a1a100;"&gt;TO&lt;/span&gt; count &lt;span style="color: #808080;"&gt;'string' length&lt;/span&gt;
:strlen &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;resultVar&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;stringVar&lt;span style="color: #66cc66;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;   
	setlocal EnableDelayedExpansion
    set &lt;span style="color: #ff0000;"&gt;&amp;quot;s=!%~2!#&amp;quot;&lt;/span&gt;
    set &lt;span style="color: #ff0000;"&gt;&amp;quot;len=0&amp;quot;&lt;/span&gt;
    &lt;span style="color: #a1a100;"&gt;FOR&lt;/span&gt; %%P in &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;4096&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;2048&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;1024&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;512&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;256&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;128&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;64&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;32&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;16&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;8&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;4&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #a1a100;"&gt;DO&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;
        &lt;span style="color: #a1a100;"&gt;IF&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;!s:~%%P,1!&amp;quot;&lt;/span&gt; NEQ &lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; 
            set &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;a &lt;span style="color: #ff0000;"&gt;&amp;quot;len+=%%P&amp;quot;&lt;/span&gt;
            set &lt;span style="color: #ff0000;"&gt;&amp;quot;s=!s:~%%P!&amp;quot;&lt;/span&gt;
        &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; 
	endlocal
    set &lt;span style="color: #ff0000;"&gt;&amp;quot;%~1=%len%&amp;quot;&lt;/span&gt;
    &lt;span style="color: #000066;"&gt;EXIT&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;b
&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(apologies for the non-batch file syntax highlighting &amp;#8211; there&amp;#8217;s a bug in GeSHi syntax highlighting engine that inserts HTML cruft into the code.)&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ll note the intermediate step it takes of creating a temporary folder to place the files to be copied. This means I can copy the whole thing across as a oner rather than a long-winded new ssh connection for each one. The ideal windows solution would be to create a network folder using SAMBA on the Linux server where I could simply copy the files across in one go. If the file sizes were massive I might do this but I already use SSH for sysadmin so to cut down on one less potential security hole I&amp;#8217;ll keep it simple.&lt;/p&gt;
&lt;p&gt;Notably I had to use pukka REM statements and not the faster double colon to avoid the comments within the FOR loop being interpreted as commands and returning the following error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;The filename, directory name, or volume label syntax is incorrect&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Also the one caveat with the above batch code is it won&amp;#8217;t copy anything that has the same name as the script or the timestampfile value &amp;#8211; so name them accordingly. If there is a better way of doing any of the steps I took then you are welcome to comment below.&lt;/p&gt;
&lt;p&gt;Overall, yeah batch file processing is hard.&lt;/p&gt;
&lt;p&gt;&lt;a name="1ref"/&gt;&lt;a href="#1inline"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;. pscp &amp;#8211; a command line scp utility.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/-uihTtUCEHY" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2012/01/18/deploying-windows-dev-to-linux-server/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2012/01/18/deploying-windows-dev-to-linux-server/</feedburner:origLink></entry><entry><title type="text">First Impressions on Dropping ICT/Gaining Programming</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/Jj7lbjdQ14w/" /><category term="Big Society" /><category term="computer science" /><author><name>rutherford</name></author><updated>2012-01-11T06:21:10-08:00</updated><id>http://aleatory.clientsideweb.net/?p=548</id><summary type="html">Dropping the old ICT curriculum with it&amp;#8217;s much maligned emphasis on M$ Office is a brave move by education minister Michael Gove. It could be argued that from purely a learning point of view this one action is more important than any of the recent decisions on increasing education cost. Sending children back to where [...]</summary><content type="html">&lt;p&gt;&lt;img alt="" src="http://farm8.staticflickr.com/7031/6678745999_67cb2d29b0.jpg" title="Hall of Tortured Souls" class="alignnone" width="500" height="375" /&gt;&lt;/p&gt;
&lt;p&gt;Dropping the old ICT curriculum with it&amp;#8217;s much maligned emphasis on M$ Office is a brave move by education minister Michael Gove. It could be argued that from purely a learning point of view this one action is more important than any of the recent decisions on increasing education cost. Sending children back to where it all began &amp;#8211; the formulation of grammars and statements thereof into machine-readable instructions that produce new computing tasks rather than just learn old ones by rote &amp;#8211; is in many ways fundamental to getting a British engineering discipline back on track. &lt;/p&gt;
&lt;p&gt;But it&amp;#8217;s easy to get carried away here. &lt;span id="more-548"&gt;&lt;/span&gt;The gaming industry has long had luminaries making the case for radical change to computing education. But it isn&amp;#8217;t as simple as replacing building a spreadsheet with building a bouncing red ball. Spreadsheets may be boring but real world spreadsheet skills are one of the most essential skills in office jobs of all hues in the world today. Replacing that with an app that does something &amp;#8216;cool&amp;#8217; is not what ICT is about either.&lt;/p&gt;
&lt;p&gt;Reducing things to the bare minimum, programming has two innate parts &amp;#8211; the design process and the act of realising this design in code. To design effectively, a student must be aware of what has gone before them, whether to use as building blocks or to pick holes, improve and iterate. How many people would be familiar with Excel prior to their job if they didn&amp;#8217;t use it at school? Similarly how do we expect programmers to create something better if they have not experienced what went before? &lt;/p&gt;
&lt;p&gt;Purely dropping perceivably boring essentials is not the answer &amp;#8211; it&amp;#8217;s akin to removing addition from maths or spelling from English &amp;#8211; but we do need a better balance between application and creation. Far from being opposite ends of the spectrum, both must go hand in hand to rebuild our design culture.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/Jj7lbjdQ14w" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2012/01/11/first-impressions-on-dropping-ictgaining-programming/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2012/01/11/first-impressions-on-dropping-ictgaining-programming/</feedburner:origLink></entry><entry><title type="text">2011: Marking 10 Years of Evolution in Evil Lair Design</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/C0OtInz985M/" /><category term="international" /><author><name>rutherford</name></author><updated>2011-12-31T03:27:34-08:00</updated><id>http://aleatory.clientsideweb.net/?p=526</id><summary type="html">circa. 2001 2011</summary><content type="html">&lt;p&gt;circa. 2001&lt;br /&gt;
&lt;a href="http://farm8.staticflickr.com/7008/6600712229_70d1b6a3d0_o.gif"&gt;&lt;img src="http://farm8.staticflickr.com/7008/6600712229_b638d1357f.jpg" alt="Evil Lair circa. 2001" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2011&lt;br /&gt;
&lt;img src="http://farm8.staticflickr.com/7153/6600711323_788228498f.jpg" alt="Evil Lair 2011" /&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/C0OtInz985M" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/12/31/2011-marking-10-years-of-evolution-in-evil-lair-design/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/12/31/2011-marking-10-years-of-evolution-in-evil-lair-design/</feedburner:origLink></entry><entry><title type="text">Fiscal Union Probably Means an End to Irish Republic’s USP</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/OHBaiiT9m-4/" /><category term="Financial Markets" /><author><name>rutherford</name></author><updated>2011-12-03T18:23:20-08:00</updated><id>http://aleatory.clientsideweb.net/?p=523</id><summary type="html">This Friday on the anniversary of the Maastricht Treaty draft and amid a likely worsening economic outlook (Eurozone GDP out Tuesday) the EZ economies should announce moves to rein in the spending of the southern European states &amp;#038; complement this with a plan to harmonise fiscal policy. This will mean among other things bringing tax [...]</summary><content type="html">&lt;p&gt;This Friday on the anniversary of the Maastricht Treaty draft and amid a likely worsening economic outlook (Eurozone GDP out Tuesday) the EZ economies should announce moves to rein in the spending of the southern European states &amp;#038; complement this with a plan to harmonise fiscal policy. This will mean among other things bringing tax rates in peripheral nation states into line with eurozone leaders France &amp;#038; Germany.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-523"&gt;&lt;/span&gt;For Dublin, this is undoubtedly the calm before the storm. Cheap corporation tax has been the primary reason behind many non-European multinationals setting up European HQ shop in the Republic. European resentment of Dublin’s intransigence on the maintenance of their undercut tax rate when asking (and indeed, still asking) for bailout money is well known. Sarkozy made thinly veiled comments during the week past. Merkel’s rhetoric leaves little doubt tax rate parity is number 1 on German plans as a price for sorting out the mess. The trouble with politicians is that they all need to get elected again.&lt;/p&gt;
&lt;p&gt;Looking further out, there appears little chance of ratification of such a move passing any mandatory RoI referendum. The political risk inherent in an angry southern Europe has been ignored by markets giving the EZ political establishment the benefit of the doubt that any eventual agreement will also be passed through the EU’s tortuous legislative routes.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/OHBaiiT9m-4" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/12/04/fiscal-union-probably-means-an-end-to-irish-republics-usp/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/12/04/fiscal-union-probably-means-an-end-to-irish-republics-usp/</feedburner:origLink></entry><entry><title type="text">In Defence of Ideas</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/J46lt1V-FO4/" /><category term="startup" /><category term="Tech Labours" /><author><name>rutherford</name></author><updated>2011-11-17T06:57:50-08:00</updated><id>http://aleatory.clientsideweb.net/?p=515</id><summary type="html">An insightful blog post1 the other day railed against having lots of ideas and emphasised the need to stay on track, to concentrate on execution of The Big Idea. Here’s the other side of that argument. There are many economic activities in which the rapid generation of ideas is a must have &amp;#8211; take trading [...]</summary><content type="html">&lt;p&gt;&lt;img src="http://farm6.static.flickr.com/5142/5580144577_aee7392839.jpg" alt="concentrate on the ideas" /&gt;&lt;/p&gt;
&lt;p&gt;An insightful blog post&lt;a href="#ref-1"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; the other day railed against having lots of ideas and emphasised the need to stay on track, to concentrate on execution of The Big Idea. Here’s the other side of that argument.&lt;/p&gt;
&lt;p&gt;There are many economic activities in which the rapid generation of ideas is a must have &amp;#8211; take trading as one example. This is purely the game of projecting your ideas for where the market is going onto what is happening in reality. And just as you must see both sides of the trade as they say, so too do you need to foresee multiple scenarios ahead in order to understand all potential market movement. Because how it gets to the projected end result is just as important as when/if it gets there. Multiple &amp;#038; even contradictory ideas are the lifeblood then on which trading activity is based. &lt;/p&gt;
&lt;p&gt;&lt;span id="more-515"&gt;&lt;/span&gt;Sure, unlike startups it may be argued watching a single number make various shapes on computer screens is an inherently transitive activity. Execution is simply clicking a button. Perhaps, but the two are not binary opposites &amp;#8211; far from it. What links the two, and thus supports the premise that lots of ideas can have a greater value than just one, is leverage. Traders piggy back on the economic activity of others just as startups can utilise the web services &amp;#038; APIs of others in order to create immense value with relatively little effort. &lt;/p&gt;
&lt;p&gt;Take the likes of Zynga. Yes Zynga makes something. They churn out what has become mass media entertainment. But there’s plenty of developers doing that in Flash and still only getting a commission per title (if at all). Zynga on the other hand leveraged. They didn’t even create their first social game, YoVille, they just bought the thing inheriting it’s facebook userbase &amp;#038; social hooks and combined it with an offers service for monetization. This simple use of leverage provided the holy grail of a monetization channel for the social graph. It didn’t require enormously original or hi-tech games it just required leveraging services that were already available on the web. The idea &amp;#8211; the route to market &amp;#8211; was the important bit while the actual end-product was not i.e. the games are crap!&lt;/p&gt;
&lt;p&gt;So just like the trader playing the trend, so too it’s worthwhile for startups to consider the prevalent mood and dare I say it go with the path of least resistance. Instead of seeking to single-mindedly disrupt it armed with The One Big Idea and seeking to create a platform from the outset, maybe being swift, nimble and able to jump on at the right time can also be the key to success. And for that you’re going to need a lot of ideas.&lt;/p&gt;
&lt;p&gt;Refs:&lt;br /&gt;
&lt;a name="ref-1"/&gt;1.&amp;#9;&lt;a href="http://tabletica.wordpress.com/2011/11/12/the-problem-with-ideas-thoughts-for-news-startups/"&gt;&amp;#8220;The Problem With Ideas&amp;#8221;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/J46lt1V-FO4" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/11/17/in-defence-of-ideas/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/11/17/in-defence-of-ideas/</feedburner:origLink></entry><entry><title type="text">Leaving Vilnius</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/z7jzxYPGvTs/" /><category term="travelling" /><author><name>rutherford</name></author><updated>2011-09-04T07:15:54-07:00</updated><id>http://aleatory.clientsideweb.net/?p=504</id><summary type="html">The urban sprawl is rapidly outpacing the idyllic rural lifestyle it engulfs at the city limits &amp;#8211; a man &amp;#038; his wife tend to their vegetable field against a backdrop of high rise apartment blocks. The buildings are new, but retain a drabness that is subtly Soviet. Elsewhere the other chief external influence on modern [...]</summary><content type="html">&lt;div class="wp-caption aligncenter" style="width: 510px"&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3026/2349818852_01c982fc9c.jpg" title="Leaving Vilnius" width="500" height="375" /&gt;&lt;p class="wp-caption-text"&gt;Last time round. The blur matches the state of my inebriation.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;The urban sprawl is rapidly outpacing the idyllic rural lifestyle it engulfs at the city limits &amp;#8211; a man &amp;#038; his wife tend to their vegetable field against a backdrop of high rise apartment blocks. The buildings are new, but retain a drabness that is subtly Soviet. Elsewhere the other chief external influence on modern Baltic architecture is evident &amp;#8211; Scandinavian &amp;#8216;box&amp;#8217; living spaces with their dark wooded veneers &amp;#038; pastel green panelling.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/z7jzxYPGvTs" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/09/04/leaving-vilnius/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/09/04/leaving-vilnius/</feedburner:origLink></entry><entry><title type="text">Modern Warfare…</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/qe3Trn0OOy4/" /><category term="international" /><category term="Royal Marines" /><author><name>rutherford</name></author><updated>2011-08-29T03:42:26-07:00</updated><id>http://aleatory.clientsideweb.net/?p=498</id><summary type="html">Less More</summary><content type="html">&lt;p&gt;Less&lt;br /&gt;
&lt;img src="http://aleatory.clientsideweb.net/wp-content/uploads/2011/08/black-hawk-down.jpg" alt="" title="Black Hawk Down" width="497" height="212" class="aligncenter size-full wp-image-500" /&gt;&lt;/p&gt;
&lt;p&gt;More&lt;br /&gt;
&lt;img src="http://aleatory.clientsideweb.net/wp-content/uploads/2011/08/tropic-thunder.jpg" alt="" title="Tropic Thunder" width="498" height="283" class="aligncenter size-full wp-image-502" /&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/qe3Trn0OOy4" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/08/29/modern-warfare/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/08/29/modern-warfare/</feedburner:origLink></entry><entry><title type="text">The Waiting Game</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/hE97J3gPtfs/" /><category term="international" /><category term="Royal Marines" /><author><name>rutherford</name></author><updated>2011-03-10T05:00:24-08:00</updated><id>http://aleatory.clientsideweb.net/?p=494</id><summary type="html">Modern Warfare 3 &amp;#8211; ONN from kenny yuan on Vimeo. It was the largest roll of notes I&amp;#8217;d ever seen. 3 grand in fifty pound notes. The guy who hauled it out did so as if it were a rolled up copy of the Sun. One night on sentry I had a conversation with another [...]</summary><content type="html">&lt;p&gt;&lt;iframe src="http://player.vimeo.com/video/18540384" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/18540384"&gt;Modern Warfare 3 &amp;#8211; ONN&lt;/a&gt; from &lt;a href="http://vimeo.com/user2816489"&gt;kenny yuan&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was the largest roll of notes I&amp;#8217;d ever seen. 3 grand in fifty pound notes. The guy who hauled it out did so as if it were a rolled up copy of the Sun. One night on sentry I had a conversation with another guy on how his law exams were going. Another evening those of us new to the unit went through a joining process at the end of which we were judged by our peers as suitable to serve alongside them. &lt;/p&gt;
&lt;p&gt;The side effect of leaving us in a state of complete physical incapability as we crawled into our pits in the early morning was only a minor talking point, getting up the next day for annual fitness tests just another non event none of us stopped to think about for a second. No one failed. &lt;/p&gt;
&lt;p&gt;No one ever fails. &lt;/p&gt;
&lt;p&gt;&lt;span id="more-494"&gt;&lt;/span&gt;The daily grind of camp life is a very different experience from the outside world. But in here our unit attracts all walks of life &amp;#8211; academics, tradesmen &amp;#038; school leavers alike. It&amp;#8217;s a varied environment. Which is just as well, as the amount of skills our squad needs to pick up en route to Afghan is also pretty diverse.&lt;/p&gt;
&lt;p&gt;Forensics, electronic counter measures, IED search, team medics, language &amp;#8211; the modern nature of warfighting has morphed the battlefield into a highly dynamic multidimensional theatre where quick thinking across any number of domains previously the reserve of the trained specialist is required.&lt;/p&gt;
&lt;p&gt;To aid the man on the ground in this our kit has seen a near constant flux as new equipment is both trialled &amp;#038; issued to the field in rapid evolutions. On an individual level, we&amp;#8217;ve never been better supplied. Which is just as well, as the Helmand insurgency proper has been going on for upwards of 5 years now.&lt;/p&gt;
&lt;p&gt;To our North the US has created blitzkrieg-like conditions to take the war to the Sangin Talebs who had proven so stubborn when we were there. It&amp;#8217;s a &lt;a href="http://www.theaustralian.com.au/news/features/us-treading-in-bloody-footsteps/story-e6frg6z6-1225969777481"&gt;bloody tactic&lt;/a&gt; but appears to be yielding results. The Taleban soon adapt to new tactics, the question is whether coalition forces can manoeuvre more effectively.&lt;/p&gt;
&lt;p&gt;I haven&amp;#8217;t tasted war yet but I&amp;#8217;m glad I&amp;#8217;m going in with those I&amp;#8217;ve trained alongside these past months. The ever-changing situation in a tribal matrix such as Helmand demands fighters who adapt breathlessly.&lt;/p&gt;
&lt;p&gt;There is undoubtedly a feeling of relief as much as anything that we can get a chance to make the training count for real. And while &lt;a href="http://www.stabilisationunit.gov.uk/about-us/where-we-work/afghanistan/310-the-sangin-story-security-stabilisation-and-development-2008-2010.html"&gt;reconstruction&lt;/a&gt; and &lt;a href="http://www.telegraph.co.uk/news/worldnews/asia/afghanistan/7870537/In-Sangin-most-dangerous-Afghan-district-British-troops-fear-war-will-last-10-years.html"&gt;war fighting&lt;/a&gt; at times seem to occupy the same ground &amp;#8211; just completely different dimensions &amp;#8211; it will also feel good to ascertain first hand just what is happening on the dusty desert wastelands of southern Afghanistan. &lt;/p&gt;
&lt;p&gt;And so too, while I believe in the benefits of &lt;a href="http://aleatory.clientsideweb.net/2010/08/05/solving-afghanistan/"&gt;troops developing their own ideas&lt;/a&gt; of the way ahead, the inevitable clash with reality on the ground is another interesting context for the experiences of deployment.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3399/4645919647_2566ef63af.jpg" title="Hercules" class="aligncenter" width="500" height="375" /&gt;&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ve been hanging around a while, things are now getting decidedly faster.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/hE97J3gPtfs" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/03/10/the-waiting-game/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/03/10/the-waiting-game/</feedburner:origLink></entry><entry><title type="text">Netbook Upgrading &amp; Housekeeping</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/TX3j-TPvd_Q/" /><category term="Tech Labours" /><author><name>rutherford</name></author><updated>2011-02-26T13:50:21-08:00</updated><id>http://aleatory.clientsideweb.net/?p=486</id><summary type="html">I&amp;#8217;m a longtime fan of netbooks over other mobile tech gadgets, finding their versatility an important stepchange in the prior arms race for increasingly powerful &amp;#8216;portables&amp;#8217; that weigh a metric ton and need their own special carrying case, or mobiles with a preposterous array of unusable functions. May have missed the hackathon at QUB but [...]</summary><content type="html">&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5060/5478884810_e9cdf1a3cf.jpg" title="Advent 4211" class="aligncenter" width="500" height="333" /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m a &lt;a href="http://aleatory.clientsideweb.net/2009/11/18/product-over-platform/"&gt;longtime fan of netbooks&lt;/a&gt; over other mobile tech gadgets, finding their versatility an important stepchange in the prior arms race for increasingly powerful &amp;#8216;portables&amp;#8217; that weigh a metric ton and need their own special carrying case, or mobiles with a preposterous array of unusable functions.&lt;/p&gt;
&lt;p&gt;May have missed the &lt;a href="http://www.facebook.com/event.php?eid=129632980439129"&gt;hackathon at QUB&lt;/a&gt; but I&amp;#8217;ve still managed to do a bit of hardware related fiddling with this guide on boosting my 4211&amp;#8242;s performance &amp;#038; removing a niggle. &lt;/p&gt;
&lt;p&gt;&lt;span id="more-486"&gt;&lt;/span&gt;As refreshingly contrarian as a netbook can be, depending on one is a double edged sword &amp;#8211; the more tasks you want to run on it, the greater the load on it&amp;#8217;s relatively tiny engine. One of the few areas you can upgrade a netbook is it&amp;#8217;s RAM. When messing around with portable versions of memory-intensive graphics apps, adding in an extra stick of DDR can boost performance significantly.&lt;/p&gt;
&lt;p&gt;Similarly the more you depend on a gadget no matter where you go it will soon become encased in a fine layer of dust that destroys fan performance while general wear and tear of budget bits of plastic like the Acer 4211 will start to loosen moving parts and in the case of the fan it&amp;#8217;ll be noticed by a pretty irritating clicking noise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tools I Used:&lt;/strong&gt;&lt;br /&gt;
Small-head star screwdriver&lt;br /&gt;
mini knife&lt;br /&gt;
&lt;a href="http://middleman.clientsideweb.net/ad/5b7a523588eb76edadfd160726e834d9"&gt;Leatherman Squirt P4&lt;/a&gt;&lt;br /&gt;
WD40&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Removing dust &amp;#038; that fucking clicking noise from the fan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First take out the battery supply via the two slides on the underside of the laptop. Then unfasten the 7 screws dotted around the side edges of the bottom which allows you to unclip the black and silver halves, exposing the guts of the Advent. There were no seals broken in doing this so it&amp;#8217;s doubtful as to whether this invalidates any warranty as is normally the case with fiddling with computer innards.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5140/5478884820_f83f03be8b.jpg" title="Fan dust buildup" class="aligncenter" width="500" height="333" /&gt;&lt;/p&gt;
&lt;p&gt;You can now see how big a mess has built up round the netbook fan and clean out accordingly. A toothbrush is recommended around the nooks and crannies while a cloth is fine for the rest of the surface area. &lt;/p&gt;
&lt;p&gt;Now for that annoying noise the fan makes when it whirrs up after a few months of near continuous use. Simply spray some WD40 in around the fan mechanism itself, not to much is needed. Hopefully when the fan starts up again the oil will be spread around the fan parts and help prevent whatever friction may have been taking place.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5137/5478884826_586d6749c1_z.jpg" title="Fan tightening with Leatherman Squirt P4 " class="aligncenter" width="505" height="640" /&gt;&lt;/p&gt;
&lt;p&gt;Secondly the 4 fan screws binding the fan to the motherboard should be tightened to ensure this isn&amp;#8217;t responsible for the noise as well. It turns out a couple of mine were pretty loose.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adding more RAM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Upgrading RAM is likely the single biggest performance win on machines that have a free slot. Make sure when you purchase it&amp;#8217;s of a similar tech as the existing bus and RAM &amp;#8211; for example my Advent 4211 uses DDR2 which is incompatible with DDR and DDR3. Don&amp;#8217;t rely on shop assistants to proactively check for you either, because in my experience they don&amp;#8217;t. I got a PNY 1GB 533MHz module for about £20 but I seen a better deal on Amazon for a &lt;a href="http://middleman.clientsideweb.net/ad/a9eff41683463a1fc1f42c101c6855b8"&gt;Crucial RAM stick at £15&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5136/5478884834_e739aa977e.jpg" title="Adding Netbook RAM" class="aligncenter" width="500" height="347" /&gt;&lt;/p&gt;
&lt;p&gt;On the Advent it&amp;#8217;s a simple task to fit it &amp;#8211; locate the long black bus in the centre of the motherboard and the original OEM memory will be on one side with an empty space on the other. There&amp;#8217;s even a cover sheet to protect the circuitry beneath your memory once you install it.  Angle the stick so it lines up with the pins of the bus and fit it in &amp;#8216;teeth&amp;#8217; first then snap the rest of the stick flat against the board, secured in place with the harness on either side.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5057/5478884838_4c36c069b4.jpg" title="Upgraded Netbook RAM" class="aligncenter" width="500" height="399" /&gt;&lt;/p&gt;
&lt;p&gt;Re-clip the base, replace the screws and battery then power back up to confirm the OS is running with the newly available capacity.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5179/5479548715_5af7653bfb.jpg" title="Windows RAM status" class="aligncenter" width="419" height="486" /&gt;&lt;/p&gt;
&lt;p&gt;Sorted.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5173/5478884814_c11df0904c.jpg" title="Miniature tools used" class="aligncenter" width="500" height="390" /&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/TX3j-TPvd_Q" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/02/26/netbook-upgrading-housekeeping/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/02/26/netbook-upgrading-housekeeping/</feedburner:origLink></entry><entry><title type="text">The World’s Oldest Direct Marketing Trick?</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aleatory/~3/1yk4lHbYyRE/" /><category term="Uncategorized" /><author><name>rutherford</name></author><updated>2011-02-11T03:13:06-08:00</updated><id>http://aleatory.clientsideweb.net/?p=479</id><summary type="html">Confusing some of the people some of the time is enough.</summary><content type="html">&lt;p&gt;&lt;img alt="" src="http://farm6.static.flickr.com/5176/5434104224_e11cf9a4b0.jpg" title="world&amp;#039;s oldest marketing trick" class="aligncenter" width="500" height="255" /&gt;&lt;/p&gt;
&lt;p&gt;Confusing some of the people some of the time is enough.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/aleatory/~4/1yk4lHbYyRE" height="1" width="1"/&gt;</content><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://aleatory.clientsideweb.net/2011/02/11/the-worlds-oldest-direct-marketing-trick/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://aleatory.clientsideweb.net/2011/02/11/the-worlds-oldest-direct-marketing-trick/</feedburner:origLink></entry></feed>

