Shawn Wildermuth

My Rants and Raves about technology, programming, everything else...

Charles Petzold on the Hello World Podcast!

This week on the Hello World Podcast I had the exceptional experience to interview one of my heroes. Charles Petzold’s books on Windows development was key in my development as a software engineer. I bought my copy back in the early ‘90s when I was doing C++ development. It’s amazing how much you can learn about how the Windows works by writing your own message pump. Take a listen and hear how this luminary got started!

The Hello World Podcast is where I get to talk with some of your favorite authors, developers and speakers about how they got started in software development.

You can listen to episode 8 here:

What You've Missed on the Hello World Podcast

Thanks for all the support to everyone who’s been listening to my new podcast it’s been awesome to record. I’ve had a great time talking about how people got their start in software development. I thought there would be more commonality in first computers and languages, but it’s remarkably varied.

If you aren’t subscribed, you’ve missed some good episodes. In the past few weeks we’ve had:

Hello World Podcast Episode 4: Brian Noyes

A new episode of my new podcast is out. In this episode I talk with Brian Noyes about how he got started. It’s an interesting story that involves fighter jets, DirectX and Visual Basic!

The Hello World Podcast is where I get to talk with some of your favorite authors, developers and speakers about how they got started in software development.

Bootstrap 3 Grid System Explained

Are you starting to work with Bootstrap 3? If so, maybe I can help. I’ve recently released a Bootstrap 3 course on Pluralsight that covers many of the new features including how to migrate from Bootstrap 2 to 3.

Here is an excerpt from the course where I explain how the new grid system works in Bootstrap 3:

Hello World Episode 3: Chris Sells

The third episode of my podcast (“The Hello World Podcast”) is now available. In this episode I had the chance to sit down with Chris at the MVP Summit (which explains the background noise). He is one of my best friends (and my best man at my upcoming wedding).

We talk (as usual) about how he got started. I even learned some things about him. I think you’ll really enjoy this episode:

Building an API Course now with Web API 2

If you’re interesting learning how the new Web API 2 works, you’ll be happy to hear that my popular Pluralsight course “Implementing an API using ASP.NET Web API” now has a new module that shows you how to use the new features in Web API 2!

Xbox One - First Impressions

downloadMy pre-order of the Xbox One arrived on Monday and I’ve had a little time to play with it. I mostly got the device for Forza which I love. So after a couple of days with it, here are my first impressions.

Let’s start with the Operating System. It’s gorgeous and fluid. The switching between apps is really impressive. While it’s missing some features from it’s 360 counterpart, I find it really satisfying.

A Different Kind of Podcast

c64I am happy to announce that I am starting a podcast. I’ve been thinking about this for a while but I didn’t want to just do another podcast that talked about what is new in software development.

I’ve been listening to the Nerdist Podcast a lot and it gave me an idea. The Nerdist is fun because they talk to a lot of the people I like and often talk about the business more than just plug the latest project. I am interested in these same stories about software luminaries.

Web API 2's Attribute Routing: Looking Deeper

underwaterI recently recorded a new module for ASP.NET  Web API course (on Pluralsight) to cover the new features of Web API 2 (it’s not out yet, soon…I promise).

It was fun plumbing the depths of how it works. I generally like the feature but the implementation may change some of your code if you’re dealing with routes under the covers (i.e. for auth or versioning).

I'm Coming to Louisville, KY this Thursday

Are you in the Louisville, KY area this Thursday? I will be! I’ll be at the Louisville .NET Meetup Group talking about Web API..including Web API 2 that was recently released. The details of the event are:

We will meet on Thursday, November 14, 2013 at Adecco's offices at 101 Bullitt Lane. Doors will open at 6:30pm and the presentations will begin sharply at 7:00 pm. Along with a great presentation, we'll have food and raffle prizes. Be sure to RSVP so we know how much food is needed.

My Impressions of Ender's Game


Ender’s Game is a book I meant to read. Everyone I know has read it and just loved it. When I heard the movie was coming out, I decided it was time to read it in time to see the movie.

AngleBrackets Fall 2013

BX27kRzCAAACnrdI finished up my post-con for AngleBrackets today and am ready to head home. I had a great time and just spectacular attendees who had great questions! If you have a chance to go to AngleBrackets (or it’s sister conference, DevIntersection) make the trip. They’re coming to Orlando this fall!

I had a chance to do two talks and an all-day course. If you attended these, check out the source code and slides (where applicable) below:

My eBook Free During AngleBrackets

My book about my life as a software developer (The Opinionated Software Developer: What Twenty-Five Years of Slinging Code Has Taught Me) is available for free until October 31st. Consequently this is same the time I am at AngleBrackets  (part of DevIntersection) in Las Vegas talking about Mobile Web, PhoneGap and Designing for Developers.

If you haven’t gotten the book yet, here is your chance for free! This has been the book I wanted to write for years now. Don't look for code in this book (ok, there are exactly two lines of code) - but instead I am writing about what being a software developer has meant to me. Hopefully some of the advice and observations will help you in your own career too!

Upcoming Appearances

Fall-orange-maple-tree_-_West_Virginia_-_ForestWanderAs the leaves change, I realize that I am going to be on the road a bit this month. I am doing a conference, a meetup and the MVP summit. I just want to get my Skymiles Platinum card ; )

