Colin Carpi

Freelance Programmer & Database Expert

Location:Merion Station, Pennsylvania, United States
2 Skills
Decades of experience with Microsoft tools and technologies developing desktop and web applications. That includes C#, VB.NET, C++, Visual Studio, the .NET Framework, Windows Forms, WPF, Silverlight, XAML, WCF, WCF-RIA, ADO.NET, Entity Framework, LINQ, MS SQL Server and MS Access (including Transact-SQL and Access SQL), ASP.NET, Classic ASP, Web Forms, MVC, IIS, HTML, XML, JavaScript, jQuery, CSS, XSLT, XPath, AJAX, VBA and programmatic manipulation of the Microsoft Office Suite of applications (including Excel).


Apr. 2011 – Present Startup effort (currently without a name)

Work included development of an application that consists of .aspx web pages with embedded Silverlight applications. Generally the purpose of the application is to allow a user to click on a map location and retrieve information related to the chosen location. Microsoft Bing map services and map controls are used to implement the map functionality. The Model-View-ViewModel (MVVM) architectural design pattern is used to develop the UI and presentation logic layers of the application along with Prism, Microsoft's composite application design guidelines and the Prism libraries which support the MVVM pattern. Windows Communication Foundation Rich Internet Application (WCF-RIA) services were used for communication with the back-end servers. The database used was SQL Server Express. Entity Framework was used to read and write data from the database. Visual Studio was the integrated development environment and the development language for the Silverlight applications was C# along with extensible application markup language (XAML) for interface development. MSTest, nUnit and MOQ were used for unit and integration testing.

Oct. 2010 – May 2011 Hotwire Communication

Work for Hotwire Communication, a company that provides television (cable), phone and internet services to multi-family dwellings, was the development of a multi-tiered client-server internet application that delivered television, phone, internet and other services to hospital patients via a touch screen computer located at their bedside. As application architect I was responsible for the technical design of the application and selection of the tools and technologies used to implement the application. The desktop client was developed using Windows Presentation Foundation (WPF). Extensible Application Markup Language (XAML) and Expression Blend were used to develop the user interface (UI). The Model-View-ViewModel (MVVM) architectural design pattern (which makes use of features unique to WPF) was used to define how the UI and presentation logic layers were coded in order to promote loose coupling between those layers. Prism, Microsoft's composite application design guidelines were used to develop the application. That included the use of the Unity Container for dependency injection, the event aggregation pattern for communication between the composited modules, support for the MVVM pattern, and navigation functionality. Communication between the client and back-end server was implemented with web services developed using Windows Communication Foundation (WCF). The web service endpoint on the back end server was implemented as a self-hosting application (for development), a Windows service and and an HTTP based service (for production). Entity Framework (EF), Microsoft's Object Relational Mapping technology, was used to read and write object graphs from the back-end database that were transmitted between the server and the client to support the data-driven aspects of the client application. The back-end database was SQL server 2008. I also served as lead and senior programmer and worked on all tiers of the application and was involved with all aspects of the software development life-cycle. I was also responsible for some project management tasks including compiling the list of tasks to be completed, assigning those tasks to programmers and estimating the time and resources needed to complete those tasks. The language used to code the application was C#, the integrated development environment used was Visual Studio 2010 and Subversion was used for version control. Windows media center was integrated into the application to provide video services and multiple 3rd party libraries were used to implement phone services. The application was localized and globalized to support multiple languages. An additional application was also developed to implement administrative services, communication between patient and nurse and the distribution of administrative and health related documents and information to patients.

Oct. 2009 – Apr. 2010 FreedomPay

As senior programmer work for FreedomPay, a company that delivers comprehensive payment management solutions, included the development of a reporting service based on Microsoft SQL Server Reporting Services (SSRS) for the application that customers used to manage their credit card and debit card transactions. The service generated reports based on user selected parameters and managed the process of subscribing to reports as well as the delivery of those reports via e-mail and FTP in a variety of formats. The service was implemented using C#, ASP.NET, AJAX (Asynchronos Javascript and XML), HTML (Hypertext Markup Language), DHTML (Dynamic HTML), CSS (Cascading Style Sheets), Javascript and Transact-SQL. The development tools used were Visual Studio 2008 and Microsoft SQL Server 2008 including SQL Server Management Studio and SQL Server Configuration Manager. The reports were designed and developed using SSRS and Visual Studio 2005. Other work included modification of the application that hosted the reporting service using Microsoft theming and skinning technologies and Microsoft localization and globalization techniques to produce customer specific versions of the application accommodating different cultures and languages. The application was also modified to execute on multiple browsers and multiple versions of each browser principally through the use of browser specific and theme specific master pages, CSS and Javascript. Other work included development of custom controls base on Microsoft .NET and AJAX technologies and building on Telerik RAD controls.

Apr. 2007 – Aug. 2008 MC Trading Group

Work for MC Trading Group, a financial company whose income is derived from trading in the stock market, included the development of programs to execute trading strategies and a variety of supporting applications that performed data gathering, storage and analysis tasks. I was the sole developer and was therefore responsible for all aspects of the project. Code was written in C# using Microsoft Visual Studio Express 2005 and 2008 and was written to Microsoft .NET Framework 3.5. The trading strategies were implemented as DLLs (dynamic-link libraries) that were incorporated into a 3rd party trading platform (Bullseye Professional). The strategy DLLs and supporting applications were developed with the following technologies and techniques: Microsoft Access database 2007, Microsoft SQL Server 2005, SQL (Structured Query Language, including Transact-SQL), Microsoft Excel 2007, WinForms, databinding, web page “scraping” applications, MSHTML DOM (Microsoft HTML Document Object Model) for parsing web pages and portions of the System.Net, System.Reflection and System.InteropServices components (amongst others) of the .NET Framework Class Library.

May 2004 – Nov. 2006 Essential Energy Solutions

Work for Essential Energy Solutions, an engineering company serving the electric power transmission industry, included the development of an application and a web site to commercialize the application. The company was a startup, I was a founder and I was the entire IT department. The application, Conductor Ampacity Risk Determination (CARD), is software that analyzes the performance of conductors for high power transmission lines under various weather conditions with the goal of optimizing power transmission efficiency. The CARD application was developed using Visual Studio .NET and Visual Studio Express 2005 using the C# language and ADO.NET (Active Data Objects for .NET) for database independent data access. The application originally used Microsoft Access for its database needs but was converted to use MSDE (Microsoft Desktop Engine, the desktop version of Microsoft SQL Server). Stored procedures and triggers were written in Transact-SQL. The web application that commercialized the CARD application (and into which the CARD application was integrated) was an ASP.NET application developed using Visual Studio .NET (which included Visual Interdev) and Visual Studio Express 2005 (which included Visual Web Developer) using C# for the code-behind files and ADO.NET for database independent data access on the server and using HTML (Hypertext Markup Language) , CSS (Cascading Style Sheets), DHTML (Dynamic HTML), XHTML (Extensible HTML), XML (Extensible Markup Language), XSL (Extensible Stylesheet Language), XSLT (XSL Transforms) and XPath for constructing web pages, and using JavaScript to implement client-side functionality. The web application also originally used the Microsoft Access database but was converted to use MSDE. Responsibilities included handling all the information technology related tasks that were required during the web site launch period. These tasks included selection of web host, selection of server hardware, server operating system and server software, selection of provider of merchant account, payment portal and payment portal software, selection of Secure Socket Layer (SSL) certificate authority and serving in the capacity of server administrator responsible for installing and setting up the company’s web site application, for setting up the server as an application server, a file server and a mail server for the company and for the security of the company’s server and the web site application.

Nov. 2001 – Apr. 2004 LockeSmith Software

Work for LockeSmith Software, a company that developed software components and tools for financial analysis (in particular, the technical and fundamental analysis of investments) included the following. Most importantly the development of the MultiGraph control that is used to add technical analysis charting capabilities to investment analysis applications. Also the development of the DualSlider control that implements a slider control that has 2 sliders. Both of these controls were originally developed using the Visual Studio 6.0 Integrated Development Environment (IDE) and the Visual C++ language. In addition the Microsoft Foundation Classes (MFC) were used to develop the MultiGraph control and the Active Template Library (ATL) was used to develop the DualSlider control. Microsoft’s Active Data Objects technology (ADO) was used to implement all data access requirements of the MultiGraph control. Later .NET versions of these controls were produced using Microsoft Visual Studio .NET, the C# language and ADO.NET for database access. As part of this project some additional work was performed. First, there was a sample application called the TechGraphMgr application. It was a simple application that managed technical graphs. The purpose of this sample application was to showcase the capabilities of the MultiGraph and DualSlider controls and how they could be integrated together in a single application. It was an application developed using Microsoft Visual Basic (VB) that incorporated the MultiGraph and DualSlider controls as well as a FileCabinet ActiveX control based on the Microsoft TreeView control and developed using VB. An additional purpose of the application was as an instructional aid to programmers developing with the controls. (The source code for the sample application was provided to purchasers of the controls). Second, there was an installation application designed to install the MultiGraph and DualSlider controls as well as the TechGraphMgr application on the following versions of the Windows operating system: 95, 98, Me, NT 3.51 and later, 2000 and XP. Third there was the production of the documentation for both of the controls and the implementation of a help system based on that documentation using Microsoft’s help compiler. Finally there was the development of a web site whose purpose was the sale of the company’s products over the internet. The development environment used to produce the web site was Microsoft’s Visual Interdev. Technologies used to implement the web site were Hypertext Markup Language (HTML), Microsoft’s Active Server Pages (ASP) and ADO for database access. Later, using Microsoft Visual Studio .NET the web site was re-written using ASP.NET, C# for the code behind files and ADO.NET for database access. Features of the web site included the ability to download the software, on-line customer registration and collection of internet traffic statistics. The web site was written to run on Microsoft’s Internet Information Server (IIS 5.0). The company was a startup, I was a founder and I was responsible for all the programming and IT related tasks.

Apr. 1999 – Oct. 2001 Lockwood Financial Group

Contract work for Lockwood Financial Group, a money management company whose clients are limited to personal finance managers and high net worth individuals, included the development of an application that optimized investment portfolios, an application that generated reports showing the benefits of portfolio optimization, an application that distributed assets to money managers, the development of business objects and graphical ActiveX controls and the conversion of C++ graphics objects to ActiveX controls. The portfolio optimization application was based on a linear programming algorithm that replaced investment vehicles in a portfolio with alternatives investment vehicles of the same style but characterized by lower losses to taxes and fees. In this manner the types of investments in a portfolio and the overall risk level of a portfolio were kept the same while simultaneously increasing the return realized by the portfolio. Most of the application was written using Visual Basic 6.0. It contained numerous automation objects and ActiveX controls. Some of the controls included the True DB Grid control (a popular and widely used grid control) as a constituent control. Application development included the design of a relational database for portfolio management. Database manipulation was implemented using Microsoft’s ADO technology and Structured Query Language (SQL). Some parts of the application were implemented as Dynamic Linked Libraries (DLLs) written in C++ using the Microsoft Visual C++ IDE in order to achieve desired levels of performance. The DLLs were developed using MFC and included both early-bound (dual) and late-bound (dispatch) automation interfaces for the objects exposed by the DLLs. The project included an installation application produced with the VB Package and Deployment Wizard. The report generator application produced reports that graphically showed the benefits of portfolio optimization. It was a container application that used ActiveX graphical controls as building blocks to compose reports. It was written in C++ using MFC and it utilized the document-view architecture support available through MFC. The application was designed to look like just another window in a larger application so that it could be integrated into other applications. It was equipped with an early-bound and late-bound automation interface so that it could be controlled by other applications. The generated reports were displayed WYSIWYG (“What you see is what you get”) in the application window and could be printed out on demand. The asset distribution application produced a document that described how a client’s assets should be distributed to money managers to achieve minimum capital gains costs. The algorithm determined the maximum quantity of each asset that could be transferred “in kind” to the money managers and those assets that had to be liquidated based on a specified allocation strategy and the current holdings of the money managers. It was a document-centric application that consisted of a container application written in C++ and a host of automation objects and ActiveX controls written in Visual Basic. The container application was an Multiple Document Interface (MDI) application that utilized MFC and its document-view architecture support. The automation objects were used to implement the data structures that defined each document and the functions that operated on those data structures. The ActiveX controls, consisting of table and text controls, were used to construct the documents themselves. Although the distribution operation was automated it could also be performed manually via drag & drop operations using the mouse. The data required by the application was entered manually, was entered using “cut and paste” operations and was obtained programmatically from Microsoft Excel spreadsheets using Automation technology. The application was accompanied by an installation application developed with InstallShield. Other work for Lockwood Financial Group involved the development of business objects and graphical ActiveX controls including portfolio objects, account objects, portfolio optimization objects, style mix objects, fee calculator objects, portfolio risk calculation objects, graphical controls for displaying risk levels and risk characteristics, graphical controls for displaying portfolio properties and graphical table controls for manipulating portfolios, accounts, investments and fees.

May 1998 – Dec. 1998 Spidertek Corporation

Contract work for Spidertek, a company that produces commercial and custom software for the insurance industry, involved coding calculation engines for an application to be used by the field agents of an Australian insurance company. The insurance company was converting a DOS based application to a Windows based application and augmenting functionality at the same time. The program was used by agents to illustrate the benefits a customer would receive for a policy and to produce a hard-copy of the policy itself. All the numbers in the illustration and policy production parts of the application were obtained from the calculation engines. The calculation engines were based on 15 Microsoft Excel spreadsheets. The calculation engines were translations of those spreadsheets into Visual Basic 5.0 modules. The output of the calculation engines was compared programmatically to the spreadsheets using OLE automation to insure exact consistency between the spreadsheets and the calculation engines.

Jul. 1994 – Apr. 1998 Development of Proprietary Financial Software

This work, done on an entrepreneurial basis, included development of proprietary financial securities trading systems, financial graphing software and financial data management and manipulation software. The trading systems, developed for both the equities and the futures markets, were essentially pattern recognition systems based on both fundamental and technical trading techniques. The programs that comprise the trading systems were written in C++. The financial data management and manipulation software was written in C++, VB and Visual Basic for Applications (VBA). Over time the emphasis was transferred from the trading systems to the development of the financial graphing software as a commercial product. The graphing software is primarily concerned with technical graphs and technical trading indicators. It is a software component that can be a stand-alone application or a server that implements embedded objects that can be inserted into other container applications such as Microsoft Excel and Microsoft Word. It can be activated in-place or in a separate window in order to be manipulated. It comes in a variety of different forms including mini-server, full-server and ActiveX control. It has ActiveX document support so documents produced by the software component can be displayed and manipulated in applications such as Microsoft Binder and Microsoft Internet Explorer. It supports an OLE automation interface so that objects can be manipulated programmatically by other programs such as VB and C++ applications. It also has dual interface support to allow for low level manipulation using COM interface pointers. It was written in C++ using Visual C++ and the Microsoft Foundation Classes and the ActiveX, COM, OLE and Automation technologies.

Sep. 1991 - Jul. 1994 Universal Imaging Corporation

Work for Universal Imaging Corporation, a company that produces software for microscopes, was primarily on a Device Driver Management Sub-system, a set of inter-dependent modules written in C++ that included a device driver manager as well as the device drivers themselves. The system was responsible for management and control of microscope related hardware such as filter wheels, shutters, focus motors, stages, etc., as well as computer system resources that include digital I/O, General Purpose Interface Bus (GPIB) support and various forms of serial data transfer. It was an independent sub-system divided into portable and non-portable parts that was expected to satisfy the company's device driver software needs for current and future applications across multiple platforms. It was part of the company's primary product, a Windows application, in the form of a set of dynamic-link libraries. The primary advantage of the sub-system was device independence achieved by providing an applications programming interface that implemented a set of idealized logical devices that were optimized for specific operations. Applications were written to these operations rather than to specific types of hardware. The actual hardware used to implement the logical devices was chosen by the user through a process of software decomposition of hardware devices into distinct components that allowed users to mix and match different parts of different devices.

Jun. 1990 - Nov. 1990 Mutual Fund Investors

Work for MFI, a money management company based on macro technical analysis of financial markets and reduced risk through investment in mutual funds, included two applications. The first was a financial data management application that extended across two hardware systems. One part of the application (written in C for a 68000 processor running the UNIX operating system) gathered time sensitive financial data from the Quotron Financial Data Quote Service through an in-house Quotron machine. That data was then transferred to DOS based PCs where the second part of the application (written in C) performed data loading, database management, data editing and report generation in order to supply timely information on current market conditions and indicators. The second application was a mutual fund net asset value tracking system that included data gathering, database management and data editing capabilities.

Mar. 1988 - Mar. 1990 PictureWare, Inc.

Work for PictureWare, Inc., a company that produced image database software for PCs, was as part of the custom applications division which produced image database applications based on the company's products for third parties. The most significant applications for which I was primarily responsible were as follows. First, was Image Folio, a nationally marketed CD-ROM based "Clipart" color image database project completed for NEC Home Electronics. The software was written in C, the Clipper database language and assembler and included a static keyword retrieval system. Responsibilities included management of the images and construction of the image database. Second, was a badge production system for the House of Parliament of the Australian government. The application, written in C, featured image manipulation, support for multiple image formats and an interface to the Clipper database language so it could be included in third party Clipper applications. Third, was a Basic Four Mainframe to PC communications program that combined data from the mainframe with images from the PC to produce sales quotes that included an image of the item being sold. Fourth, was the modification of a commercial personal computer accounting system software package to print images on bank checks. Other projects included an image database application generator, image database record append and extract utilities, TIFF image conversion and decompression utilities and a slide manager application.

Previous to Mar. 1988

Work prior to March, 1988 included the following. First, financial graphing software that used the Tecmar graphics board. The board was one of the first graphics boards that offered a graphics resolution of 640 x 400 with 16 colors. The board had to be programmed by sending bytes to specific ports as there was no higher level interface available. The work was done for a family startup business whose goal was to provide financial advisory services using personal computers. Second, custom graphing software for a currency trader at a commodities trading firm. The work was done on a using the Fortran language. Third, dBASE programming using the Clipper language for an educational testing service.

Bachelors Degree, Political Science.
Masters Degree, Computer Science.
Skills (2) Rating