Blog Home  Home | The Bookshelf | Presentations | About Me Feed your aggregator (RSS 2.0)  
James Kovacs' Weblog
 
 Tuesday, December 30, 2008

My blog has been quiet these last few months. With the economic downturn and various friends' contracts being terminated, I am busy making hay while the sun shines. I have clients with paying work and so I'm staying busy while the work remains available. I'll have lots of time for blogging when I'm between contracts. That said, one of my New Years resolutions is to "Never stop sugarcoating the facts without notice". (Brought to you by the Resolution Randomizer.)

image

Seriously, one of my major New Years resolutions is to blog and screencast more. That means more Becoming a Jedi episodes, a series of posts on psake and using PowerShell as a build tool, as well as some other ideas that are in-the-works. Other things that I'm currently excited about, and you'll likely find posts about in the coming months, include MEF, ASP.NET MVC, jQuery, multi-step refactorings, Prism/WPF, and convention-over-configuration (in both ORM and IoC) to create maintainable applications.

So stay tuned. More content is on its way.

Tuesday, December 30, 2008 11:18:38 PM (Mountain Standard Time, UTC-07:00)  #    Comments [0]    | 

Oh, DevTeach! How I love thee! Let me count the ways! Thank you to everyone for another awesome DevTeach in Montreal at the beginning of this month. The agile track was well-received and included some of the old guard as well as some fresh new faces. I had wonderful time hanging with many friends, whom I only see in person at conferences. If you're looking for slidedecks and code from my sessions, you can find them here:

Taming Software Dependencies with DI and IoC - Slides (PPTX) and Code (SVN)

Achieving Persistence Ignorance with NHibernate - Slides (PPTX) and Code (SVN)

I would like to thank everyone who participated in the Agile Q&A with James Kovacs and Friends. The session was originally proposed and was going to be led by David Laribee, but he fell ill at the last moment and unfortunately missed DevTeach. David has done a marvellous job leading these sessions in the past with more panache and style than I was able to muster, but I hope that participants found value in the discussion. My friend, Kathleen Dollard, put together a nice summary of some of the high points and Oren has some commentary on one of the more contentious points that he made here.

If you missed DevTeach Montreal, we are currently planning DevTeach Vancouver, which will take place June 8 to 12, 2009 at the Vancouver Four Seasons Hotel. I have again accepted the position of Tech Chair for the Agile Track and we are looking for speakers. If you're interested in speaking, abstracts are due by February 10, 2009 and you can find all the details here. Please take heed of the submission tips! I would encourage you to submit more than four (4) sessions as it is highly unlikely that we'll be able to use all of your submitted sessions. (If you're a local speaker - no hotel or travel expenses - then you only need one session accepted.) In the past, accepted speakers have submitted 8 to 12 sessions and had 3 or 4 accepted. (N.B. For DevTeach Vancouver, non-local speakers will be required to present 4 sessions.) I would also encourage you to submit sessions predominantly to one track with a few extras in other tracks. When deciding on sessions, it is easier for one Tech Chair to accept four of your sessions than to have four different Tech Chairs each want one of your sessions. If you have three strong sessions in one track, it is fairly easy to find a single slot for you in another track - hence the extra sessions in other tracks. I have had the unenviable position as agile track chair of wanting a really interesting session from a particular speaker, but the speaker's remaining sessions are "Introduction to Unit Testing", "Getting Started with CI and CruiseControl.NET", and "Using Mock Objects to Simplify Testing". Those are all great sessions, but when Roy Osherove (who was writing a book on unit testing), Owen Rogers (one of the maintainers of CruiseControl.NET), and Oren Eini (creator of RhinoMocks) submit sessions too, guess who I'm going to have to pick? So hedge your bets. Submit 8 to 12 sessions mostly in one track on topics that you're excited and knowledgeable about. Thank you in advance for your submissions.

I will be delivering a pre-con at DevTeach Vancouver. So if you're interested in a full-day session on how to turbo-charge your development process while still creating maintainable applications, then you'll want to attend Agile Development with IoC and ORM. The cost is $399 CAD (or $339.15 USD) per attendee. (N.B. You get a discount if you attend a pre-con, the conference, and a post-con.)

Agile Development with IoC and ORM

As developers we now have powerful tools in our toolbox, such inversion of control containers and object-relational mappers. But how can we use these tools to rapidly build maintainable and flexible applications? In this pre-con, we will look at advanced techniques such as convention-over-configuration in IoC containers and automapping ORMs to quickly build applications that can evolve over time. We will use test-driven development (TDD) to design and evolve a complete working application with supporting infrastructure during this one-day workshop.

Tuesday, December 30, 2008 11:14:46 PM (Mountain Standard Time, UTC-07:00)  #    Comments [0]    | 
 Tuesday, October 21, 2008

image Tonight, Bil Simser and I had the pleasure of presenting a brief overview of Prism (aka the Composite Application Guidance for WPF and Silverlight) to a crowd of 150 developers at Shaw Court in Calgary. You can find the slidedeck here. If you're interested in getting started with Prism and related concepts, this is a good set of resources to start from:

Thanks to everyone whom came out. If you have any questions, don't hesitate to contact me or Bil. If you'd like to find out more about Prism and go much deeper into the underlying technology, there is always Microsoft Tech•Days Canada 2008...

Zombie Inc.BTW - Some of you might have caught the inside joke in the slidedeck. For the rest... Bil does not in fact work for Zombie Inc., though he probably wishes he did. He is a big fan of the game Stubbs the Zombie: Rebel Without a Pulse. 10 minutes with Paint.NET and I had a decent looking corporate logo for his fictitious company. It's really quite amazing what you can do with this free .NET application, though the true Paint.NET master remains Justice Gray.

Tuesday, October 21, 2008 10:28:33 PM (Mountain Standard Time, UTC-07:00)  #    Comments [1]    | 
 Wednesday, October 15, 2008

My first dnrTV episode went live today. I am talking with Carl Franklin about dependency inversion, dependency injection, and inversion of control. I demonstrate how to build a very simple IoC container. My intent is to show developers that it isn't any thing crazy scary. I talk about how IoC facilitates decoupling dependencies and creating more easily testable software. Check it out!

dnrTV #126: James Kovacs' roll-your-own IoC container

Feedback is always welcome.

Carl and I plan to do another show focused on IoC containers in the next few weeks. Specifically we'll be talking about what a full-fledged container offers over and above the roll-your-own. If you have other IoC questions you would like answered on the next show, drop me an email.

Wednesday, October 15, 2008 11:05:33 AM (Mountain Standard Time, UTC-07:00)  #    Comments [7]    |  |   | 

I was going sysprep a base image of Windows Server 2008 this morning and followed my own instructions on sysprepping Windows. I went to the installation DVD and couldn't find sysprep. A quick google later and a bit of poking around revealed that sysprep is now installed by default on Windwos Server 2008. You can find it at:

c:\Windows\System32\sysprep\sysprep.exe

The experience is also streamlined considerably. Simply run sysprep.exe above and you are presented with:

 image

Change the Shutdown Options to "Shutdown" and click OK. The system will go through the sysprep process and shut itself down. You can now create cloned servers to your heart's content simply by creating linked servers and booting the clone as originally documented here.

Wednesday, October 15, 2008 10:47:56 AM (Mountain Standard Time, UTC-07:00)  #    Comments [0]    | 
 Tuesday, October 07, 2008

Just realized that I never announced it, but I will be giving a double-header presentation at the Regina .NET User Group tomorrow night - Wednesday, October 8, 2008 from 5:30 to 8:30 pm. You can find directions and registration here.

Session 1: Taming Software Dependencies with Dependency Injection (DI) and Inversion of Control (IoC)
Software inevitably contains dependencies. Dependencies between classes. Dependencies between layers. Dependencies with third-party libraries. How can concepts like dependency inversion, dependency injection, and inversion of control help you tame your software dependencies? Where does an inversion of control container, such as Castle Windsor, come into the picture and do you need one? Can Binsor help you achieve convention over configuration? This session answers all these questions and more...
Session 2: Achieving Persistence Ignorance with NHibernate
Object-relational persistence can be very complex and middle-tier code is often dominated by persistence concerns. Your Customer class probably contains more code related to loading and saving customers to the database than it does actual business rules about customers. Wouldn't it be nice if you could remove all this persistence-related noise? This session examines why the concept of persistence ignorance is important and how to use NHibernate to build persistence ignorant domain models.

I have a busy calendar of events in the next few months. I'll post my other appearances in the next few days...

Tuesday, October 07, 2008 9:39:46 PM (Mountain Standard Time, UTC-07:00)  #    Comments [0]    | 
 Wednesday, October 01, 2008

image A Reading from the Book of Armaments, Chapter 2, Verses 9 to 21 (Wikipedia | YouTube):

...And Saint Attila raised the hand grenade up on high, saying, "O Lord, bless this Thy hand grenade that with it Thou mayest blow Thine enemies to tiny bits, in Thy mercy." And the Lord did grin and the people did feast upon the lambs and sloths and carp and anchovies and orangutans and breakfast cereals, and fruit bats and large chu... [At this point, the friar is urged by Brother Maynard to "skip a bit, brother"]... And the Lord spake, saying, "First shalt thou take out the Holy Pin, then shalt thou count to three, no more, no less. Three shall be the number thou shalt count, and the number of the counting shall be three. Four shalt thou not count, neither count thou two, excepting that thou then proceed to three. Five is right out. Once the number three, being the third number, be reached, then lobbest thou thy Holy Hand Grenade of Antioch towards thy foe, who being naughty in my sight, shall snuff it."  -- Monty Python

And this shall be my third year as a MVP. I received the official email from Microsoft this morning notifying me that I have been re-awarded. Congratulations to everyone else who was awarded or re-awarded today! A special call-out to some very deserving first-time MVPs... Ben Scheirman, Jessica Moss, and Derik Whittaker. I look forward to another fun-filled year of mischief, mayhem, and software development!

Wednesday, October 01, 2008 1:08:59 PM (Mountain Standard Time, UTC-07:00)  #    Comments [2]    | 
 Sunday, September 21, 2008

Since Hamilton called me out, I thought I should comment on my recent tribulations around a new laptop. (For those of you wondering, Twitter is unlike Las Vegas. What you say on Twitter doesn't stay in Twitter.) :) I'm in the market for a new laptop as my Dell D820 is giving me problems. The battery life is currently around 2 minutes. (The 9-cell battery, which initially got 8 hours run-time, is quite near death after only 2-1/2 years of use - mostly plugged in.) The replacement battery was going to cost over $300, but wouldn't solve the lack of hard drive space, the need for more memory, or the slow processor. (The system is 2-1/2 years old, which is ancient for a developer laptop.) Heck, a new D830 with similar specs to my D820 would have cost less than $1000, which isn't that much more than the battery!

I was seriously considering a MacBook Pro, likely running Vista. (I know. Blasphemy!) The MBP was very tempting, but the price was steep for something I would consider developer-grade. As Hamilton noted, over $3000 for decent, but not stellar components. I was close to buying the Dell E6500, but the poorly-rated NVidia Quadro 160M put me off. (I've had Quadro chips before. They are awful for anything other than CAD/CAM. Want to flake out with the occasional game while on the road? Forget it with a Quadro chip.) Another serious contender was an Alienware m15x, but loaded with developer-grade goodies pushed the price well above $3200 CAD. The systems are built in Miami, FL and I didn't get the warm fuzzies when I talked to their sales department. I got the distinct impression that any serious problem would require return to Miami for service, which isn't acceptable for a business laptop, IMHO. Still there is a coolness factor to the Alienware systems.

I've never considered myself a "ThinkPad" guy, but when I saw the specs of the T500 plus the price, I jumped at it. For $2K CAD (including tax and shipping), I got a 2.8GHz Core 2, 4GB RAM, Radeon 3650, and a bunch of other goodies. The one downside is that the largest 7200rpm hard drive available on this model is 160 GB. I can always replace it later if needed. One great feature is the dual video cards - an integrated Intel X4500 and the ATI Mobility Radeon 3650. You can switch between the cards without rebooting and reviews indicate that going to integrated adds about 1.5 hours to your battery life, which is already around 4.5 hours. The screen is 15.4" widescreen at 1680x1050 - same as the Dell D820 that I'm replacing. (I've had a 15.4" 1920x1200 and it hurt my eyes. I run my 24" Acer X243W monitors at 1920x1200, which is awesome.) I considered laptops with 17" screens, but they're quite heavy and unusable in airplanes. (My friend, John Bristowe, told me, "Sure, you can use a 17" in an airplane. You just kind of angle it right and type on your chest." Uh, yeah...) Hamilton's description of "a hundred LEDs blinking in your face" worries me, but it's already ordered. I await the T500 with expectation and trepidation. I'll let you know my impressions once I receive it.

Sunday, September 21, 2008 8:07:36 PM (Mountain Standard Time, UTC-07:00)  #    Comments [2]    | 
 Sunday, September 07, 2008

Alright, alright. I give in. I'm finally twittering along with the rest of the planet. You can find me here:

http://twitter.com/JamesKovacs

You can expect witty banter, scintillating insights, and breathtaking news bites... 140 characters at a time.

If you're looking for a good Twitter client and you're running Windows, I would recommend Witty, a free WPF-based Twitter client. Very pretty, very functional, and very non-intrusive. Highly recommended. There is even a ClickOnce installer.

Sunday, September 07, 2008 9:22:57 PM (Mountain Standard Time, UTC-07:00)  #    Comments [0]    | 

image A big thank you to everyone who completed the ORM with NHibernate survey. The results have provided me with a lot of food for thought with respect to organizing future courses. Some answers were expected while others were surprising. Rather than bore you with the details, let me get to what you really want to know... Who won the JetBrains ReSharper license? Using an advanced combination of digital and analog randomization technologies (e.g. I printed out the list and pulled one out of a hat), the winner is Brett Baggott of Nashville, TN. Congratulations, Brett. In the words of Obi-Wan Kenobi, "Use it wisely..."

In other news... The Castle Project PMC has selected its winner for The Great NHibernate/Castle Giveaway. Drum roll please... The winner is Markus Zywitza of Aarbergen, Germany. Markus has received Visual Studio Team Suite with MSDN Premium. Asked why he was chosen, he humbly suggested many other project contributors more deserving than himself, but added this explanation.

My involvement of Castle began some 18 month ago as a user. My main involvement with Castle is documentation and small enhancements and bug fixes. Writing docs is a structured approach to learning for me, and I am willing to share what I create through learning. I guess that was the reason for the PMC to select me, as the documentation has been neglected lately.

-- Markus

The NHibernate team is still debating the most deserving recipient. (I'll remind them again in another week or two...) Fabio Maulo - the current project lead - has received his subscription after a bit of work on my part. (I unilaterally decided that the third should go to Fabio, as I mentioned in the original announcement.) I would like to offer a huge thanks to an unexpected person. First let me give you a bit of background. I sent Fabio his license activation code, but it didn't work as the code turned out to be valid only in Canada/USA. (Fabio lives in Buenos Aires, Argentina.) I contacted MANY people at Microsoft to see what could be done. No one could solve the problem of getting Fabio a license key. As a last resort, I emailed S. Somasegar, Senior VP of DevDiv, himself asking for his assistance to solve the problem. That was on a Thursday. I didn't expect an answer. The guy is a senior VP and I'm a lowly MVP. Plus I was giving the license to the project lead of NHibernate and DevDiv was in the midst of finalizing Entity Framework v1. (I didn't expect that to have any bearing, but you never know. Conspiracy theorists eat up this type of stuff.) On Monday - just two business days later - I received a personal email from Soma himself informing me that he was getting the issue resolved and apologizing for the confusion around the licenses! Sure enough, James Rice and Manuel Hernandez contacted me and Fabio. They got the license sorted out in short order. So a huge thanks to Soma for his responsiveness and his support of the .NET community.

Sunday, September 07, 2008 9:06:02 PM (Mountain Standard Time, UTC-07:00)  #    Comments [0]    | 
Copyright © 2009 James Kovacs. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.