I have finally rolled out the first part of my redesigned web site. Initially, I was planning to implement all of the features in a single release but it would mean that I won't be able to create new posts until the new version is out so I decided to deploy in multiple phases.
Phase 1 contains the core changes. First up, I have upgraded (more like started from ground-up) several components and project types:
- Visual Studio 2010 to 2012
- .NET Framework 4.0 to 4.5
- ASP.NET MVC 3 to 5
- jQuery 1.7.2 to 1.11.1
- jQuery UI 1.8.20 to 1.10.4
I can't upgrade to jQuery 2.x yet because I'd still be supporting IE 8 and only v1.x supports lower versions of IE. But I'll be dropping support for IE7 as the user base is already diminishing.
I have removed or changed components for the following features:
- Removed curvy corners. I have used this for browsers that are not supporting the css style for border-radius. Recently, after Microsoft announced the compatibility changes for IE11, the curvy corners component begins to behave erratically - a pop up message is displayed on each page. So, I decided to remove it completely and drop support for browsers that do not understand the border-radius css style.
- Removed json2 script. This component is to support JSON objects to browsers that do not natively support JSON. Again, for IE7 and below only.
- Cleaned up unused scripts such as modernizr, Microsoft AJAX and MVC scripts, jQuery validate and themes.
- Replaced syntax highlighter with highlight.js. I feel that syntax highlighter has a large footprint making my website load noticeably slower. After some research, I found that highlight.js is lightweight and has a better highlighting feature. The only feature that I'm gonna miss with the syntax highlighter is the line numbers.
- Replaced XML data source with MySQL. It's been nice knowing that XML can do most of my stuff in storing the data in my blog. Unfortunately, this has slow me down because I have to think what is the best way of saving my data in multiple XML files and repeating element nodes. A database, on the other hand, is pretty straightforward - you simply arrange your data into tables. I choose MySQL because there is a free 20MB space in ClearDB (which I am currently using right now). It would take a while before I fully consume that 20MB space.
Then, I've restructured my site's folders just for the sake of best software practices. I've adopted a "code-behind" approach on the view's client scripts. I've also separated the business logic and data access classes to a different DLL.
Lastly, I have finally found an HTML editor that would help in creating my blog posts - SCEditor. It took me a while as some of the editors that I've seen falls short of support on different browsers. I like how the toolbar commands are presented in SCEditor and it is easy to create or switch to a different theme. Furthermore, most of the toolbar commands that I am looking for is available in this plugin. You can actually view it here. However, I have disabled saving across the internet and made it just available locally as I have not implemented authentication anywhere in this site.
I may use this plugin as well for posting comments as well but I'll explore if there are any other better options.
In the next phases, I'm planning to add an Edit/Delete Blog Post, change the look and feel of the site, and implement authentication/authorization for admin-related tasks.