Currently working as a Software Development Engineer at Microsoft in Charlotte, NC. My projects at Microsoft have ranged from building test automation and virtual lab management tools in C# to authoring native Win32 apps for Windows Mobile in C and C++.
Always open to Part-Time, Flex Hours, Remote work. I am not open, currently, to changing my full time employer.
Specialties: C#, C++, SQL Server, .Net Framework 3.5, ASP.Net, Generics, Algorithms, JavaScript, AJAX, DHTML, Visual Basic, XML, n-Tier architecture
Software Development Engineer II @ As an SDE 2 at Microsoft I work on software diagnostics systems and portals to assist engineers and customers with performing and/or accessing diagnostic tools. Some highlights from this role include:
• Performed significant amounts of UI work on Microsoft’s Diagnostics Self Help site, https://home.diagnostics.support.microsoft.com, including integration with Knockout and .NET MVC 4
• Advocated for, designed, authored, and released a major refactor of the internal diagnostics rules engine to execute rules against in-memory data structures rather than against a static data source (such as SQL Server). This boosted performance of dump file analysis by an order of magnitude and resulted in a much more stable and reliable system.
• Presently lead a weekly ‘Code Talk’ discussion group where we dive into code topics in order to share knowledge across our dev team and generally gain a better understanding of the tools we work with. Currently we are working through Pro C# 5.0 and the .NET 4.5 Framework from Apress.
• Act as a subject matter expert on my team on a variety of topics such as
o Our existing diagnostics systems
o JavaScript, jQuery, Knockout, Sammy.js
o C#/.NET Framework
o Relational Database design From July 2012 to Present (3 years 6 months) Software Development Engineer @ Continued role as a principle developer on Microsoft's Unified Diagnostics Ecosystem, or UDE.
UDE is a series of services which is used to perform automated analysis against diagnostic data (such as dump files, log files, etc).
* Key developer and architect of UDE Rules Engine also known as UDE Annotation
* Principle developer of numerous core APIs within UDE for handling message authoring, session management, and problem categorization, and other functions
* Provided essential development guidance and first hand work in the development of UDE services for analyzing dump files and log files, specifically
* Authored development guides and spec documents for areas within UDE where I was particularly knowledgeable From December 2010 to June 2012 (1 year 7 months) Charlotte, North Carolina AreaSoftware Design Engineer 3 @ As a member of the Unified Diagnostic Ecosystem project team (under the umbrella of the CTS organization), develop and maintain applications designed to streamline the Microsoft support process through the introduction of enhanced standardization, unification, automation, measurement, and finally by driving collaboration. Primarily work with technologies such as C#, C/C++, SQL Server 2008, and Visual Studio 2010.
• Constructed the back end code for an object representation of debugger objects such as processes, threads, and handles. Also designed and built an SQL Database schema to facilitate storage, analysis, and retrieval of these objects.
• Designed and implemented a depth-first search graph traversal algorithm which identifies deadlocked threads in Microsoft Windows kernel mode or user mode memory dumps.
• Developed a WCF Service Layer for the debugger objects library to facilitate communication between back end server processes and front end clients.
• Authored a managed library for consuming ETL files.
• Provided key design input into UDE Annotation, a key deliverable of the Unified Diagnostic Ecosystem whereby noteworthy diagnostic data may be marked by support engineers as unique, creating a system where future data items with similar problem signatures will be more easily identifiable.
• Demonstrated ability to work well in a distributed team environment, collaborating with team members in North Carolina, Texas, Washington, and China. From April 2010 to December 2010 (9 months) Programmer Analyst III @ Mostly, I spent my time looking for another job. From January 2010 to April 2010 (4 months) Software Design Engineer @ As a member of the Microsoft Product Quality and Online Engineering team, develop and maintain applications.
• Engineered an abstraction layer for Microsoft Log Parser that allows scalable, reusable applications to be constructed more easily that rely on standard log files as a data source. This library also allows supports integration with Linq.
• Authored a Windows Sidebar gadget that displays dynamically updated statistical data received from a web service to the user's desktop.
• Developed a WCF Service to distribute statistical data to XmlHttp clients
• Implemented a merge sort algorithm for doubly linked lists and a Boyer-Moore-Horspool string search algorithm.
• Developed custom UI for the new sliding panel Home/Today screens found in Windows Mobile 6.5.
• Engineered a COM object that manages formatting options for Windows Mobile Home Screen Plugins utilizing the Windows Mobile Home Screen API. The object implements the decorator design pattern in order to facilitate extensibility and dynamic addition/removal of features as needed.
• Principal developer for a Windows Mobile Marketplace application codenamed "SIMon" (Win32, C/C++).
• Constructed a library extension for managing Microsoft Hyper-V Virtual resources (such as Virtual Machines) as thread safe, discrete objects.
• Developed a test automation framework for products of the Microsoft Fixit brand. Features include the ability to independently and dynamically discover new test tasks, manage a virtual machine lab, run tests, and return a report of the test results.
• Authored a messaging layer for communication between a test server and test client machines.
• Demonstrated ability to meet Scrum sprint development goals and deliver on time results From March 2009 to January 2010 (11 months) Charlotte, North Carolina AreaDeveloper @ Develop and maintain ASP.Net and .Net Winforms applications utilizing .Net Framework 3.5 (primarily in C#)
Developed an algorithm for converting any .Net object or collection to xml. Demonstrated expert level knowledge of generics, reflection, and recursion to build the algorithm. An associated Attribute class allows developers to customize the manner in which an object is exported.
Developed a Type Ahead Suggest ASP.Net user control. Results are displayed in a browsable table that appears as a "drop down" positioned below the control. On the client side, JavaScript and the DOM are used to generate an XmlHttp object that queries an aspx page for results in XML format. The control has proven to be highly flexible and is currently in the process of being implemented on an internal customer web site.
Assumed control of an ASP.Net development project and introduced refactoring, better development practices, and object oriented design.
Constructed libraries of helper classes for abstracting tasks such as working with SQL Databases, accessing ViewState and ServerState in ASP.Net, and dynamically creating JavaScript for Web 2.0 pages.
Provided initial design pattern for building the business object layers and data access layers for all .Net development.
Provided mentoring to other developers on topics such as Object Oriented Programming, ASP.Net, JavaScript, C#, .Net Framework, N-Tier architecture, and programming best practices. From August 2008 to March 2009 (8 months) Web Developer @ Develop and maintain ASP.Net and .Net Winforms applications utilizing .Net Framework 3.5
Developed an inherited type from a DevExpress Tools GridControl that maintains all the same features of the original but now also published an event when the user selects a new row from the Control
Developed the Business Logic and Data Access Layers for an ASP.Net application used to track and manage utility expenses. From April 2008 to August 2008 (5 months) Application Programmer @ Responsible for developing Windows Apps for IT Support.
Constructed an assembly containing a number of classes for working with Directory Services including a wrapper class that creates a strongly-typed Active Directory User object.
Engineered an ASP.NET 2.0 site that allows "On Call" staff to manage specific services on designated servers, as well as reset Active Directory user passwords during after hours support. The site utilizes WMI classes such as Win32_Service and Win32_OperatingSystem as well as custom classes designed for interacting with WMI and Directory Services.
Developed a C++ application for creating local Microsoft Outlook Exchange profiles from the command line.
Built a Windows Forms application designed for managing inventory data.
A C# Winforms application that interprets log file data created by an SMTP Sink into a very organized and readable format that resembles the look and feel of Microsoft Outlook. The application allows searching by field, stores its settings in a registry key, and prints individual logs in a format that strongly resembles the Microsoft Outlook memo format.
Provided in house developer support for all 3rd party apps. Managed any scripting needs in the areas of Active Directory administration and enterprise-wide desktop support.
During a network-crippling virus attack, designed, authored, and implemented a script that pushed updates out to the 500+ affected desktops and laptops, effectively stopping the virus from attacking our network.
Configured, implemented, and maintained BMC Service Desk Express. This included designing custom forms, authoring multiple SDE Business Rules, and maintaining an MS SQL Server 2005 database.
Designed and implemented a synchronization script for updating phone numbers and addresses in Active Directory from a SQL database. From May 2004 to April 2008 (4 years) Hickory/Lenoir, North Carolina AreaGeek Squad Technician @ Diagnose and correct PC Hardware and Software issues. Communicate directly with customers to understand their needs and concerns. From November 2002 to May 2004 (1 year 7 months) Hickory/Lenoir, North Carolina Area
Bachelor of Science, Computer Science, 3.98 @ Baker College Online From 2007 to 2010 computer science @ Catawba Valley Community College From 1997 to 1998 David Cole is skilled in: .NET, C#, Visual Studio, ASP.NET, Web Services, XML, WCF, Scrum, Microsoft SQL Server, Software Development, SharePoint, LINQ, C++, JavaScript, AJAX
Websites:
https://crux.baker.edu/~dcole03/Pong/pong.htm,
http://www.codeproject.com/KB/windows/IntroToGesturesAPI.aspx