Category Archives: Web Development

Marketing Yourself: How to Create a Blog

How to Create a Blog: Getting started

One of the biggest barriers that many developers have with creating a presence on the web is getting started.  I’m going to try to make getting started as easy as possible, but not gloss over some of the important details that could hurt you later on when you grow.

In life, I have learned there is always a balance that needs to be achieved between doing things the best way and doing things in a way that is easy enough that you will actually do them.

So, I am going to present you with a few options for how you can get started with creating a blog and you can choose which path to follow based on what fits for you.

Blogging software

The first thing we should talk about is blogging software.  What kind of software should you use for your blog?

There are quite a few options out there, including writing your own custom made blog, but I think the best option for most developers is to use WordPress.

2013 12 16 08 27 28 thumb Marketing Yourself: How to Create a Blog

I don’t say this lightly, and I realize that in the developer community WordPress might not seem like the best option, but let’s dissect this a little bit.

When you are creating a blog, most of the time your goal is not to show how good you are at creating a blog or using blogging software, but instead your goal is to get your message out, control your image, and build a home base for yourself on the web.

In business, we’d say that your blog software is not your core competency, instead the content you put on your blog is your core competency.

Many developers are tempted to start out by creating their own blog or use a less popular blogging software solution, and they end up wasting a huge amount of time messing with or creating software instead of blogging.

I choose WordPress, because it is the most popular and widely used blogging software, which means it is well supported, has tons of plugins and just works.

You can literally get a new WordPress install up in minutes, even from a bare server, and you can find plugins for just about anything you can think of.

Sure, I come from a .NET and C# background, and WordPress is PHP, but I can’t deny how easy it is to use and customize WordPress.

You can, of course, use another popular piece of software or write your own blog from scratch, but if you want to get up and running quickly, I’d recommend you just use WordPress for now and you can switch later if you want to, once you have a better idea of what you are doing.

Buying your lot

Your first goal should really be to create something that belongs to you and only you.

If you spend a large amount of time producing content for a blog and someone else is ultimately in control of that content, you are putting quite a bit at risk.

Just like you wouldn’t build your house on someone else’s lot of land, you shouldn’t build your blog on someone else’s domain.

So, the first thing you want to do is buy your lot.  You are going to need your own domain that is owned by you.

2013 12 16 13 40 56 thumb Marketing Yourself: How to Create a Blog

Several free blogging platforms will gladly host your blog for you and give you an address within their domain.  Even though this is free and the cheapest way to get started, you need to look a little bit deeper into the future and realize it is worth the $1.99 or whatever it costs to buy a domain for a year.

Whatever you do, don’t botch this one up, because you will regret it.  Everything else can be changed later on, but moving domains and trying to keep your search rankings and all your content in place, is a pain that you don’t want to have.

You can register a domain pretty cheaply by using a service like GoDaddy.  I usually use GoDaddy for initially registering my domains, even through I may move the registration later.

Choosing a hosting method

As long as you have your own domain, the choice here won’t be as important when you are first starting out, but it is still good to consider your options.

There are three main options to choose from for hosting your new blog.

Completely Free Hosting

This option is the cheapest and will allow you to get a blog up without having to do much management of any software or any operating systems, but it has the drawback of giving you the least amount of control over your blog.

I started out my blog with this option using WordPress.com, but you can also use a fee service like Blogger, from Google, or one of the other free blog hosting companies.

2013 12 16 13 43 05 thumb Marketing Yourself: How to Create a Blog

I originally started out with this option, because I didn’t want to make a big investment in something that I didn’t know if I would stick with.  But, I later came to regret that decision, because of the lack of control over my blog.

With this option, you basically just register a new blog and can start posting immediately.  The hosting company gives you access just to create and edit posts and a few management functions, but you don’t have access to more advanced options that you would get with your own install of WordPress or other blogging software.

This might not seem like a big deal, but if you eventually want to put ads on your site, sell something, or customize your theme, you may quickly regret this decision.

If you do go with this option though, make sure you pay the optional fee most of these services offer to allow you to use your own custom domain for your blog.  Don’t make the mistake of skipping this.  You do NOT want to change your domain later—trust me.

Shared Hosting

With this option, you are usually using some space on a web server that is shared with other blogs or websites, but you are in control of a large portion of that space.

Shared hosting companies usually will have some options to preinstall or automatically install WordPress or another blogging platform for you and give you access to that blogging software as if it were installed on your own machine.

You usually access your “server” through the use of a control panel application that gives you options to add and remove certain software applications, access your database and files directly, and do other administrative tasks that you can’t do with a free hosting platform.

Once I got off of free hosting on WordPress.com, because I wanted to be able to fully control my theme and add plugins to my blog, (something you can’t do with free hosting,) I switched to Bluehost.com, one of the most popular shared hosting platforms for WordPress.  I was able to get everything migrated from WordPress.com to my WordPress install on Bluehost pretty easily, and my readers never even realized it.

2013 12 16 13 46 27 Marketing Yourself: How to Create a Blog

This is actually the option I’d recommend for someone starting out, but I’ll get to why a little later on.

The big thing with shared hosting is that it gives you almost full control over your blog.  The only thing you don’t have control over is the web server that is being used to handle the web requests and the actual OS your blog software is running on.  This means that you can install plugins, add custom themes, add your own HTML code and JavaScript, or pretty much anything else you want to your blog.

The other thing about this option is that it is pretty cheap as well.  The prices can vary based on features, but you can expect to pay around $6 – $10 a month for a fully hosted setup when starting out.  (In my opinion well worth it compared to the free hosting.)

I ended up moving off of shared hosting pretty quickly, because by the time I had moved from free hosting to shared hosting, my blog was a little too big already.  I ended up having a little more traffic than the shared hosting could easily handle and I wanted to experiment with the 3rd option, which I’ll tell you about next.

I could have stayed on shared hosting, but my blog was getting frequent enough spikes from articles becoming popular on Hacker News that I decided to try and optimize things myself.

Virtual Private Server or VPS

This brings us to the 3rd category of hosting options, VPS or virtual private server hosting.

VPS hosting is pretty close to what it sounds like.  A VPS is basically a virtualized private server in the cloud.  Most VPS hosting solutions will give you the ability to create your own virtual server running Linux and configure it how you wish.  You are basically given the keys to the car and you are on your way.

This of course can be a bit intimidating for starting out, but if you know what you are doing, or you are willing to learn (sometimes the hard way), this can be the most cost effective and efficient option to choose.  But, you can definitely get yourself into trouble—I know I have.

With great power comes great responsibility!

This blog is currently hosted through a VPS provider called DigitalOcean, but there are several other VPS solutions out there as well.  I found DigitalOcean to be the best priced option and it also seemed to have a very simple to use interface to create new virtual servers.  I actually run several VPS’s for my different blogs and sites through DigitalOcean and I only pay for what I use, since DigitalOcean bills by the hour based on what kind of hardware configuration you are using for your server.

2013 12 16 13 51 09 Marketing Yourself: How to Create a Blog

So, like I said, the big benefit of a VPS is that you have ultimate control of pretty much everything.  You are just given a Linux server and the root password and you are on your own.

But, this can also be the big disadvantage with a VPS.  You have to know or learn enough about Linux and installing your blogging software to be able to get up and running, and you’ve got to be able to troubleshoot your own problems.

For me, it is worth it because I get quite a bit of traffic to this blog, so my optimizations really make a difference, but for someone just starting out, I really wouldn’t recommend a VPS until you feel you’ve outgrown shared hosting.

My recommendation: shared hosting

If you are just starting out with your blog, I’d really recommend going with shared hosting with a company like Bluehost.

Going with free hosting is nice, really easy, and you can’t beat the price, but it comes at a cost of not really having control over your blog.  I felt this pain pretty quickly with my blog, but I didn’t have enough knowledge to know what to do about it and to know what my other options were.

Free hosting really restricts what you can do and diminishes a large amount of the value of using something like WordPress for your blog.  WordPress has a huge number of free plugins available that allow you to add many different features to your blog and really customize the appearance of it, as well as integrate with other software systems.  For example, I use a WordPress plugin with my Get Up and CODE podcast to automatically publish my podcasts to iTunes when I publish a blog post of a new podcast episode.

Free hosting also tends to hide you from what is really going on with your blog.  When I first moved from WordPress.com to shared hosting with a real WordPress install, I was a bit overwhelmed, because I had to try and figure out how to add the same functionality I had with my free hosting on my new shared hosting install.  I had really wished at that time that I had just started out with shared hosting.

The other thing to consider is that you’ll probably eventually want to move off of free hosting when your blog grows, especially if you want to monetize it somehow, and even though migration is possible, it isn’t the easiest thing and it is a bit nerve wracking.  I was very concerned that something would go wrong in transferring my blog over to shared hosting—that was not a very fun time in my life.

On the other end of the spectrum, is the VPS, which really is not something I’d recommend for starting out, because you won’t see any real benefit when your blog is small, but you’ll inherit quite a bit of headache.  I’d still rather see you use a VPS than free hosting, but if you do go with a VPS, just know what you are getting into.

So, all things considered, my recommendation for starting out is definitely shared hosting.  You get the benefit of a very low price to get started, good support, and the power to do what you want with your blog.

Bluehost is the shared hosting provider I’d recommend, simply because the price is really reasonable, the customer service was excellent, and I felt like the setup was extremely easy.  I was able to sign up for an account and click a single button to install WordPress.  (It appears that Bluehost actually has a VPS offering now as well, but I haven’t tried it yet.)

More details

Hopefully this two part series has helped you realize why having a blog is so important to promoting yourself and advancing your career, and given you enough information to get started creating your own blog.

I’ve just talked about the basics here, but I’ll be posting more about marketing yourself and creating a blog in the future.  Make sure you sign up for my newsletter, so you don’t miss any of these kinds of posts and I can let you know when I release a few products I am working on that cover more about marketing yourself and creating a blog than I can fit here.

And be sure to let me know what you think.  If you use this information on how to create a blog to create your own blog, send me a link to it or leave a comment below.

I Was Wrong About JavaScript and Responsive Design

Earlier this year I wrote a blog post about JavaScript and why I thought it was doomed; I also wrote a blog post about responsive design and why I thought it was a waste of time.

To be fair, I didn’t completely bash either technology, but I also didn’t have very many kind words to say about JavaScript or responsive design either.

It turns out that shortly after writing those articles, I found myself, ironically, working much more with JavaScript and having to use websites from my mobile device that were not created with responsive design techniques.

I consider myself to be pretty open-minded, especially when it comes to technology, but in both of these cases, I was being a bit narrow-minded and I think it is important to be willing to admit when you are wrong.

Fotolia 32796723 XS thumb I Was Wrong About JavaScript and Responsive Design

First let’s talk about JavaScript

Dear JavaScript, I’m sorry I said that you were ugly and that you would die soon.  I realize that you might not be the most attractive programming language ever created, but like troll dolls or the furby, you have a special kind of beauty that I’ve since learned to appreciate.  And, as for predicting your death, well, it does seem that you are still in the prime of your life, and while everything eventually dies, even programming languages, it isn’t nice to remind people of their mortality.  So, for both of those offenses, I am truly sorry.

On a more serious note, it seems that pretty soon after writing up that article I ended up creating several Pluralsight courses in which I was doing quite a bit of JavaScript development.

By doing this, I actually discovered that the ubiquity of JavaScript was actually very valuable and that it wasn’t as hard as I imagined to create fairly complex JavaScript based applications.

Let me explain a bit further.

After having created several applications using several different platforms and technologies with JavaScript, it became clear to me that the language itself was very flexible and JavaScript’s ability to easily treat data like code, through the use of JSON, was very useful.

At first, when I was just creating web applications with JavaScript, using it as a scripting language to do UI automation, this flexibility seemed to get in the way and make things more complicated than I liked.  I still think that JavaScript can be quite messy in a traditional web application that posts back to the server.

But, when I started using JavaScript to create Chrome plugins, and develop Single Page Applications, this flexibility became extremely useful, because I could basically create exactly what I wanted without a bunch of ceremony around it.  I started to see JavaScript as something I could use to build a more specific API that was specific to the problem domain I was solving.  I also saw that in many cases, for example Meteor, someone else was already doing this for me and I could just follow the conventions they laid out.

I still think there are some things about JavaScript that need to be improved.  But, overall, I have learned to stick to the good parts as much as possible. More importantly, I have learned that knowing the core concepts of JavaScript and programming with JavaScript has allowed me to build a good base which I can bring to many different platforms and environments.  Even though different programming environments may define their own conventions for using JavaScript to create an application or extend one, it is relatively easy to adapt to those conventions once you are familiar with some of the core parts of JavaScript that carryover everywhere.

I also have grown to like the prototypical nature of JavaScript and other prototypical languages like Lua.  I’ve always been a big fan of statically typed languages, and I still am, but I can also now appreciate some of the patterns that only a prototypical language allows which can really allow you to do quite a bit with just a little code.

Onto responsive design

I actually had a very enlightening conversation with a gentleman on Twitter, who really helped me take a second look at responsive design and why it was more useful than I thought.

One of the biggest ways that he shifted my thinking about responsive design was by helping me to realize that it isn’t just PC, mobile phone, tablet, but that there were all kinds of forms factors and kinds of devices that a web page should look good and function well on today.

mobile devices thumb I Was Wrong About JavaScript and Responsive Design

It also seems that right after I had written that article that I ended up having to use my phone for doing web based things much more than I had before then.  I quickly became frustrated with websites that did not implement some kind of responsive design and found myself smiling when I happened upon a website that was mobile friendly and altered the UI to make it much easier to use on a phone.

