New Things Learned in the Labor Camp
I am not known for understatement—don’t mistake my weird academic formalism (near word salad at times) as understatement. So, when I say that my last few weeks of employment is as close to a “dream job” (as eating lunch by the hour on the Amgen campus), “sure” one might say—“whatever.”
So let’s see how this “dream job” thing progresses (to something like dream quality-of-urban-life and dream debt-freedom). What I definitely possess are the following technical skills:
Shelving in TFS also prevents work from being overwritten…
In “The IT Workplace: Doing it Basil Style” and “The Politics of Team Foundation Server (TFS),” I clearly reveal that my ignorance of the power of shelving in Team Foundation Server was strong with me. I should have read “What is Shelving in TFS? just a soft checkin so others can see code?”—which was, by the way, written in the winter of 2009. Here’s some news to me:
- Shelving is a record (proof) that (incomplete) work was done for the day.
- Shelving allows two (or more) developers to work on the same code files—such that the developers can reconcile their work via merging.
- Shelving allows one developer to work on two (or more) future “change sets” pseudo simultaneously.### Using WCF to return JSON from a jQuery AJAX call…
So this “dream job” is not perfect: as I’m the dude who would prefer to work with Azure Table Storage and/or RIA Services, being asked to build an AJAX call from jQuery to a WCF service should be quite unpleasant for me. Instead, I now have something to talk about to an interviewer frozen in the .NET 3.5 timeframe asking me questions about WCF. Here are some related research links:
- Justin Smith: “…instead of using the
enableWebScript
behavior, use theWebHttpBehavior
. You’ll lose compat with the ASP.NET AJAX client stack (and the JS proxy), but you have the URI you are looking for.” - “Passing an instance of anonymous type over WCF” from stackoverflow.com: “Don’t do this. …It’s an attempt to be clever. Don’t. Just declare the
datatype
you need, and use it. If you need a more loosely-defineddatatype
, just use a key-value mapping of some sort.” It must be said that it is freaking easy to pass an anonymous type as JSON from an ASP.NET MVC controller—so I might have my first inkling as to what Glen after his MEF brilliance. - Rick Strahl: “WCF and JSON Services” and “Making Ajax Callbacks to the Server”
- MSDN: “Configuring Services Using Configuration Files”
- Kirk Evans: “Creating a JSON Service with WebGet and WCF 3.5”### “Splitting” Web Configuration Files
In 2007, Nikhil Kothari writes, “[It’s] an odd feeling when you discover something in your own product, you didn’t quite knew existed! … [There’s] a little known attribute called configSource
, that can be specified on a section which allows the definition of the section to live in another actual file.”
My usual self-critical thing would be to note the year 2007 and wonder why it took me so “long” to get the news—but I actually have a note about configSource
from 2007. Clearly I’ve forgotten about it and this warning might have encouraged me:
Jon Rista warns, “The downfall of using the
configSource
attribute is that it requires all configuration settings to be placed in the external file. No inheritance or overriding is possible, which in some cases makes it useless. All external configuration files used with theconfigSource
attribute must also reside in a relative child path to the main.config
file. I believe this is in regards to security concerns with storing the file in a relative parent path in a web environment.”
Using SQL Query Profiler to See Stored Procedures with Decent Parameters
SQL Query Profiler is a performance tool—just like Fiddler is a performance tool. But like Fiddler, SQL Query Profiler tracks and displays the communication with a server. Click on a link and Fiddler will show you exactly what resources (images, documents, etc.) travelled “across the wire”; do the same while SQL Query Profiler is monitoring and you will know exactly which database objects are queried/executed.
Looking at a folder full of stored procedures on your first day of work can be very, very intimidating. Using SQL Query Profiler as a stored proc’ snooper can be quite an eye opener, bringing some stress relief.
Using JS Shell to Write Somewhat Involved jQuery DOM Manipulations
It’s too bad that JS Shell (jsshell
) was made only for Google Chrome. Having spent three months of many, many 12-hour days with Chrome, I do not consider it a superior developer tool. Nevertheless, it has the only add-on that I find actually running JavaScript directly against the DOM in the same manner “real” JavaScript running from a file would. This interactive shell simulation allows me to seriously write JavaScript in an “Immediate Window” instead of writing to a file, saving that file and reloading the file in the browser.
A certain Telerik AJAX control needed some modification for my “dream job” (which is quite a tedious endeavor) and jsshell
went a long way toward making the tedium short.