Information Technology Developer
Hezekiah Kent Lewis III
Jacksonville, Florida

Skill Set

C# / VB / Web Forms / ASP.Net
I have a very long history of creating applications using the Visual Basic and C# programming languages and Microsoft's Visual Studio.
Within the .net platform I have taken advantage of all the benefits of .net coding including the separation of functional concerns and the use of classes, their properties and methods.
My practice is to write applications having:
  1. A user interface or presentation layer (These pages are suited for a phone or a desktop due to CSS Grid)
  2. A business logic layer to enforce business rules and manage data translations
  3. A separate referenced data access layer library
  4. SQL Server Stored procedures for database access
  5. When necessary, the dynamic creation of .net controls and validation
SQL Server Management Studio
SQL Server Stored Procedures
Expertise includes stored procedures, triggers, views, and table creation with data normalization. Normalization is imperative in order to reduce programming effort and to insure that rules are enforced in one place. The table should have all the attributes of the subject in one table. Other items I adhere to include avoiding the idea of a column serving more than one purpose. An example would be hat size, shirt size and shoe size in the same column.
The tables in the databases have inherit relationships. These relationships are made possible by the use of primary keys and foreign keys and are a part of any database I would design. Whether or not it is needed at the time, I have always included an identity column so that rows will always be unique. This column in many cases would be the key. I am not a DBA but I have the knowledge required to design a database, backup and restore for most applications.
JQuery / Ajax / JSON (FrontEnd Processing)
JQuery Ajax calls are another popular method to relieve the Web Server from unnecessary processing. These calls afford partial page updating. These updates could be applied to any control on the page. The entire page need not be sent and returned to and from the server. Fiddler (my favorite) has very useful monitoring facilities When you are in the world of front-end processing this kind of tool is essential.
Best practices for JQuery Ajax calls that I have employed are the following:
  1. The request = $.ajax;
  2. beforeSend: function () I append a loading image to let the user know something is happening.
  3. success:(function (data)) Indicates a successful data capture so you can do something with it.
  4. Promises: Providing a way of handling asynchronous operations. This is a more modern and efficient approach to handling callbacks.
  5. error: Taking this branch means that the operation has failed due to information contained in a status container.
AngularJS / AngularUI / Single Page Applications
AngularJS and AngularUI are frameworks for Single Page Applications(SPA). This is my favorite coding environment in conjunction with the Web API 2. Angular uses the Model, View, Controller pattern to separate the data(model), presentation(view) and logic(controller) components of a project. AngularJS and AngularUI bring traditionally server-side services, such as view-dependent controllers, to client-side web applications. Consequently, much of the heavy lifting on the server is reduced. At the time of this writing, AngularJS and AngularUI are the most popular forms of this framework. They both have Two-way binding which is part of the mechanism relieving the server backend of template responsibilities. If you have ever had an application that had flicker during form submission, the Angular SPA will probably eliminate this. This is because the entire page does not get posted back to the server but rather the contents of the template's controls.



MVC 5 / Attribute Routing
MVC 5 is another of the Model, View, Controller platform. This is perfect for small and large projects. For small projects that do not have a lot of data manipulation, It is very convenient where I can user the entity framework, linq and lambda and the built in pre-installed code scaffolding to afford creating, reading, updating and deleting (CRUD). Furthermore, Microsoft has included attributes in both the Model and the controllers affording more flexible routing in the controller and more flexible data validation and rules on the views. The views are generated and can be tightly bound to the Mode / View showing the data. This is generated for you. The associated controller to the view can check for valid input on the view and report back to the view if there is a problem. This is done for you within the scaffolding code. Applications built on this standard truly have a means to separate modeling classes, controller classes and associated view. That is to say the controller will not contain the data access (beyond the entity framework) for stored procedures and SQL Server, there is minimal coding on the views for dropdowns etc.
I mention these items about the advantages of MVC over the traditional webforms because there may be a need for a project to be turned around quickly. Did I mention that MVC does not contain postbacks. This relieves the webserver from that burden. The only item that can make this operation timelier is extensive customization. This way of doing business is very similar to what happens with the Web API. This standard is what (among a host of other things) is current in the industry. I should let you know that although webforms continue to be widely used, this is seen as a replacement for the older webform.
Web API 2 /Token & Basic Authentication / JSON
I am a big fan of Application Program Interfaces (API). In fact, my design of choice is what I call a "snowflake" Approach. This would be several applications that are related and grouped as such. Financial, Inventory, Student Information and Human Resources are examples of the grouping of which I speak. Angular and Web API 2 together constitute one of the strongest scenarios for front-end processing. The Web API would serve as the one and only source for group data with surrounding systems accessing the data the API serves up. This means that data can always come from the same source rather than various systems having its own source for data that exist. Updating that source would be updating for all applications associated with that group. This approach is very orderly. A directory of Web API's and their functions would be maintained and referenced to determine which API would satisfy any data requirements.