<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Hosted services</title>
        <link>http://geekswithblogs.net/twickers/category/6168.aspx</link>
        <description>Reviews and comments on hosted serviced and providers (ISPs, application service providers)</description>
        <language>en-GB</language>
        <copyright>Liam Westley</copyright>
        <managingEditor>liam.westley@tigernews.co.uk</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Hosted exception collection for .NET applications made easy – Exceptioneer.com</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/11/20/136439.aspx</link>
            <description>&lt;p&gt;I own a company, Tiger Computer Services Ltd, which is an Independent Software Vendor (ISV) providing .NET software solutions to clients in the London area.&lt;/p&gt;
&lt;p&gt;One of the most significant considerations when running a small ISV is the cost of supporting software in the field. For some clients, support is not a billable item, especially if the fault is within the software we have provided. This means that every time the telephone rings, we bleed money, and if we have to actually go on site to resolve an issue it gets worse.&lt;/p&gt;
&lt;p&gt;Whether the software solution is ‘packaged’ or is a custom solution, all our clients run the software on their own equipment at their own premises.  We have never asked for VPN access into their network.  We take the view that if you cannot easily VPN into a system you have a real incentive to write reliable software that works first time and doesn’t need continuous intervention.&lt;/p&gt;
&lt;p&gt;However, although all the clients can be reached within about one hour by public transport, an on-site visit is bad for many reasons;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;It costs money; either to ourselves or to the client (the latter is even worse if someone has to approve the cost in advance of the visit)&lt;/li&gt;
    &lt;li&gt;It takes time, which can lead to more issues; i.e. data corruption through continued use of the software&lt;/li&gt;
    &lt;li&gt;It is highly disruptive of work being undertaken for other clients&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Exception handling is a good thing&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This may sound obvious, but however good your programming is, it’ll generate exceptions.  It is impossible to account for all eventualities and you need to be ready to handle them and log the state of the system when they occurred.&lt;/p&gt;
&lt;p&gt;The solutions we deliver are generally a combination of ASP.NET web applications, Windows Services (Windows Forms applications with no user interface) and usually with some database server in the background (SQL Server, MySQL or Oracle).  Our exception handling is wrapped up in a set of reporting libraries whose history dates back to before Visual Basic 6.&lt;/p&gt;
&lt;p&gt;The reporting libraries were overhauled in the transfer to C#, and they provide a simple method for logging messages and exceptions simultaneously to the Windows Event Log, text based log file, SMTP e-mail and interactive dialogs (for Windows Forms applications with a user interface).&lt;/p&gt;
&lt;p&gt;The libraries consist of a central reporting engine, into which various reporters are plugged and these handle all the various methods for recording exceptions.  One call to the reporting engine to display a message or exception calls all the reporters in turn.  This allows new methods of reporting exceptions to be added quickly, and for various methods to be turned off as required (such as disabling writing to the Event Log on shared hosting providers).&lt;/p&gt;
&lt;p&gt;Whether you use the Microsoft application block, log4net or some home grown exception handling, the biggest issue is getting access to the log files or event log messages once an exception has occurred.&lt;/p&gt;
&lt;p&gt;Without remote access, we rely on the client IT team to either take the text log file, or dump the Event Logs to a CSV file, and e-mail the file to us. Of course, this assumes that the client is already aware they have a problem, which means it has very likely started to affect their use of the application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proactive exception handling&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In an ideal world you would receive notification automatically about any exceptions in your applications, without requiring intervention from the client.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;em&gt;Nothing impresses a client more than when you phone &lt;strong&gt;them &lt;/strong&gt;to tell them they have an issue, &lt;strong&gt;and &lt;/strong&gt;that you have already got a solution which they can implement to fix it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Although our reporting libraries do include an SMTP e-mail reporter which can provide some of this proactive functionality it is not always possible to persuade clients that their SMTP gateway or firewall should be ‘tweaked’ to allow support e-mails out of the building.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exceptioneer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Earlier this year I was kindly invited into a beta program for a ‘hosted exception collection’ service called Exceptioneer run by the good chaps at Pixel Programming, Phil Winstanley (a Microsoft MVP, no less) and Chris Gaskell.  &lt;/p&gt;
&lt;p&gt;These guys write .NET applications for a living and had already created their own centralised exception collection system for their own applications, solving the issues encountered when creating this type of solution.  Realising they had something well worth sharing, they turned their system into a packaged, hosted service for other developers and Exceptioneer was born.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;.NET support&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Exceptioneer supports ASP.NET, Windows Forms and JavaScript (although I have yet to use the JavaScript exception hander).&lt;/p&gt;
&lt;p&gt;Integration in an ASP.NET application is simple; reference the Exceptioneer web client assembly and add a few lines in the Web.Config and it will be reporting unhandled exceptions right away.  &lt;/p&gt;
&lt;p&gt;For Windows Forms, you need to reference a windows form assembly and integrate the API into whatever exception handling system you are already using.  We had it integrated with our reporting engine within an hour or so.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What does Exceptioneer provide?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The management interface of Exceptioneer provides a very clean web interface, where you can view all your registered projects (limited to three in the free service), and drill down into the various exceptions which might have occurred, when the last occurred and what application generate the exception. &lt;/p&gt;
&lt;p&gt;Repeated exceptions are intelligently grouped with drill down for further detail, including stack traces and full source code from the PDB file if you are testing a debug compilation.  You can identify the exact line causing the issue, and 75% of the time it is possible to identify the underlying cause without even starting up Visual Studio to view the source code.&lt;/p&gt;
&lt;p&gt;Exceptioneer provides e-mail notifications, and if you are a Twitter user, Exceptioneer can even send direct messages when new exceptions occur, which tends to catch the eye even quicker than e-mails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;... and it works&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since integrating Exceptioneer with a new system deployed in September, it has proved invaluable for resolving issues (related to user input which was not being verified correctly) which would have come close to an on-site visit to identify exactly what was happening.&lt;/p&gt;
&lt;p&gt;Even better, on most occasions we phone the client first to inform them that they had the problem (which occurred more than once) and the IT support guys were able to fix the problem before the end user actually realised something had gone wrong.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Try it yourself&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now the beta program has been completed, the service has been opened for everyone.  I recommend heading over to &lt;a href="http://www.exceptioneer.com"&gt;http://www.exceptioneer.com&lt;/a&gt; and registering for a free account, and giving it a spin in your own projects.&lt;br /&gt;
 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136439"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136439" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/136439.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/11/20/136439.aspx</guid>
            <pubDate>Fri, 20 Nov 2009 13:32:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/136439.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/11/20/136439.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/136439.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/136439.aspx</trackback:ping>
        </item>
        <item>
            <title>3G Mobile broadband - it's here and it's good</title>
            <link>http://geekswithblogs.net/twickers/archive/2008/10/07/125697.aspx</link>
            <description>Some months back I bought a HP 6910p laptop which included a HSDPA card, and it even came with a Vodafone SIM. I did look at the data plan from Vodafone; £15 per month for 3Gb of data, with no minimum contract.&lt;br /&gt;
&lt;br /&gt;
I liked the idea of a larger data allowance than the 40Mb I currently have with my T-Mobile contract.  I’ve never upgraded this original Web’n’Walk contract; I get 200 minutes, free answer phone collection and 40Mb of data for £16.50 per month. If I upgraded to get 1Gb of data (with laptop use) it would be closer to £40 per month.  &lt;br /&gt;
&lt;br /&gt;
I also was interested in having a backup method for Internet access. The BT Broadband in my office has suffered intermittent outages over the past month or so.  A cheap, emergency backup connection which could handle substantial data transfers was tempting.&lt;br /&gt;
&lt;br /&gt;
Then an e-mail arrived in my inbox which included a special offer for a 3G broadband deal from 3.  When bought via Quidco (a cashback, co-operative web site) you could get a free Huawei E160G USB HSDPA dongle on an 18 month contract at half price monthly fees.  That meant  a 3Gb monthly contract was only £5.  However, my sweet spot was a 5Gb monthly contract for £7.50.  If you included the £12.50 cashback, even after a £5 annual membership fee for Quidco, the overall cost was £7.08 per month for that 5Gb of data.&lt;br /&gt;
&lt;br /&gt;
Well, the dongle arrived last week.  The first thing I did was to ignore the dongle and try the SIM card in the 3G built in to my HP laptop. With the HP Wireless Assistant I enabled the WWAN (3G) card and up popped the HP Connection manager application you use to connect to a WWAN.  It came with configurations for all the major global network operators.  I selected ‘Three UK’ as my network and clicked on connect.  Then it was straight onto http://www.speedtest.net. It concluded I had a download speed of 1.3Mb/s and upload of around 350kb/s.&lt;br /&gt;
&lt;br /&gt;
It turns out that my 3G wireless broadband was three times faster than my first ever broadband (cable broadband at 512kb/s, 128 kb/s). Even more astonishing it has an upload speed equal to my wired ADSL2 Sky Broadband Max connection.&lt;br /&gt;
&lt;br /&gt;
Of course, that’s the first floor in my home in West London. In my first floor office near Kew Gardens station, which is a mobile signal dead spot, the speeds dropped; 750kb/s download and 300kb/s upload.&lt;br /&gt;
&lt;br /&gt;
In the office, the HP laptop and dongle varied in performance much more than at my home. The HP laptop built in card suffered compared to the dongle. I found this surprising because I would have assumed the laptop, with 3G aerials built into the chassis, would come out on top, but it seemed the dongle obtains a better signal and therefore better performance.  I suspect the laptop lid, being in a docking station beneath a monitor stand is shielded more than the dongle sticking out the side of the laptop.&lt;br /&gt;
&lt;br /&gt;
In conclusion I’m very impressed by 3G mobile broadband.  The dongle included drivers embedded as a USB mass storage device, and they worked first time (with a reboot) under Windows Vista 64-bit.  Even better it works with the built in 3G card.&lt;br /&gt;
&lt;br /&gt;
Never can I now claim not to be able to receive e-mails because I’m out of WiFi coverage. 3 even allow Skype usage – they encourage it, with a €1.02 coupon in the starter pack.&lt;br /&gt;
&lt;br /&gt;
Even more interesting the inclusive 5Gb data plan is usable on any of the 3 networks globally. That includes Austria, Australia, Denmark, Hong Kong, Italy, Ireland and Sweden. Now, if isn’t that an excuse to arrange that holiday ...&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125697"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125697" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/125697.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2008/10/07/125697.aspx</guid>
            <pubDate>Wed, 08 Oct 2008 10:04:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/125697.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2008/10/07/125697.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/125697.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/125697.aspx</trackback:ping>
        </item>
        <item>
            <title>Old school batch file for logging broadband connectivity</title>
            <link>http://geekswithblogs.net/twickers/archive/2008/09/09/125030.aspx</link>
            <description>Recently the BT Broadband ADSL line at our shared office has been having problems.  Slow speeds but more importantly regularly dropping out.  We moved over to a second broadband connection but wanted to monitor the state of the original broadband connection so we could confirm the fault had been fixed.&lt;br /&gt;
&lt;br /&gt;
Should I code it in C#, thrash out some PowerShell scripts, pah!  No, an old fashioned &lt;span style="font-weight: bold;"&gt;.cmd&lt;/span&gt; file and some batch commands will do ..... need to know the time, try a ping, and then wait for 10 seconds before repeating it.&lt;br /&gt;
&lt;br /&gt;
So here's the batch file I wrote (&lt;span style="font-weight: bold;"&gt;pingWait.cmd&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold; font-family: Courier New;"&gt;  :loopStart&lt;/span&gt;&lt;br style="font-weight: bold; font-family: Courier New;" /&gt;
&lt;br style="font-weight: bold; font-family: Courier New;" /&gt;
&lt;span style="font-weight: bold; font-family: Courier New;"&gt;  time &amp;lt; cr.txt&lt;/span&gt;&lt;br style="font-weight: bold; font-family: Courier New;" /&gt;
&lt;span style="font-weight: bold; font-family: Courier New;"&gt;  ping www.bbc.co.uk&lt;/span&gt;&lt;br style="font-weight: bold; font-family: Courier New;" /&gt;
&lt;span style="font-weight: bold; font-family: Courier New;"&gt;  timeout /t 10&lt;/span&gt;&lt;br style="font-weight: bold; font-family: Courier New;" /&gt;
&lt;br style="font-weight: bold; font-family: Courier New;" /&gt;
&lt;span style="font-weight: bold; font-family: Courier New;"&gt;  goto loopStart&lt;/span&gt;&lt;br style="font-weight: bold; font-family: Courier New;" /&gt;
&lt;br /&gt;
It required a single extra file with a LF/CR in it, &lt;span style="font-weight: bold;"&gt;cr.txt&lt;/span&gt;, which pipes an 'Enter' key to 'set' the time (otherwise time would hang) and you run it like this, piping the output to the specified log file;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold; font-family: Courier New;"&gt;  pingwait &amp;gt; log-2008-09-09.txt&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Job done.  When a BT OpenReach field engineer popped round I could load up the file and we could locate all the times the broadband had gone off line and when it had recovered.  It even included the DNS lookup working but the ping failing as the connection was initialising.&lt;br /&gt;
&lt;br /&gt;
Ah, it took me back to my time helping manage the complex set of batch file scripts and DOS menu utilities which handled the network logon to Netware 3.11 servers for GMTV.&lt;br /&gt;
&lt;br /&gt;
Note: piping the output does mean the text file is locked, you have to break out of the batch file to view it.  A minor niggle.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125030"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125030" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/125030.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2008/09/09/125030.aspx</guid>
            <pubDate>Tue, 09 Sep 2008 21:43:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/125030.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2008/09/09/125030.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/125030.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/125030.aspx</trackback:ping>
        </item>
        <item>
            <title>Excellent example of Windows Mobile smartphone use and 3G today</title>
            <link>http://geekswithblogs.net/twickers/archive/2008/09/08/125016.aspx</link>
            <description>&lt;p&gt;I received a support call from a client today, for which I provide a moderation system for viewer text messages for broadcast on a television channel.  The engineer said messages weren't getting through, and I was leaving the office within 30 minutes to travel by tube and bus to a meeting in Chelsea, West London.&lt;/p&gt;
&lt;p&gt;So here's the busy day for the TyTN II Windows Mobile 6.0 smartphone.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;12:00 -12:30  Kew office&lt;br /&gt;
&lt;/em&gt;Various &lt;strong&gt;voice &lt;/strong&gt;calls to client and SMS gateway provider. Initial &lt;strong&gt;sms &lt;/strong&gt;messages to SMS gateway provider. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;12:30 - 13:15 District line tube&lt;/em&gt;&lt;br /&gt;
Listening to &lt;strong&gt;audio&lt;/strong&gt; with A2DP bluetooth headset via Windows Media PLayer.  Really cool feature, when making or receiving a voice call media player is automatically paused, and when call ends, it restarts and fades back in.essages to and from &lt;br /&gt;
Receive first &lt;strong&gt;sms &lt;/strong&gt;messages from main guy at SMS gateway provider, currently in San Francisco (ouch!, early)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;13:15 - 14:15 South Kensington tube platform, top deck 414 bus&lt;/em&gt;&lt;br /&gt;
Out of tunnels, &lt;strong&gt;HSPDA&lt;/strong&gt; connection begun, and Windows Live Messenger (&lt;strong&gt;IM&lt;/strong&gt;) used to chat to the guy in San Francisco whilst still listening to music &lt;strong&gt;and&lt;/strong&gt; phoning client to update with latest status of gateway. &lt;strong&gt;HSPDA&lt;/strong&gt; never broke the connection, and happily coped with phone calls and SMS messaging during a live &lt;strong&gt;IM&lt;/strong&gt; session.  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My phone happily mixed sms, voice and HSPDA simultaneously, while the CPU streamed music to soothe my furrowed brow.  The TyTN II slide out keyboard ensured an IM chat on a phone was a quick and easy process instead of some horrendous hunt and pick on t9.  About the only thing I would have liked was to VPN into my client (they don't allow me to do that) and use a Remote Desktop Connection to diagnose my server inside their building.&lt;/p&gt;
&lt;p&gt;Of course the killer feature in all this is 3G.  Not only does it provide a decent speed for IM chatting, but the incredibly reliable simultaneous voice and data makes this type of support call a breeze.  I'm also impressed by how the T-Mobile HSPDA connection hangs onto the signal and handles handovers between cells.&lt;/p&gt;
&lt;p&gt;Finally, I never want an MP3 player that doesn't realise I have a phone and it should shut up when a call comes in, and gracefully restart when the call ends.  Some MP3 players supportted this via bluetooth, but you can't beat a single device with it all integrated neatly.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125016"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125016" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/125016.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2008/09/08/125016.aspx</guid>
            <pubDate>Tue, 09 Sep 2008 06:29:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/125016.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2008/09/08/125016.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/125016.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/125016.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET MVC Preview 2 (March CTP) - support for shared hosting</title>
            <link>http://geekswithblogs.net/twickers/archive/2008/03/10/120454.aspx</link>
            <description>I've been investigating the ASP.NET MVC framework for some months, in between a major client project in January and holidays in Frebruary.  In that time the ASP.NET team have been beavering away and released the MVC Preview 2 March CTP (download it &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=38CC4CF1-773A-47E1-8125-BA3369BF54A3&amp;amp;displaylang=en"&gt;here&lt;/a&gt;). Jeffrey Palermo has some great blog posts over at &lt;a href="http://codebetter.com/blogs/jeffrey.palermo/archive/2008/03/05/new-drop-of-asp-net-mvc-framework-now-available.aspx"&gt;codebetter.com&lt;/a&gt; which detail some of the improvements.&lt;br /&gt;
&lt;br /&gt;
The big news for me was that I could finally upload any applications to my development site, which is on a shared hosting server at &lt;a href="http://discountasp.net/"&gt;discountasp.net&lt;/a&gt;, they have .NET 3.5 hosting as standard which makes life easy.  You can now just copy the MVC assemblies into the application bin folder and you have an MVC application installed.&lt;br /&gt;
&lt;br /&gt;
I did hit one issue, in that the MVC handler does not route as required without the formal setup, and the in line comment s in Global.asax.cs suggesting I add the file extension '.mvc' for routing requests for IIS6 compatibility didn't work either.  The issue is that the DiscountASP team have not registered '.mvc' for processing by the ASP.NET ISAPI dll.  Obviously something I cannot configure on a shared host.&lt;br /&gt;
&lt;br /&gt;
No problems though - I discovered that if I use the file extension '.mvc.aspx' for controller routing in Global.asax.cs the pages get handled by the ASP.NET ISAPI DLL, complete with MVC goodness.  Standard .aspx pages are unaffected, and as long as you don't mind the mangled URLs it all works as expected.&lt;br /&gt;
&lt;br /&gt;
If you haven't yet dabbled with the MVC framework now is definitely the time to try.  Shared hosting support, combined with the excellent quick start video tutorials over at &lt;a href="http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc"&gt;http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc&lt;/a&gt; makes life a lot less painful.&lt;br /&gt;
&lt;br /&gt;
P.S. after spending a few hours researching the '.mvc.aspx' solution, I found it was already in the forums on the ASP.NET site - DOH!&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120454"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120454" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/120454.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2008/03/10/120454.aspx</guid>
            <pubDate>Tue, 11 Mar 2008 11:30:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/120454.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2008/03/10/120454.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/120454.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/120454.aspx</trackback:ping>
        </item>
        <item>
            <title>hosted-projects.com, 12 months on - now that's what I call customer service</title>
            <link>http://geekswithblogs.net/twickers/archive/2007/09/02/115122.aspx</link>
            <description>I signed up to a SubVersion and Trac hosted service nearly 12 months ago with the aim of moving all my source code repositories from my local server onto a centrally managed system hosted by &lt;a href="http://www.hosted-projects.com"&gt;hosted-projects.com&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
At first I was concerned about reliability of access, availability levels and the level of customer support I would receive for what is a bargain US$15 per month (with an additional US$15 per month for nightly backups).&lt;br /&gt;
&lt;br /&gt;
Those concerns were completely unfounded. In the past year I have had exceptional service.  I can't remember a time I couldn't connect to either SubVersion or Trac, e-mail notifications fly out speedily from SubVersion and Trac, and the unlimited SubVersion/Trac repositories mean I have been able to move all my clients onto a single hosted system without any shared security issues to fight with.&lt;br /&gt;
&lt;br /&gt;
As an example of the level of service, this morning a support ticket was answered within seconds by Michael Goettsche, who had immediately investigated the issue.  I then had the embarrassment of having to admit it was my Cute FTP 7.1 client at fault, and that everything was worked OK. All within five minutes of the first support ticket being sent out.&lt;br /&gt;
&lt;br /&gt;
This is exactly what you need from your hosted services - I'm just not used to this from the experience of various ISPs and web hosting providers I've used in the past.  So if you need off-site SubVersion and Trac hosting you should certainly include hosted-projects at the top of your list.&lt;br /&gt;
&lt;br /&gt;
&lt;font size="3"&gt;hosted-projects.com &lt;br /&gt;
&lt;span style="font-style: italic;"&gt;&lt;/span&gt;***** 5 stars&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115122"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115122" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/115122.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2007/09/02/115122.aspx</guid>
            <pubDate>Mon, 03 Sep 2007 10:20:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/115122.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2007/09/02/115122.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/115122.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/115122.aspx</trackback:ping>
        </item>
        <item>
            <title>Very silly bug on Microsoft forums</title>
            <link>http://geekswithblogs.net/twickers/archive/2007/08/13/114613.aspx</link>
            <description>&lt;p&gt;I'm sure there is a Microsoft exam on how to handle custom errors in ASP.NET, and even how to verify query strings before processing them.  It might be in their forums, &lt;a href="http://forums.microsoft.com"&gt;http://forums.microsoft.com&lt;/a&gt;, but not at this URL, &lt;a href="http://forums.microsoft.com/communities/showpost.aspx?postid=fasdjkh&amp;amp;siteid=gh"&gt;http://forums.microsoft.com/communities/showpost.aspx?postid=fasdjkh&amp;amp;siteid=gh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yep, we have a &lt;font color="#ff0000"&gt;&lt;strong&gt;Server Error in '/Communities' Application&lt;/strong&gt;&lt;/font&gt; in full display with instructions on how to turn on custom error handling. &lt;/p&gt;
&lt;p&gt;Obviously no web application I've every written would do something that grossly stupid as not check for bad query string data, and they all have custom error pages switched on ........ hold on, just got to pop off and inspect my SubVersion repository.&lt;/p&gt;
&lt;p&gt;(credit to Matt Barrett for finding this first in a Google search result, rather than a hand typed designed to fail URL)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114613"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114613" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/114613.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2007/08/13/114613.aspx</guid>
            <pubDate>Mon, 13 Aug 2007 14:47:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/114613.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2007/08/13/114613.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/114613.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/114613.aspx</trackback:ping>
        </item>
        <item>
            <title>CI Factory - my final setup</title>
            <link>http://geekswithblogs.net/twickers/archive/2007/04/23/111924.aspx</link>
            <description>Here's the culmination of my research into CI Factory and how I'm not using it to develop my open source RapidDB libraries.  This is a fairly personal setup, as it only has a single developer (me), two development machines (currently an office desktop PC and a roaming laptop) and a build server which is not publicly accessible via the Internet.  An MSDN and Microsoft Partner Action Pack subscription are busy covering my software license requirements.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;font size="2"&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Development PC 1 : Desktop, XP Pro SP2, Program Files on D: drive, C:\Projects for CI Factory tree. &lt;/li&gt;
    &lt;li&gt;Development PC 2 : Laptop, XP Pro SP2, Program Files on C: drive, C:\Projects for CI Factory tree. &lt;/li&gt;
    &lt;li&gt;Build Server : Virtual PC 2004 image, XP Pro SP2, C:\Projects for CI Factory tree. &lt;/li&gt;
    &lt;li&gt;Source code repository : &lt;a href="http://www.hosted-projects.com"&gt;www.hosted-projects.com&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
By using Microsoft Virtual PC 2004 (or VPC), which is a &lt;span style="font-style: italic;"&gt;free&lt;/span&gt; download now, I have the VPC disk image (6.3Gb currently) which is on a portable laptop hard drive, running over USB 2.0.  When in the office this connects to my desktop, when out of the office this connects to my laptop.  That way, I always have the build server available, where ever I am working.  And when my build server finally settles down and I require external access, I can easily install it under Virtual Server on my main Windows Server 2003 box and setup suitable port forwarding on my broadband connection.&lt;br /&gt;
&lt;br /&gt;
Both development PCs and the build server have Microsoft SQL Server 2000 Developer and Microsoft SQL Server 2005 Developer installed.  To aid with unit testing, I have created aliases to the servers on all machines as &lt;span style="font-style: italic;"&gt;NUnit-Sql2000&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;NUnit-Sql2005&lt;/span&gt;.  This ensures that whatever machine name and instance name I might have used when installing SQL Server, unit tests can use the same alias names across all machines (and please don't flame me that unit tests should not really include database access, I have my reasons).&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;font size="2"&gt;Build server o/s and tools installation&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Windows XP Professional SP2 &lt;/li&gt;
    &lt;li&gt;.NET framework 1.1, .NET framework 2.0, .NET framework 3.0 &lt;/li&gt;
    &lt;li&gt;Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2005 Developer Edition &lt;/li&gt;
    &lt;li&gt;NCover v1.5.5 (beta) &lt;/li&gt;
    &lt;li&gt;SubVersion 1.4.3, TortoiseSVN 1.4.3&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;.NET Framework 1.1 SDK, .NET Framework 2.0 SDK&lt;/span&gt; &lt;span style="font-weight: bold; font-style: italic;"&gt;[blog update, 6 June 2007]&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;CI Factory installation on VPC build server image&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;.\Install Scripts\Arguments.xml;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Change ProjectName; &lt;strong&gt;&lt;em&gt;testproject&lt;/em&gt;&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;Change the portname number (&lt;em&gt;really important for multiple installations!)&lt;/em&gt; &lt;/li&gt;
    &lt;li&gt;Email details; VPC-Build, &lt;a href="mailto:vpc.build@yourdomain.co.uk"&gt;vpc.build@yourdomain.co.uk&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;Developer lists; &lt;a href="mailto:your.name@yourdomain.co.uk"&gt;your.name@yourdomain.co.uk&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;SVN URI Root; &lt;a href="https://svn1.hosted-projects.com/youraccountname"&gt;https://svn1.hosted-projects.com/youraccountname&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;SVN URI ProjectName, Shared Repo; ProjectName" value="${SVN.URI.Root}/${ProjectName}" &lt;/li&gt;
    &lt;li&gt;SVN.WebRepoURL; &lt;a href="https://svn1.hosted-projects.com/youraccountname/${ProjectName"&gt;https://svn1.hosted-projects.com/youraccountname/${ProjectName&lt;/a&gt;} &lt;/li&gt;
    &lt;li&gt;SVN.Credentials.SafeStorage; true &lt;/li&gt;
    &lt;li&gt;SVN.Username / SVN.Password; &amp;lt;set to your username/password&amp;gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;\Packages;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Install NCover 1.5.5 Beta to prog files; &lt;em&gt;C:\Program Files\NCover&lt;/em&gt; &lt;/li&gt;
    &lt;li&gt;Install SubVersion 1.4.3 to prog files; &lt;em&gt;C:\Program Files\Subversion&lt;/em&gt; &lt;/li&gt;
    &lt;li&gt;(optional) Install TortoiseSVN 1.4.3 to prog files; &lt;em&gt;C:\Program Files\TortoiseSVN&lt;/em&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;CI Factory Installation&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Create repository/project for &lt;strong&gt;testproject&lt;/strong&gt; in SubVersion, edit ACL list to include user permissions RW. &lt;/li&gt;
    &lt;li&gt;Run &lt;em&gt;C:\Tools\CI Factory\run.bat&lt;/em&gt; to install. &lt;/li&gt;
    &lt;li&gt;After install Visual Studio will not start as it doesn't exist on the build server; instead use&lt;br /&gt;
       Notepad to edit &lt;em&gt;c:\Projects\&lt;strong&gt;testproject&lt;/strong&gt;\Current\Build\Main.build.xml&lt;/em&gt;&lt;br /&gt;
       --&amp;gt; look for warnings about first call/last call and move (as in Jay Flower screencast)&lt;br /&gt;
       --&amp;gt; (SourceModificationReport.PublishOldSource to first item)&lt;br /&gt;
       --&amp;gt; (SourceModificationReport.PublishNewSource to last item) &lt;/li&gt;
    &lt;li&gt;Commit, Main.build.xml to SubVersion. &lt;/li&gt;
    &lt;li&gt;Run &lt;em&gt;C:\Projects\testproject\Current\Build\Packages\CSDiff\bin\CSDiff.exe&lt;/em&gt; once to store path to CSDiff in registry (used in later scripts). &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;font face="Arial"&gt;Post installation configuration; &lt;em&gt;c&lt;/em&gt;&lt;/font&gt;&lt;font face="Arial"&gt;&lt;em&gt;:\Projects\testproject\Current\Build\ccnetproject.xml&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Locate &lt;em&gt;&amp;lt;!ENTITY email&lt;/em&gt; line (at top of file)&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Edit the &lt;strong&gt;from&lt;/strong&gt; attribute to a suitable 'from' address&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Edit the &lt;strong&gt;mailhost&lt;/strong&gt; attribute to by your SMTP server&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;For authenticated logins add the &lt;strong&gt;mailhostUsername&lt;/strong&gt; and &lt;strong&gt;mailhostPassword&lt;/strong&gt; attributes and enter the login and password used to send e-mails.&lt;/font&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Afterwards, it should look something like;&lt;br /&gt;
&lt;em&gt;  &amp;lt;!ENTITY email '&amp;lt;email from="testproject.build@yourdomain.co.uk" mailhost="mail.yourdomain.co.uk" mailhostUsername="testproject.build@yourdomain.co.uk" mailhostPassword="testprojectbuild" includeDetails="true"&amp;gt;&lt;/em&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;Developer PC 2 - C:\Program Files (99% of users)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can just check out the tree from SubVersion to &lt;em&gt;C:\Projects\testproject&lt;/em&gt; and run &lt;em&gt;C:\Projects\testproject\Current\Build\OpenSolution.bat&lt;/em&gt; to load the project into Visual Studio 2005.  If you want to run unit tests you will need to have installed the appropriate tools (NUnit for myself, or feel free to use MbUnit which comes with CI Factory).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;Developer PC 1 - D:\Program Files&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Check out the tree from SubVersion to &lt;em&gt;C:\Projects\testproject.&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Copy &lt;em&gt;C:\Projects\testproject\Current\Build\OpenSolution.bat&lt;/em&gt; to &lt;em&gt;C:\Projects\testproject\Current\Build\OpenSolutionVSOnD.bat&lt;/em&gt; &lt;/li&gt;
    &lt;li&gt;Edit &lt;em&gt;OpenSolutionVSOnD.bat&lt;/em&gt; in Notepad, and edit the path &lt;em&gt;C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat&lt;/em&gt; to be on the D: drive. &lt;/li&gt;
    &lt;li&gt;Repeat with &lt;em&gt;C:\Projects\testproject\Current\Product\OpenSolution.bat.&lt;/em&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;Adding your projects&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now you continue with the normal CI Factory process of adding your existing projects into &lt;font face="Arial"&gt;&lt;em&gt;C:\projects\testproject\Current\Product\Production&lt;/em&gt; as detailed in the Jay Flowers/CI Factory screen cast.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;em&gt;Conclusion&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For those thinking that all this sounds like a whole heap of work to 'reproduce' your existing setup, this is really is not the case.  I cannot tell you the relief to have CruiseControl.NET setup for me automatically and have it branching versions seamlessly in the background.  It also encourages you down the unit testing path which is not a bad thing at all (although I may be breaking it with database reliant testing).&lt;/p&gt;
&lt;p&gt;I have also been impressed by the range of default packages installed by CI Factory. This provides an immediate wake up call to how you might improve the quality of your software by using automated tools, instead of just hoping you have written reliable code that you have tested properly.  I have yet to use all the default packages properly, but then, even programmers I know who have in depth experience of Test Driven Development (TDD) and CI have found new tools that CI Factory includes, such as Simian.&lt;/p&gt;
&lt;p&gt; Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/ci%20factory"&gt;ci factory&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/continuous%20integration"&gt;Continuous Integration&lt;/a&gt;&lt;/p&gt;
&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Update log&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;em /&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;p&gt;6 June 2007 : Updated to include installation of .NET Framework SDK to prevent &lt;span style="font-style: italic;"&gt;Unable to load DLL 'svn_client-1'&lt;/span&gt; error in build log (as in CI Factory FAQ, &lt;a href="http://www.cifactory.org/joomla/index.php?option=com_content&amp;amp;task=view&amp;amp;id=12&amp;amp;Itemid=32"&gt;here&lt;/a&gt;).  &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111924"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111924" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/111924.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2007/04/23/111924.aspx</guid>
            <pubDate>Tue, 24 Apr 2007 10:08:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/111924.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2007/04/23/111924.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/111924.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/111924.aspx</trackback:ping>
        </item>
        <item>
            <title>CI Factory - getting it working with your development tools in D:\Program Files </title>
            <link>http://geekswithblogs.net/twickers/archive/2007/04/03/110693.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Arial&gt;Before we dive in make sure you read my introduction post &lt;A href="http://geekswithblogs.net/twickers/archive/2007/04/03/110691.aspx"&gt;here&lt;/A&gt;, and that you have followed the screen cast on how to setup CI Factory.&amp;nbsp; My notes will basically follow that procedure and highlight the differences when you have development tools on your D: drive.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;This is an early list, but hopefully it should give people pointers on how to get going quickly;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;I'm assuming that your development PC already has Visual Studio 2005, and &lt;A href="http://subversion.tigris.org/"&gt;SubVersion 1.4.3&lt;/A&gt;.&amp;nbsp; In addition I had to install &lt;A href="http://ncover.org/site/"&gt;NCover 1.5.5 beta&lt;/A&gt;&amp;nbsp;and download the latest &lt;A href="http://jay.flowers.googlepages.com/cifactory"&gt;CIFactory&lt;/A&gt; beta (I used 0.8.0.121) which I unzipped to &lt;FONT face="Courier New"&gt;&lt;STRONG&gt;C:\Tools\CI Factory&lt;/STRONG&gt;&lt;/FONT&gt;. I have hosted SubVersion at &lt;A href="https://www.hosted-projects.com/"&gt;hosted-projects.com&lt;/A&gt; for $15 a month (note: my host area has been changed to xxxxxx on this server for obvious reasons).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Once unzipped, look at C:\Tools\CI Factory;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;.\Install Scripts\Arguments.xml &lt;/STRONG&gt;(standard edits)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;1. Change ProjectName; &lt;EM&gt;&lt;STRONG&gt;testproject&lt;/STRONG&gt;&lt;/EM&gt;.&lt;BR&gt;2. Change the port number if you want multiple installations.&lt;BR&gt;3. Edit the email details and developer list e-mails.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;4. SVN.URI.Root; &lt;A href="https://svn1.hosted-projects.com/xxxxxx"&gt;https://svn1.hosted-projects.com/xxxxxx&lt;/A&gt;&lt;BR&gt;5. SVN.URI.ProjectName, Shared Repo; ProjectName" value="${SVN.URI.Root}/${ProjectName}"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;6. SVN.WebRepoURL; &lt;A href="https://svn1.hosted-projects.com/xxxxxx/${ProjectName"&gt;https://svn1.hosted-projects.com/xxxxxx/${ProjectName&lt;/A&gt;}&lt;BR&gt;7. SVN.Credentials.SafeStorage; true&lt;BR&gt;8. SVN.Username / SVN.Password; &amp;lt;set to known login for hosted-projects.com&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;.\Packages&lt;/STRONG&gt; (D: drive specific)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;1. Install NCover 1.5.5 Beta to program files; &lt;EM&gt;D:\Program Files\NCover&lt;/EM&gt;&lt;BR&gt;2. Edit .\NCover\NCover.Properties.xml; Ncover.ExePath to &lt;EM&gt;D:\Program Files\NCover\NCover.Console.exe&lt;BR&gt;&lt;/EM&gt;3. Edit .\NCover\Install\Properties.xml; Ncover.ExePath to&lt;EM&gt; D:\Program Files\NCover\NCover.Console.exe&lt;BR&gt;&lt;/EM&gt;4. Edit .\MSBuild\Install; %Compile.DevEnv.vsvars32bat% to&lt;EM&gt; D:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat&lt;BR&gt;&lt;/EM&gt;5. Edit .\VS.NETCompile\Install; %Compile.DevEnv.vsvars32bat% to&lt;EM&gt; D:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;.\Power Tools&lt;/STRONG&gt; (D: drive specific)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;1. OpenSolution.bat; edit &lt;EM&gt;C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat &lt;/EM&gt;to be on D: drive.&lt;BR&gt;2.&amp;nbsp;Still in&amp;nbsp;OpenSolution.bat; edit C:\Program Files\Subversion\bin to &lt;EM&gt;D:\Program Files\Subversion\bin&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;.\Default\Build &lt;/STRONG&gt;(D: drive specific)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;1. CCNETServer.bat; edit C:\Program Files\Subversion\bin to &lt;EM&gt;D:\Program Files\Subversion\bin&lt;BR&gt;&lt;/EM&gt;2. OpenSolution.bat; edit C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat to &lt;EM&gt;C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat&lt;/EM&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;To prevent NDepends build errors&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;BR&gt;Copy D:\WINDOWS\FONTS to C:\WINDOWS\FONTS to prevent error in CCNet Build Report erroring on missing Arial font.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&amp;gt;&amp;gt; INSTALLATION&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;1. Create repository/project in SubVersion, edit the ACL/permissions list to include user permissions RW for the login you configured.&lt;BR&gt;2. Run C:\Tools\CI Factory\run.bat to install CIFactory components (I left them with the default modules).&lt;BR&gt;3. After install Visual Studio fires up; edit c:\Projects\&lt;STRONG&gt;&lt;EM&gt;testproject&lt;/EM&gt;&lt;/STRONG&gt;\Current\Build\Main.build.xml&lt;BR&gt;&amp;nbsp;&amp;nbsp; --&amp;gt; look for warnings about first call/last call and move (as in the CIFactory screen cast)&lt;BR&gt;&amp;nbsp;&amp;nbsp; --&amp;gt; (SourceModificationReport.PublishOldSource to first item)&lt;BR&gt;&amp;nbsp;&amp;nbsp; --&amp;gt; (SourceModificationReport.PublishNewSource to last item)&lt;BR&gt;4. Commit, Main.build.xml to SVN.&lt;BR&gt;5. Run CSDIff once to store path to CSDiff in registry (this is used in later scripts).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&amp;gt;&amp;gt; ADD INITIAL PROJECTS &lt;/STRONG&gt;(to C:\Projects\&lt;STRONG&gt;&lt;EM&gt;testproject&lt;/EM&gt;&lt;/STRONG&gt;\Current\Product\Production)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;1. Run, C:\Projects\&lt;STRONG&gt;&lt;EM&gt;testproject&lt;/EM&gt;&lt;/STRONG&gt;\Current\Product\OpenSolution.bat; this should load Visual Studio 2005.&lt;BR&gt;2. Copy your existing projects to C:\Projects\&lt;STRONG&gt;&lt;EM&gt;testproject&lt;/EM&gt;&lt;/STRONG&gt;\Current\Product\Production (use TortoiseSVN-&amp;gt;Export to get a clean tree with no .svn folders)&lt;BR&gt;3. Add your projects in Visual Studio, check it builds.&lt;BR&gt;4. Add your projects in C:\Projects\&lt;STRONG&gt;&lt;EM&gt;testproject&lt;/EM&gt;&lt;/STRONG&gt;\Current\Product\Production, to SVN (remove/exclude the bin/obj directories).&lt;BR&gt;5. Commit your additions, and the changes to the main solution (new projects) to SVN.&lt;BR&gt;6. CruiseControl.NET should now pick up changes and compile your new solution.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;Miscellaneous notes&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;The resource usage for an 'empty' CIFactory install with default modules but none of your own projects came in at &lt;STRONG&gt;14Mb&lt;/STRONG&gt; with SVN on hosted-projects.com (peaked at 17Mb during commit).&amp;nbsp; Important to note if you have usage limits.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;The other wrinkle I had was a SubVersion certificate issue; hosted-projects.com are still using a certificate based on the URL &amp;nbsp;&lt;A href="http://www.hosted-projects.com/"&gt;http://www.hosted-projects.com/&lt;/A&gt; which was created prior to their configuring multiple servers.&amp;nbsp; My repositories are now on svn1.hosted-projects.com, however they still use the old certificate for encrypting content.&amp;nbsp; This doesn't bother me but it can bother &lt;EM&gt;svn.exe&lt;/EM&gt;, the command line tool, especially when used in an automated mode.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;To fix this run SVN.EXE at the command line to your repository;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;svn list &lt;/EM&gt;&lt;A href="https://svn1.hosted-projects.com/xxxxxx/cifactory"&gt;&lt;EM&gt;https://svn1.hosted-projects.com/xxxxxx/cifactory&lt;/EM&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;&lt;FONT face=Arial&gt;&lt;EM&gt; --username xxxx --password xxxx&lt;/EM&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;You will be asked to accept the certificate, if you choose permanently then&amp;nbsp;the CIFactory and CCNET scripts will work without a problem.&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=110693"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=110693" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/110693.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2007/04/03/110693.aspx</guid>
            <pubDate>Wed, 04 Apr 2007 05:06:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/110693.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2007/04/03/110693.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/110693.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/110693.aspx</trackback:ping>
        </item>
        <item>
            <title>Wake On LAN remotely via your broadband connection - with a LinkSys WRT54G</title>
            <link>http://geekswithblogs.net/twickers/archive/2007/02/21/106877.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;The problem&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;I am moving my server and main development system out of a home office into rented office space.&amp;nbsp; As I'm only going to be in the office two of three days a week, and being a hippy environmental type, I wanted to ensure my file server was not always switched on.&amp;nbsp; Anything to reduce my carbon footprint a fraction.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;The solution&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;WakeOnLan was the perfect solution I thought.&amp;nbsp; I configured the server in the BIOS to start up on a Wake On LAN packet.&amp;nbsp; With this I can turn on the server, and once the server is running I can use RDP (Remote Desktop Protocol) or VNC to remotely connect (I'll configure a proper VPN later).&amp;nbsp; Once I finish using the server I can use RDP to turn off the server again.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;It all worked on the local LAN, but getting it working remotely across the Internet was slightly more work.&amp;nbsp; Thanks to Googling some excellent articles it only took around 90 minutes to figure it all out.&amp;nbsp; The Linksys router was the main stumbling block in my setup.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Basically, WakeOnLan uses broadcast technology to send a 'magic packet' to all computers on the LAN.&amp;nbsp; This packet contains the unique MAC address of the LAN card belonging to the PC you wish to turn on.&amp;nbsp; Some forums/blogs suggest port forwarding or port triggering to a specific IP&amp;nbsp;address&amp;nbsp;but neither work on the WRT54G.&amp;nbsp; As the server will not have an IP address if it is not switched on (as the O/S configures this) you cannot port forward in the usual manner. It is possible to port forward to ALL PCs. However, when using the default subnet of 255.255.255.0 the &lt;/FONT&gt;&lt;FONT face=Arial&gt;WRT54G does not allow port forwarding&amp;nbsp;to the broadcast address, xxx.xxx.xxx.255.&amp;nbsp;The web interface simply won't allow you to enter xxx.xxx.xxx.255 as a destination IP address.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;Configuring the router&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Fortunately I found this blog &lt;A href="http://n01getsout.com/blog/2006/11/16/wake-on-lan-on-linux-with-a-linksys-wrt54g/"&gt;n01getsout.com&lt;/A&gt;&amp;nbsp;which provided the solution. In the Linksys web configuration, you have to specify the subnet for the LAN DHCP pool&amp;nbsp;as 255.255.255.128.&amp;nbsp; You then configure the port forward (on any port, 5850 was one suggestion of a free port) to forward to xxx.xxx.xxx.127 which will forward the magic packet to all PCs on the network.&amp;nbsp; The MAC address within the packet ensures that only that the specified PC turns on.&amp;nbsp;Note: the WakeOnLan packet is not port specific so the destination port does not actually matter.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;Wake On LAN utility&lt;/STRONG&gt; (to send the magic packet)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;The last step is to obtain a WakeOnLan utility to send the magic packet.&amp;nbsp; If you're running Windows there is a great utility from &lt;A href="http://www.depicus.com/wake-on-lan/wake-on-lan-gui.aspx"&gt;depicus.com&lt;/A&gt; which does exactly what you need.&amp;nbsp; You enter the MAC address of your PC (in a command window, &lt;EM&gt;ipconfig /all,&lt;/EM&gt; it is listed as physical address), the public IP allocated by your ISP (I used &lt;A href="http://whatismyipaddress.com/"&gt;whatismyipaddress.com&lt;/A&gt;&amp;nbsp;for this), a subnet of 255.255.255.255, and the remote port number you configured in your router for port forwarding.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;And that was it - now I can remotely switch on my server, do some work and then turn it off when I'm finished.&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=106877"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=106877" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/106877.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2007/02/21/106877.aspx</guid>
            <pubDate>Wed, 21 Feb 2007 21:45:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/106877.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2007/02/21/106877.aspx#feedback</comments>
            <slash:comments>23</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/106877.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/106877.aspx</trackback:ping>
        </item>
    </channel>
</rss>