Unfortunately, I don't have control over the guts of my blog here so I can't setup any nice redirects or anything like that, but if you're still interested in following things I'm working on and sharing, head over to my new blog. If you're interested in the blogging platform our team has been working on (in our spare time) that's built on ASP.NET MVC called Oxite, be sure to head over to my new blog (running Oxite).
I had the pleasure of "acting" with some fellow 'softies to create this fun video about the misconceptions that people have with Microsoft.
It was a lot of fun to run around with nerf guns, kick people, yell and scream. Tina, can we do it again? :)
I have an iframe on my page and an html page that's loaded in it (from the same domain) and an anchor tag is clicked in the iframe I want to execute some code on my page on the client. In the Initialize method in my client object I call $addHandler and pass in the anchor tag from inside the iframe, 'click' (to attach to the onclick of the anchor tag) and my delegate. I run the code in Firefox. Everything works great. I go to Internet Explorer and run it and when I click on the anchor tag inside of the iframe I get an error of "Sys.ArgumentNullException: Value cannot be null. Parameter name: eventObject". A quick search turned up this gem of a workaround:
I hope the ASP.NET team fixes this in future versions of ASP.NET AJAX, but for now this will work.
Ok, we all knew it existed and was being worked on, but this is the first time the IE team has talked about anything (even if there's no actual info here).
Accompanying Channel 9 thread discussing the "announcement".
Just installed it and while it's not feature complete yet and there are some performance issues, overall I really like it!
It kind of makes the Windows Live Messenger team look a little stupid for letting their competition use our technology to make a better looking IM client, doesn't it? ;)
Definitely check it out!
Ever wanted something more powerful than just a "Share on Facebook" link on your site, but didn't want to write an entire Facebook app? Enter Facebook Beacon. With it, you can add a few lines of code to your site and your users can share actions they did on your site like (bought a product/service, changed their profile, posted a comment, etc) to Facebook so it shows up in their news feed and then travels down the viral highway that is Facebook.
We're considering integrating Beacon into our community web platform that runs (Channel 9, Channel 10, MIX Online, Channel 8 and TechNet Edge). Do you think this would get annoying? Would you like to share what you're doing on our sites with your friends on Facebook?
FYI, we're building a Facebook app as well for our sites (and all sites involved in Microsoft Communities), but we think this also adds value too. Thoughts?
Scott Guthrie posted some fantastic info on ASP.NET Extensions 3.5 to match up with Visual Studio 2008 and .NET Framework 3.5.
Silverlight 1.1 is now Silverlight 2.0
Silverlight 2.0 will start to get some of the great features that WPF has
Some of the ASP.NET AJAX Futures (like the browser history control) will be moved into ASP.NET AJAX
IIS 7 will ship early next year
There will be new ways to deploy to IIS 7 and do things like versioning and rolling back on single servers and web farms
Great stuff...check it out!
This is really great to see. RTEs are a pain to write yourself.
My only requests are that they add Opera and Safari support, XHTML support, undo and better flexibility for customizing it (like hiding the view tabs and ASP.NET Themes).
Definitely worth checking out!
The official name as well as site is now out for Silverlight, which used to be called WPF/E. Lookin' good!
I saw a cool post recently from Jon Galloway called "Passing lists to SQL Server 2005 with XML Parameters". This is a pattern I've used several times while building the new version of Channel 9. If you'd like to learn how to pass in lists to stored procedures, check out Jon's post.
One of the times I've used it is to search our database for all entries from two of our forums. For this example, we'll say Techoff and Sandbox. Once you have a temp table with the two forum ids (actually forums in our system are just tags too) you can just do a where in statement like the following:
SELECT e.* FROM Entry e INNER JOIN EntryForum ef ON e.EntryID = ef.EntryID WHERE ef.ForumID IN (SELECT ForumID FROM ForumList)
Note: This is all pseudo code to represent the basics of how we do this. This is not the exact code.
This selects all the entries (or posts) from our database that are from the list of forums I passed into the ForumList temp table. WHERE IN specificies that all rows be returned that match ANY of the records in my temp table. The following statement would be equivalent and work exactly the same.
SELECT e.* FROM Entry e INNER JOIN EntryForum ef ON e.EntryID = ef.EntryID WHERE ef.ForumID = @ForumID1 OR ef.ForumID = @ForumID2
Note: In the above example, @ForumID1 and @ForumID2 have the values that were stored in the ForumList temp table in the example above that one.
This works pretty well. The other thing we do with passing in lists though is selecting only the entries that match ALL (not ANY) of the list we pass in to the stored procedure. The example of this is when searching by multiple tags. So for instance, you want to search on our site for all content that contains information on WPF AND WCF. The previous example won't work. It would instead need to be something like this...
SELECT e.* FROM Entry e INNER JOIN EntryTag et ON e.EntryID = et.EntryID WHERE et.TagID = @TagIDWPF AND et.TagID = @TagIDWCF
Using WHERE IN, we can't do this (at least I couldn't find anything in the docs or internet searching to say otherwise). Duncan helped figure out the idea on how to do this and here is the implentation I came up with:
DECLARE @TagCount int
DECLARE @Tags TABLE (TagID bigint)
DECLARE @Entries TABLE (EntryID bigint)
SELECT @TagCount = COUNT(*) FROM @Tags
WITH Entries(EntryID, MatchCount) AS
COUNT(DISTINCT t.TagID) AS MatchCount
e.EntryID = et.EntryID
et.TagID = t.TagID
INSERT INTO @Entries (EntryID) SELECT EntryID FROM Entries WHERE MatchCount = @TagCount
What is this code doing? Well, first, it's doing a count on the tags that were passed in (again, from XML turned into a temp table) and storing it in a variable. Then, it creates a Common Table Expression or CTE around a query that returns all the entries that match the tag list and how many of those tags it matches up with. If you're not familiar with CTEs, they're basically a wrapper around a query so you can write a query against it. Kind of like a subquery, but much more organized. Recursive CTEs are particularly powerful and cool, but that's another blog post. So then after creating the CTE, fill another temp table with everything from the CTE where the MatchCount equals the count of how many tags were passed in originally. This means that the entry returned had ALL the tags passed in associated with it. So this will now only return entries that match ALL of the tags from the list that I passed in (stored in @Tags). I hope this helps someone. :)
UPDATE: Check out the first comment from Bryan. He points out a slightly better implementation. Thanks, Bryan!
I'm a Slashdot browser. I've never commented on anything thing and never will. Slashdot is 90% crap (mostly because of the comments left there). That's my opinion and I'm sticking to it. That said, it's good to watch what goes on there, because every once and a while there is a gem of great insight.
This isn't the kind of gem I'm referring to, but it is still a gem and TOO GOOD and TOO TRUE to pass up. My buddy Tobin pointed me to this one...
I'm not a big fan of bashing people...unless they deserve it. :)
Rory posted a great first video taking a look at a couple new apps out of MSR.
Btw, this has to be the best preview image on any of our videos ever! ;)
Pretty funny. :)
My boss, Adam Kinney made the WPF/E skin for the video.
Direct link here.
This is really great. The way they went about making the sounds for Windows Vista is really cool. There are some really great ideas in this video like having calm music (you have to listen to the video to hear them) in the background while installing Windows Vista. It's sad that it didn't make it into the final product. Maybe they'll come out with some music from this we can buy. Check it out...