Did you know...

...the content of my online resume is fully dynamic and database driven. Even while building this site, my passions for knowledge and self-growth dictated that I take the "road less traveled". Everything on this site could easily have been created using basic HTML. Instead, I have constructed this website using complex .NET technologies, including multi-threading with resource locking, an XML Web Service, Design Patterns, and custom server controls to provide an online illustration of my abilities.

A number of tools and technologies were used to put together this website. While not all of the technologies were necessary for an online resume, building to higher and more exacting standards gave me the opportunity to develop these skills.

Visual Studio.Net was used for the vast majority of this site, with more than 95% of the development being in C#. The C# language is a beautiful language, and of all the languages that I have programmed in, C# is my favorite. To demonstrate the seamless language interoperability of the .NET framework, I decided to use Visual Basic.NET to create the Software & SoftwareFactory classes. Microsoft Access was chosen for the database, and although not as robust as SQL Server, it is more than adequate for the needs of my site.

Tools and Technologies
  • Microsoft Visual Studio.NET 2008
  • Microsoft Access
  • Jasc Paint Shop Pro 8
  • Microsoft Visio
  • C# and the .NET 3.5 Framework
  • Visual Basic.NET
  • ASP.NET Web Forms
  • Multi-threading with resource locking
  • ASP.NET Custom Server Controls
  • ASP.NET User Controls
  • ADO.NET
  • Design Patterns
  • SQL
  • MS Access
  • Relational Database
  • HTML
  • Cascading Style Sheets
  • JavaScript
  • Graphics Design
  • n-Tier Design


This is an architectural diagram of my website showing some of the major components and technologies involved. Please Note: The AJAX Animation has not been implemented yet, but will be in the near future. Other technologies I am looking to integrate into my site at some future date are Silverlight, WCF, Bing Maps (aka Virtual Earth), and Iron Ruby.


Creating a Data Driven Website

By making the site database driven, I was able to incorporate flexibility into the presentation as well as reduce the time needed to keep my online resume up to date. Because of the relatively small number of tables, I decided to use MS Access for my database. While SQL Server or Oracle would be more suitable for an enterprise application, I felt that MS Access was the appropriate choice to power my website.

The database is currently comprised of twelve tables, although I plan to increase this number as I continue to expand my site. I used MS Visio to create the schema diagram for my database. To see the actual database schema for this website, please click the image on the right.

The entire data access layer was written using ADO.NET. The ADO.NET libraries are the collection of classes in the .NET Framework which allow a .NET application to easily interface with its database. By providing this layer of abstraction between the application and the data, the database can be changed to another provider by simply changing the ADO.NET classes which are involved.

For those queries which involved parent and child tables such as for my work experience, I used the DataSet and OleDbDataAdapter classes to retrieve the data. For those simple queries which involved only a single table or perhaps an inner join of two or three tables, I used the OleDbDataReader class.



Choosing a Platform

When designing this website, I decided that I wanted to construct the entire site using ASP.NET. This latest web technology from Microsoft is the collection of classes within the .NET Framework which supports application development for the internet. Web Forms are the visible part of ASP.NET and provide for rapid construction of dynamic web pages using Microsoft Visual Studio. Each Web Form is actually a combination of an HTML file (.aspx) and a "code beside" page written in C# or other .NET language. When the .aspx page is requested, the .NET Framework creates the final HTML by combining the static HTML in the .aspx file with HTML dynamically generated by the code beside page. This final HTML is then returned to the requesting browser where it is displayed.

My decision to use ASP.NET was based upon several advantages that ASP.NET brings to the table over other technologies. First, ASP.NET provides the framework for an event-driven programming model across the stateless HTTP protocol of the internet. Secondly, ASP.NET automatically handles saving and restoring client state between browser requests, thus freeing the developer to focus on the more complex parts of the application. Lastly, the Visual Studio IDE provides a rich development environment for creating enterprise worthy applications.


Utilizing the power of Custom Server Controls

Throughout my website, I have made good use of Custom Server Controls to encapsulate the specialized formatting for each display. For this project I created Custom Server Controls for my work experience and education, and gave these Controls the intelligence to handle the complex data formatting required to correctly display these objects. By using these controls, I am freed from having to repeat the formatting for each data object. Instead the logic is centralized within the control and re-used with each item to be displayed.

For example, when I retrieve my work experience from the database, I create a Company object for each company I have worked for. Each of these Company Objects contains a collection of Project Objects, which in turn contain Task items. The repetitious formatting of all this data would be both cumbersome and bug prone. Instead, to display the information for each company, I create one of my Custom Server Controls and pass it the Company object to be displayed. The Control then formats the data into the appropriate HTML for display.