Sunday, October 28, 2007
I've not made the kind of progress I had hoped for this weekend, even with the help of an extra hour with the clocks going back. The upshot is I've re-scheduled for a week later than anticipated, on 7th Nov.

I could point to domestic responsibilities: 4 year olds who refuse to go to bed, the need to mow the gardens before the weather takes a more autumnal turn. Let's be honest here though - there's also the learning of some quite unfamiliar material found in the objectives of 70-536 which has taken more time than I'd expected. For instance, I've sought some additional resources on Code Access Security here and here. It's not something you can just read and absorb first time around. I found some consensus within the comments of the latter CodeProject article.

Also, I've made some efforts to continue with working examples where applicable which can consume time. It's one thing I've done more of compared to preparing for 70-315 which was more taking notes like for a University exam. Below is a code snippet from my tour of 'globalization'. Some things do get overwritten but I've tried to preserve the extent of the exploration. Also, I've never used the code coloriser within DasBlog's admin pages. I've had to do some manual indentation to get things looking more readable.

using System;
using System.Collections.Generic;
using System.Text;
using System.Globalization;
using System.Threading;

namespace GlobalizeThis
{
class Program
{

static void Main(string[] args)

{

Console.ReadKey(true);
}

static void AlreadyTested()
{
//CultureInfoExample1();
//Thread.CurrentThread.CurrentCulture = new CultureInfo("es-VE");CultureInfoExample1();

//FormattingExample1(); CultureInfoExample2(); CultureInfoExample3();

//RegionInfoExample();
//Thread.CurrentThread.CurrentCulture = new CultureInfo("es-VE"); RegionInfoExample();
//Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); RegionInfoExample();

//DateTimeExample1();DateTimeExample2();

//NumberFormat();

//CompareInfoExample1();
//CompareInfoExample2();CompareInfoExample3();

}




static void CompareInfoExample3()
{
string s1 = "Coté";
string s2 = "coté";
CompareInfo demoInfo = new CultureInfo("fr-FR").CompareInfo;

w("if zero then equal. non-zero values indicate differences", demoInfo.Compare(s1, s2, CompareOptions.IgnoreCase).ToString());

}

static void CompareInfoExample2()
{
string s1 = "Coté";
string s2 = "coté";
CompareInfo demoInfo = new CultureInfo("fr-FR").CompareInfo;

w("if zero then equal. non-zero values indicate differences", demoInfo.Compare(s1, s2).ToString());

}

static void CompareInfoExample1()
{
CompareInfo demoInfo1 = Thread.CurrentThread.CurrentCulture.CompareInfo;
w("name of compareinfo", demoInfo1.Name);
w("LCID of compareinfo", demoInfo1.LCID.ToString());

CompareInfo demoInfo2 = new CultureInfo("en-US").CompareInfo;
w("name of compareinfo", demoInfo2.Name);
w("LCID of compareinfo", demoInfo2.LCID.ToString());
}



static void NumberFormat()
{
CultureInfo usersCulture = new CultureInfo("es-VE");
w("Venez Currency", usersCulture.NumberFormat.CurrencySymbol);
w("Number decimal separator", usersCulture.NumberFormat.NumberDecimalSeparator);
}

static void DateTimeExample2()
{
CultureInfo myCulture = Thread.CurrentThread.CurrentCulture;
CultureInfo usersCulture = new CultureInfo("es-VE");

int i = 0;
//string[] months = usersCulture.DateTimeFormat.MonthNames;
string[] months = usersCulture.DateTimeFormat.AbbreviatedMonthNames;
foreach (string venezMonth in months)
{
w(myCulture.DateTimeFormat.MonthNames[i++], venezMonth);
}

w("no of months", months.Length.ToString());
}

static void DateTimeExample1()
{
CultureInfo myCulture = Thread.CurrentThread.CurrentCulture;
CultureInfo usersCulture = new CultureInfo("es-VE");

int i = 0;
string[] days = usersCulture.DateTimeFormat.DayNames;
foreach (string venezDay in days)
{
w(myCulture.DateTimeFormat.DayNames[i++], venezDay);
}
}

static void RegionInfoExample()
{
CultureInfo usersCulture = Thread.CurrentThread.CurrentCulture;
RegionInfo demoRegion = new RegionInfo(usersCulture.LCID);
w("English Name", demoRegion.EnglishName);
w("Display Name", demoRegion.DisplayName);
w("Currency Symbol", demoRegion.CurrencySymbol);
w("Is Metric", demoRegion.IsMetric.ToString());

}

static void CultureInfoExample3()
{
foreach (CultureInfo userCulture in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
w("Culture", userCulture.Name);
}
}

static void CultureInfoExample2()
{
CultureInfo usersCulture = Thread.CurrentThread.CurrentUICulture;
w("The current culture of this application is", usersCulture.Name);

}

static void FormattingExample1()
{
w("Salary is", (100000).ToString("C"));
}

static void CultureInfoExample1()
{
CultureInfo usersCulture = Thread.CurrentThread.CurrentCulture;
w("The current culture of this application is", usersCulture.Name);
w("The display name of this application is", usersCulture.DisplayName);
w("The native name of this application is", usersCulture.NativeName);
w("The ISO Abbreviation of this application is", usersCulture.TwoLetterISOLanguageName);
}

static void w(string p, string s)
{
Console.WriteLine("{0} : {1}", p, s);
}
}

}



posted on Sunday, October 28, 2007 9:11:59 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
 Saturday, October 27, 2007
I've decided to throw caution to the wind and book in my exam. I read this blog post about a week ago and was inspired to take advantage of the free second shot. I had a certain amount of pride at passing 70-315 on the first time, but on reflection I probably studied a little too intensively and left the self-testing a little too late before the exam. This time, I've decided to iterate more rapidly through the material with testing sessions after each block.

The appeal of second shot is I can accurately assess areas of weakness using the actual exam first time around. Agreed that not many examination formats allow for this but it seems nonsensical to pass up the opportunity. There remains the possibility that I might even pass (!), although with this weekend and a couple of work days remaining I'm pessimistic of covering enough ground in sufficient detail, although the intention is that I will at least read through everything.

My approach has been to cover the material according to the 7 individual exam objectives. I've used the 70-536 book and its lesson review questions, along with the eLearning material I've been using. I much prefer the style of the book and I alternate freely between the book and the .pdf so its not an online-phobic thing. After covering each objective, I've used the MeasureUp tests and selected the module in question to fire back all the specific questions in the bank. Then, on review I'll focus in on the incorrect answers and refer back to the information sources. I jumped the gun last night on serialization having missed out the XmlSerialization side of things and paid the price (58% and failure!). I'm keeping screen-dumps of all incorrectly answered questions just for later review closer to the exam.

Anyway, must get back to the grindstone.

posted on Saturday, October 27, 2007 10:33:30 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
 Wednesday, October 24, 2007
I've just read this article on 'Learning Lessons' in my lunchbreak. I find Ellen MacArthur's attitude and approach to daunting tasks inspiring to me as a father, a software developer and as someone who committed themselves to sport well into their 20s. I would identify her humility, strength of mind and spirit as her key attributes which enable her to execute these amazing feats.

posted on Wednesday, October 24, 2007 11:32:32 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
 Friday, October 12, 2007

This post has nothing to do with one of my work collegaues who is currently in Kenya (SAP consultants obviously get far too much money!)

I've mentioned in previous posts about using Safari which is an online book service. Being able to search your bookshelf makes things so much easier, especially when you have a few books which cover similar technical areas you get different examples and viewpoints in the results of a quick search.

For a change I've been doing some JavaScript coding in the past few days and Danny Goodman's JavaScript & DHTML Cookbook has helped get me back in the swing of client-side quirkiness, but have also used the offline version(!) of DOM Scripting by Jeremy Keith. Although I didn't create a new ASP.NET control to solve my app enhancement, this has pushed my interest towards digging into Kothari's Developing Microsoft ASP.NET Server Controls and Components (why do they insist on putting Microsoft in the actual book title? Reminds me of this funny YouTube video on Microsoft designing the iPod which I came across on a blog). I have the "..Server Controls.." at home already but it's still a worthy addition to get the most out of the service.

One improvement to the service would be if you buy a book from wherever (Amazon for instance) there should be a code which you can submit to Safari to access the same book online without consuming a book off your bookshelf allocation. Just a thought. Anyway, I attach my Bookshelf as a .PDF just as a reference point if nothing else.

bookshelf.pdf (128.89 KB)
posted on Friday, October 12, 2007 2:40:17 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback