About Me

Training

Nothin But .Net Developer Bootcamp

Navigation

Search

Categories

On this page

Visual C# 2005 Keyboard Shortcut Poster
Powershell For Vista - Get It While It's Hot
I'll Be At DevTeach 2007
So long (SlickRun) and thanks for all the fish
Thanks Victoria Code Camp
See You at the Victoria Code Camp
Windows Developer Tools Day
And the timer sucks because....
What a waste of timer
Nothin But .Net (Bootcamp Course) - Richmond, VA
Source Code For January 10th Presentation
Enterprise Patterns Talk - Source and Retrospective
5 Things
Happy New Year

Archive

Blogroll

 Agile Developer Venkat's Blog
 Ayende @ Blog
 B#
 Barry Gervin's Software Architecture Perspectives
 Boy Meets World
 Brad Abrams
 Canadian Developers
 Christopher Steen
 Claritude Software News
 Clemens Vasters: Enterprise Development and Alien Abductions
 Coding Horror
 Coding in an Igloo
 Dare Obasanjo aka Carnage4Life
 Darrell Norton's Blog [MVP]
 David Hayden [MVP C#]
 Don Box's Spoutlet
 Eric Gunnerson's C# Compendium
 EZWeb guy: Jeffrey Palermo [C# MVP]
 Fear and Loathing
 Generalities & Details: Adventures in the High-tech Underbelly
 Greg Young [MVP]
 Greg's Cool [Insert Clever Name] of the Day
 IanG on Tap
 Ingo Rammer's Weblog
 ISerializable - Roy Osherove's Blog
 James Kovacs' Weblog
 Jason Haley
 Jean-Luc David
 Jeremy D. Miller -- The Shade Tree Developer
 JetBrains .NET Tools Blog
 Jimmy Nilsson's weblog
 John Bristowe's Weblog
 John Papa [MVP C#]
 Jon Skeet's Coding Blog
 JonGalloway.ToString()
 Jump the Fence or Walk Around
 Lambda the Ultimate - Programming Languages Weblog
 Larkware News
 Lutz Roeder
 Marquee de Sells: Chris's insight outlet
 Martin Fowler's Bliki
 Mike Nichols - SonOfNun Technology
 MSDN Magazine - .NET Matters
 MSDN Magazine - All Articles
 OdeToCode Blogs
 Onion Blog
 Planet TW
 Raymond Lewallen [MVP]
 Rockford Lhotka
 RodMan's Corner
 Roger Johansson's blog
 Sahil Malik - blah.winsmarts.com
 Sam Gentile's Blog
 Scott Bellware [MVP]
 Scott Hanselman's Computer Zen
 ScottGu's Blog
 secretGeek
 Service Station, by Aaron Skonnard
 Signum sine tinnitu--by Guy Kawasaki
 Stephen Toub
 Steve Eichert's Blog
 Steven Rockarts
 The Blog Ride
 The Coding Hillbilly
 The Daily WTF
 TheServerSide.net: News
 Tim Gifford
 Vance Morrison's Weblog
 you've been HAACKED

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

RSS 2.0 | Atom 1.0 | CDF

Send mail to the author(s) E-mail

Total Posts: 519
This Year: 28
This Month: 0
This Week: 0
Comments: 1593

 Tuesday, January 30, 2007
Tuesday, January 30, 2007 9:19:09 PM (Mountain Standard Time, UTC-07:00) ( C Sharp | Tools | VS2005 )

If, like me, you are a keyboard junkie wanting to sharpen you keyboarding skills in VS 2005 you might appreciate this PDF that contains the default keybinding for Visual C# 2005. Thanks to Lucio Assis for providing me with the link!!

This is a great place to start getting more proficient navigating around studio without the mouse. If you really want to take your keyboarding skills in studio to the next level do yourself a favour and pick up a copy of JetBrains ReSharper, then you can really start to fly.

Comments [1] | | # 
Tuesday, January 30, 2007 4:58:50 PM (Mountain Standard Time, UTC-07:00) ( Tools )

Looks like the Vista installer for Powershell got finished up, which is good news for those of us waiting for a fully supported Powershell for Vista. Head over to this link to download a copy. Powershell is da bomb.

Comments [0] | | # 
 Monday, January 29, 2007
Monday, January 29, 2007 9:04:10 PM (Mountain Standard Time, UTC-07:00) ( Presentations )

I have the amazing honor of being able to speak at DevTeach 2007 in Montreal this spring.  I'll be giving talks on:

  1. Refactoring - A Primer
  2. Applied Patterns Of Enterprise Application Architecture

The lineup looks amazing, and I am truly honored to be a part of it all.

Comments [1] | | # 
Monday, January 29, 2007 8:49:40 PM (Mountain Standard Time, UTC-07:00) ( Tools )

My good friend Terry Thibodeau just posted about a new version of Launchy that allows me to finally remove SlickRun from my machine so I don't need to run them both. I won't go into the details, check out his post.

As an aside, keep an eye on his blog as this guy is a storehouse of tech/dev knowledge, and he has only just started blogging.

Comments [4] | | # 
Monday, January 29, 2007 4:35:22 PM (Mountain Standard Time, UTC-07:00) ( Presentations )

This past weekend (January 27th) I presented at the Victoria Code Camp. It was a blast. The people were awesome and the questions were great.

My family and I flew up and arrived Thursday morning. We did the tourist thing for Thursday,Friday, and Sunday.

The turnout was impressive (close to 100 if I remember correctly). With 3 tracks going on there was lots of good information to be snapped up by attendees. It was great to also hang out with fellow friends and bloggers James Kovacs, Justice Gray, and the Igloo Coder.

Great thanks to Nolan Zak and the rest of the code camp organizers for giving myself and others the opportunity to present!!

Also, for our first time in Victoria, we were blessed with great weather (according to locals).

I look forward to having an opportunity to go back and do some other work with the folks in Victoria!!

Comments [4] | | # 
 Tuesday, January 23, 2007
Tuesday, January 23, 2007 10:58:44 AM (Mountain Standard Time, UTC-07:00) ( Presentations )

As most of you can probably tell, to the suffering of this blog, I am spending more time lately doing the presentation / mentoring thing!! For me it is a lot more fun (than blogging) as it allows me to cover topics at a greater level of detail, plus it has the bonus of allowing me to meet some really great developers. And because my wife and I home school our kids, we all travel together which gives us great opportunities to see new places.

What's next in the presentation pipeline:

  • Victoria Code Camp - January 27th (this coming Saturday) - Along with a host of great speakers who are lined up, I will be giving 2 presentations
    • Applied Patterns Of Enterprise Applicaton Architecture - 11:00AM - 12:00PM
    • Generic - Theyr'e not just for collections - 1:00PM - 2:00PM

If you happen to be in Victoria this weekend try and make it out to the code camp. With the speakers who are presenting, and the material that will be covered it will be a great investment of time.

Comments [7] | | # 
 Friday, January 19, 2007
Friday, January 19, 2007 3:35:49 PM (Mountain Standard Time, UTC-07:00) ( Tools )

Thanks to Igloo Coder for reminding me that today (Jan 19th) is the unofficial "Windows Developer Tools Day".

I have a lot of tools in my utils folder, the ones that I use almost everyday are:

If you are on the lookout for a crazy list of tools, check out Scott Hanselman's ultimate tools list!!

Comments [1] | | # 
Friday, January 19, 2007 12:43:03 PM (Mountain Standard Time, UTC-07:00) ( .Net 2.0 | C Sharp )

Following on from the last post, Ayende reminded me that I forgot to use reflector on the offending piece of code. Here is code taken straight from the System.Timers.Timer class that shows exactly why it is behaving the way it is (pay attention to the try block):

 

private void MyTimerCallback(object state) { if (state == this.cookie) { if (!this.autoReset) { this.enabled = false; } Timer.FILE_TIME file_time1 = new Timer.FILE_TIME(); Timer.GetSystemTimeAsFileTime(ref file_time1); ElapsedEventArgs args1 = new ElapsedEventArgs(file_time1.ftTimeLow, file_time1.ftTimeHigh); try { ElapsedEventHandler handler1 = this.onIntervalElapsed; if (handler1 != null) { if ((this.SynchronizingObject != null) && this.SynchronizingObject.InvokeRequired) { this.SynchronizingObject.BeginInvoke(handler1, new object[] { this, args1 }); } else { handler1(this, args1); } } } catch {
//if an exception occurs in the forest, does anyone handle it? } } }

And there we have it (ok, so I added in the comment in the catch block)!!

Comments [3] | | # 
 Thursday, January 18, 2007
Thursday, January 18, 2007 11:03:19 AM (Mountain Standard Time, UTC-07:00) ( .Net 2.0 | C Sharp )

I was working on a project at a client site almost a month ago, and ran into an annoying issue with the System.Timers.Timer class. The following code snippet should demonstrate the issue clearly:

 

public static void Main() { System.Timers.Timer timer = new System.Timers.Timer(3000); timer.Elapsed+=delegate { Console.WriteLine("About to throw unhandled exception"); throw new Exception(); }; Console.ReadLine(); }

 

If you go ahead an run this code you can quickly take note that the program does not die. It will continually output the message "About to throw unhandled exception" until you press a key and hit enter.

If , however, you make use of the System.Threading.Timer class :

 

public static void Main() { Timer timer = new Timer(delegate { Console.WriteLine("About to throw unhandled exception"); throw new Exception(); },null,3000,3000); Console.ReadLine(); }

The program will die a horrible death (as expected) and you could deal with the error accordingly using a global error handler. Of course, using a global error handler is only useful if the unhandled error can be caught in the first place in the case of the System.Timers.Timer this is not the case:

 

public static void Main() { AppDomain.CurrentDomain.UnhandledException += delegate { Console.WriteLine("An unexpected error occurred."); }; Timer timer = new Timer(3000); timer.Elapsed+=delegate { Console.WriteLine("About to throw unhandled exception"); throw new Exception(); }; timer.Start(); Console.ReadLine(); }

Just a quick bit of information in case you ever run into this problem.

Comments [1] | | # 
 Monday, January 15, 2007
Monday, January 15, 2007 3:41:23 PM (Mountain Standard Time, UTC-07:00) ( Training )

I have now secured a location and date/time for a course to be held in Richmond, VA (the facility is actually located in Midlothian, but its close enough!!) for the dates of March 26-30. The following is a description of the course with a registration link at the bottom of the page.

 

Overview

Nothin’ But .Net is a five day boot camp that will focus on pragmatically applying .Net within the context of developing a working N-Tiered application. Registrants will learn about advanced features of .Net (2.0/3.0) as they are applied to the task of building a complete application from the UI layer all the way down to the mapping layer.

WARNING!!!!

If you are expecting to come to this course to learn about how to have VS.Net automatically generate an “application” for you, then this course is NOT for you.

This course is all about taking control of the .Net framework and having it work the way you want. This course will place a heavy emphasis on getting back to the basics and making .Net do things the way you want it to, in a predictable and testable way.

This course will focus on a code centric view of application development vs. the typical databinding/designer magic covered by many typical .Net courses. You will walk away with a deep understanding of fundamental aspects of .Net and how these pieces can be used to develop and deliver enterprise scale applications.

Core Concepts Overview

  • Expanding the capabilities of developing with VS.Net - Enter ReSharper (a productivity add-in for Visual Studio .Net)
  • There’s more to life than generated code
  • Automation for the developer
  • Generics ( they’re not just for collections )
  • Back to basics - Rules Of Good Object Oriented Design
  • Dependency Injection
  • Object Relational Mapping in .Net
  • Applying the dependency inversion principle
  • Domain Driven Design
  • Passive View/Supervising Controller (Model View Presenter)
  • Creating layered architectures
  • Driving out functionality and design through testing
  • Taking Control Of Databinding
  • Behavior (Test) Driven Development
  • Core design patterns applied
  • Pragmatic Productivity Tools For Developers

Although the list may look rather daunting, the majority of the bullet points will be covered during the evolutionary design and construction of the sample project.

One of the main goals of the course is to show how to effectively use behavior (test) driven development, design patterns and a solid toolset to develop a portion of a non-trivial application.

The course will allow students to pragmatically apply BDD practices as well as teach people how to utilize fundamental OO concepts and techniques that will allow for them to have cleaner, more loosely coupled architectures. It will also be an opportunity for students to see what is involved in creating applications that utilize a Rich Domain Model,and the supporting infrastructure that is required to use "Plain Old Objects".

I have successfully delivered this course several times with great success. I anticipate that people who are interested will find that this is a very unique course offering, not typical of what is being delivered in the mainstream.

There are only spots for 14 people to register. The course costs $2500/US for a full 5 days. The fee covers:

  • 5 (8 - 12 hour days, depending on the audience availability) of bootcamp style instruction
  • Book - Patterns Of Application Architecture
  • ReSharper 2.0 License
  • Breakfast and Lunch

If you have any questions please don't hesitate to contact me at bitwisejp@gmail.com.

To Register for the course please use the following link:

Comments [6] | | # 
 Saturday, January 13, 2007
Saturday, January 13, 2007 1:15:15 AM (Mountain Standard Time, UTC-07:00) ( C Sharp | Presentations )

Just in case my last post was not clear enough (as you had to read to the bottom to see that there was a link to the source code!!) I am reposting a link to the source code for the presentation I gave to the Calgary .Net User Group on Enterprise Design Patterns. The talk quickly turned into a primer on the concepts of Dependency Inversion and Dependency Injection, which in my opinion are great concepts to be familiar with when wanting to tackle enterprise patterns properly.

During the course of the presentation I demonstrated how to first create a lightweight interface for an IOC container. I then developed a simple implementation that was then replaced with an implementation bound to the Windsor container which also utilized Binsor (great little tool developed by Oren Eini) for the container configuration.

If anyone has any questions about the source please do not hesitate to contact me.

One last time the source code is here!!

Comments [3] | | # 
 Friday, January 12, 2007
Friday, January 12, 2007 4:44:01 PM (Mountain Standard Time, UTC-07:00) ( Articles | Presentations )

This past Wednesday (10th January) I gave my first talk of the year to the Calgary .Net User Group. It was the first of the lunch and learn formats that the group is starting up for the new year. What did this mean? It meant that the usual 1.5 hrs that I am used to was decreased to 1hr. As you can imagine, the pace at which I zipped around was faster than normal.

All in all I was pleased with the turnout (almost 70) and felt that lots of good information was shared. The evaluations also showed that ,all in all, most people were pleased with the level and content of the presentation.

If you are a member of a Canadian user group (or non-Canadian user group for that matter) and would like to have me give a talk, please contact me at bitwisejp@gmail.com and we can see what can be worked out. Being a member of the MSDN Canada speakers bureau means that Microsoft can offer support in the event that a Canadian user group wants me to give a presentation. I love getting out there, meeting new people, and fielding all sorts of interesting questions.

The source code for the presentation is available here (make sure to read the readme file in the root directory if you have questions as to how to get the app running).

Comments [1] | | # 
 Tuesday, January 09, 2007
Tuesday, January 09, 2007 11:17:26 AM (Mountain Standard Time, UTC-07:00) ( General )

Bil Simser was the first to tag me in this game so here is a list of 5 things that lots of people don't know about me.

 

  1. I was born in Newcastle-Upon-Tyne, England. I lived in England until I was 14 years old. At the age of 14 my parents moved us to Medicine Hat, Alberta, Canada.
  2. I have been married to my high school sweetheart for just over 10 years. My wife and I met on one of the first days of high school. We had grade 9 english together and got to know each other a little during this time. At the beginning of grade 10 we hung out for a little while (I was very shy), we went out on a "date" where I ended the evening by telling her how I would love to date someone just like her (not one of my smartest moves!!). We were best friends for most of grade 11, and started dating at the end of grade 11. 4 months after graduation we were married.
  3. My wife and I have 4 beautiful children ranging from 9 years old to 1 year old. This is always something that baffles people as most people who meet us are always stumped at how large our family is. This is mostly due to the fact that we look much younger than we are!! My favourite lines in reference to our perceived age is:
    1. "It's so nice that you are spending the day looking after you brothers and sister!!".
    2. (Solicitor coming to the door) "Are your parents home?"
  4. I wrote my first computer game at 8 years old on a BBC Microcomputer. This was the first computer that I ever received. It came with a book on BBC Basic. I proceeded to teach myself enough to write a Pong game. After that brief (fun) experience with programming it was not until the age of 18 that I would start programming on a computer again.
  5. I'm 28 years old. Now you know!!

In the spirit of this blog tag I now tag:

Comments [0] | | # 
 Monday, January 08, 2007
Monday, January 08, 2007 10:17:07 PM (Mountain Standard Time, UTC-07:00) ( General )

It's a little late, but "Happy new year"!!

I am completely pumped about the potential for this new year. I am excited about the potential of meeting a torrent of new people while training/presenting/developing!!

I just got awarded a MVP so I am thrilled that my efforts in the community have been recognized. One of the great things about being an MVP is being in a position to nominate other MVP's. I have met with a lot of people over the last year who definitely (in my opinion) deserve to have their efforts recognized.

The month of January is already off to a good start. I will be presenting in Calgary on January 10th:

Enterprise Patterns
With Jean-Paul Boodhoo
Wednesday, January 10th, 2007
At LUNCH TIME: 12:00pm–1:00pm
Registration start at:  11:30 am
Roxy-Theatre B
Sunlife Plaza Conference Centre
112 - 4th Avenue SW, Calgary

 

If you are in the Calgary area, feel free to stop by and ask questions/say hi.

I am also looking forward to January 27th as I will be presenting some sessions at the Victoria code camp. It should be a blast.

See you on the road!!

Comments [6] | | #