When I thought about it more, it turned out that I was responding instinctively to the fad of responsive design, but not realizing the actual value that was there.  I probably have a tendency to backlash hard against technology trends that seem to be fads or trendy.  Sometimes, I do get a bit overzealous in doing so and don’t realize that even though many people are ignorantly worshipping some new technology or trend, there are many others who are wearing the latest techno-fashion, because it really is good and useful.

By the way, I found this book, to be a good resource for learning about responsive web design, if you are looking to get a bit more understanding of it.

I still don’t think it is healthy or smart to jump all into responsive design without a good reason for doing so or having a good understanding of the value it will bring.  (Responsive design is not for everyone.)  But, I do think responsive design is a good solution and should be implemented in many more cases than what I had originally thought.  I can see a large amount of value in making an existing site responsive, because it can attract more business and make it easier for existing customers to give you money or use your product.

I even find myself wishing that my website was more responsive.  This blog has a default mobile theme, but I am wondering how much mobile traffic I am losing out on, or how many opportunities to convert that traffic to customers to one of my products I am also missing out on, because I am not presenting the information on this blog in the best way I can for a smaller device.

A good lesson

It turns out being wrong about these two technologies was a good lesson for me, because it helped me realize that even though I like to think that I have eliminated most of my technology biases, there are still plenty that exist.

One of the key things that I’ve always said about this blog is that I am not going to stop from saying something because I am not 100% sure of what I am saying.  What I mean by this is that I will give my view to the best of my knowledge, but that view is subject to revision.  There really is no need to hold onto a viewpoint that is wrong, once you realize it is wrong and it is ok to be wrong sometimes.  We all have to be willing to grow and learn along our journey.  If we want to be able to improve, we have to be willing to allow ourselves to be wrong and to be ok with that.

There are so many posts that I have written for this blog that I wouldn’t agree with 100% today and that is because my knowledge and experience is changing.  I really wouldn’t want it any other way.  If I agree 100% with what I wrote about last year or the year before, I would be 100% the same person I was back then, so I wouldn’t be growing and improving.  I’d rather be wrong sometimes and grow than think I am right all the time and stagnate.

Beginning HTML5 Apps For Firefox OS

My latest course was just released on Pluralsight:

Beginning HTML5 Apps For Firefox OS

If you haven’t seen Firefox OS yet, it is worth taking a look.  I think this mobile operating system has a large amount of potential, because of its focus on HTML5 from the start.  I was surprised how nice Firefox OS looks and feels and how easy it is to develop for using skills you already have.

2013 10 18 13 06 02 Beginning HTML5 Apps For Firefox OS

Here is the official course description:

Firefox OS is a new exciting mobile operating system that has the goal of taking HTML 5 and making it a first class mobile citizen. In this course I’ll teach you the basics of Firefox OS and show you by example how to create two real Firefox OS applications as well as how to get those applications into the Firefox Marketplace.

In this course, we’ll start off by learning a little bit about Firefox OS and what makes it different. We’ll also talk about some of the benefits of a mobile operating system that uses web technologies you are already familiar with and take a quick look at the OS itself.

After that, we’ll create a very basic Hello World application as we go through the pretty simple process of installing the Firefox OS simulator and creating a very basic application to run inside it.

Once we have those basics down, we’ll go straight into creating our first application. First, I’ll show you how to create a hosted application which is an application that you can actually host on your own webserver, but is installed like any other mobile app on Firefox OS.

Then, we’ll create another full application, as we learn how to create a packaged application that is able to access more of the APIs that Firefox OS only exposed to apps that are actually installed on the device. We’ll still use the same HTML 5 technologies you are used to for this application, but we won’t need to host the app ourselves, because the user will install in directly on their device.

Finally, I’ll take you through the process of deploying your Firefox OS applications. We’ll talk about the different options you have for getting our application into users hands including distributing it yourself and using the Firefox Marketplace to host your apps.

So, if you are excited about mobile, and want to learn about an exciting platform you can develop for that will allow you to reuse your existing HTML 5, JavaScript and CSS skills, you’ll definitely want to check out this course.

Meteor.js Fundamentals for Single Page Applications

Well I finally did it…

Ding! 50!

My latest Pluralsight course, Meteor.js Fundamentals for Single Page Applications, is my 50th course since I started this wild ride about 2 and a half years ago.

This course was a really fun course to put together, because Meteor is just an awesome platform.  After using Meteor, I actually am starting to like JavaScript.  I really like the idea of being able to build an entire application in a single language and to be able to use a single platform that takes care of all the plumbing for me.

The technology is still in its infancy, but I think it has huge potential.  Not very often I get this excited about a technology.

2013 10 03 14 28 14 Meteor.js Fundamentals for Single Page Applications

And here is the official course description:

Meteor is an exciting web development platform that has the potential to change the way you develop single page web applications.

Unfortunately, since Meteor is so new, there isn’t a large amount of information available to learn how to develop applications with it.

This course is designed to take you through the full process of developing a complete single page application in Meteor using JavaScript and deploying that application to a real production system.

We’ll start off by learning about what Meteor is and learning about the technologies that Meteor uses.

Then, we’ll dig deep into Meteor to demystify the “magic” around it and discover how Meteor is able to do so much with so little code.

Then, we’ll actually create our first Meteor application and along the way we’ll cover some of the code concepts of Meteor needed to create a basic Meteor application.

Once we have the basics down, we’ll expand our application and discover some of the more advanced concepts of the platform that really allows us to utilize the power of Meteor.

Finally, we’ll go beyond Meteor as we learn how to deploy our application to both the Meteor servers and a Linux machine in the cloud and also discover how to use community created extensions to do things like add routing to our application.

So, if you are interested in Meteor and want to see how you can create single page applications entirely in JavaScript with relatively little code, compared to other solutions, check out this course.

11 Influential Web Developers You Should Be Following

“There is no such thing as a ‘self-made’ man. We are made up of thousands of others. Everyone who has ever done a kind deed for us, or spoken one word of encouragement to us, has entered into the make-up of our character and of our thoughts, as well as our success.”

- George Matthew Adams

One major lesson I have learned in my career and in life in general is that if you want to be successful, find others who are already being successful at doing what you want to do, and do what they do.

I thought I’d share in this post some of the web developers, (although I hate to classify anyone so narrowly), that I follow and that have inspired me or provided me with great resources or advice.

Brad Frost

brad frost thumb 11 Influential Web Developers You Should Be Following

This guy just recently schooled me on responsive web design.  Best part is he did it in a way that made me actually feel smarter and not like I was stupid.  Hard to find someone so brilliant with so much tact.

If you want to know about responsive design, listen to Brad Frost.  He is laying out the future of responsive design and blazing trails in every direction.

I haven’t ever had the chance to hear Brad speak myself, but I hear that he is an excellent speaker as well.  I definitely plan to try to attend one of his sessions in the future.

Brad makes extremely compelling and convincing arguments about the things he believes in and it is really hard to argue with someone who checks all their facts and knows what they are talking about.

Brad has put together an excellent resource called This Is Responsive that contains lots of great information about responsive design.

Website: http://bradfrostweb.com/

Twitter: @brad_frost

Christian Heilmann

chrisheilmann280 thumb 11 Influential Web Developers You Should Be Following

Christian is the Principal Developer Evangelist of the Mozilla Developer Network.  I have to tell you, I really like this guy.  I’ve only had a couple of conversations with him on Twitter, but he seems to genuinely care about making the web a better place.

He is extremely well spoken and has an awesome German accent—oh, and he also knows what he is talking about.  He’s written many articles and blogs posts for Ajaxain, Smashingmag, Yahoo, Mozilla, ScriptJunkie and others.  And his Twitter stream is legendary.  If you want to know what is going on in the web world, check out his stream.

Website: http://christianheilmann.com/

Twitter: @codepo8

Books on Amazon

Dan Wahlin

DanHeadShotBlog thumb 11 Influential Web Developers You Should Be Following

Dan is a very experienced web developer that has kept up with the changing tides in web development.  He is the founder and owner of The Wahlin Group where he provides consulting and training on web technologies.

Lately Dan has been producing a huge amount of great content about Angular.js, including his very popular AngularJS Magazine on Flipboard.

Dan also is a Pluralsight author and has some very popular courses. (His latest is jQuery Tips and Tricks and I highly recommend it.)

Website: http://weblogs.asp.net/dwahlin/

Twitter: @DanWahlin

Books on Amazon

Elijah Manor

6b5037440980edbea493871fc133381e thumb 11 Influential Web Developers You Should Be Following

When it comes to JavaScript, it is pretty difficult to find someone more knowledgeable than Elijah.  Elijah breathes JSON.

One of the main reasons I like Elijah though, is because of his ability to take complex, and sometimes boring topics, and make them interesting and simple.  For example, he did an excellent series which he called “The Angry Birds of JavaScript” which I found really entertaining as well as useful.

Elijah is a trainer, speaker and also a fellow Pluralsight author. (You should check out his latest course: Fixing Common JavaScript Bugs.)

Website: http://www.elijahmanor.com/

Twitter: @elijahmanor

Glenn Block

WP 000784 thumb 11 Influential Web Developers You Should Be Following

Glenn is another one of those developers who seems to have a contagious passion for development that you can’t help but catch.  Glenn is always doing something cool that I want to learn about.  He was involved in all kinds of cool things at Microsoft like Web API, Azure and MEF.

Glenn Block, until recently, had been a PM at Microsoft, working on—you’ll never guess it—that’s right, node.js.  How cool is that?  He was one of the main guys to bring node.js on Windows to Azure.  I like how Glenn is able to combine these two separate worlds and make them make sense.  I consider Glenn to be very pragmatic.

Glenn is now working for Splunk, and I am sure he’ll do amazing things there as well.

Oh, and I almost forgot.  Glenn actually combined C# with node.js and birthed scriptcs, a way to write C# code without compiling.  Pretty cool stuff.

Website: http://codebetter.com/glennblock/

Twitter: @gblock

Books on Amazon

John Papa

JPBW 150x150 thumb 11 Influential Web Developers You Should Be Following

John is an awesome developer and an awesome guy.  He used to be a technical evangelist for Microsoft on Silverlight and much of his training and guidance was on using Silverlight.

But, after Silverlight… died, John found a way to reinvent himself and now is highly respected as an expert on SPA or Single Page Applications.  He is an amazing and inspiring example of how a person can redirect their career and use their existing strengths and knowledge to go in a different direction when needed.

John also is one of the most talented technical speakers that I have ever heard.  He speaks at conferences all over the world and even used to host the Silverlight TV show on Channel 9.

He’ll be speaking at DevIntersection in October in Las Vegas and Visual Studio Live! in November in Orlando, so if you get a chance, I’d highly recommend attending one of his sessions.

I’ve had the opportunity to meet John in person at the Orlando Code Camp and even interviewed him on an episode of my Get Up and CODE podcast, and I can tell you he is a genuinely nice and kind person as well.

He also happens to be a fellow Pluralsight author. (Check out his latest course Essential Knockout and JavaScript Tips.)

Website: http://www.johnpapa.net/

Twitter: @John_Papa

Books On Amazon

Kelly Sommers

b81b99287e78b1cd6cbd0e5cbfb3295c thumb 11 Influential Web Developers You Should Be Following

I like Kelly because she is transparent and passionate about development.  It is rare to find anyone who is so excited about technology and learning.

Both her blog and Twitter stream are constantly filled with valuable information.  Some of the things she talks about and writes about make my brain hurt.  For example, she wanted to learn about how to write very high performance code, so what did she do?  Oh, just learned C and wrote her own HTTP server called Haywire.

Many developers are ok with surface level answers to questions, but not Kelly, she keeps digging and digging until she finds a real answer that makes sense.  If you want to learn how to learn, follow Kelly. (Plus, you have to love the name of her domain.)

Website: http://kellabyte.com/

Twitter: @kellabyte

Paul Irish

avatar150 thumb 11 Influential Web Developers You Should Be Following

Paul is a very, very busy man.  He is involved in many web technologies like Modernizr, Yeoman, and HTML5 Boilerplate.  He is currently a developer advocate for Google Chrome.

Paul has had a huge impact on the modern web and although his blog isn’t updated all that often lately, it contains a huge amount of in-depth information about browsers and browser technology.  I turn to Paul when I want to understand the deep questions of the web.

What I like about Paul is that sheet volume of code that he has written.  He doesn’t just talk about technologies, he makes technologies.

Website: http://www.paulirish.com/

Twitter: @paul_irish

Rob Eisenberg

Rob1 thumb 11 Influential Web Developers You Should Be Following

Rob is an expert at looking at patterns and building frameworks out of them.  Rob has developed a framework called Caliburn.Micro which makes WPF, Silverlight, WinRT and WP7 development much easier.  Along the same lines, he created another framework called Durandal which helps take the pain out of JavaScript web development.

Rob figures out ways to simplify complex things, which of course is something I really like.  He owns a consulting company called Blue Spire and he speaks at many events and writes articles regularly at devlicio.us.

Website: http://robeisenberg.com/

Twitter: @EisenbergEffect

Books on Amazon

Scott Hanselman

headshot2 thumb 11 Influential Web Developers You Should Be Following

I’m going to go out on a limb here and assume you’ve already heard of Scott Hanselman—it is hard to be involved in web development and not have heard of him.

Scott has this natural talent of cutting through the BS that is out there in the tech world and getting to the heart of the matter.  He posts many things about the web and web development that other people are afraid to say or ask.

Scott also is the host of 3, that’s right, 3 podcasts.  I’ve been listening to Hanselminutes for a long time and I’ve even had the honor of being on the show a few times.

He is also a very talented public speaker known for meticulously preparing every detail of his presentations and rehearsing them to a diamond-like polish.

One thing I really like about Scott is that he seems to reflect the interests of most software developers and technologists.  His posts on all kinds of technical topics interesting to developers, not just web development and programming.  Scott is diverse.

Website: http://www.hanselman.com/

Twitter: @shanselman

Books On Amazon

Troy Hunt

Photo thumb 11 Influential Web Developers You Should Be FollowingThere is only one word for Troy… scary.  This dude scares the hell out of me—routinely.  Just when you thought your website was secure, here comes Troy showing you why it’s not.

Troy is the person I trust more than anyone else to tell me what I need to know about security in today’s web world.  Sure, everyone knows about SQL injection and salting passwords, but Troy’s knowledge goes far, far beyond that.  Troy routinely finds big security vulnerabilities in production websites and posts about them.

If you are doing web development and you don’t want to get hacked, you better pay attention to what Troy says.  His tweets and blog posts are like the bitter pill that you need to swallow if you want to live.  Oh, and he is a pretty nice guy as well.

Also, a Pluralsight author with some excellent courses on security.

Website: http://www.troyhunt.com/

Twitter: @troyhunt

That’s my list, what is yours?

Obviously I can’t list every single influential person in web development that I rely on for advice and wisdom, but this is a pretty good list of some of the people I have found most helpful.

Getting good advice and mentorship is really important to advancing your career.  I’m actually putting together a package of all my advice on career development that I have learned over the years, in a product that I’ll be launching sometime next year.

The project itself is still a bit secret, but sign up here if you are interested and I’ll be sure to let you know the moment it becomes available.

What about you?  Who is your list of top resources for web development?  Leave a comment and let me know.  Also, if one of the developers I mentioned above has helped you, leave them some love in a comment.

My Software Development Predictions In The Next Few Years

We are in the middle of a period of rapid change in the software development world and I think the pace of change will only continue to speed up in the next few years.  So, I thought it would be a good idea to post some software development predictions of what I think will happen in our software development world in the near future.

Mobile Software Development Prediction

Mobile is perhaps the biggest areas that everyone is curious about and it is really starting to seem that this space is ripe for an overhaul.  None of the major players are innovating in this space at all.

Apple keeps releasing new versions of its mobile OS and new iPhones, but they aren’t really doing anything new or different.  I also think moving to the flat design is going to turn out to be a bad move, because in doing so they took something that looked flashy and sophisticated and made it look extremely simple and plain.

On the Android side, there also isn’t much innovation.  The OS itself seems pretty stagnant and the devices aren’t really adding any new exciting capabilities.

I think consumers and developers alike are getting a bit tired of the App Store / install apps model.  It seems really burdensome and the more apps you get, the more updates you need to do and the more difficult it is to keep track of them all.

I think consumers are also finding that they don’t really like having so many devices to have to plug in, sync data with and carry around.  I’m starting to feel the weight myself of having a fitbit, a phone, a tablet, a notebook, and a desktop.  (Those are all links to the hardware I have, if you are curious.) I’d really like to have a single device that can adapt to a couple of different form factors and do everything I need.

My prediction is that we are going to start seeing the devices and OSes merge both on the Apple and Android side.  I fully expect to start seeing devices from both Google and Apple that are tablet / notebooks which are similar to the Windows 8 notebooks we are seeing today.  There is just no reason to have a tablet and a laptop when they can be easily combined into a single device with a detachable keyboard.

2013 09 21 15 10 15 thumb My Software Development Predictions In The Next Few Years

I am not sure this will happen, but I’d actually like to see it taken one step further and see the idea Ubuntu Mobile is pioneering take over.  With Ubuntu Mobile, the idea is that your phone has enough processing power to be your laptop or desktop computer, so you can just carry around your phone and plug it into a monitor and keyboard.  The actual OS adapts to the form factor depending on whether it is plugged in or not.

I’d actually like to see things go one step further than that (and I imagine they eventually will), and see a “computer” reduced to a very small block that you carry around with you which is able to display itself on any display technology that is around and utilize any external devices.  I imagine, the phone form factor would still be the best way to use this device for now, since you probably want to have a portable display anyway, but I’d like to just be able to pull out this device and tell it that I want the output to go to my TV or my monitor and for it to remember that it should utilize my keyboard and mouse for that profile.  At that point, I might have a tablet device as well, but it would only be a dumb screen that receives a display signal wirelessly from my phone.

I am getting a little bit far into the future though.  But, I think realistically next year we should see a merging of OSes from both Google and Apple and I would really expect Google to take the lead here, because I can’t think of one single competitive advantage that Apple has retained at this point.  There is no “magic” anymore with Apple products, the fairytale is over.

Web Software Development Predictions

I know I predicted the demise of JavaScript, but I am having some second thoughts on that prediction—at least for the short term.

The platform that really changed my mind was Meteor.  I had tried Meteor when it first came out, but recently I really dove into it to do a Pluralsight course on the technology and I was really impressed.  I was actually impressed enough to like writing JavaScript code, perhaps for the first time.

I don’t know if Meteor itself will become very popular, but the ideas within the platform are very likely to spill over to the rest of the web and become the defacto way of doing things.

Meteor is pure JavaScript, which means that you are only writing in a single programing language.  And, that code is by default running on both the server and the client.  The lines between server and client are very blurred with Meteor.  They sort of flipped things around where you only really think about the differences between the server and client when they are different, but the default case is that the code is the same.

Meteor also gets rid of REST and replaces it with data synchronization that just seems to magically work.  This is extremely powerful, because I am finding there is a huge waste of time involved in creating and consuming REST services ultimately to just sync data between two systems.

2013 09 21 15 11 20 thumb My Software Development Predictions In The Next Few Years

So, yes, I think for now that JavaScript will dominate the web and we’ll start to see just about all web applications become single page applications using frameworks that get rid of all the plumbing code and leave you with HTML templates and code that populates and changes the data in those templates.

Right now the browser is an OS, but I think within the next year or so, we’ll see the PAGE or tab become the OS.  And that is essentially what technologies like Meteor are doing.  They are deploying their infrastructure code to the first page load and then running the app in their own environment on a tab in your browser.

Eventually, I would expect other programming languages to take the place of JavaScript, but it might take much longer for that to happen than what I originally thought.  Live reloading of browser windows makes working with JavaScript much more bearable.

I fully expect that we’ll see all the JavaScript libraries that we are seeing now start to be replaced with platforms like Meteor that will handle all the plumbing from end to end.

The biggest problem I’ve had with JavaScript was all the extra stuff you have to put on top of it to make it actually be usable in a web application.  I was growing very tired of the 15 JavaScript libraries that invent their own DSLs that you have to know in order to work with them, but I can see solutions that are using Node.js, like Meteor, which provide all the services and plumbing needed to just create apps, as solving that problem.

Languages

I think we’ll see a much bigger adoption of Google’s Go language, because it seems to be a very good general purpose language that has many of the performance characteristics and power of C and C++, but has the ease of use and leverage of Java and C#.

We’ve sort of reached the place in the C# and Java space where just about everyone is doing “cargo cult programming.”  What I mean by this is that a majority of developers are writing unit tests and using IoC containers without understanding what value those practices bring or even if those practices are actually bringing any value.

This complexity and confusion is preventing many new developers from learning C# and Java and it is starting to seem that Python is now the standard beginners language.

I expect that we’ll see a rise in both Python and Go. Google has the potential to greatly increase the popularity of either of these languages if they decide to move Android / Chrome’s primary language from Java to either Go and Python.  (My bet would be on Go.)

We are overdue for a new statically typed language that incorporates all the things we’ve learned about in the past decade from Java and C#, but I don’t see that language on the horizon, so I am wondering if statically typed languages will eventually fade away.  The increase in tooling and support for dynamic languages has for the first time in history made this a possibility and I am actually starting to wonder if I might be ready to turn over to the dynamic side after all these years of being a staunch defender of statically typed languages.  (To be honest, the lines between what is statically types or strongly typed and not is blurring anyway.)

I feel like I am crazy saying this, but I’d actually recommend a beginning developer to learn JavaScript, because it sure seems like it will be the most useful language to know for the next few years at least.

Only time will tell

Well, those are my software development predictions, and to some degree my hopes, but I’m not very confident in many of them at this point.  The only one I’d bet on is that both Google and Apple merge their mobile and desktop OSes and develop ways to build web / native hybrid apps.  That is the only direction that makes sense to me.

What do you think?  How far off am I?  What have I left out?

Creating A Chrome Extension

Really excited about this course.  I’m a little late to publish this post.  But, last week my Pluralsight course on creating a Chrome extension was published.

Creating A Chrome Extension

It is amazingly easy to create a Chrome extension and it really doesn’t take long to learn how to do it.  If you know JavaScript and HTML, you already know 75% of what you need to know.

2013 09 21 15 24 06 Creating A Chrome Extension

Here is the course description:

Chrome is an awesome browser from Google that is very fast and lightweight, yet also very powerful. Chrome also has a very good extensibility model that allows developers with just HTML, CSS and JavaScript skills to create powerful extensions.

In this course, I’ll show you the basics of creating Chrome extensions as we create 3 different Chrome extensions. We’ll start off the course learning a little bit about the basics of Chrome extensions and how extensions work in Chrome and then we’ll dive right in and start creating our first extension.

Once we have the basics down, we’ll build a more powerful extension that has its own user interface and options page and is able to save data using the Chrome APIs and add its own entry to the right click menu for Chrome.

Then, we’ll learn to create a page action extension which will only show up on certain web pages. We’ll also learn how to utilize the Chrome messaging API and even how to inject our own JavaScript and CSS into an existing page to enhance its capabilities.

We’ll actually have our extension modify the Pluralsight website course listing page to make the course listing table sortable—so, you won’t want to miss this.

Finally, we’ll wrap up our tour of Chrome extensions by learning how to debug extensions as well as deploy them.

So, if you are interested in Chrome extensions, but have always thought it might be too difficult to create one for yourself, you definitely need to check out this course. Trust me, it is much easier than you probably think and this course will show you how to do it.

Why Responsive Design Is a Waste Of Time

(Update: My view is starting to change from when I first wrote this article.  Thanks to numerous people who have pointed out many things I overlooked and have helped me to understand what responsive design really is and what goals it is trying to achieve, I am getting a better understanding of why it may indeed not be a waste of time.  There are still some valid points that I brought up in this article, but I don’t stand by my original blanket statement that it is a waste of time.  It especially seems like responsive design may be worth the “trouble” for ecommerce sites where you are more much likely to make the sale if someone can easily purchase and browser your products from a mobile device.  Thanks everyone who has been giving me great advice and resources for better understanding responsive design and for mostly doing it in a “nice” way.)

Response design seems like a good idea.

At first look, it makes sense.  Why wouldn’t you want your same website to scale down to a mobile device and display differently?

And, sure, if there were no cost involved, if you could just flip on a switch and make your web application responsive, I’d definitely say do it… Why not?responsive design thumb Why Responsive Design Is a Waste Of Time

For example, there are many WordPress themes now that offer responsive design baked right in.  If you are using one of those themes, you might as well take advantage of the hard work someone else has put into making the design responsive.

But, if you are creating a new website or you are considering converting your existing website to a responsive design, I’d suggest you think twice before making the plunge.

The extra work of responsive design

The biggest problem with responsive design is the extra work involved.  Sure, there are frameworks and tools to make responsive design easier, but no matter how good those frameworks and tools get, to make a site adapt from the desktop to a mobile device, it is still going to require significant work.

If you have a really simple site with just a few pages or pages that pretty much all use the same layout, but just differ in content (like a blog for example,) then the work might not be that much, so go ahead, make it responsive.

But, if you have a website of any considerable size, you’ll probably find that responsive design is going to add a non-trivial amount of extra work to your project.

It actually turns out the adding responsive design to a web site can add more work than creating a separate desktop and mobile site, because you are creating a user interface that morphs or adapts to the mobile form factor–which, by the way, is ever-changing.

The problem with one-size-fits-all

Consider this. Which is more difficult to create: a car that turns into a motorcycle, or a car and a motorcycle?

Here is another one.  Which is more difficult to create: a multi-function printer or a printer and a scanner?

When you try to make a product that can do multiple things, the complexity of creating that product increases exponentially.  It is almost always easier to create two separate products that do two different functions or have different form factors, than it is to create an all-in-one product that is able to do many things.

Besides the increased difficulty, trying to create products that do more than one thing usually results in them not doing either function that great.

Isn’t it better in most cases to have two products that both do what they are supposed to do and do it well, than a single product that does two things at a mediocre level?one size fits all thumb Why Responsive Design Is a Waste Of Time

I’m not saying you can’t design a great responsive website that serves desktop clients and mobile clients wonderfully and makes their eyes light up with joy every time they see your beautiful site.  I’m just saying you won’t.

Let’s face it, unless you have a huge budget and time and have access to really good designers and JavaScript and CSS skills needed to pull it off, you’ll probably end up with something that works on both mobile and desktop and is reactive, but morphs from a pretty crappy desktop site to a pretty crappy mobile site.

I don’t know about you, but I’d rather just create a separate set of HTML, CSS and JavaScript for mobile version of the site and make both the desktop and mobile version look great than to have a mediocre compromise on both platforms that took twice as long to create.

I’d also rather not be handcuffed to my original design because changing anything will incur the cost of making changes to the reactive layout as well, that scales down to mobile.

The reuse fallacy

What are you really trying to do by creating a reactive design, instead of just creating a desktop version and mobile version of the site?  Reuse some HTML and CSS?

When you think about it, it doesn’t make much sense.  I’m all for code reuse, but responsive design is like putting ifdefs all over your code base.  Are you really saving much time and effort by reusing your front end code for both platforms?

It seems to me, that if you have to have your site display differently on a mobile device you are better off just forgetting about trying to reuse the HTML markup and CSS, and instead focus on reusing the backend code for both the mobile and desktop versions of your site; that is where you’ll actually get the biggest bang for your buck.

