About this website

This website is as much a sandbox/playground for experimenting with web development technologies as it is anything else. I could have just stood up a Wordpress blog site for the family and called it a day. However, a family blog site makes for a good sized application to experiment with. Here's a summary of the technologies that I used to create bowlinjar.com.

Server Technologies Used


ASP.NET MVC 4

I have experience building web apps in Classic ASP, ASP.NET Web Forms, and ASP.NET MVC. Professionally, I currently work with both Web Forms and MVC, but MVC is my favorite. I love the clean separation of concerns between the model, view, and controller layers. And I love that MVC views give you full control over your HTML markup, wich makes working with jQuery, CSS 3, KnockoutJs templates, JQuery Mobile, etc. much easier.

MS SQL Server 2012

I've been using MS SQL Server since I first starting developing web application in 1998. For a .NET developer, it's still the hands down favorite. This site uses a MS SQL Server 2012 database to store all of the blog entries and related data (categories, tags, author info, etc.)

Entity Framework 5

Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need to write tons of data acess code, which traditionally required the creation of SQL stored procedures, custom data entity objects, and code to populate and transfer the data objects. This is also the "M" (model) typcically used in MVC applications.

I built this website using the EF Code First (with migrations) approach, which means that you create simple C# classes to represent your data objects, and then let .NET and EF actually create/maintain the database. And then use LINQ to write queries against the database using C#. I can't even begin to explain how much better this is than the old stored procedure days!!!

ASP.NET Web API

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. It's basically, Microsoft's latest platform for building web services.

I don't use it much on the public areas of this website, but I've used it quite a bit behind the scenes in the blog and content management aspects of the application. I use it in combination with jQuery and Knockout to send AJAX data back and forth via JSON. Mostly for helper utilities, like image management, checking to see if URL slugs are available, etc.

Client Technologies Used


HTML5 and CSS3

Not much to say here. Just wanting good semantic markup.

Twitter Boopstrap

Bootstrap is a free collection of tools for creating websites and web applications. It contains HTML and CSS-based design templates for typography, forms, buttons, navigation and other interface components. I mostly like it for its grid based and responsive layouts. It's much easier than hand calculating all the left and right floats yourself. Additionally, I didn't want to build separate templates for phones and tablets on this site. Bootstraps' responsive design handles most of this for you. (For example, if you are on a desktop, try re-sizing your window to about the size of a phone, and you'll see the menu collapse into a more compact design.) It's worth noting, that this site's design is largely based off a theme that I liked (and purchased) on ThemeForest. The great thing, is that since it's built off of Bootstrap, it's easy for to exetend the markup for custom ideas and content that weren't included in the original theme.

jQuery

As described on the official website, "jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript." I don't have much to add here. This website uses it extensively.

Knockout

Knockout is sort of like MVC (actually MVVM) on the client. It's great for formatting and displaying JSON data (via templates) that you grab from the server (Web API in my case.) I also like the two-way data binding feature available via observables. We use Knockout heavily (for Single Page Applications (SPA)) at work. We considred other frameworks such as Angular and Ember, but ultimately went with Knockout (paired with Durandal) for it's ease of use and quick learning curve. As mentioned above, the public area of this website doesn't use Knockout/Web API much, but that will probably change in the future as I add more features.

Other Info


Visual Studio 2012

This website was createdly mostly in Visual Studio Express 2012 for Web. I use the Professional edition on a daily basis at work, and I'm happy to say that for a hobby website, the Express edition is perfectly fine. There ae possibly a few features that I miss (especially the use of ReSharper), but nothing worth moving away from this free version for personal use.

Mac OSX 10.8 / Windows 7

It's worth mentioning that this website was created on Mac hardware running Windows 7 via Apple's Boot Camp. At work, I primarily use a Windows, but at home we use Macs. Unless I want to run Visual Studio :)