Shawn Wildermuth

Author, Teacher, and Filmmaker
.NET Foundation Board Member


Tagged with .NET

SQL Saturday and DotNetSouth in Atlanta

MeI've had a great time this week attending two events and talking about things I love: .NET and Vue.

Was a busy week, but really had fun time presenting again. Lots of great questions!

Earlier in the week I had the pleasure of speaking at DotNetSouth, a new event by the people who brought you Connect.Tech. They run a great show. I talked about .NET 3 (and 5) as well as Vue.js. Here are the slides and code:


ASP.NET Core 2.0 Released

Image result for webI’m very excited that the v2 of ASP.NET Core is now released. Married with Visual Studio 2017 Update 3 (or VS Core), it is now a maturing platform.

I really like what the team has been doing since the release of 1.0. They seem to really have thought about the pain points of the initial versions and worked to eliminate as many as they could.

Of course v1.x was a bumpy time. The migration from project.json to MSBuild was a painful one, but we’re past that now. You can get it now from the website:


New Course on ASP.NET 5!

aspnetIf you read my blog, you probably already know how excited I am about ASP.NET 5. To dovetail with that, I’ve created a nine-hour course on Pluralsight that covers this brand-new technology from Redmond.

This new course is similar to my end-to-end course on ASP.NET 4/MVC5 that I released a couple of years ago. The goal of the course is to teach you all the concepts while helping you build a simple web app.

You can find the course here:


A Look at ASP.NET 5: Part 5 - The API


The more I work with ASP.NET 5, the more it looks and feels like the old ASP.NET stack except for the hosting. That’s a good thing in most cases, but writing the API that changes.

After dealing with WCF’s bastardized tried to add REST on top of the SOAP stack, I was elated to be introduced to ASP.NET’s Web API some years back. While it let me develop APIs while thinking about REST in more natural forms, it had the problem of being so separated from the MVC stack that many of the facilities had to be duplicated in both stacks. This cognitive dissonance caused many a developer headaches (same class name but in two different namespaces). When I realized that ASP.NET 5 would be merging the two ideas, I was elated…maybe prematurely.


A Look at ASP.NET 5: Part 4 - MVC 6

measurewoodI had planned on finishing these a long time ago, but working on my Pluralsight course about ASP.NET 5 distracted me. Sorry about that.

If you’ve been doing web development in .NET, you probably have at least a passing experience with ASP.NET’s MVC framework. At it’s core, it’s a common way to build and architect web applications. The new stack is built on the same metaphors from the older versions. If you’ve been using MVC before, you won’t be lost and some of the additions are welcome.

I’ll explain what I’m doing in a series of blog posts and link them all here as I write them. The plan is to write posts about:

Part 1: Getting Started

Part 2: Startup

Part 3: Using Entity Framework 7

Part 4: ASP.NET MVC 6 (This Post)

Part 5: The API

Part 6: Web Tooling with VS2015 (coming soon)


.NET Fringe is Coming!

.netfringeAs many of you know, I’m not in the country at the moment but if I were, I’d be going to .NET Fringe in Portland, Oregon on April 12-14th. This new conference is all about open source in the .NET space and I and really excited that a conference is focused on it.

I have a couple of small, older .NET open source libraries, but my real facination has been with where the overall community is going. Both Microsoft and the community at large are all going open source and it’s great news for us all I think.

If you’re interested in going, it’s relatively cheap. There is even an option to apply for a free ticket (though I don’t know the qualifications). If you’re a student or unemployed, it’s only $100! You can see all the ticket prices here:


A Look at ASP.NET 5: Part 1 - Getting Started

babyflyerOver the past few weeks I’ve been playing with the new ASP.NET 5 (also known as ASP.NET vNext) bits using Visual Studio 2015. I’m trying to make sense of the new changes and how they will affect how I build websites. I’d like to share some of what I’ve learned about the new stack.

I’m going to do this by talking through an example website I wrote using the new bits. Do know that we’re still pretty early and Visual Studio 2015 (CTP6 as of this writing) and ASP.NET 5 Beta 3 are both in a state of flux. This is definitely about what’s coming, not what is here so far.

I’ll explain what I’m doing in a series of blog posts and link them all here as I write them. The plan is to write posts about:


Next Stop: Nottingham England for Node.js

The last stop of the week was in Nottingham. I had a chat with the Sheriff about some stolen hoodies. At least that’s what I thought he said – his accent was quite thick ; )

The team at dotNetNotts was great. We had a packed house of over sixty attendees. I am sure the pizza and beer helped, but some even stood for the talk. Resilient group!

We talked about “Node.js for .NET Developers” this time. I tried to stay away from the NoSQL v. Relational database story, but hopefully I was able to explain what Node.js is and how you could apply the lessons there to ASP.NET MVC/Web API. Lively group and some really tough questions. As usual for this great country, we ended the night in a lovely little pub that was likely older than my country.


