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
 Friday, September 28, 2007
I came across this blog post on the habits of aspiring software developers. Although I'm way past school I thought the point (#6) on emotional investment in pet projects compared to assignments rings true. In my experience, I have taken on voluntary work in my own time and developed a primary school website with a CMS to allow self adminstration. It's an ideal platform to try out new things like version updates to .NET Framework and coding styles and even though my kids are no longer there I keep in contact with the Head to progress enhancements - one of the reasons is the emotional investment in my software! Anyway the front-end is a little shaky in Firefox so I know that my CSS needs some attention.....
posted on Friday, September 28, 2007 8:54:05 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
 Wednesday, September 26, 2007
I've been working with Microsoft's eLearning packages on and off for a few months now. The Collection 5160 covers 7 Courses considered as part of a 'Core Development' skill set. In a sense, I find these courses useful as a starting point, but they really only serve to whet the appetite for more information. Anyway I've always found that reading around a subject is necessary for reinforcement and as a matter of course I've done some googling as well as referring to my Safari bookshelf and MSDN. Writing some console applications and getting them working really helps cement the ideas in place and are also good for later referral.

For example, last night I was working on delegates and events. I worked through the eLearning material but found some of the examples either too brief or simply error-strewn and poorly explained. A quick search on EventArgs on my Safari bookshelf and some really useful examples are described in Donis Marshall's C# book and some advanced stuff to get to grips with in Bill Wagner's Effective C#. This morning I've quickly followed up on the eLearning environment's online forums, however not a lot of peer review goes on here and the moderators are non-existent bar the obligatory 1st post explaining how happy they are to help!

In summary, my overall approach to learning new technologies is based on knowing that passing the exam is not really going to be the end of the road. Especially with v3.0 and v3.5 to learn on top. There is no substitute for really understanding your stuff. Microsoft eLearning could do with putting this approach into practice.

posted on Wednesday, September 26, 2007 10:04:00 AM (GMT Standard Time, UTC+00:00)  #    Comments [3] Trackback
 Wednesday, September 05, 2007
Having been training myself up in VS2005 and C# 2.0 it's interesting to note the current MSDN homepage pushing VS "Orcas" for download. Also, having come across the last episode of the .NET Show, LINQ is getting highlighted as a key part of the next raft of features for the platform. These events have focussed me to look around for resources on LINQ to get an appreciation of this new architecture for data access.

So far I am working my way through an MSDN webcast on LINQ from Nov 2006 (Google is still by far the easiest way to find anything on MSDN!) and the text-based resources for LINQ on MSDN are nicely set out although a little dry.

This got me looking further afield but there are not many books out at the moment which deal exclusively with LINQ, but "LINQ In Action" by Manning has an easy-to-read introduction which is free on their website - one great quote is, "You can think of LINQ as a universal remote control". Might Should Will invest in the eBook when the time is right.

Quite when I'll download Orcas is another matter. I'd like to appreciate VS2005 a little bit more first off (beyond the basic Console Applications which I've been running to consolidate my C# 2.0 learning).

posted on Wednesday, September 05, 2007 12:51:54 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
 Monday, June 11, 2007
I've persuaded my employers to allow me to undertake some online learning instead of a traditional lecture/tutorial-style course. I've opted to take the Core & Advanced Development for .NET 2.0. The pluses for me are: flexible study pattern and that it has plenty in common for the 70-536 exam.

I have decided to go for this exam first to firmly cement the enhancements to C# in my conciousness. With a better background of the fundamentals I think 70-528 will be a more natural progression. I was influenced by others on this matter.

posted on Monday, June 11, 2007 3:56:21 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback