1 Part .NET Developer, 2 Parts Personal Developer; 100% Canadian

DevConnections November 10 - 13th

I have decided I will be attending DevConnections November 10 - 13th in Las Vegas, NV

DevConnections has a number of events running at the same time, with registration, you can attend any of these events
- ASP.NET Connections
- VS.NET Connections
- SharePoint Connections
- SQL Connections
- DNN Connections
- Exchange Connections
- Unified Connections
- Windows Connections

Some of the speakers include
Dino Esposito, Rick Strahl, Markus Egger, Robert Howard, Miguel Castro, John Papa, Julie Lerman, Juval Lowry, Kathleen Dollard, Itzik Ben-Gan

There are so many topics, I will refer you to the brochure as it has 50+ listed.
DevConnections, Fall 2008, Las Vegas Brochure
http://www.devconnections.com/shows/images/brochurepdfs/F08_DevBroc.pdf

For me, I am most interested attending these preliminary session topics (and sharing on this blog and in the community)
- Best practices for LINQ N-Tier
- Entity Framework Futures
- ADO.NET Data Services Application Patterns
- Productive WCF
- WF, Service-Ortiented Workflows and SOA

I received a User Group coupon for $50 I wanted to share
Coupon (case insensitive): Regina

The conference cost is $1395 USD if booked by August 27th; $1495 USD after.
If you stay at Mandalay Bay and book before September 8th, you receive a free night stay (free night will be assign to Tuesday Nov 11th); the other nights are at $229 night.

If you are going to be in Las Vegas or at this conference Nov 9 - 13th, be sure to reply to this post or contact me via this blog.

DevConnections

Cheers
Gary Pronych

Determine .NET Framework Version of an Application

I needed to find the version of .NET framework required for a vendor provided application in short order; there was no documentation (of course), the vendor was not available and the super user was not available.
Your typical support scenario.

When you try to run a .NET EXE on a computer that does not have the framework, your application informs you with a prompt along the lines of 'The Application Requires .NET framework version x.x'
If you have the framework installed, it does not prompt you (of course).

I figured it should be as easy as right clicking the EXE and selecting properties or something similar, but no.
The easiest way I found was by using the MSIL Disassembler ildasm.exe
If you have installed the 2.0 SDK you can find ILDASM.exe in this location

c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe

The steps to get the .NET framework version are as follows:
1) Execute ILDASM.EXE from the SDK folder noted above
2) In ILDASM select the File | Open menu
3) Select the EXE or DLL you want to disassemble

ILDASM will now show you the file you selected in #3. You will want to double click the MANIFEST and it will load the manifest in a notepad-like editor.
The top line will read //Medata version: vX.X.XXXX
Where the X.X.XXXX is your .NET framework version.

See the image below

ILDASM.exe

First Chance Exceptions

Recently I was working on an application that uses utilities provided by another DLL. The function I was using creates a custom connection manager based on the destination database.
It seemed every time the connection manager was invoked, it would generate this error.

A first chance exception of type 'System.InvalidOperationException' occurred in System.dll

A 'first chance exception' message notifies you there was an exception in one of your intervening layers. The exception was handled in the layer; therefore it was handled at the first chance.
If you debugger gets a second chance exception, your application will typically crash.
http://support.microsoft.com/default.aspx?scid=kb;en-us;105675

My application was running as expected, but generated the above message in my immediate window; obviously annoying.
I stepped through the code and didn't notice any anomalies, at first I thought this was generated erroneously.
My application is a procedural audit utility to verify data at different times in a manufacturing process, therefore I use this function 40+ times per application execution; it would generate this error on every execution.
As a result of my testing, I thought about disabling the output to the immediate window since the exception appeared to be handled inside the function.
http://www.helixoft.com/blog/archives/24


On second thought, I wanted to know exactly what was generating this message and see if this could be avoided; who knows what pain this exception may cause in the future.
I had access to the source code, so I changed my DLL reference to a project reference so I could walk through the code.

As it turned out, the function was doing a call looking for a AppKey in my App.config.
If the key didn't exist in the App.config, ithe code threw an exception, then the exception would assign a default value.
<exception code>

try
    Dim boolRunMe As Boolean
    'below causes a NullReferenceException when calling .ToString on an empty Configuration attribute
    boolRunMe = CType(ConfigurationManager.AppSettings("RunMe").ToString, Boolean)

catch ex as Exception
    boolRunMe = False
end Try

</exception code>


For some people setting this value in a exception may be a suitable solution; but what if something else threw the exception? In this case, the least of my worries would be to assign a default value. In this case, you may want to catch specific exceptions.
For me, I want to avoid an exception at this point since this function is called many times; throwing exceptions at this frequency is less efficient than other methods (we have run internal tests on multiple exception throwing).

The code I implemented to verify the key rather than forcing an exception to handle this scenario

<AppSetting key test code>
Dim boolRunMe As Boolean
'Avoid an exception by check for the existence of the attribute  
            If String.IsNullOrEmpty(ConfigurationManager.AppSettings("RunMe")) Then
                boolRunMe = False
            Else
                boolRunMe = CType(ConfigurationManager.AppSettings("RunMe").ToString, Boolean)
            End If
</AppSetting key test code>

Lesson learnt:
I have seen my share of Visual Studio bugs so I was quick to write this off as 'by design'.
If you have access to any suspect code, do yourself and your team a favor; walk through the code to review if this odd behavior is by 'your design'.


Cheers
Gary Pronych


Community Launch Post-Op

April 30th Regina.NET and Regina IT Pro held the hereos community launch event.
As far as I know, this was going to be the largest locally run (local speakers, facilities and sponsorship) IT community event.

We booked 3 - 100 person classrooms and we had 3 speakers providing sessions that run concurrently, then repeated.
The schedule looked like this

  Windows Server 2008; Room X SQL Server 2008; Room Y Visual Studio 2008; Room Z
6:30 AD, Hyper-V New Datatypes, Resource Governer LINQ, AJAX
7:30 AD, Hyper-V New Datatypes, Resource Governer LINQ, AJAX


We had 80 people sign up online and at least that many actually attend!
We worked on this event for weeks, when it came to game time, this event was a lot of fun.

At 8:30 we all got together in a larger classroom and we gave away Xbox toys, retail copies of Vista and 3 technet plus subscriptions.
Will Craddock who hosted Regina's community connection event came through with a lot of these prizes; he had a lot of left over launch kits so we gave these away at the end of the event.

Post-Op

I provided the Visual Studio 2008 sessions; I had a lot of fun sharing what I learnt. The number 1 problem I had was that I demonstrated a product that I had very little experience with.
I had been playing with LINQ and AJAX for a couple weeks so I felt confident in my abilities, where I stumbled at times was implementing the correct syntax. I recovered by referring to my cheat sheet and explaining the 'gotcha' I hit and explaining what that feature did.
The evaluation forms where also favorable; comments included too much material, not enough time.

Running concurrent sessions then duplicating was an interesting idea; after reviewing the material feedback was 50% positive.
My first session had approximately 40 people attend; my second session had 20 people so I saw a sharp drop off. I suspect people who wanted to attend my session came first, the second session included people that had a secondary interest in VS 2008.
I will definitely be interested in hosting an event like this again; we had Developers, DBA's and SysAdmins attend 1 event. A number of people showed up early and there was a lot of networking going on. A comment I received was 'Man, I haven't seen Dave in months, he is always at his client site. It was good to chat'.

Some comments included 'start on time!'; we didn't allocate anytime for a break. When attendees changed sessions some people ended up hanging out in the hallway, Q & A was extended, etc; Note taken, allocate at least 15 minutes between sessions or else bring a cattle prong.

Below is a picture taken during setup; we had great facilities at the University of Regina, built-in projector, screens, instructor stations.
The U of R has been going through some major renovations due to growth, so parking was definitely an issue.
As a result, feedback from attendees is that this location is inconvenient (50% or so) and I agree. The facilities were donated by the U of R, I cannot do better than that so I will have to work to make this convenient. Maybe reimburse parking fees or use the education building which is closer to parking.

As a personal post-op; this event was a lot of fun!
1 hour sessions where great for me as a first time public speaker.
If there is anyone out there that wants to share your knowledge in a field, 'Just do It'. Contact your local user group and I am sure they would love to assist you in anyway.


Going forward, I am thinking about providing a deep dive in the fall; attendees loved the material presented in my sessions. My focus was to hit a number of areas where attendees can easily take advantage of VS 2008 today. Hopefully in the fall more developers will be using VS 2008 so the deep dive will be relative for them.

 


Regina, SK: Spring Seminar

CIPS Regina has done an incredible job setting up a 2 day seminar May 13 - 14th in Regina, SK.
This seminar has Tech, Business and Student tracks on the first day; Tech and Business tracks on the second day.

Dr. Venkat Subramaniam, is the feature presenter at this seminar.
Dr. Venkat Subramaniam, founder of Agile Developer, Inc., has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia. He has significant experience in architecture, design, and development of software applications. Venkat helps his clients effectively apply and succeed with agile practices on their software projects. He is a frequent invited speaker at various international software conferences and user groups.

Dr. Subramaniam will be providing these sessions:
- Test Driven Development (TDD)
- The Business Value of Test Driven Development (TDD)
- Practices of an Agile Developer

Other sessions include:
Jeff Sandquist, Microsoft Evangelist - Working in a Changing IT World
Richard Baker - Information Security Trends

A full session listing can be found on the CIPS brochure
http://www.cipsregina.ca/assets/files/CIPS-SSBrochure2008.pdf

Registration and Costs:
Costs range from $200-300 for CIPS members and $325-425 for non-members

To register or for more information, please visit the CIPS Regina website at
http://cipsregina.ca/springseminar2008.html  
Registration deadline is May 9th.

This is a great opportunity learn skills to adapt in a changing IT World.
If you are in the Regina, SK area, I hope to see you there.

Is Your Job Sexy?


This week I had a couple meetings with employers on the theme of recruitment.
Personally, I am a fan of training and grooming rookies in a self proclaimed IT shortage as I spoke about in a previous post.

For my client, hiring a rookie is not an option (in their opinion).
They have had 1 open position for 1 year; now a 2nd position has opened.


The first open position has been posted numerous times in the employers format with little success.
When I look at job postings, I typically see this format
   1) required experiences
   2) required skills
All employer expectations; my question is, What can employees expect?

Job requirements are essential for the interview process, people need to know what tasks to expect in a job with your company.
In the IT market, employees are typically the beneficiary of multiple offers; the tables are turned as the employee is interviewing the employer. Therefore employers need to be prepared to differentiate themselves from the other organizations.

Since I have joined my current development team, 2 additional members have also joined; our team size is currently 7 members; unfortunately we are losing a key member shortly.
The dynamics of our team have changed significantly with the addition of new employees and the lose of a key employee.
I am happy to say that we are taking this as an opportunity to rebrand our team and development strategy.
We are going to adjust our strategy based on the current skills of the team and the needs of the client.

As a part of rebranding, I am recommending an employment strategy I call 'Is Your Job Sexy?'
Yes, the influence of Justice Gray (North America's favorite metrosexual software consultant) has reached my heart.

What Is a Sexy Job?
A sexy job is what work your employer (ala employer<jobs>) does that attracts developers.
Every employer has it's pros and cons; the focus here is, what does your shop do well or offer employees?

The easiest way to recruit existing talent is to find out why people are leaving their current jobs.
A quick Google will give you a number reasons to look for a new job, for example,
Reasons To Look For A New Job

For analysis, I will break these reasons into categories.

Technology
What technologies and methodologies does you team use?
Are your projects challenging?

Atmosphere
Flexible work schedule, dress code, workstation setup, office layout

Dynamics
What kind of internal support do employees have access to? Business Analysts, Architects, Senior Developers
Coaching meetings, retraining

Compensation
Salary and Benefits

These are all preliminary categories and items, you are welcome to adjust them how you see fit.

Someone call Wikipedia, we are breaking new ground here!

Community Launch Hits Regina, SK



WoW, it took a couple weeks to get everything in order; but we are excited to be hosting
Heroes Happen {Regina} April 30th in Regina, Sask, Canada.
I worked with the local IT Pro user group to create this night of community run technology sessions.

What is interesting, is that we are holding 3 sessions concurrently, then we are running the same session again so attendees can participate in 2 of our 3 sessions.
They layout will look like this

  Windows Server 2008; Room X SQL Server 2008; Room Y Visual Studio 2008; Room Z
6:30 AD, Hyper-V New Datatypes, Resource Governer LINQ, AJAX
7:30 AD, Hyper-V New Datatypes, Resource Governer LINQ, AJAX

We thought about doing it code camp style; 3 session rooms, 2 unique sessions.
We decided against this because attendees are often torn 'Man, I want to be in room Y but room Z sounds sweet'.
Stress no longer my friends.

Will Craddock will be providing the Windows Server 2008 sessions.
Vance Petriew will be providing the SQL Server 2008 sessions.

Yes, I am trying to hide my session since this will be my *first* public presentation; I might be a little nervous and possibly a lot drunk. ;)
I will be providing the Visual Studio 2008 sessions.
I am pretty excited actually, I am hoping to provide a couple more sessions this year.

If you are in the local area, I hope to see you out.
Registration can be found here
http://www.clicktoattend.com/invitation.aspx?code=127735

Cheers

IT Employee Shortage or Not?

During my local Microsoft Community Connection event, one of the key topics was the IT labor shortage.
Local IT PRO user group leader and MVP,  Will Craddock recently described the IT shortage and added some perspective from Regina, Saskatchewan, Canada.

Clearly, there are more jobs available now then ever, but why are these jobs going unfilled?

I am a .NET user group leader in my community; in my role, I have been exposed to some of the employee / employer challenges.
In the past 1 year, I have had 2 recent graduates contact me looking for employment opportunities. They had short term employment and had troubles finding development position in the local market.
I referred these developers to employers in need.

How did their interviews turn out?
<quote>
Sorry, we are looking for someone able to hit the ground running.
</quote>
As a result, these developers were forced to leave the local community to find employment in other markets.

I have been in interviews as the interiewer and interiewee when this expectation is voiced by the employer.
Look at any job posting, you will likely find the tag 'x years experience required'.
If employers are limiting their criteria by those with experience,  there will be no new talent.
The same developers with experience end up revolving around the industry.

I believe this is in part because development shops typically run at 110%.
Once they hit the 120%+ mark they will likely say
'Holy crap, we are paying a shitload of OT... we need another developer stat!'
Running a development shop at 90% means 10% wages are going towards non-billable activities; which looks bad on your employers bottom line.

My advice to these employers is to make an investment in your employees.
Spend the 10% slack time on internal projects or training activities.
It is likely your organization has a number of legacy applications (Brownfield applications) that could use some TLC.
 

So before the IT industry starts screaming 'The Sky is Falling!!' they should consider opening up their employment strategy.
As developers, we are constantly looking for ways to be agile; maybe employers can take note.

The Shortcomings of Windows 2008 Server Core

I spent a couple hours today installing Windows Server 2008 on my home server.
I have to admit, this was the easiest and fastest Windows OS software install I *EVER* completed.

My goal was to build a Windows 2008 Server as a VPC host using Hyper-V; I literally spent more time installing the Hyper-V Role than installing the Win2k8 OS (I suppose this is the benefit of Role based installations).
Do yourself a favor and download this utility (http://www.grc.com/securable.htm) to verify your BIOS is configured properly if you are going to use Hyper-V.
They do a good job in explaining WTF these features are, and how to enable them.

Now I had my VPC host running, my next task was to answer this question, 'What is all the buzz about Windows 2008 Server Core... and could it make my life easier?'
The simple answer (as a .NET user / developer)? No

The concept of a Server Core is solid;
- Smaller footprint, smaller attack surface
- Install only the features you need in the form of Roles

Why Server Core sucks?
1) I am a Windows guy, not a *nix guy, so the lack of GUI was going to make my life difficult
2) None of these features currently work in Server Core (Known Issues)
  • IIS-ASPNET
  • IIS-NetFxExtensibility
  • IIS-ManagementConsole
  • IIS-ManagementService
  • IIS-LegacySnapIn
  • IIS-FTPManagement
  • WAS-NetFxEnvironment
  • WAS-ConfigurationAPI
The key reason for issue #2 is explained as
'The Web Server (IIS) role does not support ASP.NET in Server Core installations.
Because there is no support for managed code, the following IIS features are not available in Server Core installations'

Now, read the second line carefully and say with me, "NO SUPPORT FOR MANAGED CODE".

Yes folks, that means all .NET code, ASP.NET, WinForms, SQL 2005... any and ALL products build on .NET.
WoW, I have to catch my breath... no .NET support on a Microsoft product; I might as well install Windows NT 4.
Well, at least Server Core 2008 supports ASP and PHP (!)... well, so does NT 4.

At least I can convert my VPC / Virtual Server 2005 R2 VHD's to be Hyper-V compatible.

Regina Community Connection Event: Post-Op

As D'Arcy shared on his blog last night, Will Craddock and Rodney Buike hosted a Community Connection event sponsored by CIPS and Microsoft in Regina, Sask, Canada.
We had a great turn out, expected 175 people, I would assume 100+ attended although I did not get the final numbers.

This event type was certainly new to our market; it followed the idea of Open Spaces that has been all the rage in the community.
What I was most impressed with, is the fact that Microsoft made an effort to enforce community and bring new ideas to market.
Our learning circle topics where
1) Impact of virtualization on the IT industry 
2) Application lifecycle
3) Importance of security – Data, management, privacy
4) ICT skills shortage and declining interest in ICT careers.
5) Software plus services and the impact on the industry.


For each topic we had a host that gave each topic some guidance.
4 principals are a part of open spaces
  • Whoever comes are the right people
  • Whatever happens is the only thing that could have
  • Whenever it starts is the right time
  • When it's over, it's over
D'Arcy hosted the 'software plus service', or SOA (Service Oriented Architecture), track which I attended.
Our group had about 10 attendees with mixed experienced with SOA; a couple attendees had no experience.
At first we attempted what SOA means to us by defining it.
They we talked about the benefits, challenges and how to implement an SOA.

My only caveat is each group needs to have at least 1 individual with some knowledge or experience to give the conversation some credibility; which may challenge 'whoever comes are the right people' principal.
In technology, there is often no silver bullet, and often no less than a dozen ways to complete the same task; which is why I agree with this principal.

As a user group leader, I plan on offering similar events to my local user group because of this positive experience.

For all my readers, I highly recommend that you can attend the community connection event, or similar events in your area.
You do not have to be an expert to attend, all you need is interest in the topic and you qualify.

I wanted to give special thanks to D'Arcy Lussier for attending our event and hosting one of the learning circles; even though he is from Winnipeg; the home of the Grey Cup champions, and Ridernation, welcomed even a lowly 'pegger.
D'Arcy, in my opinion, has gone out of his way time and time again to build and assist user communities.
Mad props D.
Takeaways;
- Always bring a camera to user group events (for user group leaders)
- Pilsner beer is king on the prairies
- Should I fear or embrace the igloo of love? TBA