If you’re at any of the following events, please come up and say hello. Don’t be shy. I don’t bite…at least not hard.

Using ASP.NET Authentication in Web API

Web API is a pretty sexy REST stack (though others are cool too). As I’ve been talking about it a lot lately, the biggest question by far is authentication and authorization. There are many options including OAuth, Token-based authentication, basic authentication, and even custom solutions. One option that should be included is to use your existing ASP.NET Forms-Based Authentication.

As a preview to my recently released course on ASP.NET Web API, we’ve released a clip that shows you how to piggy-back on ASP.NET Authentication to protect your Web API interfaces:

JavaScript Function Scopes

As some of you know, I authored a Pluralsight course on JavaScript for C# Developers. We’ve released an excerpt from that course covering how JavaScript function scopes work.

If you’re just getting started learning JavaScript, it can be easy to bring your C# biases to the language since they both have curly braces. Hopefully this excerpt will help:

My Opinions in eBook Form

I recently released my new writing project: “The Opinionated Software Developer”. This short book (about 35 pages according to Kindle) is a quick look at my experience in software development. It includes a history of my experience in the field as well as a look at the software developer psyche. The hope was to share my opinions about being a developer in the industry including how to deal with co-workers, how to avoid being a brat developer and how to motivate developers in larger organizations.

Editing Styles with Firebug

firebugMost developers I know simply hate web design. As far as many developers are concerned CSS is evil. What CSS does for the web is magical but can be painful for developers that are used to functional or structural languages.

Luckily the browsers come to the rescue with great tooling. Here is a preview from my “Debugging the Web” Pluralsight course” which shows some of the basics:

Getting Ready for AngularJS 1.2

AngularJS is going through their release cycle now and that means that AngularJS 1.2 is going to be released soon with some specific changes that you'll need to address. I'll be updating my Pluralsight Course with the 1.2 changes as soon as the new version ships.

The biggest change for most people is the routing support is now packaged separately. To use routing you'll need to do two things:

Refactoring Nested CSS Rules using LESS

One of my favorite features of LESS is the ability to simplify my CSS rules that are deeply nested by using LESS to compose them more simply. I like this feature because it gives me the ability to clean up messy CSS files and make them more maintainable. Take a look to see what I am talking about.

LESS is an open-source dynamic stylesheet language for adding features to the CSS language that help you build better CSS. LESS parsing is supported in the free Web Essentials extension for Visual Studio 2012 and 2013 (though not supported for the Express editions) as well as in the free WebMatrix tool from Microsoft. It is also supported in most IDEs, as a JavaScript library and even a command-line LESS builder.

Debugging Like a Knucklehead

So I've been writing a new Web API course Pluralsight. I am digging in how to handle versioning for an API and I think I've gotten it figured out but it just doesn't work. Throwing a crazy exception and just isn't working. I waste four hours trying to figure it out and I am cursing and grunting. The other people in the coffee shop are staring.

I spend a bunch of time on Google trying to find someone with a similar problem but no luck. Looking at the data and walking through the bug with the debugger didn't yield anything. Desperate, I reach out to Glenn Block himself for an answer. He's very gracious and agrees to help me out with a quick Skype session.

DevLink 2013

Thanks to everyone for attending my sessions at this year's DevLink 2013 conference in Chattanooga, TN. I had a great time at the aquarium and enjoyed meeting so many of the attendees. If you get a chance, you should add this to your conference attendance next year.

I gave two talks at this year's event. I promised the attendees to get them the code from my talks. Here they are:

Zen Coding (Emmit) with Visual Studio

As many of you know, I have a new course with Pluralsight called "Building a Site with Bootstrap, AngularJS, ASP.NET, EF and Azure". I had the opportunity to use Zen Coding (renamed Emmet for some reason) in the course. We've released a snippet of the course on YouTube that shows off this cool productivity enhancement that Web Essentials powers. Caveat: Web Essentials doesn't work with free versions of Visual Studio.

NOTE: The title of the video is incorrect and we're trying to change is about Zen coding.

Atlanta Code Camp 2013: Done!

I want to thank all the attendees, speakers and my compatriots in planning the Atlanta Code Camp. I had a great time helping make this event the best one we've had so far. Some of the numbers:

428 attendees (including speakers and sponsors)

Need LINQ but Writing JavaScript?

sketchArchOne of the tasks that I found cumbersome when writing JavaScript is simple collection manipulation. I have gotten spoiled in C# with LINQ. Sorting, filtering, shaping and more is easy with LINQ but what about in JavaScript? Underscore.js to the rescue.

Underscore.js is a small utility library that can help in collection manipulation (as well as other great features). I first started using Underscore.js to replace jQuery's (and AngularJS's) for-each implementations. I find underscore's simple and quick. Like much of JavaScript, the magic is happening in a callback function (think Lambda):

Application Name WilderBlog Environment Name Production
Application Ver Runtime Framework .NETCoreApp,Version=v1.1
App Path D:\home\site\wwwroot Runtime Version .NET Core 4.6.25211.01
Operating System Microsoft Windows 6.2.9200 Runtime Arch X86