Kevin Grohoske

Senior Software Engineer 
MCPD-WEB, MCPD-WIN, MCSD

“Who Am and Why Am I Here?”

Wednesday, August 12, 2009 06:28 | posted by: kevin

Admiral James Stockdale, a true American military hero running for Vice President, used this line as deadpan joke in 1992.  It failed miserably and they wen on to lose the election. Well I’m using it here to explain why my blog has been inactive as of late.

I am currently working on my MBA and working full-time. I will try to do better at updating the blog, but obviously my narcissistic blogging priorities have been lower on the list. I will do better!

Best regards,

Kevin

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

A first look at Visual Studio 2010 (VS2010)

Tuesday, June 16, 2009 06:24 | posted by: kevin

Microsoft’s marquee development tool is poised to make some great strides in making .NET developers even more productive than they are already today. Though it is still only Beta 1 and MS does not plan to release the tool until late 2010, there is a significant numbers of features that appeared to be production ready (along with a few that are currently promised for Beta 2).

Looking around

On first glance there is something different about the UI/UX. It may be that the graphics team is still cleaning up the look and feel or it could be that the IDE is written using WPF. Either way it definitely needs a bit of refinement in my opinion. On the bright side the new tool will support dual monitors.

If you into test driven development there is a whole new menu section dedicated to TDD. I haven’t had time to look at the particulars, but it is encouraging to see some MS effort in this space.

Extension Manager promises to be beneficial by providing sample project templates, directly from the IDE, that follow best practices guidelines.

Help is more helpful by linking to Sample Applications from MSDN directly.

Coding Is King

One of my favorite IDE shortcuts is the new “Generate Class From” context menu that allows you to write a declaration like below you can right click on the NewObject() and choose “Generate Class From”. This will create a new class file using the object name and create the stub for the class. Additionally you can right click on the Methods and generate the method stubs, including parameter types, for each method.

NewObject newObj = new NewObject();
newObj.FirstMethod();
string new str = newObject.SecondMethod(5);

Another feature that is long overdue and helps when working on very large projects is if you right click on a method declaration name or call you can choose to see the View Call Hierarchy, which allows you to see when the method is defined and all instances in the project where the method is called. Goodbye find in project searches to determine all of the locations a method is called.

Welcome to C# Optional and Named Parameters! If you done any VB development, you have long used optional parameters and perhaps even named parameters. Now they have been introduced in C#. They are structured a bit differently in C#, but are easy enough to use. You simply add a default value to the parameter in the method signature.

Optional Parameter Example -

// This Code:
public void ExampleMethod(int requiredInt){...}
public void ExampleMethod(int requiredInt, string optionalString)
{
//do something with optional string
ExampleMethod(requiredInt)
}
// Becomes:
public void ExampleMethod(int required, string optionalString=null){..}

I’m curious how many snobbish C# folks will switch from overloaded methods though. I know these people they don’t play nice and were hated on the playground.

Name Parameters go hand-in-hand with Optional Parameters in C# because you need to use named parameters to call methods with Optional Parameters. You cannot simply use the VB notation ExampleMethod(x, , y). Empty parameter clauses will error out so you dothe following when calling a method with optional parmeters. In your method signature all optional parms need to be defined last, just as in VB.

// method signature
public void ExampleMethod(int required, string optionalString=null, string optionalString2){..}
ExampleMethod(requiredInt: 4,){...}
// only optionalparams need to be named
ExampleMethod(4, optionalString2: "test"){...}
// OR all param's named which is legal and more readable
ExampleMethod(requiredInt:4, optionalString2: "test"){...}

There are a couple new Data Types also in C#:

  • BigInt, which is the equivalent to BigInt in JAVA, will be used for most commonly for encryption keys.
  • And dynamic…

Ah dynamic a regression of a data type that was not well received at my presentation. Dynamic is like object, in that it can hold any data type, but !!!! it can also be used to call any method or property on the object. Unlike all other things in C# dynamic is well… dynamic … or non-statically typed. In other words you do not need to know what type the object will hold, only how to use it. You will not get a compile error if you attempt to use a method or parmeter that is not available for the object, you will only get run-time errors when attempting to use the object improperly.  For example with dynamic all the following is legal:

dynamic d1 = 7;
dynamic d2 = <span style="color: maroon">"a string"</span>;
dynamic d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
//casting back:
int i = d1;
string str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;

Yes, it will be abused (so don’t hire hacks). Yes, it will remain because it was created for Ruby, Python, and other dynamically typed languages. It will be very handy for Office API calls and late-binding!!!

Multi-targeting will extend from .NET Framework 2.0 to .NET Framework 4.0 (including Client Profile). 4.0 Framework Client profile will not be a web installation only and will now support 64-bit. It will also include new classes such as EntityFramework run-time, Extensibility Framework, Dynamic types, Parallel Programming (nope I haven’t mentioned that yet), and some support for WCF.

Another one of my favorite demo’s is the code snippets. If you get a chance find out more about these. I can see this improving development efforts and increasing productivity for software shops with internal coding standards.

Ok. I’ll stop for now… But there is plenty more!!!

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Why I’ve Never Taken A Facebook Quiz

Thursday, May 14, 2009 06:23 | posted by: kevin

facebookwarning.png

Did you know your personal answers on FaceBook Quizes/Games/Applications can and are sold to advertisers? Including email address, name, address, relationship status, medical info, etc. Once you open a FB application the application’s developer has access to everything in your profile!!!

I begrudgingly joined FaceBook a few months back to find out about my upcoming year high school class reunion. I was quite surprised how much I liked using the site to keep up with extended family and connecting with old friends (even the ones I did not like so much back them - you know who you are).

After signing up I was inundated with invitations for beer, bowling, and hugs all through FaceBook, of course. But something in the back of my mind prevented me from running any of them. I couldn’t get past the ominous warning that states, “Allowing {application name} access will let it pull your profile information, photos, your friends’ info, and other content that it requires to work.“I kept saying whydo they need access to my information so I can go bowling or accept a free virtual beer.

Well now I am very glad I refrained even though I’m sure I could have gotten a 150+ IQ test result and immediately joined Mensa. PC World has a nice article that explains why I kept refusing to click through, even though I didn’t know why at the time. Fear of the unknown is sometimes good.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Debugging Classic ASP With Visual Studio 2008 SP1 and 3.5 Framework

Thursday, April 30, 2009 06:22 | posted by: kevin

As much as I’d like never to debug complicated classic ASP code again, the fact is it’s everywhere in the enterprise today. Here is one way that I have found to speed up the process of supporting classic ASP w/ VS 2008 SP1/3.5.

At the last User Group meeting, I presented the features in the VS08 SP1 and 3.5 Framework. One topic/feature was only lightly covered in the documentation, but really jumped out at me, was that with Visual Studio 2008 SP 1 and 3.5 Framework VS 2008 can debug classic ASP code (script). I tried to find more information online, but the details were hard to find.So after a bit of research and trial and error I am sharing what I learned with you!

Here’s How:

1. Allow Server Side Debugging inside IIS Manager for the web site.

IIS Manager Settings

2. Open the Web Site in VS 2008 IDE by File - Open - Web Site and browsing to the directory that the IIS’s web is pointed to.

Open Web Site

3. Accept FrameworkUpgrade Warning (if prompted).

Framework Upgrade Warning

4.  Configure Web Site Startup Properties to open correct website through IIS url (http://localhost/…)

Web Site Properties

5.  Run Web Site in Debug Mode (F5) and accept Web.Config warning.

Allow .NET Debugging

6. In VS 2008 IDE Debug Menu select Attach To Process and choose the dllhost.exe process

Attach to dllhost.exe process

7. Begin Debugging By Setting Breakpoints in the IDE.

Visual Studio 2008 Debugging

That’s is !!! Ok so what changes were made to the original process?

When you exit the it VS 08 will prompt you to save a solution file.

And… A web.config for the .NET Debugger will be created in the root of the web. You should remove it when you deploy to production.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Laws of Positive Leadership

Tuesday, April 14, 2009 06:21 | posted by: kevin

Great guideline from Toastmasters Intl.

  • Give more than you expect others to give.
  • Combine optimism and perseverance.
  • See everyone as a diamond in the rough.
  • Express appreciation; accept responsibility.
  • Keep your ego in check.
  • Show respect for the people around you.
  • Treat team members as family.
  • Be a source of inspiration.
  • Stress cooperation, not competition.
  • Maintain a sense of humor.

http://www.toastmasters.org/MainMenuCategories/FreeResources/QuestionsaboutLeadership/PositiveLeadership/LawsofPositiveLeadership.aspx

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

Senior/Mid/Junior – How do you know the level?

Thursday, April 09, 2009 06:20 | posted by: kevin

Today I responded to an inquiry as how to judge whether an developer is a Senior/Mid/Junior level.

Here is my rule of thumb (with some commentary):

A senior requires little or no supervision, can work with the business teams independently, understands current technology and is looking ahead to new trends, and constantly creates personal growth opportunities, can lead and mentor other developers. (They make others more valuable as well as themselves)

A mid-level can do tasks independently but needs some guidance on architecture or direction. (Their value is the work they produce)

A junior requires task guidance and supervision. (Their value will begin 12-24 months down the road)

I think in our business we have too many seniors that do not the basic soft skills, are not current with technology, and get promoted because of time in the position and not necessarily what value they create for the organization. This is one reasons organizations are seeing their development maintenance cost continue to increase, but productivity flattening or even decreasing.

I think an ideal IT departments spread would be 20-70-10 (Senior/Mid/Junior) but most are top heavy with seniors that should be mid.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

On Tuesday I presented, “Getting the Most Out of SharePoint” at the Web Technologies Conference in Spanish Fort, AL, which was co-sponsored by Microsoft, The Gulf Coast Technology Conference, and Bit-Wizards.

Despite a few technical glitches and last minutes emergencies, the entire day went very well. I received a ton of very positive feedback about how the presentation had a good balance between technical and ‘C’ business type level content, which is great because that was the tightrope I was trying to walk. If you’ve never given a technical presentation, you can’t appreciate how difficult it can be to find the right balance.

During intermissions I had a great time mingling and telling old war, IT horror, and Cincinnati/Dayton stories with attendees. I hope we get to do more of these because SharePoint adoption is growing by leaps and bounds, but in the haste to implement too many people (IT and Business teams) are painting themselves in a corner or not getting the ROI they could, thus it becomes SharePoint’s fault.

I don’t think we’ve published our slide deck yet so below are highlights of my presentation:

SharePoint should become the hub of your business activity-

  • The built-in resources/features should be leveraged for all future Intranet applications.
  • Imagine productivity gains by not having to start from scratch security/reporting/search/workflow/forms when developing Line of Business (LOB) applications
  • If you dream it… it can be done.

Have A Plan -

  • It is not just an application you install and run with - that is the recipe for failure Business and IT Stake Holders should be involved Develop and communicate the following:
    • Governance Document
    • Business Requirements
    • Project Plan
    • Project Design
    • Branding Design
    • Training Plan

Integrate it with Existing Applications and Data Extend ROI by keeping existing business systems - 

  • Any line of business (LOB) application that .NET technologies can communicate with can be integrated with SharePoint
  • You can integrate existing web applications or use the underlying data in SharePoint
  • Let SharePoint be the ecosystem for your Intranet applications

Brand Your SharePoint - It’s not a question of Fashion or Function – you can have both

  • Out of the box SharePoint 2007 looks dated and plain
  • Branding will help ‘sell’ SharePoint up and down the organization chart
  • For extranets you can extend your corporate brand to vendors and outside companies alike

Microsofts’ SharePoint is the 800lbs gorilla and will continue to get better.

  • Fastest growing server product
  • 100+ million licenses sold
  • 1 billion in revenue in FY08
  • Growth of 35% over FY07

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

IE8 Performance Tip {fix}

Monday, March 30, 2009 06:19 | posted by: kevin

If you are having performance issue with IE 8, follow this authors advice and do the following:

From a Command Prompt window, run the following command:

regsvr32 actxprxy.dll

That re-registers the ActiveX Interface Marshaling Library, an obscure DLL that most people (even Microsoft experts) had never heard about. (Update: 27-Mar: Note that if you try this using Windows Vista, you must do this from an elevated Command Prompt window; type cmd in the Start menu Search box, right-click the Cmd.exe shortcut, and then choose Run As Administrator. For detailed instructions with screen shots, see this post.) …The results {ARE} stunning

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

In One Day Internet Explorer 8 Eclipses Google Chrome

Friday, March 20, 2009 06:18 | posted by: kevin

Without any fanfare Microsoft’s IE 8 browser’s has already surpassed Google Chrome.

Maybe the following article should have been titled, “In One Day Internet Explorer 8 Eclipses Google Chrome”, rather than, “IE8 launch bumps browser’s market share by 30%”.

Here is the overall findings:

  • “IE8’s market share averaged 1.63% for the day Thursday from noon Eastern time onward”
  • “By comparison, Google Inc.’s Chrome, which debuted last September, had a 1.15% market share during February”

http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9130128&intsrc=news_ts_head

Tags:

PermaLink   E-Mail Article   RSS Comment Feed  

My View: IBM to buy Sun - Not a positive signal for JAVA

Wednesday, March 18, 2009 06:17 | posted by: kevin

If IBM does in fact buy Sun, which according to the WSJ they are in talks to do, I believe that will officially be the first nail in the coffin for JAVA and its legions of downstream vendors. The language itself has been a mature (if not slightly legacy) technology since Sun lost significant market value and stopped trying to compete directly with Microsoft’s .NET. Spring, struts, and all the other major improvements made to JAVA has been done by third parties for some time. Sun went so far as to public source the language awhile back hoping to keep their costs down while still fostering innovation in that product space. I’m no JAVA junkie, but I have not seen much come from that open source licensing effort that has significantly impacted the software development industry. To me, the idea of IBM throwing a ton of resources on JAVA technologies is optimistic at best.

Update: IBM decided against buying Sun Microsystems which is probably good for both Sun and IBM. Oracle then moved in and snatched up Sun less than a week later. This will be a much healthier relationship for both parties involved and may spur some badly needed innovation in the JAVA space. Still yet that might not translate to better business solutions unless you are running Oracle databases.

Tags:

PermaLink   E-Mail Article   RSS Comment Feed