...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.