Again, I don’t know about you, but I’d much rather maintain two front end codebases that are simple than one monstrous complicated front end codebase.

It is good enough already?

Most desktop websites actually look fine on a mobile device without any reactive design.  To me it makes much more sense, in most cases, to focus on just creating a desktop design that looks good on mobile or even a mobile design the looks good on the desktop as well.

Sure, responsive design is pretty cool, but do you really need it?

It is the browser’s responsibility anyway

Aside from the practical reasons I’ve talked about so far, there is another major reason why responsive design might just be a waste of time anyway: this should all be the browser’s responsibility, not the web developer’s.

What I mean by this, is that just like HTML5 brought us changes to HTML that required the browser vendor to start supporting many of the things that web designers were doing manually, like playing video and drawing with JavaScript, it is very likely that eventually the responsiveness of responsive design will be relegated to where it actually belongs anyway, the browser and the markup itself.

This is even already starting to take place.  Consider the special input types in HTML5, like the number input type.  On a mobile device it brings up the numerical keyboard in mobile browsers.

I predict as more and more websites are viewed from mobile devices, the types of things that web designers are doing to make desktop sites responsive right now will be incorporated directly into the HTML markup and the browser itself.  So, creating a responsive design manually might end up being a big waste of time.

I’ll leave you with one final point, then I’ll get off my responsive design soapbox.

We are in a time of constant flux right now

Things are changing rapidly.  Mobile devices are getting bigger screens and higher resolutions and becoming much more powerful.  While two years ago it was a pain to visit a desktop site from a mobile browser, it is much less painful now.  With my new Galaxy S4, I hardly feel the difference at all and I even find myself specifically requesting the desktop version of a mobile site from time to time.

The trend says that mobile browsing will eventually take over desktop browsing as the main source of visitors to websites.  If this becomes reality—which I see no reason to doubt—responsive design won’t make much sense at all.  In that case, it will make much more sense to build websites optimized for mobile and not really worry so much about desktop.

If you are going to do responsive design, at least get a good book on the subject.  There are many subpar books floating around, because responsive design is so hot right now.

What do you think?  Am I off my rocker?  If you have a convincing argument as to why responsive design is worth the effort or why it isn’t as much extra effort as I have painted it to be, I’d love to hear it.  Let me know in the comments below.

Getting Started With Google’s Dart Language

I was a little skeptical of the Dart language when Google first announced it.

When I looked at the syntax of the language I thought that it didn’t really seem to offer anything new.

Why create another language that is not very different than what we already have?

How is this actually much better than JavaScript?

But after having worked with Dart now for quite awhile and producing a Pluralsight course on Dart, I’ve completely changed my mind.

The Dart language is awesome!

What makes the Dart language so awesome is all the little subtleties the language designers added to the language, not any major new concepts or ideas.

When I started writing Dart code it felt exactly right.  It felt like all the little annoyances that I had with languages like C#, Java and JavaScript were removed by the Dart language.

In fact, the real beauty of Dart is that if you already know C# or Java and JavaScript, you’ll probably be able to learn enough about the Dart language to be productive in Dart in less than an hour.

Before I show you just how easy it is to get started, let me briefly tell you what the Dart language is:

  • Object oriented.  Everything is an object including primitives and nulls
  • Optionally typed.  You can add type annotations which static checking tools can use to help you find errors in your code, but you don’t have to use them.
  • Interpreted.  Dart is run in a VM, but it is not compiled first.  Round-trip time for making changes is very short.
  • Compatible with JavaScript.  You can compile your Dart code to JavaScript and run Dart applications in any modern browser.
  • FAST!  Dart is very fast, much faster than JavaScript in just about every test.

Some cool language features that I like about the Dart language:

  • Mixins.  Instead of using inheritance, you can use a mixin to add functionality to a class without directly inheriting from another class.
  • Isolates.  Instead of threads, the Dart language uses isolates for concurrency.  Isolates can’t actually share any memory, they pass information though messages.  It is very hard to shoot yourself in the foot.
  • Simplified built-in types.  Numbers can be either int or double, and you can just use num, if you don’t care.  Lists and maps can be declared as literals.  An array is just a special case of a list.
  • Functions are first-class objects.  You can pass them around just like any other object.  There is even a lambda-like short-hand for creating a one-liner function.
  • Top level functions and variables.  Don’t want to put a function or variable in a class?  Good, you don’t have to.  In the Dart language, you can declare them anywhere you want.
  • Simplified classes.  There is short-hand for declaring constructors that assign parameters to class members.  Class members don’t have protected, private, public.  Member variables are automatically properties.
  • String interpolation.  No more string format methods, just use the $variableName in a string to have its value expanded.

Getting setup with the Dart language

Ready to get running in 5 minutes?

Ok, read on.

Step 1: Go to http://dartlang.org and click “Get started.”

2013 06 16 11 12 28 thumb Getting Started With Google’s Dart Language

Step 2: Download Dart (64-bit or 32-bit.)  Unzip the file and copy the “dart” folder to where you want Dart installed.

This folder will contain the Dart Editor, the Dart SDK and the Chromium web browser which has a built-in Dart VM.

Step 3: Run DartEditor.exe

Dart Editor 2013 06 16 11 18 01 thumb Getting Started With Google’s Dart Language

That is it, now you are ready to rock some Dart code!

Creating your first Dart language App

The Dart language can actually be used outside of a browser, just like you can use JavaScript with Node.js.  But, most developers will probably want to use Dart the same way we use JavaScript in a web application today.

I’m going to walk you through a real simple example that will show you how to create a basic Dart application that is able to respond to a button click and manipulate some DOM data.  For more advanced examples, you can check out my recently released Pluralsight course on Creating Web Applications with Dart. (I will plug this one more time before this post is over… wait for it…)

Step 1:

Go to File –> New Application.

Fill in your application name.  I’ll call mine HelloWorldDartWeb.

Leave “Generate sample content” checked.

Select “Web application.”

2013 06 16 11 24 03 thumb Getting Started With Google’s Dart Language

Step 2:

Open the helloworlddartweb.html file and clear out everything in the body element except for the two script tags at the bottom.

The first script tag imports our actual Dart file, just like you would use to add JavaScript to a page.

The second script adds Dart support to the browser.

Step 3:

Add the following HTML to the body tag in the helloworlddartweb.html file:

 <button id="theButton" >Press Me!</button>
 <div id="resultDiv"></div>

This will just create a button and a div.  We are going to add some Dart code to respond to a button click and populate the div with some text.

Step 4:

Open the helloworlddartweb.dart file and clear out everything in main() and delete the reverseText function.

Notice that there are only two things we really will need in our .dart file.  Just an import ‘dart:html’, to import that html library for Dart, and the main function, which executes as soon the DOM content is loaded on the page.

Step 5:

Edit the helloworldweb.dart file to make it look like this:

import 'dart:html';

void main() {
  var button = query("#theButton");
  button.onClick.listen(addResult);
}

void addResult(Event e) {
  var resultDiv = query("#resultDiv");
  resultDiv.text = "You clicked the button";
}

