<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Jac Timms’ virtual memory and blog.</description><title>ichi.co.uk</title><generator>Tumblr (3.0; @ichiuk)</generator><link>http://www.ichi.co.uk/</link><item><title>Bypassing the UK Pirate Bay Blocks via Proxies/Mirrors and VPNs</title><description>&lt;p&gt;&lt;img align="left" src="http://media.tumblr.com/tumblr_m3f1sqnGlN1r130g2.png"/&gt; I would like to start by pointing out that I&amp;#8217;m not endorsing copyright infringement with this post, however The Pirate Bay has a massive amount of totally free downloads, from music promos to open source software, which the music and movie lobby groups have managed to get blocked in the &lt;a href="http://www.guardian.co.uk/commentisfree/2012/may/01/pirate-bay-copyright-crackdown" target="_blank"&gt;UK courts&lt;/a&gt; (just ISPs Virgin Media, TalkTalk, O2, BT, Everything Everywhere) and I believe in a &lt;a href="http://en.wikipedia.org/wiki/Network_neutrality" target="_blank"&gt;free and open internet&lt;/a&gt;. That being said, I&amp;#8217;d also like to point out that infringement is &lt;a href="http://torrentfreak.com/copyright-infringement-and-theft-%E2%80%93-the-difference-110827/" target="_blank"&gt;not the same as theft&lt;/a&gt;, no matter how many times they tell you illegal downloading is &amp;#8216;stealing&amp;#8217;. I believe that until they give people reasonably priced, easy to access to TV shows and movies on demand, piracy is only going to keep getting more and more prevalent.&lt;/p&gt;
&lt;p&gt;I won&amp;#8217;t stay with an ISP that censors the internet, until I&amp;#8217;m out of reasonable choices. I&amp;#8217;m currently contracted to Virgin Media (because 100 meg), but I will switch to a fibre connection from a &lt;a href="http://www.zen.co.uk/business/broadband/fibre-broadband.aspx" target="_blank"&gt;smaller ISP&lt;/a&gt; that hasn&amp;#8217;t been forced into censorship by the BPI and company.&lt;/p&gt;
&lt;p&gt;The craziest thing about all this for me is the fact that this has given The Pirate Bay a free massive &lt;a href="http://torrentfreak.com/pirate-bay-enjoys-12-million-traffic-boost-shares-unblocking-tips-120502/" target="_blank"&gt;profile boost&lt;/a&gt; via what is known as the &lt;a href="http://en.wikipedia.org/wiki/Streisand_effect" target="_blank"&gt;Streisand effect&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The easiest option is to simply bypass the blocks with a mirror/proxy site. Here is a list of such sites that are tested to currently work on Virgin Media (and should work on all other UK ISPs): &lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href="https://tpb.pirateparty.org.uk/" target="_blank"&gt;https://tpb.pirateparty.org.uk/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://piratereverse.info/" target="_blank"&gt;https://piratereverse.info/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.pirateproxy.net/" target="_blank"&gt;http://www.pirateproxy.net/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://translate.google.com/translate?hl=en&amp;amp;sl=nl&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fthepiratebay.se%2F" target="_blank"&gt;Google Translate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thepiratebay.se.proxy.piratenpartij.nl/" target="_blank"&gt;http://thepiratebay.se.proxy.piratenpartij.nl/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://66.163.168.225/babelfish/translate_url_content?.intl=uk&amp;amp;lp=nl_en&amp;amp;trurl=http%3A%2F%2Fwww.thepiratebay.se" target="_blank"&gt;Yahoo Babelfish Translate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://piratebay.org.nyud.net" target="_blank"&gt;http://piratebay.org.nyud.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://labaia.ws/" target="_blank"&gt;http://labaia.ws/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tpb.europeancensorship.eu/nph-tpb.cgi/http/thepiratebay.se/" target="_blank"&gt;http://tpb.europeancensorship.eu/nph-tpb.cgi/http/thepiratebay.se/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://all4xs.net/repress/thepiratebay.se" target="_blank"&gt;http://all4xs.net/repress/thepiratebay.se&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://freedomto.us/" target="_blank"&gt;http://freedomto.us/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Other sites that you shouldn&amp;#8217;t use:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strike&gt;alt.ragerik.info&lt;/strike&gt; - Doesn&amp;#8217;t work properly&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;thepiratebay.ee&lt;/strike&gt; - &lt;strong&gt;DO NOT USE&lt;/strong&gt;. It is a &lt;a href="http://www.activepolitic.com/News/2012-01-01c/Thepiratebay.EE_Scams_Cash_From_Uninformed_Pirates.html" target="_blank"&gt;scam site&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;There is also a guide on how to make your own TBP proxy &lt;a href="http://about.piratereverse.info/proxy/" target="_blank"&gt;here&lt;/a&gt;. I&amp;#8217;d also like to point out that you shouldn&amp;#8217;t try to login via a TBP proxy site, as your username and password could be captured. If you do want to attempt to login to your account you should use a unique password that you only use on TBP.&lt;/div&gt;
&lt;p&gt;By far my favourite in that list is &lt;a href="http://translate.google.com/translate?hl=en&amp;amp;sl=nl&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fthepiratebay.se%2F" target="_blank"&gt;Google Translate&lt;/a&gt; which you can just use as a fast, advert free, web proxy. Using something as simple as Google Translate to bypass a court-ordered block of The Pirate Bay made me chuckle. Another good tip is that you can just add .nyud.net to any URL to access it via the proxy, so &lt;a href="http://thepiratebay.se" target="_blank"&gt;http://thepiratebay.se&lt;/a&gt; becomes &lt;a href="http://thepiratebay.se.nyud.net" target="_blank"&gt;http://thepiratebay.se.nyud.net&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img align="left" src="http://media.tumblr.com/tumblr_m3g4vv8M7X1r130g2.png"/&gt;A reader called amity19 left a comment on this post pointing out that you can use the &lt;a href="http://www.opera.com/" target="_blank"&gt;Opera&lt;/a&gt; web browser&amp;#8217;s &lt;a href="http://www.opera.com/browser/turbo/" target="_blank"&gt;turbo feature&lt;/a&gt; to access The Pirate Bay and other blocked sites, as it routes all the requests via Opera&amp;#8217;s servers for optimisation. To enable it, just go to Preferences &amp;gt; Webpages &amp;gt; Opera Turbo and enable it. It&amp;#8217;s a  handy feature and seems to work well.&lt;/p&gt;
&lt;p&gt;You can also configure your &lt;a href="http://www.hsl.virginia.edu/services/computing/FirefoxProxySetUp.cfm" target="_blank"&gt;web browser&lt;/a&gt; to use an HTTP or SOCKS proxy quite easily and there is a list of free proxies &lt;a href="http://www.hidemyass.com/proxy-list/" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://www.dmoz.org/Computers/Internet/Proxying_and_Filtering/Hosted_Proxy_Services/Free/Proxy_Lists/" target="_blank"&gt;here&lt;/a&gt;. For the more technically inclined, I wrote a guide a while ago that tells you how to setup an &lt;a href="http://www.ichi.co.uk/post/14893527713/creating-an-elite-highly-anonymous-proxy-with-squid-on-d" target="_blank"&gt;anonymous Squid proxy&lt;/a&gt; on Debian linux, so you could get yourself a Virtual Private Server in another country and use that. A much more simple option however is to SSH to a computer in a country where it isn&amp;#8217;t blocked. There is an easy to follow guide on how to do that &lt;a href="http://meinit.nl/help-denmark-how-connect-pirate-bay" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;The above list will give you access to The Pirate Bay from UK ISPs, however if you really value your privacy, the best option is to use a VPN. You can download your torrents via this anonymously as well as broswing the site. If you want to be even more anonymous you can also use a pre-paid credit card to pay for them (to protect your privacy). There is a list of VPN providers &lt;a href="http://torrentfreak.com/which-vpn-providers-really-take-anonymity-seriously-111007/" target="_blank"&gt;here&lt;/a&gt;, however &lt;a href="https://www.ipredator.se/" target="_blank"&gt;iPredator&lt;/a&gt; is operated by The Pirate Bay themselves and a good option. There are also free services such as &lt;a href="https://www.vpnreactor.com/default.aspx" target="_blank"&gt;VPNReactor&lt;/a&gt;, which will give you 30 minutes free per connection, which should be plenty of time to find the &lt;a href="http://arstechnica.com/web/news/2012/02/what-torrent-pirate-bay-officially-makes-magnet-links-the.ars" target="_blank"&gt;magnet link&lt;/a&gt; to download the latest music promo, etc.&lt;/p&gt;
&lt;p&gt;To go one better than a VPN for downloading, use a &lt;a href="http://pulsedmedia.com/rtorrent-semidedicated-seedbox-2009plus.php" target="_blank"&gt;Seed Box&lt;/a&gt; (more info &lt;a href="http://en.wikipedia.org/wiki/Seedbox" target="_blank"&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;There is also a petition against the censorship of The Pirate Bay, &lt;a href="https://submissions.epetitions.direct.gov.uk/petitions/30063" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/22269260925</link><guid>http://www.ichi.co.uk/post/22269260925</guid><pubDate>Wed, 02 May 2012 20:52:00 +0100</pubDate><category>bittorrent</category><category>censorship</category><category>thepiratebay</category><category>torrent</category></item><item><title>Enabling TRIM for non-Apple supplied SSDs in OSX</title><description>&lt;p&gt;If you buy an after market SSD and put it in a Mac, &lt;a href="http://en.wikipedia.org/wiki/TRIM" target="_blank"&gt;TRIM&lt;/a&gt; won&amp;#8217;t be enabled without modifying a kernel extension. A &lt;a href="http://www.fader.co.uk" target="_blank"&gt;friend&lt;/a&gt; just pointed me to this great little utility which does it for you really easily, &lt;a href="http://www.groths.org/?page_id=322" target="_blank"&gt;Trim Enabler&lt;/a&gt;. &lt;/p&gt;</description><link>http://www.ichi.co.uk/post/22251493398</link><guid>http://www.ichi.co.uk/post/22251493398</guid><pubDate>Wed, 02 May 2012 12:54:08 +0100</pubDate></item><item><title>Free Ray-Bans page on Facebook</title><description>&lt;p&gt;My feed was full of people sharing and liking a Free Ray-Bans page today. The page is at &amp;#8216;&lt;strong&gt;s3.amazonaws.com/fulluse/raybans.html&lt;/strong&gt;&amp;#8217; and the code is very simple. It has a count-down of the number of Ray-Bans they have left which starts at a fixed value such as 973. If you click &amp;#8216;like&amp;#8217; then &amp;#8216;share&amp;#8217; as it instructs it&amp;#8217;ll just redirect you to the spammers survey affiliate partners, the link is &amp;#8216;&lt;strong&gt;jmp.realtraq.net/aff_c?offer_id=6114&amp;amp;aff_id=3358&lt;/strong&gt;&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Basically, this is just spam, ignore it and warn others that they probably want to unlike the page.&lt;/p&gt;
&lt;p&gt;Another address for the page (which just redirects to the address above) is: &amp;#8216;&lt;strong&gt;s3-us-west-1.amazonaws.com/rayban99/8.html&lt;/strong&gt;&amp;#8217;&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/21845656256</link><guid>http://www.ichi.co.uk/post/21845656256</guid><pubDate>Thu, 26 Apr 2012 13:49:00 +0100</pubDate><category>facebook</category><category>spam</category></item><item><title>My latest downtempo DJ mix.</title><description>&lt;embed type="application/x-shockwave-flash" src="http://assets.tumblr.com/swf/audio_player_black.swf?audio_file=http://www.tumblr.com/audio_file/21535152090/tumblr_m2uujkMSXw1r40z7o&amp;color=FFFFFF&amp;logo=soundcloud" height="27" width="207" quality="best" wmode="opaque"&gt;&lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My latest downtempo DJ mix.&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/21535152090</link><guid>http://www.ichi.co.uk/post/21535152090</guid><pubDate>Sun, 22 Apr 2012 01:26:00 +0100</pubDate><category>music</category><category>djmix</category><category>editseries</category><category>downtempo</category></item><item><title>Cross Domain Visual Studio 2010 Remote Debugging </title><description>&lt;p&gt;Some software I wrote a while ago had a feature break on a single machine, so I needed to remotely debug it today. I have VPN access but my development VM isn&amp;#8217;t a member of their domain, which causes an authentication error when you try to connect to the remote machine. To remedy this you need to complete a few steps.&lt;/p&gt;
&lt;h3&gt;Prepare The Remote Computer&lt;/h3&gt;
&lt;p&gt;If you haven&amp;#8217;t done already, download and install the Microsoft Visual Studio 2010&amp;#160;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=475" target="_blank"&gt;Remote Debugger&lt;/a&gt; on the remote machine. &lt;/p&gt;
&lt;p&gt;You&amp;#8217;ll also need an account with administrator permissions on the remote machine, so if you don&amp;#8217;t have a domain admin account, you&amp;#8217;ll need to make your domain user an administrator on the remote machine (which you can do in Control Panel &amp;gt; Users &amp;gt; Add).&lt;/p&gt;
&lt;p&gt;Log onto the remote machine as your user and make sure the Visual Studio 10 Remote Debugger service is started in services.msc, then fire up the Visual Studio Remote Debugging Monitor (on Windows XP this is at C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe) and it should say something like &amp;#8220;Msvsmon started a new server named &amp;#8216;my-domain\user@computer&amp;#8217;, note down the last part.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m2ssacHRFQ1r130g2.png"/&gt;&lt;/p&gt;
&lt;h3&gt;Setting Up Your Development Computer&lt;/h3&gt;
&lt;p&gt;My dev VM is Windows 7, so that is what I&amp;#8217;ll detail here. Firstly, if you can&amp;#8217;t ping the remote machine name because it won&amp;#8217;t resolve you&amp;#8217;ll need to add an entry with it&amp;#8217;s IP to your hosts file (C:\windows\System32\drivers\etc\hosts).&lt;/p&gt;
&lt;p&gt;Go to the Control Panel &amp;gt; User Accounts and Family Safety &amp;gt; Credential Manager. This can also be accessed via the Run dialog from the start menu and entering &amp;#8220;&lt;strong&gt;Control Userpasswords2&lt;/strong&gt;&amp;#8221;. Select the Advanced tab and select Manage Passwords.&lt;/p&gt;
&lt;p&gt;Click &lt;strong&gt;Add a Windows credential &lt;/strong&gt;and enter the name of the remote computer that you took from Msvsmon. Enter your username including the domain, such as &lt;strong&gt;&amp;#8216;my-domain\user&amp;#8217; &lt;/strong&gt;and your password.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m2ssyrAkqm1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;An easy way to test if this works is to browse the remote computer in Windows Explorer. If you&amp;#8217;re not prompted for a username and password the saved credentials are working.&lt;/p&gt;
&lt;p&gt;You can now connect to the remote machine in Visual Studio by entering it&amp;#8217;s name in the Attach To Process dialog.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m2ssxzmAuE1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;That should be it and now you should be able to attach to any process on the remote machine. I hope that helps.&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/21454441582</link><guid>http://www.ichi.co.uk/post/21454441582</guid><pubDate>Fri, 20 Apr 2012 22:59:00 +0100</pubDate><category>development</category><category>visualstudio</category><category>debugging</category></item><item><title>Storage Helper for WinRT (Win8 Metro) in C#</title><description>&lt;h3&gt;Windows 8 Metro Storage Helper&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;m currently coding a Windows 8 Metro app version of a Windows Phone 7.5 Mango app I previously made. There are quite a few differences in the code and one of the first stumbling blocks I hit was the lack of Isolated Storage in WinRT. There are some ways of making &lt;a href="http://visualstudiomagazine.com/articles/2012/04/16/converting-windows-phone-to-windows-8.aspx" target="_blank"&gt;shared libraries compatible&lt;/a&gt;,  but I wanted to learn the new ways of doing things. One of the things I need to do is store POCOs to storage for caching and while having a quick search to see if someone had any examples, I came across &lt;a href="http://winrtstoragehelper.codeplex.com/" target="_blank"&gt;Generic Object Storage Helper for WinRT&lt;/a&gt; by &lt;a href="http://about.me/jamiet" target="_blank"&gt;Jamie Thomson&lt;/a&gt;, which was a great help. The code is out of date now however as it was written for the Developer Preview and I&amp;#8217;m coding against the Consumer Preview. Also the example also isn&amp;#8217;t quite what I wanted as I want to be able to pass in a file-name each time, so I decided to modify and fix the code as well as make some changes to make it the way I like.&lt;/p&gt;
&lt;p&gt;Here is my updated version of the class:&lt;/p&gt;
&lt;pre class="brush: csharp"&gt;using System;
using System.IO;
using System.Threading.Tasks;
using System.Xml.Serialization;
using Windows.Storage;
using Windows.Storage.Streams;

namespace MyWinRTApp
{
    public enum StorageType { Local, Temporary, Roaming }

    class IsoStorage&amp;lt;T&amp;gt;
    {
        private ApplicationData appData = Windows.Storage.ApplicationData.Current;
        private XmlSerializer xmlSerializer;
        private StorageFolder storageFolder;
        private StorageType storageType;
        public StorageType StorageType {
            get { return storageType; }
            set
            {
                storageType = value;
                // set the storage folder
                switch (storageType)
                {
                    case StorageType.Local:
                        storageFolder = appData.LocalFolder;
                        break;
                    case StorageType.Temporary:
                        storageFolder = appData.TemporaryFolder;
                        break;
                    case StorageType.Roaming:
                        storageFolder = appData.RoamingFolder;
                        break;
                    default:
                        throw new Exception(String.Format("Unknown StorageType: {0}", storageType));
                }
            }
        }

        public IsoStorage() : this(StorageType.Local) {}
        public IsoStorage(StorageType type)
        {
            xmlSerializer = new XmlSerializer(typeof(T));
            StorageType = type;
        }

        /// &amp;lt;summary&amp;gt;
        /// Saves a serialized object to storage asynchronously
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="filename"&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;param name="obj"&amp;gt;&amp;lt;/param&amp;gt;
        public async void SaveAsync(string fileName, T data)
        {
            try
            {
                if (data == null)
                    return;
                fileName = AppendExt(fileName);
                var file = await storageFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
                var writeStream = await file.OpenAsync(FileAccessMode.ReadWrite);
                var outStream = Task.Run(() =&amp;gt; writeStream.AsStreamForWrite()).Result;
                xmlSerializer.Serialize(outStream, data);
                writeStream.Dispose();
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// &amp;lt;summary&amp;gt;
        /// Delete a file asynchronously
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="fileName"&amp;gt;&amp;lt;/param&amp;gt;
        public async void DeleteAsync(string fileName)
        {
            try
            {
                fileName = AppendExt(fileName);
                var file = await GetFileIfExistsAsync(fileName);
                if (file != null)
                    await file.DeleteAsync();
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// &amp;lt;summary&amp;gt;
        /// At the moment the only way to check if a file exists to catch an exception... :/
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="fileName"&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        private async Task&amp;lt;StorageFile&amp;gt; GetFileIfExistsAsync(string fileName)
        {
            try
            { return await storageFolder.GetFileAsync(fileName); }
            catch
            { return null; }
        }

        /// &amp;lt;summary&amp;gt;
        /// Load a given filename asynchronously
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="fileName"&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        public async Task&amp;lt;T&amp;gt; LoadAsync(string fileName)
        {
            try
            {
                fileName = AppendExt(fileName);
                StorageFile file = null;
                file = await storageFolder.GetFileAsync(fileName);
                IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read);
                Stream inStream = Task.Run(() =&amp;gt; readStream.AsStreamForRead()).Result;
                return (T)xmlSerializer.Deserialize(inStream);
            }
            catch (FileNotFoundException)
            {
                //file not existing is perfectly valid so simply return the default 
                return default(T);
                //throw;
            }
            catch (Exception)
            {
                //Unable to load contents of file
                throw;
            }
        }

        /// &amp;lt;summary&amp;gt;
        /// Appends the file extension to the given filename
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="fileName"&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        private string AppendExt(string fileName) {
            if (fileName.Contains(".xml"))
                return fileName;
            else
                return string.Format("{0}.xml", fileName);
        }
    }
}

&lt;/pre&gt;
&lt;p&gt;It seems that at the moment, there is no way to &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/1eb71a80-c59c-4146-aeb6-fefd69f4b4bb" target="_blank"&gt;check if a file exists&lt;/a&gt; without using a try/catch block, but I expect that will be sorted in the final release. &lt;/p&gt;
&lt;h3&gt;Saving an Object&lt;/h3&gt;
&lt;p&gt;Saving a POCO (any serializable object) is as simple as:&lt;/p&gt;
&lt;pre class="brush: csharp"&gt;            var forecast = new Forecast { Date = DateTime.Now, Type = FeedType.Daily };
            var isoStorage = new IsoStorage&amp;lt;Forecast&amp;gt;(StorageType.Local);
            isoStorage.SaveAsync("daily", forecast);
&lt;/pre&gt;
&lt;p&gt;You could also save a generic list by doing something like&lt;/p&gt;
&lt;pre class="brush: csharp"&gt;            var isoStorage = new IsoStorage&amp;lt;List&amp;lt;Forecast&amp;gt;&amp;gt;(StorageType.Local);&lt;/pre&gt;
&lt;h3&gt;Retrieving an Object&lt;/h3&gt;
&lt;p&gt;Retrieving a POCO is equally easy:&lt;/p&gt;
&lt;pre class="brush: csharp"&gt;            var isoStorage = new IsoStorage&amp;lt;Forecast&amp;gt;(StorageType.Local);
            Forecast forecast = await isoStorage.LoadAsync("daily");
&lt;/pre&gt;
&lt;p&gt;I hope that helps someone. Please feel free to leave feedback or comments below. Big thanks go out to &lt;a href="http://about.me/jamiet" target="_blank"&gt;Jamie Thomson&lt;/a&gt; for the initial code that I modified.&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/21387654921</link><guid>http://www.ichi.co.uk/post/21387654921</guid><pubDate>Thu, 19 Apr 2012 18:50:00 +0100</pubDate><category>csharp</category><category>development</category><category>code</category><category>microsoft</category><category>windows8</category><category>winrt</category><category>programming</category></item><item><title>SqlException: Execution of user code in the .NET Framework is disabled</title><description>&lt;p&gt;We just migrated &lt;a href="http://www.kicknews.net/news/popular" target="_blank"&gt;Kick News&lt;/a&gt; to new SQL Server 2008 database servers, everything went fine, but I&amp;#8217;d missed one thing before we bought it back up and we were receiving the error &amp;#8220;&lt;strong&gt;SqlException: Execution of user code in the .NET Framework is disabled&lt;/strong&gt;&amp;#8221;.&lt;/p&gt;
&lt;p&gt;It was an easy and very quick fix. Just run this and you should be fine again&amp;#8230;&lt;/p&gt;
&lt;pre class="brush: sql"&gt;sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO&lt;/pre&gt;
&lt;p&gt;For further details see &lt;a href="http://msdn.microsoft.com/en-us/library/ms131048.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/21354763176</link><guid>http://www.ichi.co.uk/post/21354763176</guid><pubDate>Thu, 19 Apr 2012 01:52:00 +0100</pubDate></item><item><title>I had the pleasure of meeting Robin Van Persie (Taken with...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m2fyduxBqP1r40z7oo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I had the pleasure of meeting &lt;a href="http://robinvanpersie.com/" target="_blank"&gt;Robin Van Persie&lt;/a&gt; (Taken with &lt;a href="http://instagr.am" target="_blank"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/21049413537</link><guid>http://www.ichi.co.uk/post/21049413537</guid><pubDate>Sat, 14 Apr 2012 00:25:00 +0100</pubDate><category>football</category><category>arsenal</category></item><item><title>An error occurred uploading to the itunes store</title><description>&lt;p&gt;I&amp;#8217;ve just spent the last 2 hours trying to upload an updated iOS app to Apple. Using Xcode Organiser, I&amp;#8217;d get the message &amp;#8220;An error occurred uploading to the itunes store&amp;#8221; then it&amp;#8217;d show me &amp;#8220;Validation failed&amp;#8221;. I successfully submitted an update for the same app a few days ago but had to reject the binary, so this was a little strange.&lt;/p&gt;
&lt;p&gt;After failing numerous times and trying a few things, I went to Organiser, right clicked my archive and selected &amp;#8220;Show in finder&amp;#8221;, then right-clicked the xcarchive file and selected &amp;#8221;Show Package Contents&amp;#8221;, compressed the .app file and uploaded it with the Application Loader (/Developer/Applications/Utilities/Application Loader.app). The first time it failed and I got the message that the validation failed due to &amp;#8220;The app references non public selectors: multitaskingSupported&amp;#8221;. That was easy to fix by just updating to the latest version of &lt;a href="https://github.com/arashpayan/appirater" target="_blank"&gt;Appirator&lt;/a&gt;, however after that I was still getting a very generic error message about it failing.&lt;/p&gt;
&lt;p&gt;The only thing I&amp;#8217;ve changed with my system since I last submitted the app is that I installed some OS X updates, one of which was &amp;#8220;Java for Mac OS X Lion 2012-001&amp;#8221;. I know the app submission software uses Java, as I&amp;#8217;ve seen it ask me for permission for something about allowing Java to accept remote connections while uploading an app. I remembered that I hadn&amp;#8217;t rebooted since I installed the update, so I tried that, but still no luck. &lt;/p&gt;
&lt;p&gt;In the end, I got fed up of wasting a so much time trying to work it out, so I pushed my changes to my git repository on my desktop machine (OS X 10.7), pulled them on my laptop (OS X 10.6) and it submitted first time directly from Organiser. I can see update &amp;#8220;Java for Mac OS X 10.7 Update 7&amp;#8221; waiting to be installed on that, which I&amp;#8217;m slightly hesitant to install now.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m kind of frustrated I don&amp;#8217;t have an answer to the problem and will look into it a bit more when I have more time, but using a different machine to submit it is a good option if you&amp;#8217;re up against it. &lt;/p&gt;
&lt;h3&gt;Update&lt;/h3&gt;
&lt;p&gt;It seems this was an issue with Java. I have since installed another Java update, rebooted and that fixed the issue. &lt;/p&gt;</description><link>http://www.ichi.co.uk/post/20493705091</link><guid>http://www.ichi.co.uk/post/20493705091</guid><pubDate>Thu, 05 Apr 2012 00:39:00 +0100</pubDate><category>osx</category><category>iphone</category><category>development</category><category>xcode</category><category>apple</category></item><item><title>Add a virtual directory to multiple sites in IIS 7.x using PowerShell.</title><description>&lt;p&gt;Someone needed to add virtual directory to a few dozen sites in IIS, so I wrote them a little script to do it. To use it save the code below as something like &amp;#8216;CreateVirDirs.ps1&amp;#8217;, open a Powershell prompt with administrator rights, cd to the directory you saved it in and then execute it with .\CreateVirDirs.ps1&lt;/p&gt;
&lt;pre class="brush: plain"&gt;Import-Module WebAdministration

$sites = Get-Childitem 'IIS:\Sites'
$name = "NewVirtualDirectory"
$vdPath = "D:\Temp"

foreach ($site in $sites) {
    $path = 'IIS:\Sites\' + $site.Name + '\' + $name
    New-Item $path -type VirtualDirectory -physicalPath $vdPath
    Write-Output $path
}
&lt;/pre&gt;
&lt;p&gt;You should get output like:&lt;/p&gt;
&lt;pre class="brush: plain"&gt;PS D:\&amp;gt; .\CreateVirDirs.ps1

Name                                                        PhysicalPath
----                                                        ------------
NewVirtualDirectory                                         D:\Temp
IIS:\Sites\Default Web Site\NewVirtualDirectory
NewVirtualDirectory                                         D:\Temp
IIS:\Sites\www.ichi.co.uk\NewVirtualDirectory
NewVirtualDirectory                                         D:\Temp
IIS:\Sites\Some Other Site\NewVirtualDirectory&lt;/pre&gt;
&lt;p&gt;That will add the virtual directory to every site in IIS, but you can limit it quite easily which is explained&lt;span class=" keyNavAnnotation"&gt; &lt;/span&gt;&lt;a href="http://learn.iis.net/page.aspx/430/powershell-snap-in-navigating-the-iis-snap-in-namespace/" target="_blank"&gt;here&lt;/a&gt;. If you get an error due to not having the WebAdministration module, &lt;a href="http://learn.iis.net/page.aspx/429/installing-the-iis-powershell-snap-in/" target="_blank"&gt;this&lt;/a&gt; might be of some use. Hope that helps!&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/18516657973</link><guid>http://www.ichi.co.uk/post/18516657973</guid><pubDate>Wed, 29 Feb 2012 23:10:00 +0000</pubDate><category>iis</category><category>iis7.5</category><category>iis7</category><category>powershell</category><category>scripting</category><category>windowsServer</category></item><item><title>Microsoft AppFabric vs Redis (Windows port)</title><description>&lt;p&gt;The traffic of our football news syndicating website (&lt;a href="http://www.kicknews.net/news/popular" title="Football News" target="_blank"&gt;Kick News&lt;/a&gt;) has been steadily growing a lot since it launched. When we redeveloped it a couple of years ago, we used an in-process cache, by creating an IQueryable extension method that uses an md5 hash of the underlying SQL query as the key. This worked reasonably well, but has it&amp;#8217;s obvious problems, such as the caches needing to be refilled when the app pool recycles or when the server is restarted. On our busy site, this means we had to wait until the caches are full before we serve any requests or it would overload our database server, which is unacceptable. Before the site gets any busier we&amp;#8217;re going to move to an out-of-process cache and the are 3 main options we&amp;#8217;ve considered are &lt;a href="http://redis.io/" target="_blank"&gt;Redis&lt;/a&gt;, &lt;a href="http://www.memcached.org/" target="_blank"&gt;Memcached&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/windowsserver/ee695849" target="_blank"&gt;Windows Server AppFabric&lt;/a&gt; (there are other options however, such as &lt;a href="http://www.oracle.com/technetwork/middleware/coherence/overview/index.html" target="_blank"&gt;Coherence&lt;/a&gt;). There is already quite a lot of info on Redis vs Memcached, so I won&amp;#8217;t go into that here, but I was curious as to how AppFabric performed against Redis. &lt;/p&gt;
&lt;p&gt;This is an extremely limited and unscientific test, however all I was looking for was an indication and couldn&amp;#8217;t find any data elsewhere. I used Dusan Majkic&amp;#8217;s &lt;a href="https://github.com/dmajkic/redis" target="_blank"&gt;Windows port of Redis&lt;/a&gt; and the &lt;a href="https://github.com/ServiceStack/ServiceStack.Redis" target="_blank"&gt;ServiceStack.Redis C# Client Library&lt;/a&gt;, so results might be different if I used the native version of Redis, but not enough for me to care about in this little test.&lt;/p&gt;
&lt;p&gt;Setting up AppFabric on my test machine was a breeze and Scott Hanselman has an easy to follow guide &lt;a href="http://www.hanselman.com/blog/InstallingConfiguringAndUsingWindowsServerAppFabricAndTheVelocityMemoryCacheIn10Minutes.aspx" target="_blank"&gt;here&lt;/a&gt;. To run the test, I created an ASP.Net MVC 3 project and used a System.Diagnostics.&lt;span class="s1"&gt;Stopwatch&lt;/span&gt;() to time the execution of putting and retrieving 1,000&amp;#160;4 byte strings and then the same with a byte array of a 115KB image. I ran the test 6 times, resetting everything in between runs and then averaged the results. There was a some variation in each run (the 4 byte string tests where all roughly the same), but I think this gives me a pretty good idea of what I wanted to know.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Set 1,000&amp;#160;4 byte strings:&lt;/strong&gt;&lt;br/&gt; AppFabric: 918&amp;#160;ms&lt;br/&gt; Redis: 240&amp;#160;ms&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get 1,000&amp;#160;4 byte strings:&lt;/strong&gt;&lt;br/&gt; AppFabric: 587&amp;#160;ms&lt;br/&gt; Redis: 137&amp;#160;ms&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Set 1,000&amp;#160;115&amp;#160;KB byte arrays:&lt;/strong&gt;&lt;br/&gt; AppFabric: 11,195&amp;#160;ms&lt;br/&gt; Redis: 15,812&amp;#160;ms&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get 1,000&amp;#160;115&amp;#160;KB byte arrays:&lt;/strong&gt;&lt;br/&gt; AppFabric: 11,976 ms&lt;br/&gt; Redis: 7,163&amp;#160;ms&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m003sojuhE1r130g2.png" width="330"/&gt;&lt;img src="http://media.tumblr.com/tumblr_m003t14DnP1r130g2.png" width="330"/&gt;&lt;/p&gt;
&lt;p&gt;I forgot to mark them, but 1 is set and 2 is get. The conclusion I draw from this is that Redis is as fast as everyone says it is (I don&amp;#8217;t believe AppFabric is any kind of slouch). I&amp;#8217;m not sure why Redis ended up slower in the larger byte array set test, but there was one run when it was quite a lot slower, which would have dragged it&amp;#8217;s average down a bit. To answer the question properly, we&amp;#8217;d need a much better benchmarking test, but I think it&amp;#8217;s safe to say that overall Redis is quite a lot faster overall than AppFabric, however AppFabric is very easy to setup and cluster. I think we&amp;#8217;re going to go with Redis on a couple of dedicated Debian VMs over Memcached or AppFabric, but I think all would be a massive improvement for us over our existing in-process caching. &lt;/p&gt;</description><link>http://www.ichi.co.uk/post/18280190946</link><guid>http://www.ichi.co.uk/post/18280190946</guid><pubDate>Sun, 26 Feb 2012 00:02:00 +0000</pubDate><category>windowsServer</category><category>servers</category><category>caching</category><category>webhosting</category></item><item><title>I Heart Chaos: Fun with math: Dividing one by 998001 yields a surprising result</title><description>&lt;a href="http://www.iheartchaos.com/post/16393143676/fun-with-math-dividing-one-by-998001-yields-a"&gt;I Heart Chaos: Fun with math: Dividing one by 998001 yields a surprising result&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://www.iheartchaos.com/post/16393143676/fun-with-math-dividing-one-by-998001-yields-a" target="_blank"&gt;iheartchaos&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lya93spLjr1qzozj1.png"/&gt;&lt;/p&gt;
&lt;p&gt;There’s all sorts of magic to be had with numbers, and many mathematicians have made entire careers in finding these little tricks that are mostly useless, but fun anyway. Unfortunately, a lot of calculators are going to truncate the results of this trick, but if you manage to get a hold of…&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://www.ichi.co.uk/post/16558111977</link><guid>http://www.ichi.co.uk/post/16558111977</guid><pubDate>Fri, 27 Jan 2012 02:50:59 +0000</pubDate></item><item><title>Never to be caught out again...</title><description>&lt;p&gt;Posting this here so as to reinforce my memory, so I never miss this again.&lt;/p&gt;
&lt;p&gt;LINQ errors that make no sense and the build error: &lt;strong&gt;&amp;#8220;Cannot convert lambda expression to type &amp;#8216;string&amp;#8217; because it is not a delegate type&amp;#8221; &lt;/strong&gt;= missing &amp;#8220;using System.Linq;&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/16491149010</link><guid>http://www.ichi.co.uk/post/16491149010</guid><pubDate>Thu, 26 Jan 2012 00:19:00 +0000</pubDate><category>code</category><category>programming</category><category>csharp</category></item><item><title>First look: Bitcasa Infinite Storage</title><description>&lt;p&gt;I just got an invite to Bitcasa today, so I used it to sign up and get my infinite storage and got 10 invites to share (below). &lt;/p&gt;
&lt;p&gt;Installed fine on both OSX (beta) and Windows (alpha), although I&amp;#8217;d say the Windows installer needs cleaning up a bit, as it launches two separate installers (&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=5555" target="_blank"&gt;MS C++ redist&lt;/a&gt; and &lt;a href="http://dokan-dev.net/en/" target="_blank"&gt;Doken&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lydo3vAmfw1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;To upload your files to Bitcasa, you just right click a folder and select &amp;#8220;Services &amp;gt; Cloudify this&amp;#8221; on OSX:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lydnlnQAbL1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;or Bitcasa Cloudify on Windows:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lydnpoCfxG1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;They currently have a fairly rudimentary but functional web portal to access your files and the client looks (on OSX at least) like the below screenshot.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lydmnmVUut1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;Getting Calculator.app out, I can see that this is about 3.33&amp;#160;Mbps, which isn&amp;#8217;t bad since I&amp;#8217;m uploading from the UK to the US east coast (I have 10&amp;#160;Mbps upstream bandwidth on my cable connection).&lt;/p&gt;
&lt;p&gt;I read &lt;a href="http://techcrunch.com/2011/09/12/with-bitcasa-the-entire-cloud-is-your-hard-drive-for-only-10-per-month/" target="_blank"&gt;here&lt;/a&gt; that they&amp;#8217;re going to charge $10 per month once the beta is over. If it works OK and they don&amp;#8217;t have a security faux pas, &lt;a href="http://nakedsecurity.sophos.com/2011/06/21/dropbox-lets-anyone-log-in-as-anyone/" target="_blank"&gt;like Dropbox&lt;/a&gt;, I&amp;#8217;m totally happy to pay that for unlimited cloud storage. &lt;/p&gt;
&lt;p&gt;This link should work for the first 10 people that use it, after that it will just add people to the waiting list, so I&amp;#8217;ll try to keep an eye on it and remove it once they&amp;#8217;re all gone&amp;#8230;.&lt;/p&gt;
&lt;p&gt;Invites &lt;a href="https://portal.bitcasa.com/invited/9efcecc8aa21400f9538bef973e3c904/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Update (12 Feb UTC): 2 invites left.&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/16487871720</link><guid>http://www.ichi.co.uk/post/16487871720</guid><pubDate>Wed, 25 Jan 2012 23:26:00 +0000</pubDate><category>cloud</category><category>storage</category><category>bitcasa</category></item><item><title>Adding a minimum length constraint in SQL Server</title><description>&lt;p&gt;This might seem fairly obvious, but using Len(ColumnName) can give unexpected results, as it returns the number of characters in a string instead of the number of bytes, i.e. it trims the text before it counts the characters. More details on that &lt;a href="http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/the-differences-between-len-and-dataleng" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To create a minimum length constraint, open up your table, right click Constraints and select New Constraint. Then enter something like&amp;#8230;&lt;/p&gt;
&lt;pre class="brush: sql"&gt;(datalength([YourColumn])&amp;gt;(2))&lt;/pre&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lxnd28sdpy1r130g2.png"/&gt;&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/15678250132</link><guid>http://www.ichi.co.uk/post/15678250132</guid><pubDate>Wed, 11 Jan 2012 18:38:00 +0000</pubDate><category>sqlserver</category><category>sql</category></item><item><title>Crunch.co.uk referral code</title><description>&lt;p&gt;We&amp;#8217;ve been using &lt;a href="http://www.crunch.co.uk" title="Crunch Accounting" target="_blank"&gt;Crunch Accounting&lt;/a&gt; for the last 3 months and I think they&amp;#8217;re great.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If you use code &lt;/span&gt;&lt;strong&gt;skweejr9uv&lt;/strong&gt;&lt;span&gt; when you sign up, you and I will both get £25 in Amazon vouchers. &lt;/span&gt;&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/15668253264</link><guid>http://www.ichi.co.uk/post/15668253264</guid><pubDate>Wed, 11 Jan 2012 12:41:00 +0000</pubDate><category>referralcode</category></item><item><title>SQL Server 2005 maintenance plan fails and service pack fail to install</title><description>&lt;p&gt;I needed to setup a maintenance plan for a client to backup their databases and remove backups older than 4 weeks. They run SQL Server 2005, so I created the maintenance plan with a Back Up Database Task and a Maintenance Cleanup Task to remove the old backups, which is straightforward enough. When I tried to test it however I got the error: &lt;strong&gt;&amp;#8220;Unable to start execution of step 1 (reason: line(1): Syntax error). The step failed.&amp;#8221; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I had a quick look at the version of the server and it was 9.0.1399 (SQL Server 2005 RTM!!!). So I downloaded SP4 and went to install it, however when it gave me the options for the components to update, it wouldn&amp;#8217;t let me check Database Services and when I selected it, the details box said &lt;strong&gt;&amp;#8220;This update requires language ENU. The language for product instance MSSQLSERVER is . Download the update for language .&amp;#8221;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now, I know this particular server hosts a lot of Sage 200 databases as well as the database for my app. The guy that setup Sage 200 changed the language to be British English because for some reason Sage don&amp;#8217;t use ISO date formatting (yyyyMMdd) and instead use UK style dates (ddMMyyyy). &lt;/p&gt;
&lt;p&gt;The fix for this was to change the language values for SQL Server in the registry.&lt;/p&gt;
&lt;p&gt;Stop the SQL Server services via services.msc, fire up regedit.exe and write down the current decimal value for the Language value in the following two keys. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.1\setup&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\CurrentVersion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now change them both to 1033 decimal (which is US English) and re-run SP4 setup, which should now allow you to upgrade the Database Services component. Once you&amp;#8217;re upgraded return the registry values to their original settings.&lt;/p&gt;
&lt;p&gt;I actually ran into another problem after this (Error Code: 0x80070534 (1332) Windows Error Text: No mapping between account names and security IDs was done.), which I had to dig around in the SP4 install log for, but it turned out quite &lt;a href="http://social.msdn.microsoft.com/forums/en-US/sqlsetupandupgrade/thread/bf0c1eae-a1fa-4a63-b6a8-c18e81498780/" target="_blank"&gt;easy to fix&lt;/a&gt; by deleting some registry keys and letting SP4 setup recreate them.&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/15359483953</link><guid>http://www.ichi.co.uk/post/15359483953</guid><pubDate>Thu, 05 Jan 2012 21:02:00 +0000</pubDate><category>sqlserver</category><category>error</category><category>servers</category></item><item><title>hamburglr:

First, go grab some headphones. The best ones you’ve...</title><description>&lt;embed type="application/x-shockwave-flash" src="http://assets.tumblr.com/swf/audio_player_black.swf?audio_file=http://www.tumblr.com/audio_file/15343587718/tumblr_lpoxuxF3Fl1qzusoy&amp;color=FFFFFF&amp;logo=soundcloud" height="27" width="207" quality="best" wmode="opaque"&gt;&lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://hamburglr.tumblr.com/post/8717276078/first-go-grab-some-headphones-the-best-ones" target="_blank"&gt;hamburglr&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;First, go grab some headphones. The best ones you’ve got. If the best ones you’ve got are &lt;a href="http://store.apple.com/us/product/MB770G/B?fnode=MTY1NDA0Ng&amp;mco=MTA4NTA2ODU" target="_blank"&gt;these suckers&lt;/a&gt; (or something similar), you should really go buy new ones, but use the best you’ve got for right now.&lt;/p&gt;
&lt;p&gt;Take a break from whatever you’re doing for 2 minutes and listen, but just listen to the whole thing, even if you have to multi-task.&lt;/p&gt;
&lt;p&gt;Headphones on? Ok. Good.&lt;/p&gt;
&lt;p&gt;Now, press play.&lt;/p&gt;
&lt;br/&gt; “Upular (3D Audio Version)” - Pogo&lt;/blockquote&gt;</description><link>http://www.ichi.co.uk/post/15343587718</link><guid>http://www.ichi.co.uk/post/15343587718</guid><pubDate>Thu, 05 Jan 2012 13:03:55 +0000</pubDate></item><item><title>http://soundcloud.com/iamichi/winter-mix-2011</title><description>&lt;embed type="application/x-shockwave-flash" src="http://assets.tumblr.com/swf/audio_player_black.swf?audio_file=http://www.tumblr.com/audio_file/15097920160/tumblr_lx378uABsu1r40z7o&amp;color=FFFFFF&amp;logo=soundcloud" height="27" width="207" quality="best" wmode="opaque"&gt;&lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://soundcloud.com/iamichi/winter-mix-2011" target="_blank"&gt;http://soundcloud.com/iamichi/winter-mix-2011&lt;/a&gt;&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/15097920160</link><guid>http://www.ichi.co.uk/post/15097920160</guid><pubDate>Sat, 31 Dec 2011 21:19:00 +0000</pubDate></item><item><title>Creating an 'elite' highly anonymous proxy with Squid on Debian</title><description>&lt;p&gt;This is a simple guide on how to setup a Debian VM for use as an &amp;#8216;elite&amp;#8217; web proxy. There are 3 types of web proxy server and what type they are basically just comes down to which HTTP Headers they include about who you are.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transparent Proxy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;REMOTE_ADDR: Proxy IP address&lt;br/&gt;HTTP_VIA: Proxy IP address/hostname and details - e.g. 1.1 proxy1.mydomain.net:3128 (squid/2.7.STABLE9)&lt;br/&gt; HTTP_X_FORWARDED_FOR: Your real IP address&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anonymous&lt;/strong&gt;&lt;strong&gt; Proxy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;REMOTE_ADDR: Proxy IP address&lt;br/&gt;HTTP_VIA:   Proxy IP address/hostname and details - e.g. 1.1 proxy1.mydomain.net:3128 (squid/2.7.STABLE9) &lt;br/&gt;HTTP_X_FORWARDED_FOR: blank&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;Elite Proxy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;REMOTE_ADDR: Proxy IP address&lt;br/&gt;HTTP_VIA: blank&lt;br/&gt;HTTP_X_FORWARDED_FOR: blank&lt;/p&gt;
&lt;p&gt;Below I&amp;#8217;ll detail the extra configuration params you need to get squid into &amp;#8216;elite&amp;#8217; mode.&lt;/p&gt;
&lt;p&gt;I like Debian mainly because it&amp;#8217;s what I know best and has a very good reputation. Ubuntu is updated every 6 months and Debian is updated when it&amp;#8217;s ready, which makes me trust it more. Also Ubuntu requires 128MB of RAM and Debian only 64MB.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I needed to do few of these quickly, so I just did it on a Windows Server with Hyper-V as it was convenient. First I created a new VM in Hyper-V with 96MB Memory, mounted &lt;a href="http://ftp.hk.debian.org/debian-cd/current/amd64/iso-cd/debian-6.0.2.1-amd64-netinst.iso" target="_blank"&gt;debian-6.0.2.1-amd64-netinst.iso&lt;/a&gt;, but if you are using Hyper-V like me, before starting the VM, you need to go to the VM Settings, remove the Network Adapter and add a Legacy Network Adapter, which should be connected to the Virtual Network as Debian has a driver for this interface already.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lwvuetB52e1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;I am not going to walk you through all the steps of installing Debian, as it&amp;#8217;s straightforward enough and guides already &lt;a href="http://www.aboutdebian.com/install6.htm" target="_blank"&gt;exist&lt;/a&gt;. You&amp;#8217;ll probably want to select the option to install a SSH server during setup and once it&amp;#8217;s complete, SSH or console in and enter:&lt;/p&gt;
&lt;pre class="brush: plain"&gt;aptitude update
aptitude upgrade
apt-get update
apt-get install squid&lt;/pre&gt;
&lt;p&gt;That will update and install Squid (it installed 2.7.STABLE9-2.1 for me), so now we need to configure it. You might also want to secure your install a bit more than it is at this point as well, such as setup &lt;a href="http://wiki.debian.org/iptables" target="_blank"&gt;iptables&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Fail2ban" target="_blank"&gt;Fail2ban&lt;/a&gt;, disable root logins, etc. but I won&amp;#8217;t go into that here. Squid should work as a proxy out of the box on port 3128 but it will identify itself as a proxy, so let&amp;#8217;s change that. The Squid config file that comes with it is almost 5000 lines and well documented so I suggest you backup the original and create a new one with just the settings we need, so that we keep it simple.&lt;/p&gt;
&lt;pre class="brush: plain"&gt;cd /etc/squid
sudo mv squid.conf  squid.conf.orig
nano squid.conf&lt;/pre&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;That will open the nano text editor, creating a new config file. Squid has some options for access control, that is, what IP addresses are allowed to use it. For more info on this, check &lt;a href="http://www.deckle.co.za/squid-users-guide/Squid_Configuration_Basics#Simple_Access_Control" target="_blank"&gt;here&lt;/a&gt;. For me, I wanted my LAN to have access and also my VPN clients, but you might want LAN IP addresses or to allow anyone to connect. Enter this into nano&amp;#8230;&lt;/p&gt;
&lt;pre class="brush: plain"&gt;acl all src all
cache deny all
http_port 3128 transparent
acl privatenet src 172.16.0.0/255.255.254.0
acl vpnnet src 10.101.10.0/255.255.255.0
http_access allow privatenet
http_access allow vpnnet
forwarded_for off
visible_hostname proxy1.mydomain.net&lt;/pre&gt;
&lt;p&gt;That allows all IP address 172.16.0.0/23 and 10.101.10.0/24 to connect to the proxy. This setup gives us an anonymous proxy which will show as what you set in visible_hostname, however we want an &amp;#8216;elite&amp;#8217; proxy, so also add&amp;#8230;&lt;/p&gt;
&lt;pre class="brush: plain"&gt;header_access Via deny all
header_access Forwarded-For deny all
header_access X-Forwarded-For deny all&lt;/pre&gt;
&lt;p&gt;Exit nano with ctrl-x and save the config file when prompted, now restart Squid with&amp;#8230;&lt;/p&gt;
&lt;pre class="brush: plain"&gt;/etc/init.d/squid restart&lt;/pre&gt;
&lt;p&gt;Once you&amp;#8217;re done, to test it add your proxy server to &lt;a href="http://www.wikihow.com/Enter-Proxy-Settings-in-Firefox" target="_blank"&gt;Firefox&lt;/a&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lww5uyeCZR1r130g2.png"/&gt;&lt;/p&gt;
&lt;p&gt;and you can check your proxy &lt;a href="http://www.whatismyip.ro/" target="_blank"&gt;here&lt;/a&gt; or &lt;a href="http://thisisarecording.com/proxy-checker/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I hope that helps someone.&lt;/p&gt;</description><link>http://www.ichi.co.uk/post/14893527713</link><guid>http://www.ichi.co.uk/post/14893527713</guid><pubDate>Wed, 28 Dec 2011 02:08:00 +0000</pubDate><category>squid</category><category>linux</category><category>proxy</category><category>howto</category></item></channel></rss>

