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…


Amgen Campus, Thousand Oaks

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:

“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 the configSource 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.

“HTML 5 Parsing” and other marked up links…

John Resig: “One of the biggest wins of the HTML 5 recommendation is a detailed specification outlining how parsing of HTML documents should work. For too many years browsers have simply tried to guess and copy what others were doing in hopes that their parser would work well enough to not cause too many problems with HTML markup found in the wild.”

“jQuery 1.5 RC 1 Released”

John Resig: “We want to encourage everyone from the community to try and get involved in contributing back to jQuery core. We’ve set up a full page of information dedicated towards becoming more involved with the team. The team is here and ready to help you help us!”

“PHP 5.3.5 and 5.2.17 Released!”

php.net: “The PHP development team would like to announce the immediate availability of PHP 5.3.5 and 5.2.17. This release resolves a critical issue, reported as PHP bug #53632 and CVE-2010-4645, where conversions from string to double might cause the PHP interpreter to hang on systems using x87 FPU registers. The problem is known to only affect x86 32-bit PHP processes, regardless of whether the system hosting PHP is 32-bit or 64-bit. You can test whether your system is affected by running this script from the command line. All users of PHP are strongly advised to update to these versions immediately.”

“Creating PHP Websites with WebMatrix”

Brian Swan: “As I read those posts (and others), I was left wondering about the extent of PHP support in WebMatrix (which is what I’ll look at in this post). As it turns out, PHP is fully supported, but it requires a little bit of work up front in this beta release of WebMatrix (a smoother experience for PHP developers is planned for the final release). If you want to work on any of the PHP applications that are available in the Web Application Gallery, the experience is very smooth—just follow Ruslan’s blog post. However, if you just want to see how WebMatrix works as a PHP IDE for building your own sites (and you don’t want to install one of the PHP apps in the app gallery), then here’s what to do…”

“jQuery Performance Tips And Tricks—A Free 30 Minute Talk”

Addy Osmani: “Hey guys. Today we’re going to take a look at best practices, tips and tricks for improving the performance of your jQuery code. Performance optimization is a crucial aspect of building ‘snappy’ client-side applications and something which all developers using jQuery should bare in mind.”

“Announcing HTML5 Labs”

Jim O’Neil: “As you hopefully know by now, despite the hype, HTML 5 is not a completed specification. In fact, back in 2008, the author of the specification, Ian Hickson, estimated HTML 5 wouldn’t be a Proposed Recommendation until 2022! Indeed, the W3C site shows there are still significant aspects of the HTML 5, CSS 3, DOM and other specifications being fleshed out – just take a look at the ‘warning’ in every W3C Working Draft: Implementors should be aware that this specification is not stable.”

“HTML Video Codec Support in Chrome”

Mike Jazayeri: “We expect even more rapid innovation in the web media platform in the coming year and are focusing our investments in those technologies that are developed and licensed based on open web principles. To that end, we are changing Chrome’s HTML5 <video> support to make it consistent with the codecs already supported by the open Chromium project. Specifically, we are supporting the WebM (VP8) and Theora video codecs, and will consider adding support for other high-quality open codecs in the future. Though H.264 plays an important role in video, as our goal is to enable open innovation, support for the codec will be removed and our resources directed towards completely open codec technologies.”

“Guide to Bing Query Language Published”

Bing.com: “Bing offers several ways to augment a basic Bing query. For the most part, we’ve talked about using the Bing API to tailor requests. However, there is another tool that you can use in either an API request or a Bing box: Advanced Query Language. We’ve just published an extensive list (with descriptions and examples) of the operators, or syntactical units, that comprise this language.”

“The Future of HTML 5”

Bruce Lawson video: “Full transcription available at joeloverton.com/html5. We’d like to say a HUGE thank you to @joeloverton for doing this transcription!”

“Modernizr”

“Have you ever wanted to do if-statements in your CSS for the availability of cool features like border-radius? Well, with Modernizr you can accomplish just that!”

Yahoo’s Douglas Crockford on Microsoft’s Channel 9

Douglas Crockford graciously appeared on Channel 9 in “Douglas Crockford, Alex Russell and Joseph Smarr: On the Past, Present and Future of JavaScript” with one of the worst “full time” Channel 9 interviewers and two, well-respected, super smart script kiddies.

Douglas was the model of maturity and demonstrates how not to take egocentrism personally—a problem that I have been struggling with for years. First of all, Microsoft, to this day, has a systematic ‘disrespect’ for JavaScript (actually Jscript®). It does not need to be expressed in simple words or actions. It is expressed by design—egocentrics often overlook this form of communication (or assume others are incapable of reading it). All I have to do is look at how Microsoft has shipped (and is probably shipping today) JavaScript code in the Visual Studio stack (namely ASP.NET Ajax) to see the ignorance. Collectively speaking, Microsoft writes JavaScript like 1990s Java programmers write J2EE code. I’m sure Scott Guthrie (or Nikhil Kothari?) is going to fix this over time. This is sad complexity as C# 3.0 comes with lambdas and extension methods (two language features that appeared in JavaScript years ago).

I often wondered how Douglas Crockford would fare in a company owned by Microsoft. Perhaps he would actually teach these smart guys to write real JavaScript code and even encourage Microsoft evangelists to stop dropping deprecating “JavaScript guru” comments during their demos (like the recent ones at MIX08).

And now, a few more loosely-coupled points:

  • My guess is that Douglas Crockford is a functional programming proponent (who supports open standards for the sake of near-universal deployment) instead of a simple JavaScript language zealot. His younger counterparts were less ambivalent about JavaScript.
  • Okay I get it now: Douglas Crockford invented JSON. Now it is clear to me why XML is not his bestest friend. By the way, I almost used JSON last week with the Zend Framework but did something stupid fast with XML instead. Douglas Crockford will be the first to admit that using eval is evil.
  • A new REST-based movement is taking hold of Microsoft in the form of ADO.NET Data Services ‘invented’ by Pablo Castro. For some reason I assume a REST-afarian culture will help Crockford’s view of the electronic publishing world propagate throughout Microsoft will little or no assassination attempts from the SOAP ninjas led by Master Don Box (who, I am told, has vanished into the Himalayas with a small army of loyal followers planning for their next WCF attack on Gotham City).
  • Clearly Microsoft knows (in more ways than one) that my experience is in the minority but I consider myself a very strong C# programmer that happens to be very, very comfortable with angle brackets—from HTML to XHTML and XML—and hand-written JavaScript.
  • The other language that Microsoft market researchers for the Visual Studio line confidently treat like shit is the SQL for Microsoft Server. You will find Pablo Castro in the February SQL Down Under interview explaining why it is OK to auto-generate crappy looking SQL statements with ADO.NET Data Services.
  • …and I am not going to even mention the horrors of what happens to HTML (or XHTML?) in ASP.NET SharePoint pages. Ted Pattison that man from the “jungle” can show you in “Customizing a Windows SharePoint Services 3.0 site with the SharePoint Designer 2007.”