This code simply gets the button using a CSS selector.  It uses the query function to do this.

Then we register the addResult function as an event handler for the onClick event for the button.

In the addResult function, we simply query for the resultDiv and change its text.

After you run this example, you should see a result like this:

HelloWorldDartWeb   Chromium 2013 06 16 11 47 56 thumb Getting Started With Google’s Dart Language

Step 6:

Now change the Dart code to look like this:

import 'dart:html';

void main() {
  query("#theButton")
    .onClick.listen(
        (e) => query("#resultDiv").text = "You clicked the button!"
    );
}

Try running the code again and you should see it works exactly as before.  Here we just shortened the code to a single line by using the short-hand function syntax.

Going further with the Dart language

So, that is just the basics of Dart.  I wanted to show you how to get started really quickly, but I am sure there is more you will want to learn about Dart.

We can of course do much more with Dart, especially when building web applications.  There is a Dart Web UI library which can be used to do templating and data binding so we can simplify our Dart code even further.

The language itself is pretty simple.  Most C# and Java developers, as well as JavaScript developers, should be able to read and understand Dart code without any assistance.  But here is a link to an overview of the language.

If you are looking for a more in-depth coverage of the Dart language and want to see how to build a real application with Dart, check out my Introduction To Building Web Applications With Dart course on Pluralsight, where I go over the entire language and guide you through building a real application, as well as cover some of the more advanced features like mixins and isolates.

Also, I could only find two books on the Dart Language.

I don’t know if Dart will end up replacing JavaScript, but I do think Dart has the potential.  It really is an awesome language that is fun to develop in.

That is strong praise coming from me, since I really tend to dislike dynamic languages.  The creators of Dart have really done a good job of creating a language that is succinct, fast, easy to work with and has the best advantages of strongly typed languages with all the flexibility of dynamic languages like JavaScript.

Get Up and CODE and YouTube Videos

For those of you who frequent my blog and are looking for my latest Get Up and CODE podcast episode and YouTube video for the week, I have a bit of an announcement.

I am going to start posting these blog posts every Monday.

The YouTube videos will be going up every Wednesday.

The Get Up and CODE podcast will be coming on every Friday.

When my new website design is done, you’ll be able to find the latest episodes of each on the side bar, so I’ll stop including them in each weekly post.

But here is last week Get Up and CODE, where Iris and I talk about basic weight training.

Get Up And Code 006: Basic Weight Training

play audio Getting Started With Google’s Dart Language

Getting Started With Glimpse In ASP.NET MVC

If you are using ASP.NET, especially if you are using ASP.NET MVC, you need to be using Glimpse.

I’m currently working on a more exhaustive Pluralsight course on Glimpse,  (the course is now live!) but I thought I’d write up a quick getting started tutorial here.

What is Glimpse?

Perhaps you haven’t heard of Glimpse yet, or you are just a little unsure of exactly what it is.

Glimpse is basically an open source and free diagnostics platform for the web.  Right now it works best with ASP.NET and especially ASP.NET MVC, but it can be extended to other platforms as well.  There is already work started for a PHP version and even a Python port.

What Glimpse essentially does is let you see diagnostics information about what is happening on your server directly in your page through a small diagnostics window completely rendered in JavaScript.

Out of the box, Glimpse can show you all kinds of information about your MVC application, like what routes are registered, what the flow was through the MVC pipeline and how the models were bound.

(BTW, if you are looking to brush up on your ASP.NET MVC 4 skills or learn about ASP.NET MVC 4, I recommend Professional ASP.NET MVC 4.  Great book, top notch authors.)

Here is what the Glimpse window looks like on a page.

Home Page   My ASP.NET MVC Application   Google Chrome 2013 05 19 09 30 58 thumb Getting Started With Glimpse In ASP.NET MVC

Glimpse is also fully extendable.

There are already plugins for Entity Framework, NHibernate, Ninject and many, many more

The best part about Glimpse is how easy it is to get setup.

I’ll walk you through the steps below.

Step 1: Get Glimpse from NuGet

All you have to do to get Glimpse installed is simply either:

  • Open up the Package Manager Console and type “Install-Package Glimpse.Mvc4” (or “Glimpse.AspNet if you aren’t using MVC)
  • Or, right click on your references, select Manage NuGet Packages, then search for Glimpse and find the appropriate Glimpse package.

GlimpseTutorial   Manage NuGet Packages 2013 05 19 09 44 14 thumb Getting Started With Glimpse In ASP.NET MVC

One you’ve done that, Glimpse will automatically add a few entries to your web.config for you.

2013 05 19 09 46 18 thumb Getting Started With Glimpse In ASP.NET MVC

2013 05 19 09 47 06 thumb Getting Started With Glimpse In ASP.NET MVC

2013 05 19 09 49 21 thumb Getting Started With Glimpse In ASP.NET MVC

Step 2: Turn on Glimpse

Turning on Glimpse is super easy.

Just launch your app and navigate to glimpse.axd.  Then, click “Turn Glimpse On” to set a cookie that will tell the Glimpse component running on the server to send you Glimpse data.

2013 05 19 09 52 16 thumb Getting Started With Glimpse In ASP.NET MVC

Go to glimpse.axd

Glimpse   Configuration Page   Google Chrome 2013 05 19 09 52 38 thumb Getting Started With Glimpse In ASP.NET MVC

Turn it on!

It’s that simple!

Step 3: Fire it up

Now all you have to do is navigate to any page in your application and you’ll see this little icon at the bottom right hand corner of the screen:

2013 05 19 09 55 28 thumb Getting Started With Glimpse In ASP.NET MVC

If you click the icon, you’ll see the Glimpse panel, which currently looks similar to the Chrome Dev Tools panel.

Home Page   My ASP.NET MVC Application   Google Chrome 2013 05 19 09 57 54 thumb Getting Started With Glimpse In ASP.NET MVC

Using Glimpse

Each tab contains different diagnostics information about your application.

This data can be extremely helpful in troubleshooting problems and learning about exactly what is going on inside of MVC.

You can also find plugins that can be easily installed from NuGet.

For example, if you add the Entity Framework plugin, you’ll start seeing a tab that shows data about EF queries, like this:

2013 05 19 10 04 46 thumb Getting Started With Glimpse In ASP.NET MVC

I’m pretty excited about Glimpse and its future.  Anthony van der Hoorn and Nik Molnar, the two creators and main maintainers for Glimpse, have done an excellent job transforming how we get diagnostics information for web applications.

One of the things I find most exciting about this platform is how easy it is to extend.  In my upcoming Pluralsight course, (the course is now live!) I walk you through creating a Glimpse plugin, which is surprisingly easy.

So if you haven’t checked out Glimpse, what are you waiting for?  Go do it now, it will take you about 5 minutes to get setup.

What do you think?  Are you using Glimpse already?  Post a comment and let me know.

My YouTube video for the week: (This is not an ad!)

Dealing With Burnout

And here is the weekly Get Up and Code episode: