Personal Branding for Software Developers

I recently gave a talk on branding for software developers at TriJS.  While I didn’t get a chance to record it, I did upload the slides for your viewing please.  The slides are readable without listening to the talk and have a few protips and specific actionable things that you can do to boost your personal brand as a developer.  It’s one of those things where you don’t really need it until you want to change jobs or you need to promote something, then you wish you did.  If you don’t know how to get started, take a look at the slides and let me know some of the things that you’ve done to increase your visibility as a software developer!

TDD 0 to 60: How to Introduce TDD to Your Team With No Unit Testing Experience

Does your team use Test Driven Development or even unit test at all?  If you’re like a lot of teams I’ve come in contact with, that answer would be a resounding “no”.   I’m not sure what the biggest barrier is for most people, though I think it’s a combination of the following:

  • “There’s barely enough time to write the application code, let alone test code!”
  • “I’m not even sure what kind of test to write.”
  • “We already have QA guys for that!”

There are a lot of things that hold back many teams from it.  Where do you get started?  Let’s address these common questions and show how easy it is to get started with testing and TDD. Continue reading…

How to set up an Ember app inside of an ASP.NET MVC app

I love Ember. It helps me build fantastic UIs, but security isn’t super straightforward and I suck at it. I love ASP.NET MVC. It help me build secure applications and solid APIs, but for some apps I need a great responsive UI with great interaction.

Together, these two technologies can be used together to create really amazing apps (and really quickly, too). So this guide is to show you how to set them up together.

Note: This article assumes you have created a stock new ASP.NET project within Visual Studio and included MVC and WebAPI options. It also assumes you have EMBER CLI installed and have run ember new my-ember-app into a directory in the root of your ASP.NET MVC project.

Set the EmberJS index.html as the /App route in your MVC app

In whatever route in your MVC app that goes to /App (or whatever you want your “app” route to be named), return theindex.html that’s built from your Ember app.

    public class AppController : Controller
        public ActionResult Index()
            return File(Server.MapPath("~/my-ember-app/dist/") + "index.html", "text/html");

Update asset URLS

ASP.NET MVC will set the root of the app and make it different than if you were serving the Ember.js app by itself, so you’ll need to modify the asset folder URL to the folder relative to the MVC app, like so:

Change the following in index.html:

<link rel="stylesheet" href="/assets/vendor.css">


<link rel="stylesheet" href="/my-ember-app/dist/assets/vendor.css">

…and continue for any other .js apps you are serving in your Ember app’s index.html

Setup Camel Casing of JSON for Ember Data

Ember Data is certainly not required, but it definitely helps in a lot of cases. In order to save yourself from writing any adapters for Ember Data to support non-camelcase (the default in ASP.NET WebAPI), you use the following code in your Global.asax.cs to force JSON.NET to camelcase all of your responses, and expect the same in return. This also means you’re closer to supporting the spec!

In your Global.asax.cs, import using Newtonsoft.Json; and using Newtonsoft.Json.Serialization; and then include the following in your ApplicationStart() method:

    //Camel case the JSON to format correctly for Ember
    var formatters = GlobalConfiguration.Configuration.Formatters;
    var jsonFormatter = formatters.JsonFormatter;
    var settings = jsonFormatter.SerializerSettings;
    settings.Formatting = Formatting.Indented;
    settings.ContractResolver = new CamelCasePropertyNamesContractResolver();

Automating the Web with Selenium and WebDriver

I recently gave a talk on browser automation and using Selenium with WebDriver.  Not only that, I gave a demo of using Selenium, WebDriver, xUnit, and creating a fluent API to create a framework that makes tests easy to compose.  Check them out and let me know what you think!  Selenium is a fantastic way to get a ton of value from automated front-end tests.

What I’m Doing /now

This year I’ve decided to focus on a few things to become a better developer, and do things that make more of a difference in my life, my family’s life, others’ lives, and my career, but with less work.  There is no shortage of project ideas that I could explore, places to visit, meetups to attend, or emails to reply to, and that’s kind of the problem.  Recently, I ran across someone who had a /now page on their website.  It’s a movement started by Derek Sivers.  It’s similar to an /about page, but answers the question “What are you focusing on right now?”.  It’s the elevator pitch to what you would tell a friend that you hadn’t talked to in a year, which is really great to know, but that’s now why it’s great. It’s great because it forces you to put down into writing your priorities. It forces you to look at the short list of the things that matter to you, and it gives you really, really fast feedback if you’re “focusing” on way too many different things.  So, from now on, I’m going to keep a section of my site up to date on the /now page.

I’m always interested in ways to help automate my “0-60″ introduction and help people better understand where I’m at, so that we can both help each other out better.  How do you keep acquaintances and random internet passer-bys up to date on where you currently are in life? Is there something better?

Check out my /now page to see what I’m up to…right now!

Code This, Not That

Below are the slides from my recent talk at TriJS on JavaScript and replacements for some of the ways we solve problems in JavaScript, and alternatives that are better and less error prone. It’s also got a few interesting bits of knowledge that’ll definitely surprise you, like the truth table…let’s just say JS gets a little crazy.