Wednesday, 24 April 2013

Shrew Soft VPN Client 2.2.0 Released!

Huge props and thanks to Shrew soft for all the hard work that has gone into the new VPN Client release!  Loads of good stuff in there...

More information at https://www.shrew.net/ .

Thursday, 7 March 2013

BBC News can predict the future!

The BBC News department are nothing more than a government mouthpiece and it sucks HARD.

In this ridiculous piece, the UK prime minister "is expected to say" a lot of things with remarkable precision.

In other words, the BBC have been given his speech in advance. This is not news, this is the BBC being told what to say. This is not journalism, it's propaganda and the BBC should be ashamed.

My feedback to them:

"
Wow! You can predict the future! All these things that David Cameron "is expected to say" today! And with what precision!

Seriously BBC News PLEASE stop printing what the government tells you to print. It's not journalism, it's laziness at best and propaganda at worst.

How about taking a stance and only printing things that HAVE ACTUALLY HAPPENED?
"

Saturday, 2 March 2013

Snowboarding 2013

2013/03/02

So it's March and that means the annual snowboarding holiday! Woohoo! This year, it Mark Goldring and me - hitting the slopes on a last minute holiday with Crystal in Meribel Monterrat.

Flight from Luton with Easyjet to Grenoble. An early start (3:45) but a short, clear drive to the airport and Luton is a nice little airport. Mid-term car park is easy to get to and only a few quid more than the long term.

Easyjet was a nice flight - loads of legroom and the aircon being a little warm helped me sleep for an hour of a 1:30 flight.

Grenoble airport is just a series of sheds. We were left waiting around outside for ages while they found someone to inspect our passports, but no biggie... Luggage was there waiting for us on the belt.

So, expecting data roaming to still be stupid pricing, I had mine switched off. When I switched out of flight mode, though, O2 SMSed me to say that on the "Travel" plan, data (up to 25Mb / day) is only £2. Yeah - I can cope with that. So data roaming is now switched on - much better!

The Meribel iPhone app shows clear, blue skies on the webcams... All aboard the coach for a short 1.5 hour transfer.

€260 for a 6 day lift pass o_O and hire on top of that..

--
Check-in took 3 hours! Accommodation basic at best, but alcohol and pizza inside so time for bed.
_______
2013/03/03

Hire shop yields "girly" white boots, awesome board (regular setup) and hert.

Step off doorstep: SNOW!

First run and lift:





--
10:30

Woohoo! The Meribel iPhone app has a GPS speedometer/altimeter!

NEW HIGH SCORE: 51kph :-)

Great Scott!

--
12:30 Utterly awesome - completely empty! Have been off-piste down into St. Martin and then all over the St Martin slopes :-)





Off to meet Mark for lunch...


____
2013/03/04

Epic night out last night - we crashed the Skiworld pub crawl and .. well dancing like a loon by the end so who could ask for more.

Eventually woke up and Cheeky and I are on the lift going to the top - weather's still hot and the snow is lovely. Going to try the Meribel app for today - see if the battery lasts...









--
1:30

Meribel app is great - no real difference in battery life and tracks your every move - NEW HIGHSCORE - 56kph!

There is a lift right outside the apartments that I didn't try yesterday that (via a short run down) takes you up to the very to where Area 43 is the biggest funpark I've ever seen. There's an "experts only" halfpipe, loads of jumps and rails and an airbag. Cheeky and I bought a ticket to do five ENORMOUS jumps onto the airbag and a photographer got a load of pictures of us flying through the air :-)

The snow is just perfect up that side of the mountain, but it will go into shade soon so I'm going to the west-facing slopes this afternoon.

I forgot how much more fun the long, fast greens are - more of that this afternoon!

______
2013/03/04

Aaaand - the photos are in! Check them out here: BigActionPhoto.com. You can't miss me... I'm the one with the monkey strapped to my head!

______
2013/03/05

11:30 Everything's shut!

Strong wind means that most of the lifts are shut :-(. The queues in Meribel are very, very long!

(Picture coming)

So the zen kicks in and the soundtrack of choice becomes the whole Hitchhikers Guide from start to finish :-)

13:15 - last run before lunch

The wind has died down and THHGTTG is my favourite!

The wind has blown snow onto the pistes meaning that they're much easier and more comfortable. Lots of long runs later, I'm skiing on high art.

NEW HIGHSCORE - 79kph! OK - that was scary... Not going to try anymore...

_________
2013/03/06

Lots of pinball for €4 then back to a scuba diving group's chalet for a game of "boarder or skiier". Very late nights among a very late start today. Lots of runs got in though!

____
2013/03/07

More pinball last night - the Dark Knight batman one - very good!

It's 9:30 now, so shower and up... Off to the next valley today :-)

Saturday, 23 February 2013

Vatican impervious to irony of its own press release

According to the BBC today:

'The Vatican's chief spokesperson has criticised the media for reporting "misinformation" about the Church.'

I wonder how this pedophile-protecting, gold-encrusted, religious organisation that takes from the poor to give to the rich came to the conclusion that it's core message had become somehow corrupted?

Monday, 18 February 2013

Finally Facebook Free!

What with the recent revelations on tax avoidance, the general privacy issue and a refusal to adhere to UK law, I've finally lost it with Facebook and deactivated my account.

Some things are too big to fail, but they don't include services that are built on mutual trust and respect.

So fuck you Facebook.  Fuck you.

To deactivate your Facebook account, follow these simple-to-follow instructions today: http://www.facebook.com/help/214376678584711/ .

Tuesday, 5 February 2013

Exception Handling with Parallel.Foreach

The .NET Framework's Parallel.Foreach is genius.  It eases the pain of making multiple tasks run in parallel.  It's just the ticket!  Oh, if only it were that simple.

What order do the tasks run in?  What when the parallel tasks throw exceptions?  How should that be handled?  When one task fails should the others be cancelled? Do we need to roll anything back?  What state updates are needed?  It soon becomes quite complex, quite quickly.

The project I'm working on right now has the following requirements:
  • It does not matter which order the tasks execute in;
  • There is no requirement to roll back the transaction should any individual task fail
  • If an exception is thrown, a SINGLE exception should be propagated upwards
The following achieves this, demonstrated in a console app, written in C#.


using System;
using System.Threading.Tasks;

namespace DavidBond.Net.ParallelTest
{
    /// <summary>
    /// Command line demonstration of Parallel.Foreach when Exceptions are thrown
    /// </summary>
    public class Program
    {
        /// <summary>
        /// Program entry point
        /// </summary>
        public static void Main()
        {
            Console.WriteLine("Program start.");

            // Create an array of task names
            var taskList = new[]
                {
                    "Task A",
                    "Task B throws Exception",
                    "Task C",
                    "Task D throws Exception"
                };

            // Try to run all the tasks in parallel
            try
            {
                // The following line is the equivalent of:
                //Parallel.ForEach(taskList, taskName => Execute(taskName));
                Parallel.ForEach(taskList, Execute);
            }
            // If there are any exceptions, wait until all tasks have completed
            catch (AggregateException aggregateException)
            {
                foreach (var innerException in aggregateException.InnerExceptions)
                {
                    Console.WriteLine("Exception occurred on task.  Exception message was [{0}]", innerException.Message);
                }
                // Uncomment the next line to escalate multiple underlying exceptions as a single exception.
                // throw new Exception("Not all tasks completed successfully.");
            }

            Console.WriteLine("Program complete.");
        }

        /// <summary>
        /// Writes the line "[taskName] ran successfully" to the console
        /// </summary>
        /// <exception cref="Exception">Thrown if the taskname contains the word "exception" (not case sensitive).</exception>
        /// <param name="taskName">The task name</param>
        private static void Execute(string taskName)
        {
            //
            if (taskName.ToLower().Contains("exception"))
            {
                throw new Exception(string.Format("Exception thrown by task [{0}]", taskName));
            }

            Console.WriteLine("{0} ran successfully", taskName);
        }
    }
}


DO NOT copy-and-paste this example if your situation varies considerably.
Props to http://www.manoli.net/csharpformat/ for the formatting!