Following are various projects I've worked on for the various jobs I've
held. For lack of time and for the sake of brevity, I've trimmed the list
down; it's by no means exhaustive. Included here with each is a
brief summary, but you can click on the title of any to get a detailed
explanation of it, see screen shots, and find out what technologies I
used and what roles I played on that project.
Amphion provides medical transcription and coding services for hospitals and like facilities. They hired me to help them replace their leased software systems with an in-house alternative and to position them as a transcription technology provider for their customers, too. My key role was as a .Net (C# and VB.Net) programmer and Sql Server expert.
The Triton transcription system matches audio dictations with patient / encounter / order information sent via standardized HL7 messages from hospitals' medical records systems. Amphion needed a replacement for its older, rigid, overly complicated one. I created a reusable library and corresponding Windows service to import raw HL7 files to populate Triton's "demographics" database.
As with many prior jobs, Amphion had no Intranet for collaboration and documentation. I created an IIS based solution that made it easy for nontechnical users to drage and drop in ordinary documents, for users with minimal HTML knowledge to create basic web pages, for users with a bit of database knowledge to create web pages with embedded query results and auto-generated documentation of database elements, and for sophisticated users to create full-fledged web applications, all using the same framework and familiar NT domain and access control. I and other developers created various administrative applications and utilities as a fast-track alternative to creating separate and complicated apps.
Pharmacy OneSource, or "P1S", sells hosted web-based software that hospital pharmacies use to deal with compliance and cost saving measures. They hired me on to raise the level of sophistication of the apps. My key role was as the UI architect. I developed a new framework with a strong emphasis on DHTML / AJAX client-side behavior. To ensure quality, I was integrated into the first major application built on it and served as trainor and mentor to a rapidly growing development team.
P1S had acquired a suite of applications developed at different times by different teams using significantly different technologies. Having determined the platform they wanted, they hired me to develop a framework for proper application development by their small but growing team of software engineers.
Sentri7, P1S' flagship product, provided "surveilance" of patient records in a hospital pharmacy. It was mainly used to identify opportunities for cost savings, safety improvements, and regulatory compliance administration. One of its key features over those of existing competitors is the ease with which customers can develop their own filtered lists and reports. I was asked to improve the performance and user friendliness of the list designer tool.
Quantifi was still P1S' cash cow product and one of its oldest. P1S no longer wanted to maintain the Java code base because new development was favoring ASP.NET, so they decided to start over with a second, "next generation" version using my Manya platform. I was the first developer beginning work on it, in part to prove out and debug Manya. The project grew to include 7 developers. I served largely as a mentor as new developers were added and engineered several key pieces.
P1S needed to deliver graphical charts through its main applications' web interfaces. I was tasked with selecting an off the shelf component. While we were able to find good ones, their pricing models would not have made financial sense with P1S' scalability model. I developed a reusable charting component from scratch to suit P1S' existing and near-future needs.
P1S had a need to allow users of its web apps to upload and "attach" their own files (e.g., Word documents) to database records. The typical solution of simply storing them on public web folders was not sufficiently secure or scalable, so I developed a database-centric component that can be easily plugged into its web apps.
Mitinet is an older but small company that, at the time of my hire, was making a sharp change in direction. One key element was introducing a sizable call center. I was hired to plan, design, create, and support the infrastructure needed to support it and the consequent growth that would happen in response to increased sales.
Mitinet wished to retire a decades-old FileMaker Pro database application while retaining it's functionality in new Sql Server-based applications. To support the short-term needs of reporting and operations, I developed a Sql Server DB catalog to mirror the data and a sophisticated export tool to update it each day. This would serve as the basis for the rest of the migration path.
To support Mitinet's rapid growth, especially in response to a new outbound call center, I planned and implemented a suite of infrastructural applications using .Net and a highly secured, remoting-based thin-client model.
To support its new call center, Mitinet would need a software application its telemarketers could use to help guide the process of calling and talking to customers. I developed the architecture for a general-purpose, branching, wizard-style, graphics-heavy interface that could be used with minimal training, even by users with no prior computer experience. Then, in conjunction with the head of marketing, I designed and developed all the screens, including all graphics.
Mitinet's parent company, Gumdrop Books, had invested heavily in the use of the COM Express code generator system for its newer applications. Gumdrop acknowledged the value of the business objects (middle tier) generated by CX, but the GUIs were too difficult to customize. So they had me create a new UI platform that would allow Gumdrop's programmers to more easily create GUIs using .Net WinForms.
Mitinet wished to expand its market reach by starting a new web-based service that would allow K-12 school to upload their inventories to a site that would allow their students and their parents search for books in their libraries. I was tapped to explore the possibilities and develop the system as an ASP.Net application.
In an effort to get new customers, Mitinet wanted to provide an easy means for a salesperson to get a customer to send us a copy of their school library inventory records. I developed a web site for uploading these records so that Mitinet's back-end processors could help identify gaps in libraries' inventories and thus feed the sales cycle.
NetLocus is the second company I have cofounded. We were developing a unique and ambitious service that aimed to eventually impact most users of the web, featuring a toolbar plug-in for one's web browser that would feature custom content related to whatever web page the user would go to. This required a sophisticated web spider to analyze the web and find appropriate information.
To the end user, NetLocus is all about a toolbar added to one's web browser that dynamically updates as the user moves from page to page. Working with a junior developer, I created a novel application platform and the "tile" applications that plug into it.
NetLocus' toolbar was only so much junk without an ability to get data from our server network. I developed a service to facilitate a dense-packed XML interface and the logic to service all of the toolbar's requests.
NetLocus' business concept hinged around a massive tree of categories called the "locus tree". The main use was to associate web pages with such loci, then associate each locus with related content like message boards, banner ads, books, and so on. I designed the locus tree's structure and worked with others to find source content and create utilities for importing and maintaining the structure.
Second in importance only to the toolbar, NetLocus' software system rests on its web spider. Like major search engines like Google, NetLocus' spider travels from site to site looking for web pages to analyze, which links each page to relevant "loci", or categories. This required inventing a variety of AI techniques for pattern matching and determining context. I designed the entire first version, created prototypes for most features, and managed progress by another developer in creating the final product.
After designing and directing development of a first version of the web spider in Perl, I created a second version from scratch using .NET. In addition to wiping out many of the bugs in the first version, this one introduced multithreading and in-memory analysis for massive performance gains, and enhanced analysis features.
I designed NetLocus' first primary database to use a proprietary engine and structure optimized for maximum speed, patterned on work done by Google's inventors. I designed the engine and developed prototypes of its features and guided its implementation by other developers in C for use on Linux servers. This version of NetLocus' primary database was outmoded in favor of version 2.
Finding the first version of our primary database, being built on a totally proprietary technology inadequate and ultimately unnecessary, we decided to create our primary database in a second version using Microsoft Sql Server technology.
To help facilitate and standardize development of NetLocus' web applications, I created a proprietary platform layer on top of ASP.NET. The main goal was to bring together the best of DHTML and .NET technologies while making development of web apps easier using shared code. I created the entire platform.
NetLocus needed an Intranet as a central clearinghouse for information about its various projects and resources. I created one using traditional ASP technology.
From the beginning, developing at NetLocus had been guided by a variety of project management documents, but this was too limited for dealing with the dynamic nature of project management. I developed an intranet-based PM tool that allowed every participant to generate lists of action items and journal entries and managers an easy mechanism for assigning, prioritizing, and generally monitoring many projects.
One key element of NetLocus' services is its message board system, which treats each individual locus in its locus tree with hundreds of thousands of loci as a separate discussion topic. Given my experience developing message boards, I provided the requirements and screen designs and helped the developer to create it.
NetLocus' primary source of income was to be advertising dollars. To facilitate this, it would need a place where customers could go to sign up for advertising services. I provided the basic design and created the data structures for such a system, which another project manager took the lead on having implemented.
NetLocus' web developers had created a variety of web applications. They needed to be brought together into a single product. I worked with another developer to finalize this integration project. I also worked with a graphic designer to develop the standardized look and feel for all the apps and worked to implement it in all the apps.
NetLocus' toolbar has to be installed before one can use it. I created a first version of such an installer using a proprietary, web-based technology. While effective, this technique proved not reliable enough to work with the widest range of browsers, so we abandoned it in favor of a second version, implemented using a more traditional installation packager.
Automatic Data Processing, Inc. (ADP) is a huge umbrella corporation. One of its larger holdings is its Dealer Services company, which delivers enterprises systems to the automobile dealership industry. I orgininally joined Automotive Directions (AD). ADP saw the value of the software it had created and wanted to tap into its sales potential, so it acquired AD. Among other things, I gained a lot of experience with offshore outsourcing during this period.
ADP's goal was to develop a new dealership management system (DMS) using the latest Microsoft technologies, including DHTML, SQL Server, N-Tier, etc. The project involved hundreds of people. I was responsible for managing the development of the CRM portion of the project, as well as developing functional specifications, doing coding, and integration of the team's deliverables.
After working with a team to develop a first version of CRM functionality as part of ADP's Jupiter project to develop a new DMS, I was promoted to project manager and began work on a second version of the product.
A complex software package running on many clients has a daily batch cycle for data processing and system maintenance. A support team is responsible for monitoring this process and debug problems as they arise. With another person, I developed an automated tool that monitors and reports on the current status, organizing the process. Later, I managed a team of other developers upgrading it.
Users doing installation of a complex business application needed a tool to automate and manage the process. I and another developer made a sophisticated tool to collect information about the client, build a custom package, and guide the user through the mostly automatic process.
ADP needed to add telephony integration into its CRM and eventually its broader flagship product. I developed a stand-alone component that could be used with any web application that separated the roles of basic integration and business logic for applications of it.
After a few years in the consulting business, I wanted to play more of an integral role in a company, so I joined AgeNet, a small business catering to the eldercare industry. Here I was the primary developer and coordinated development activities with scientists, writers, artists, and IT consultants.
The organization wanted to offer online questionnaires and automatically draw relevant conclusions on issues of importance to aged adults. I worked with a scientific professional in the subject matter to identify the critical nature of the assessment process. I then built a general-purpose assessment tool and an administrative interface using ASP and SQL Server with which such professionals could build and monitor the use of these assessments without my ongoing help.
The client needed to be able to communicate effectively with its core customers and partners. I created an ASP-based extranet web site to service this need. Since it was used by many people in different roles, the site allowed for customized access control depending on administered rights.
To help the customer manage its marketing-centered interactions with its partnering organizations, I created an ASP application on its extranet to manage lists of partners, user groups, and documents. The system allowed administrators to then send documents to select groups either via email in HTML format or via FAX from MS Word source documents. It also allowed for tracking of email usage and of FAX progress.
WebTrends provides decent reporting of web usage, but the customer needed to be able to automate the process of developing custom reports on a large number of web sites and to archive back reports. Since these sites were already defined in a database, I developed a utility in Visual Basic to create the archive structures and directories and to inject custom schedules into and thus drive WebTrends.
CompuMasters was a smaller consulting company with an unusually talented group of professionals. It gave me more experience with larger companies and state agencies.
The client had an existing Visual Basic application that made extensive use of DBGrid controls. I converted these to True DBGrid and VSFlexGrid controls. In conjunction with this, I converted the application's database interaction from an immediate-edit model to a document/save model. I also repared several bugs and added new functionality.
Stratagem represented a major departure for me, being the first IT consulting firm I worked for. It also gave me my first exposure to the inner workings of medium to large companies. In them, I found my web experience in high demand and quickly became central to various key projects.
The client needed a tool to connect a loan application manager with a forms generation utility. I designed an overall architecture and developed a general-purpose connectivity tool to service this and other connectivity needs.
The client needed a web site developed that would provide financial advice and tools for credit union customers which would mould its appearance to fit the aesthetic styles of a wide variety of credit unions. One of the central pieces of the tool set was a suite of calculators that needed to be integrated. I helped set the development direction for the overall project, trained other developers in the technologies, and integrated the calculators into the end product.
To help manage a major structural transformation in the client's IT division, I was asked to create an ASP / Oracle application to serve as a resource of information about the organization, including the hierarchy of the old and new departments, their charters, and the mapping of the old departments' responsibilities to the new departments. Using LDAP, I was able to provide users with existing information about employees in each department. I was also asked to build a separate program to generate a voluminous printed copy of the same information, which I built using Visual Basic.
As part of an organizational transformation, the client's IT division wanted to implement a system of contracting for services internally and with IT's customers in order to improve the understanding of expectations and formalize commitments. I developed a 3-tier ASP application resting on an Oracle database.
The client needed a "blue book" application to provide quotes on the values of marine products -- mainly boats and major boat accessories. I developed an ASP / DHTML application thousands of corporate users would use to value boats.
The client's goal was to bring its book of property insurance business to its correct value. For my part, this involved creating a series of web sites as user interfaces and a shared business logic layer. Working with a team, I defined the overall architecture of the solution. My primary role was to implement the web components in ASP, with the primary data source being a DB2 database.
Carnell was the first company I cofounded. We developed some of the first sophisticated web-based applications and helped pioneer the idea of software as remote services instead of something you installed on your own computer network. In addition to developing a variety of automated services, we expanded into developing original online content and the tools necessary to support them. I am still a nominal principal, but the company is now run primarily by my wife.
Carnell had a need to deliver electronic magazines in a way that required minimal effort on the part of the content developers. I developed a CGI application in PERL that allows editors to manage and completely archive issue after issue of regular columns and special features with as little as a set of plain-text email messages.
Carnell needed a system to manage electronic mailing lists. I developed a sophisticated Client / Server product that manages specialized mail boxes, queues email messages for mass-sending, provides a web interface for management and end use, keeps web-based archives of messages, and more. The entire system was written in PERL.
The ASP development community is starved for off-the-shelf software and components to make development easier. I created an entire service devoted to developing and disseminating such resources.
It eventually became worthwhile to convert the venerable Linux-based systems of Seasoned Cooking to a Windows-based system using ASP technology. I transformed the entire thing from a completely server-side system to a heterogeneous one involving an on-site ASP content staging server, a hosted ASP production server, a content compiler, and an Access-based content management system.
SpaceMaster provided me with the first opportunity to use the skills I had been honing since the early days of the web for professional applications. This capped off my experience developing applications using the mostly forgotten DataEase relational database system and Microsoft Access.