Wednesday, May 18, 2011

Do You Have Control of Your Database?

I prepared the following talking points to facilitate a round table discussion on Database Source Control titled “Do you have [source] control of your database” with a local chapter of Professional Association for SQL Server.

Most software developers use some form of source control for their software code, but it seems less common to take the same precautions with their databases.

Tuesday, May 17, 2011

Submitting an AppMakr app to the Windows Phone 7 Marketplace

I made a Windows Phone 7 app using AppMakr for reading Lean-related content from prominent Lean bloggers. That was easy, but there didn’t appear to be any instructions for how to get the app added to the App Hub. So here they are.

Log into your AppMakr account. There are a number of ways to get to your build. Either click the “App Builds” link in the top navigation or click the “Builds” button on one of your applications (as shown in the image below).

image

Pick the latest build that you want to submit to the marketplace and click the Download App button.

image

You will be presented with a dialog to open or save the zip file. Choose to save it to a location on your PC.

image

Important: Rename the file extension from .zip to .xap (which is the Silverlight application package deployment file). You will have to create the necessary Windows Phone 7 iconography (icons and screenshots needed for submitting to the app hub). You may be able to use some of the ones you used to create the application in AppMakr.

You will need an App Hub Developer account to submit applications to the Windows Marketplace ($99/year). After you have that, log in and from the “my dashboard” navigation link, select “Windows Phone”.

Click the “submit new app” button.

image

Fill out the form fields. Click inside the Application package box with the Plus (+) sign. A file open dialog will appear. Select the .xap file that you renamed after downloading from AppMakr earlier.

image

Continue through the process of providing an application description and uploading the necessary icon images. After you finish, sit back and wait for your app to go through the testing and certification process.

 

Technorati Tags: ,,

Monday, May 9, 2011

Switching to C#

neon sign - foreign language bookstoreAfter more than 7 years of VB.Net development, I have made the conscious decision to split my development into primarily VB.Net for most of my ASP.Net projects and C# for my Windows Phone 7, Silverlight, and WPF work. This transition was due to three primary driving forces:

  • Early Windows Phone 7 development (pre-RTM) was limited to C# due to the lack of availability for VB.Net support on the WP7 platform.
  • There appears to be a larger codebase of Silverlight and WP7 utilities, samples, and tutorials in C# to learn from.
  • I have had an easier time finding advanced Linq syntax examples in C#.

The syntax differences are not much different. I was already used to the most common syntactic differences, such as parenthesis, squiggly brackets, and semi-colons from my earlier work in PHP and Java. I would have started in C# if it were not for the Classic ASP and VB.Net applications I was supporting years ago in my .Net 1.1 beginnings.

Of course, the language selection is always trumped by complying with my clients’ corporate development standards and selecting the appropriate language for the job where the differences are relevant.

photo credit: avlxyz / CC BY-SA 2.0

Friday, April 15, 2011

Career Transitions Presentation to Ball State University

I was asked to speak to the Six Sigma Student Organization in the Whitinger Business Building about the transitions a person may fear while changing roles of a student to professional as well as transitions that may take place while a person is pursuing their career. The talking points from my presentation are below.

Wednesday, April 13, 2011

SQL Saturday #67 Chicago

SQLSaturday 67 LogoMost of the sessions I attended involved improving performance. Whether it was proactive (design for performance) or reactive (troubleshooting), most sessions included some coverage of indexes. Surprisingly there very little duplication of content by the different speakers. Because of the quality and relevance of the all sessions offered, it was difficult to decide which sessions to attend. Below is a brief recap of the ones I chose.

Sessions

Performance Tuning Made Easy with Thomas LaRock

Being a certified Six Sigma Black Belt, I appreciated the way Tom (blog|twitter) described a simple systematic process for performance tuning based on the Six Sigma DMAIC (Design, Measure, Analyze, Improve, Control) approach.

The Optimizer, Statistics, and Indexes with Grant Fritchey

Grant (blog|twitter) gave a great primer to the internals of the Relational Engine, the components of which have really cool names like Query Parser, Algebrizer, and Optimizer. He also spent more time discussing the Statistics histogram, which appeals to my six sigma senses, than I generally see in an hour long presentation.

WIT (Women in Technology) Panel: Energizing the Next Generation

This session seemed to have a balanced number of men and women in attendance. It was nice to hear the perspective of multiple women with different backgrounds sharing their experiences in the field. I’m really happy that most of their experiences sounded positive even in the face of adversity.

Refactoring SQL with Jeremiah Peschka

Jeremiah (blog|twitter) really highlighted the importance of using consistent naming conventions and common alias names. He touched on SQL unit testing and some open source test frameworks. He also showed refactoring examples such as, re-writing where clauses to move functions from the left side of the operator to the right side for performance gains.

Database Design Contentious Issues with Karen Lopez

This was one of my favorite sessions. It was interactive as the participants had to walk to the front of the room and anonymously vote (via post-it note) on a scale of 1 to 5 on our opinion/view of two issues which people often passionately argue about, such as, surrogate keys vs. natural keys. People that admitted to voting on the extremes (one or five) were asked to explain why they voted the way they did and open the topic for group discussion. Karen liberally made effective use of Canadian SWAG (like ketchup flavored Pringles) to persuade the edge-case voters to plead their case in the face of possible peer criticism. Karen (blog|twitter) expertly moderated the discussion and provided great pro/con examples on both sides even where it conflicted with her own views. It was both fun and educational.

Index Internals for Mere Mortals with Michelle Ufford

At a lightning quick pace, Michelle (blog|twitter) brought a great deal of insight to index internals. She showed actual representations of index pages and pointed out key elements of it, including the “uniqueifier”. She covered a great deal of information in the short one hour, but it was very clear, understandable, and educational.

Lunch

The lunch was provided by Meaty Balls. It was plenty of tasty meat and mushrooms for the price.

Check-in

The organizers offered a “Speed Pass” option where I printed my name tag, lunch ticket, and raffle tickets off in advance which meant I could sleep in a little before heading to Chicago.

Venue

The conference was hosted at the DeVry University Addison Campus which had great classroom spaces. There were ample power outlets available on the table tops for each attendee to plug in, if desired. I wish I had remembered to bring the AC adapter for my GPS for the trip home since my car lighter adapter stopped working before the trip.

Networking

I was within a SWAG keychain throw of several SQL Celebrities like Kevin Kline (blog | twitter) and Brent Ozar (blog|twitter). Brent was sitting behind me in three out of five sessions I attended - and no, I’m not a SQL Stalker.

I finally got to meet Wendy Pastrick face-to-face after several email and twitter conversations over the last year.

Credit-worthy

I’ve been running the fwPASS User Group for a few years and to do just an average job takes a surprising amount of time and effort. See my case study on continuous improvement in a professional association for more information. The organizers did an exceptional job that deserves more thanks than I can provide. I’m not sure if this is inclusive of all the organizers (which I copied from Doug Lane’s blog), but THANK YOU:

Wendy Pastrick (blog|twitter)
Ted Kruger (blog|twitter)
Norman Kelm (blog|twitter)
Jes Borland (blog|twitter)
Bob Pusateri (blog|twitter)
Aaron Lowe (blog|twitter)
Bill Lescher (twitter)
Rich Rousseau (twitter)

Thursday, April 7, 2011

IIS is Missing XAP Mime Type for Silverlight Application

lego mimeUpon navigating to the web page hosting a newly deployed Silverlight application, I received the following error:

Error: Unhandled Error in Silverlight Application
Code: 2104   
Category: InitializeError      
Message: Could not download the Silverlight application. Check web server settings  

Thanks, but which server settings? In my case the MIME type for the .xap extension was missing in IIS7. I’m not sure why it was missing since .xaml and .xbap were already defined. I simply added the “.xap” extension and it’s corresponding MIME Type “application/x-silverlight-app” and all was well.
Xap Missing Mime Type In IIS

photo credit: e v a . p é b a r / CC BY 2.0

File URI invalid for WCF HTTP Endpoint

System.ArgumentException: The provided URI scheme 'file' is invalid; expected 'http'.

disconnectedThe error occurred when debugging a Silverlight app that uses Windows Communication Foundation (WCF). When running the debugger, the IDE was launching the html file hosting the Silverlight application, but it was launching it in the browser using a file path, F:\Projects\MyLOBApp\Bin\Debug\TestPage.html, not through IIS as http://localhost/MyLOBApp/TestPage.html. The application was using the following code in a global application class to set the URL to the WCF service.

public static string WebServiceUrlPath
{
    get
    {
        Uri uri = new Uri(Application.Current.Host.Source, "../AppDataService.svc");
        return uri.AbsolutePath.ToString(); 
    }
} 

My solution consists of two projects:


  1. The Silverlight application project
  2. The WCF service project

Upon closer inspection of the file path, Visual Studio was launching the test page from the Silverlight project when it should have been launching the test html page from the WCF project. The simple solution was to set the WCF project as the StartUp Project. That should have been more obvious especially in light of the following message box that popped up before the debugger started, but it was initially overlooked because of the similar project names and html page filenames in the two projects.


image


photo credit: satemkemet / CC BY-SA 2.0