My Talks in Bristol England

As my first talk in the UK, I was tasked with doing two talks in one day.  The group was a lot of fun and asked some key questions.

I got a chance to show two contrasting technologies in showing ASP.NET Web API 2 as well as Node.js for .NET Dev’s. With only fifty minutes for each talk, I had to try and cover them briefly.

Unfortunately, we had an issue with the Internet connection so there were some demo’s I couldn’t do. But I’ve added the additional pieces of the demos for the downloads. If you were at the event, grab the examples to see the database tied in and CORS actually working.


New Course on .NET Code Reviews

DiscussOne of the things that I help companies with are code reviews. I love doing code reviews. It let’s me look at a large codebase with fresh eyes and help a company out with a set of recommendations for improving their process, teams and code.

After doing enough of these some patterns emerged. From this has come my new Pluralsight course on Lessons Learned from Real World .NET Code Reviews.

The purpose of this new course is to show you some of the lessons that can be learned through code reviews. I’ve broken up the lessons into several parts:


Node.js for .NET Developers

As some of you may have noticed, I’ve been dipping more than my toe in the waters of Node.js. I think Node.js has a lot to teach us as ASP.NET Web Developers; most of it good.

To this end, I’ve produced a brand-new course for Pluralsight about Node.js specifically for .NET developers. This course covers using Node.js with Visual Studio as well as the command-line tools. It compares and contrasts .NET technologies to their Node.js equivalents.

The point of the course is to walk you through creating an entire small website with Node.js and teaching you along the way (similar to my End-to-End ASP.NET course on Pluralsight). It includes:


Why Should You Care About NodeJS?

javascriptI know that many of my readers are .NET guys and a core constituency actively hate JavaScript so bear with me and let’s talk about NodeJS for a minute.

Just to be clear, I am not advocating anything by this post. What I think is important is that as you mature as a developer that you look at whatever is happening in the community and be open to why something is new  and what new ideas are being proffered by the new technology. My hope is that this post will show some of that.

Simply put, NodeJS is a runtime for JavaScript that encourages non-blocking I/O and fast networking. NodeJS itself isn’t written in JavaScript but it executes JavaScript using Chrome’s V8 engine. It is the engine that powers a lot of cool tools these days (e.g. Bower, GruntJS, etc.) but is primarily used as simple web server platform.


In a Perfect World? Build Conference Wishes

BuildConferenceI am headed to Build Windows next week and I have a lot of hopes for the conference. I haven’t been to a conference as an attendee alone in quite a long time. I am anxious to see what the v.Next is out of Redmond.

I didn’t get to go to the 2000 PDC that changed everything…so I really wanted to be here for this conference. Is this going to change everything again?  I have no earthly idea but I hope for a mix of new and old. 

Here is what will happen at Build if this were a perfect world:


The Busy Developer's Guide to SQL Server Modeling


SQL Server Modeling

As my continued facination with all things SQL Server Modeling related, I was tasked with writing a short article on the introduction of the basics of SQL Server Modeling for the developer.  The result is the article "The Busy Developer's Guide to SQL Server Modeling" that was released on MSDN today. It is short so you can get the big details without investing a month learning the technology. Let me know what you think!


Book Review: LINQ in Action


I've spent much of the last couple of weeks trying to strengthen my LINQ knowledge. A friend of mine is one of the authors of a LINQ book so I figured it was a good match to dig deeper.

The book covers a lot of topics that emcompass LINQ including LINQ basics, but also LINQ to SQL, LINQ to XML. I like that it starts out with a discussion of the problem and doesn't dive directly into the solution. In addition, I think it teaches the technology without resorting to starting with database applications as the example. Anyone who has heard me talk about LINQ knows that I can't stand that LINQ to SQL is the wrong way to teach it to new people...they didn't fall into that trap.


Visual Studio 2008 for .NET 2.0 Development - An Interesting Quirk

I've been converting some projects to Visual Studio 2008 (but not .NET 3.5) to see if I like the new IDE better than 2005.  So far I can't tell a big difference (though the improved Script debugging is nice).  I did find out something interesting...

I use the 'prop' snippet (if you don't know what this is, in 2005 or 2008 type 'prop' {no quotes} and hit tab twice) to add simple properties.  In 2005 it stubs out the field and the property.  But in 2008 it stubs out an implicit property.

If you are not familiar, implicit properties look like this:


Fun with .NET 3.5 - Part 1.1?

After digging into the TimeZoneInfo class, John Meyer pointed me a the new DateTimeOffset class and a MSDN article on choosing between DateTime, DateTimeOffset and TimeZoneInfo classes. I think I am more confused by the article than before.  Here are a couple of key bits of information:

The article goes on to say two confusing statements:

Although the DateTimeOffset type includes most of the functionality of the DateTime type, it is not intended to replace the DateTime type in application development.


Installing Visual Studio 2008 over Beta 2


Scott Guthrie has a new blog post instructing people how to cleanly uninstall all the Beta 2 bits on a machine before installing the RTM of Visual Studio.  This is a great list but if you're an early adopter like I am beware. 

If Beta 2 was your first test build of Visual Studio 2008 (Orcas), you should be good.  If you installed Beta 1 or any of the CTP's, I have found that paving a machine is the only way of really cleaning up some of the crud left by the earlier betas. Beta 2 was very good about cleaning up in an uninstall scenario, but Beta 1 was not (as well as not behaving great side-by-side with VS 2005).  It was a beta afterall so no harm no foul.  But if you have installed early bits, i'd suggest starting with a clean machine.


Fun with .NET 3.5 - Part 1

I've been digging into the .NET 3.5 runtime to find any tidbits that didn't make the front pages of everyone's blogs this last year.  You can find the big stories anywhere else, I want to cover the small interesting stories of what's new in the Framework.  I'll be covering some classes over the next few days that I've found in the .NET 3.5 Framework (and hopefully I don't find anything I didn't notice in 2.0 or 3.0, but feel free to correct me if I am wrong).

Here's the first tidbit: TimeZoneInfo.  This class allows you to enumerate and convert from specific time zones.  We could do convertions to and from UTC and if we knew the offsets we could do these calculations before but now this new class allows us to actually look at the time zones.  It reads these time zones from the registry so it is not hard coded with the time zones and any system updates should be supported.  Here is how it could be used:

  class Program
    static void Main(string[] args)
      var zones = from zone in TimeZoneInfo.GetSystemTimeZones()
                  where zone.StandardName == "Pacific Standard Time"
                  select zone;
      if (zones.Count() == 1)
        TimeZoneInfo zoneInfo = zones.First();
        DateTime now = DateTime.Now;
        Console.WriteLine("Current Time: {0}{1}In {2}: {3}", 
          TimeZoneInfo.ConvertTime(now, zoneInfo));



.NET 3.5 Namespace Map - And a Curiousity


I was reading through the new .NET 3.5 printable map (i.e. poster) to see if there was anything in .NET 3.5 that i've missed out on looking at. The attempt here is to show you what is new, what is in the Compact Framework and just generally try and map concepts to namespaces.  Here are some observations:

In a small graphic in the bottom right they attempt to explain that .NET 3.0 and 3.5 are additive to 2.0.  It indicates that 3.0 is WCF, WPF, WF and Cardspace (remember WinFX?).  What is interesting to me is that 3.5 is indicated to be LINQ, AJAX and REST.  Huh?  AJAX 1.0 was an addon to ASP.NET 2.0 so saying 3.5 is about AJAX is a little wierd.  If REST is part of it, where is it?  I hope they don't mean Astoria as it won't be released until *after* .NET 3.5.  I couldn't find it.  Anyone?


Genghis v0.8 Released


I've been helping Chris Sells and the Genghis Group for a couple of years. I am proud to announce the newest build of Genghis (version 0.8) that includes all the features of version 0.5 ported to .NET 2.0.  Between versions 0.5 and 0.6 a conversion to .NET 2.0 was performed but a number of classes were dropped for one reason or another.  We've addressed these missing classes in this latest release.

If you are working with Windows Forms 2.0, check it out.  Its a great addition to the library.


Cookies Ruined the Breadcrumbs...

Trish and I are moving soon.  She's been sending me links to rugs for our new living room floor. She found an interesting one today:

target web problem

(click for larger view)


OMG! Too Many Ways to do Data Access with .NET?


Its been a busy weekend for Microsoft.  First the announcement that EDM is being delayed six months to be after two new dynamic data access layers for web-based apps:

I haven't looked at either of these *yet*, but I thought it was already look a the data access toolbox from MS:


The C# Team seems to speak out of both sides of its mouth


I was reading an article about VB9's XML Literal support and why C# decided not to support it.  (Note, I agree with C#'s lack of support for it, but that's not what this post is about).  Paul Vick said:

While I agree with this notion, this seems to be the exact reason for *not* including LINQ. Why are they willing to tie the language to a brand-new notion of language integration that might not be here in two years, but they saying they don't want to pollute the language with XML becuase they are not sure it will be here soon? 


Orcas March CTP Released


I've gotten the new Visual Studio Orcas March CTP up and running (as the VPC it ships as).  I've been playing with the Entity Framework some today and I am pretty impressed so far. Unfortunately the automatic generation of the schema/mapping files still isn't working in this build, but if you write it out by hand it does work.  I'll be posting an example soon.