Sunday, November 9, 2008
Course next week
I'll be going back to InfoSupport for 3 days.
Can't wait for the traffic jams ;-)
Cheers
Chapter 4, Lesson 4
Being in the middle of moving into my appartement notwithstanding, I found some time to continue with the course.
Today I completed lesson 4 of chapter 4, which was all about Specialized Collections.
BitArray and BitVector32 are very usefull for working with Booleans and manipulating bits.I was not aware of the existance of BitVector32, which is in fact a structure rather then a class, and although I find the syntax of it to be a bit sloppy, I convinced of the usefullness of it.
Bit Packing seems a smart way to reduce storage space in memory. BitVector32 allows you to use this technique of storing several smaller numbers into one large number in real life.
StringCollection and StringDictionary class are simply strong-typed equivalents of ArrayList and HashTable. When you work with strings, and only with strings, usethese ones to rid yourself of the overhead of casting objects to strings.
CollectionUtils is your basic shortcut to a series of helper tools that allow you to quickly create Case-insensitive Hashtables and SortedLists.
Next lesson will be all about Generic Collections.
Be seeing ya.
Chapter 4, Lesson 2 and 3
Lesson 2 covered the sequantial lists: Stack and Queue. Very easy, very simple.
A Queue is a FIFO type of collection where items get put into the queue and pulled out again.A Stack is LIFO type of collectioins where items get pushed onto the stack and popping them of again.
A memory tip: Queue is a line at a bank while Stack is a Stack of cards.
Lesson 3 was a bit more complicated as it covered Dictionaries. The Hashtable is the most important dictionary.
Really interessting was the part where they explained how equality and default ordering is implemented by the Hashtable.
What I remember from it was that Hashtable doesn't allow duplicate keys in the collection, but these keys are in fact the hashes (GetHashValue method) of those items.Take control over equality by implementing a IEqualityComparer interface.
See you soon.
Chapter 4, Lesson 1
The first lesson covered the basics about collections. Adding and Removing items was a breeze, not much new there.
I learned that there are 3 different ways to iterate through a collection:
- using the numeric indexer: coll(1)
- using the foreach statement: foreach item as string in coll
- using the GetNumerator method
This last one was new to me. I never used this before. This method returns a IEnumerator object that allowed you to move through the items of the collection, forward only, using the MoveNext and Current methods. Very cool, but redundant because the foreach language construct does exactly the same, and is much easier to implement.
Sorting items of a collection is both very easy and exiting. The default implementation of Sort uses a Comparer class, but an overloaded construct of Sort also allows you to specify another comparer class, even your own custom class, as long as it implement the IComparer interface.
Cool stuff.... ;-)
The lab was easy and I got all the review questions right. :D
Next lesson I'll be working with Sequential Lists. Can't wait ;-)
Cheers
Chapter 3, Lesson 2
Although the Framework does this for you, so in practice you'll rarely come in contact with this, it's good to knowthe basics about encoding standards.
In .NET, the default enconding type is UTF-16, but you can force your apps to read/write in other types like UTF7, UTF8, UTF32,even old ASCII or ANSI/ISO types.
According to the book, notepad is not able to read UTF-7 or UTF-32 encoded file, but my Vista machine had no problemreading UTF-7 encoded files. Upgrade since XP maybe ?
Anyway, this was an easy, but very interresting lesson. On a more personal note, I tackled this lesson while travellingfrom Diest to Aalst (where my girlfriend lives) ;-)
See ya
Wednesday, October 8, 2008
Picking up where we left off
Chapter 3, Lesson 1: Regular Expressions, oh dear ;-)
Right I was. RegEx is just not my thing. I so struggled through this chapter and I feel I didn't understand half of it.
Nevertheless, I am conviced by the utility of these babies, but I probably need to review this chapter several times again before the exam.
But I think I have the basics. Always start a pattern with a carat and end it with a dollar sign. Katjing ;-)
Friday, September 26, 2008
Silverlight 2 Release Candidate
You can read all about it on Scott Gu's Blog: http://weblogs.asp.net/scottgu/archive/2008/09/25/silverlight-2-release-candidate-now-available.aspx
Silverlight was a disappointment
- AJAX for ASP.NET
- SilverLight
- Webservices
I already have a profound knowledge of webservices, having build and consumed many in my previous coding experiences, so that topic was not really a challenge.
On to AJAX for ASP.NET. Now that's some cool stuff. Very easy to use, but there in also lies a great danger.
Sure adding AJAX functionality to your ASP.NET is just dragging and dropping 2 controls on your page and voila... your page does AJAX.
A project manager will love to hear that.
But what happens behind the scenes ? .NET adds tons of references to online .js resources to your page (making it slighty more heavy to load, especially for low-bandwith clients) and uses those scripts to support your AJAX needs.
The question I felt compelled to ask myself was: What is something goes wrong ? Suppose one day, your partial page update no longer work and you, the developer, graciously used the .NET controls. What answer will you provide ? Probably something like 'Euuhm, well, mmmm, ...., must be Microsoft related ?'
The AJAX controls for ASP.NET are good, cool and very easy to use. Also the AJAX control toolkit for client side AJAX support is very, very nice.
But use them with caution, don't forget to learn about the basics of partial page updates, which are no more then HTTP calls to your server made by your page.
Then came Silverlight. Oh joy. After the slides and a really cool demo of what it can do, we were supposed to do the exercises. Hmmm, that were it went wrong. The course was using Silverlight 1.1, while we had Silverlight 2 BETA installed.
Need I say more ? It was a very disappointing first experience.
Today we'll be covering the last three modules of the course: Managing state, Configuration & deployment and Security. Yay :D
Wednesday, September 24, 2008
The course continues
Completed day 2 and 3 of the "Developing Web Applications Using Studio 2008" here at Info Support.
Traffic on both days was a real pain. Yesterday it took me nearly 2.5 hours just to get to Mechelen. Something that normally doesn't take more then an hour :s
Today was better, but mayB it's because I came from the other side of Brussels ;-)
Anyway, the pace of the course is still slow. Getting a lot of tips and tricks, but no fundamental new stuff so far. I'll be dedicating a blog soon with a summary of all the tips I've gotten over the last couple of days.
It wasn't all bad, off course. Yesterday we briefly covered Linq, which was really cool to say the least. The course covered only the designer way of doing it, but I couldn't resist and wrote my first Linq statement. Amazingly cool and performant.
var s = from peeps in context.people
where peeps.name = "steven"
orderby peeps.dateofbirth;
Just write a syntax like this on a defined DataContext and bind it to a control. The cool stuff about Linq is that it only executes the statement once the databind instruction is called, thus only when data is actually needed.
Today, we will be covering some new 3.5 stuff like AJAX and SilverLight. I'm really exited about these things.
My thoughts go out to my buddy Willy who is doing my presentation in Brugge while I'm taking the course. Respect !
Monday, September 22, 2008
Eric was right :s
well, the first day is almost over, but so far, he was right :s
Really didn't learn much new today, apart from some nice-to-know's:
- var keyword that is new in C# 3.5
- using studio 2008 requires your pc to have a fast disk
- MVC model will become very important in the near future
Besides these things, I did get some good book references:
- Professional ASP.NET 3.5 with C# or VB
- Pro ASP.NET MVC Framework
- ASP.NET AJAX in action
- LINQ in action
- C# 3.0 in a nutshell
This concludes my first, rather disappointing day. Better luck tomorrow, I guess.
See ya
Back to school.......again ;-)
Naturally, there are lots of reasons for this backlog. The most painfull one is work. Work is murder for the moment ;-). Lots of projects to complete, new team members that need mentoring and off cource my first 3 weeks of leave this year that are finally coming up.
In addition, I'll be moving into my appartment in a few weeks. This also generates an additional amount of work, naturally ;-)
Finally, I've met a great girl with whom I'm spending quite a lot of time with. No need to go into details, I think :p
But back to the subject at hand: MCTS certification.
I've started the 2nd part of my cource: the classical Web Applications developer training.
Today's day 1 of 5 of the 1st cource out of 3. Wow, what a sentence, that was ;-).
I normally was enroled for a 5 day course Developing Web Applications with Visual Studio 2005, but the company facilitating the training, Info Support in Mechelen, decided to change it into Developing Web Applications with Visual Studio 2008, for obvious reasons.
This course apparantly is intended for those who never did ASP.NET websites before. Pit of a set back, as I already have some experience with these things.
But nevertheless, it will be a good review and hopefully, I'll get to see some new 3.5 stuff. The teacher is a Martin from the UK, and I'm so enjoying his dry british humour.
Anyways, not much new learned during the first day. The pace off the course is rather slow, hopefully the teacher will pick up the pace a little bit over the next days.
See you soon.
Sunday, August 10, 2008
Chapter 2, Lessons 3 and 4
Honestly, I could easily think of two or three things to do, if it weren't for my leggs being all sore from the 'Dodentocht' yesterday :s
But, rest assured, the Training Kit had 2 very interesting lessons for me to conclude the 2nd chapter: Compression Streams and Isolated Storage.
They were so fun that I did covered them both at the same time.
1st of all using GZip or Deflate standards, you can quickly compress or decompress streams. Just create or open a stream, throwa GZipStream or DefalteStream around the thing and ready you are.
Nice to know is that compression streams work just like any other FileStream based class, so once you have your wrapper, just create a read and write like you are used to. Pretty cool stuff.
Not nice, but good to know is that compression streams are limited to 4 gigs of data.
Once you have understood Isolated Storage, you'll never write user- or application related data in the Program Files folder of the file system.
Properly used, Isolated Storage provides the means to preserve user- or app-related data on the file system, without having to worry about permissions.
In addition it's quite easy to use because, yes yes, the IsolatedStorageFileStream class inherits from.............FileStream class :-D
Once you have configured your Isolated Store, creating a file in Isolated Storage is noting more then creating a new instance of the IsolatedStorageFileStream class and using it like any other FileStream based class.
Just don't forget to tagg your code with the IsolatedStorageFilePermission attribute ;-)
The IsolatedStorageFile controls your Isolated Storage. You can use this to create directories and look for files/directories in you store. Much like the File class actually.
The only method the IsolatedStorageFile does not provide, is the FileExists and DirectoryExists methods.
To counter this, use the GetFileNames and GetFolderNames methods instead.
So, 2 new lessons done and the 2nd chapter is over and done with. Moving on, like with other stuff in my life ;-), to the 3rd chapter which is all 'bout Searching, Modifying and Encoding Text.
See you soooooooon ;-)
Thursday, July 31, 2008
Chapter 2, Lesson 2
The lessons covered System.IO classes, more specifically Streams. FileStreams, StreamReaders and Writers, MemoryStreams, etc.
Being an active .NET developer for many years now, this lesson had little news under the sun.
Speaking about the sun, studying a lesson without learning too many new features while outside the temperature went above 30° was not really motivating :s
Nevertheless, the lesson spoke about MemoryStream. These babies allow you to build in-memory streams to boost performance and limit the risk of file locks. The BufferedStream was very similar to the MemoryStream.
So, not much news to report I'm afraid. Next lessons will be about Compressing Streams. Rather new to me, so should be more fun to go through.
Sweat, sweat, sweat... ;-)
Thursday, July 24, 2008
Chapter 2, Lesson 1
Chapter 2 is all about I/O, one of the most popular topics amung developers, cause we deal with I/O operations all the time.
A developer who says that he never has to access filesystem, needs to get his facts strait ;-)
The first lesson describes the basics about I/O. FileSystemInfo object, FileInfo, DirectoryInfo and DriveInfo all came to pass. Pretty easy.
Then the Path class was discussed. This is a very handy thing. Every question you may have related to a file system path is in this class. Really worth looking into.
Finally the FileSystemWatcher class was illustrated. This nifty thing makes it possible to monitor a filesystem for changes (like new files/directories, deletes, renames and changes). But watch out, too many changes may cause the watcher to throw an excetion !
Next lesson I will be reading and writing to files. Like I havn't done that before, LOL ;-)
See ya
Saturday, July 19, 2008
Chapter 1, Lesson 4
Today I convered the lesson on Converting Between types.
It was a rather short lesson, so there won't be much to tell.
The lesson covered implicit and explicit converion rules and possibilities.
It also addressed best practices to avoid unnecessary boxing and unboxing which was quite cool.
To elaborate, when you do this: int i = 1; Object o; o = (object) i; you are converting a value type to a reference type, which is boxing. Unboxing is the opposite.
This technique involves overhead and should be avoided whenever possible.
So, this was the last lesson of the 1st chapter. Next time, I'll do the chapter review and the chapter case.
Fortunately for me it's raining cats and dogs, so I won't be demotivated by the sun shining outside. ;-)
Stay tuned...
Thursday, July 17, 2008
Chapter 1, Lesson 3
Phew, I thought, this will be a walk in the park. After all, I have been constructing classes for years. Was I wrong...
First topic: Inheritance. Ok, nothing fancy new here, but always good to brush up that know-how.
Secondly: Interfaces. Still doable. Interfaces are cool to work with. Especially when you can define your own, like I recently did for a project at work. No wonder this topic contained little news for me.
Up next: Partial Classes. Nice to know that you can now split code over multiple source files. It surely cleaned up that Windows Form code behind file ;-)
And then, oh yess: Generics. One of the biggies for the exam, at least according to the kit. This lesson is contributed for the biggest part to Generics, so there must be some thruth in that statement.
Although Generics are still quite abstract in my mind, Generics are all about boosting performance and reducing runtime errors. Can't be bad.
Instead of turning to the Object base type for flexibility, you can now let the consuming code of your class determine the Type.
Personal memo for the exam: Nullable is a Generic Type !
The 4th topic was about Events and using Delegates as EventHandlers, while the 5th and 6th topic talked about Attributes and Type Forwarding.
This last thing was quite new to me. It allows you to move a custom type from one source library to another without requiring client application consuming the first one (the one with the type) to be recompiled. Sort of like a 'I have moved to a new address' note for types. Cool stuff ;-)
To conclude: While doing the labs, I noticed that when you develop on Vista using VS 2008, you get all the benefits of the Aero directly in the Windows Forms. This includes the transparent look and the cool progressbar animations.
Next lesson will teach me everything there is to know about Converting Between Types. Feels like I'm back at collage :D
Stay in touch for more MCTS fun...
Monday, July 14, 2008
Chapter 1, Lesson 2
Today I learned about the wonderful Reference Types. Hip Hip Huraay ;-)
Good to remember is that Reference Types contain pointers to data stored on the Heap, where Value Types contain their data directly stored on the Stack.
Reference Types are cleaned up by the Garbage Collection, so everything you put in them is by definition garbage ??? Just kidding.
This lesson gave me some good practices and will probably be and eye-opener for many developers when the String and StringBuilder topic is adressed.
After today, I will NEVER concatenate strings again, without using the StringBuider.
We all did (or do) something like this at least ones in our development carreer:
dim a as String = "This "
dim b as String = a & "Is "
dim c as String = b & "a "
dim d as String = c & "test!"
What you most likely didn't know is that the runtime creates 4 variables of String on the Heap and only keeps a reference to the last one. The other 3 have to be cleaned up by, oh yess, the Garbage Collection.
Imagine the performance cost when you concatenate words that span over many lines into a single string. Gulp!
Hail to the StringBuilder class.
In addition to this usefull info, some basic must-knows came across in this lesson. Like Exceptions and Arrays.
Next lesson is all about Creating Classes. Can't wait for that one ;-)
Dim sb as New StringBuilder()
sb.Append("Be")
sb.Append(" seeing")
sb.Append(" ya !")
MessageBox.Show(sb.ToString())
Sunday, July 13, 2008
Chapter 1, Lesson 1
Today I kicked of the self-paced kit '.NET Framework 2.0 Application Development Foundation'.
Did lesson of the first chapter and learned about Value Types.
Dugh, like I never heard of those before.
Nevertheless, I learned about the wonderfull Nullable keyword. This fantastic addition to 2.0 allows you to declare a variable with the capability or storing Nothing values. Extremely handy for Booleans.
A slightly unusual syntax, but still doable:
- dim b as Nullable(Of Boolean) = Nothing
When declaring your var like this, members such as HasValue and Value become available.
Super start. First lesson and already learned a usefull new thing. Can't wait for the next lesson about Common Reference Type.
Be seeing ya...
Friday, June 27, 2008
Details about my MCTS course
Today I'll blog down the details of the courses and exams I'm going to take in an attempt to get MCTS certified.
An MCTS certificate comes in three different specialisations
- Web Applications
- Distributed Applications
- Windows Applications
I've chosen the Web Applications specialisation for myself.
This means that I will have to pass exams 70-536 Development Foundation and 70-528 Web-Based Client Development. Note that this MCTS targets Framework 2.0.
A student must take several courses in order to be prepared for the exams. You can check out the Microsoft courses for MCTS Web Apps here.
Because I already had some knowledge about the .NET framework, I decided to take a skill assessement first for both exams. This is a trail examination which determince your level of knowlegde and allows you to create a customized training course (and reduces the cost :D).
The people of InfoSupport offer good tools and high quality support to help you determine the most siuitable courses to take.
The skill assessements are much like the real examinations, but without the reward should you pass ;-). My scores are:
- 70-536: 60%
- 70-528: 43%
With these results, InfoSupport offered me a customised training plan. It turned out to be a blended plan, a mix of classical and self-paced training.
Given my current knowlegde of the framework, I can take a self-paced training course to prep for exam 70-536.
To be ready for the other exam, I will follow all the classical courses as advised by the training plan.
The courses at InfoSupport are scheduled for September and November of this year. Which gives me a couple of months to eat through the 1088 pages of the self-paced training kit.
I plan to take the exams in December 2008 and January 2009.
Guess I'll know what I'll be doing the next couple of months ;-)
Stay tuned...
Wednesday, June 25, 2008
Long road to MCTS
Let me start off by how my desire to become MCTS certified came into being.
Nearly a year ago, I was really starting to hang of .NET development. I was learning lots of new stuff as was becoming more and more interested in writing solid good code, then going for the classic 'solution that I knew worked'.
At this time I came into contact with some cool people, like my colleague Eric Rogien. He was in the process of becoming MCTS at the time.
He shared his experience with me and from what he told me, it was really worth the effort.
Soon after, I had my first intake interview with the guys from InfoSupport Belgium. The purpose of that talk was to find out if I was 'MCTS material' ;-)
You need a certain level of knowlegde before you should attempting the exam, they said. It's not that you are going to learn a certain syntax, but it's more about learning new ways and design patterns, things you won't come into contact with in your daily work.
And that's really what is it. Becoming certified for me isn't about obtaining a piece of paper that will increase my market value, but more about learning the way to get the most out of the .NET framework.
After that kick-off, I started working on the pratical issues. How was I going to study for the exam, which traject was I going to take, where was I going to get the cash for it, etc etc.
These things nearly took me 6 months to complete ;-)
A huge effort just to get started, but it has been worthwhile, because I already leared a lot and met some cool people along the way.
Next time, I'll blog down the details of my MCTS course.
Stay in touch...
Tuesday, June 24, 2008
Welcome
Here you will be able to read about my journey from being a non-certified developer/analist to an MCTS certified one, and who knows beyond ;-)
I intend to 'blog' down my experience, cool things I learn, test results, etc etc.
So for those of you who want to become MCTS as well, you'll find some usefull reading here.
But first some things to know about me. I'm a 27 year old developer/analist working for the largest telecommunications company of Belgium.
I'm responsible for developing key business solution at an (sometimes) outrageous pace :D
The solutions I write are mostly for the .NET 2.0 platform, but .NET 3.5 is only a foot length away.
Besides coding, I spent my time running, climbing, hiking and playing the electric guitar.
I hope you'll find this blog useful and feel free to leave your remarks or send me an email if you have specific questions.
Cheers
