David Thomas

Senior C++ Software Developer

David Wayne Thomas

Career Summary

Twenty-plus years of software development experience, mostly in C/C++ language, with other experience in Prolog, Delphi, C#, mixed native and managed C++ with .NET, Javascript, Python, SQL, Java, Hibernate. Developed code in the areas of knowledge management, graph databases, dtSearch, OCR, computer forensics and eDiscovery, pattern matching algorithms, Windows core API and services, schema-based services, multi-threaded and concurrency development. The last several years have included the use of agile development concepts.

Professional Experience

Bloomberg LP
Senior Software Engineer
Jan 2016 – Present

  • Python development of backend services.
  • Java development of backend services, using Spring and Hibernate.

Independent Consulting Oct 2013 – Dec 2015

  • Software improvements for AccessData in their drive mounting code.
  • Providing new features and fixing issues for a medical software that provides 3-D heart images and modeling from MRI images.  The software runs on OSX, Windows, and Linux X11.
  • Doing contract software development for Bloomberg internal systems in New York City through Genesis10.

AccessData Group
Senior Developer
Dec 2006 – Oct 2013

  • A senior developer developing and improving core code for forensics and eDiscovery software.
  • Areas of development includes text indexing and searching with dtSearch.  dtSearch provides a C/C++ API to their native library code for indexing and searching of files or file objects.  The transition of the Forensics Tool Kit (FTK) from a single user monolithic application to a distributed, multi-user environment required my rewriting the dtSearch indexing to not only be used in a distributed processing environment, but also multi-core in each computer for maximum efficiency and throughput.  Also, I provided a native and .NET interface for the searching within the generated indexes.
  • Maintained and developed new OS and app file systems code that parsed the partitions, file containers (including OLE archives—docfile, compressed archives …) without the use of native/app API’s.
  • Generated native code to/from CLR managed code for providing .NET interfaces on native code libraries.
  • OCR processing code for use in the above mentioned distributed processing environment using third-party OCR SDK's.
  • Performance optimization of native code, other low-level coding tasks.
  • Most of my development has been in C++, C++/CLI, and some in C#.
  • Much of the coding was cross-platform that includes Windows, Linux, Solaris, and OSX.
  • Support and debugging of Linux platform code of the product that gathers and archives digital evidence, mainly drives, partitions, and files.
  • Implementing the use of 3rd-party device drivers for mounting evidence archives and compressed archives as Windows drives.

Part-time Independent ContractorJan 2006 – Nov 2006

  • Part-time independent contract work for AccessData, developing prototype software demonstrating stealth remote information access of Windows computers and launching of remote processes. This involved native and mixed CLR coding in C++ and .NET development in C#.

Senior Developer
Dec 2005 – Aug 2006

  • A senior developer leading the implementation of intelligently driven support for clinical and medical research. Includes implementing Ontology Services for the medical field, which is accomplished by importing UMLS into a graph within memory, allowing for quick query traversals.

AccessData Corp.
Senior Developer
Sep 2005 – Nov 2005

  • A senior developer providing improvements for three of their forensic applications (two Windows, one Linux), leading to new releases.

Cogito, Inc. (Sentient Technology Software)
Senior Programmer and Lead Developer
1990 – 2005

  • Senior programmer and lead developer for Sentient Technology Software, as well as other programs necessary to support other projects. Most development was done in C/C++ and Prolog.
  • Software development for Sentient Technology included implementing a conceptual network graph database, natural language interface, views of the knowledge (DOS and Windows), Windows development, and data migration.
  • Extensive use of procedural, object oriented, and predicate-based programming. Development of programs for integrating CAD and database files.
  • The core technology developed for the conceptual network graph database is unprecedented and unique, and includes storing the meaning of the data/knowledge, encapsulating languages to communicate the knowledge to the user (consisting of trees, forms, drawings, natural language, etc.), and automatic generation of documents.
  • Supervised and implemented the re-architecture of the software from DOS to Windows and later to Linux.
  • Developed modules for learning from legacy databases and drawings into Sentient Technology Software.
  • The programming skills developed and incorporated during employment include C++ concepts; Prolog's predicate logic; general programming structure and development and management of a large project.


M.S. in Astronomy 1988
Brigham Young University, UT

B.S. in Physics, minor in Mathematics1985
Brigham Young University, UT


My Resume