The Avail Foundation |
Madison, Wisconsin |
2012 to present |
|
Role: |
Co-Founder / Chief Executive Officer |
Provide vision for the Avail programming language and leadership for the Avail team. Enthusiastically evangelize the Avail technology and its applications. Network with industry professionals and university faculty in order to increase the visibility of Avail and the Avail Foundation. Conduct live demonstrations of the Avail technology.
|
|
The Avail Foundation |
Madison, Wisconsin |
2008 to present |
|
Role: |
Software Engineer |
Environment: |
Windows XP / Windows 7 / Windows 8, Mac OS 10.5 / 10.6 / 10.7, Linux. Java, Avail. Git. Eclipse Galileo / Helios / Indigo / Juno / Kepler / Luna / Mars. |
Collaborate on the design and implementation of the Avail programming language. (N.B. The Avail Foundation formally came into existence in 2012, but I began working on Avail in 2008.)
-
Designed and implemented the Avail server. The virtual machine now incorporates a high-performance, asynchronous, multi-threaded, standards-compliant implementation of WebSocket (RFC 6455). Web clients can leverage this mechanism to load Avail modules, interrogate an Avail system, and execute programs written in Avail.
-
Designed and implemented the Avail concurrency mechanisms. Avail threads are lightweight agents that are transiently bound to native threads by a preemptive scheduler, thereby utilizing multiple CPUs while also transcending the concurrency and resource limits of the underlying OS. High-level synchronization mechanisms emerge gracefully from atomic primitives, such as compare-and-swap, that operate on semantic equality. Avail elides low-level synchronization when accessing objects that provably cannot be referenced by multiple threads.
-
Designed and implemented the bidirectional Avail-Java foreign function interface. Avail's type lattice includes the complete Java type system, but does not erase generic type specializations, thereby providing stronger, safer semantics for Java types than Java itself. Avail permits direct access to Java objects and operations. Avail entry points may be called directly from Java via an asynchronous callback mechanism.
-
Designed and implemented the Avail standard library. Ported numerous core facilities from the prototypical Avail system originally built by Mark van Gulik.
-
Designed and implemented numerous other subsystems of Avail, e.g., parallel compilation, module persistence, transactional change propagation, strongly typed dimensional analysis, unit testing framework, computational backtracking, asynchronous I/O, generators, signal-and-urgent-wait monitors, etc.
-
Developed and presented a ten-part lecture series aimed at teaching the philosophy, concepts, and usage of the Avail programming language.
-
Author philosophical, technical, and pedagogical content for the official Avail website.
|
|
My Coverage Plan |
Madison, Wisconsin |
2016 to present |
|
Role: |
Lead Application Developer |
Environment: |
Mac OS 10.11, Amazon Linux, Windows 7. Java, Avail, TypeScript, HTML5, Sass, JSON. Bootstrap. Cassandra. Git. Bitbucket, JIRA, Crucible. IntelliJ, Atom. AWS. |
Design, implement, maintain, and support commercial products. Lead all application developers. Institutionalize IT and oversee IT operations and budget. Develop the business. Write grant proposals in response to relevant funding opportunity announcements (FOAs).
-
Created Advocus, an application development platform that integrates a powerful rule engine with a high-performance server and a distributed database. The platform tightly integrates: an optimizing compiler for a strictly-typed, high-performance domain-specific language (DSL) designed to enable non-technical subject matter experts (SMEs) to develop complex rulesets and formulae; a suite of development tools, including visualization tools for understanding networks of rules and associated state variables; a customizable, asynchronous, parallel rule engine; a high-throughput, deadlock-free, asynchronous, WebSocket-enabled application server; a fully auditable, blob-oriented, distributed, multi-tenant database that automatically generates and maintains indices and data stores in accordance with query, reporting, and aggregation rules defined in the DSL; and a skinnable modern web client. The system supports live or automated intake by multiple simultaneous users, potentially editing through disparate semantic views, and generates appropriate reports, alerts, and events. The system implements a uniform security policy that crosscuts all application layers. The main product built on the platform is the eponymous My Coverage Plan™, a customer decision support tool intended to help advocates and patients to secure healthcare benefits.
-
Architected Advocus. Designed the DSL. Implemented the optimizing compiler, the development tools, the application server, and the initial web client in the first six (6) months. Designed the persistence layer. Designed all security policies. Participated in architectural and security discussions and exercised product authority throughout. Produced the My Coverage Plan™ product in one (1) year with a team of three (3) on a minimal budget.
-
Identified, interviewed, hired, managed, led, and mentored all application developers. Set development guidelines and established code style standards for Avail, Java, and TypeScript. Conducted code reviews. Managed product development, establishing milestones and feature sets. Produced Gantt charts and other project management instruments to keep stakeholders apprised of development progress. Trained SMEs on use of the DSL and the My Coverage Plan™ tool. Produced official product documentation. Presented official product demonstrations to partners and customers. Wrote grant proposals to obtain funding for marketing the My Coverage Plan™ product.
-
Institutionalized IT best practices. Oversaw IT operations. Built-out the private virtual cloud (VPC) in Amazon Web Services (AWS) that ran the My Coverage Plan™ product. Managed and budgeted AWS resources. Performed all necessary system administration, including security updates.
|
|
MIOsoft |
Madison, Wisconsin |
2007 to 2015 |
|
Role: |
Senior Software Engineer |
Environment: |
Windows XP / Windows Vista / Windows 7, Mac OS 10.7. VisualWorks Smalltalk 7.4 / 7.6 / 7.8 / 7.9 / 7.10, Java, Avail. StORE, SVN. Eclipse Galileo / Helios / Indigo / Juno / Kepler / Luna / Mars, Visual Studio 2010. WebSphere MQ. |
Designed, implemented, maintained, and supported commercial products.
-
Created Barrage, a strictly-typed, high-performance domain-specific language (DSL) for specifying patterns within time-series data generated by Internet of Things (IoT) sensors. The Barrage runtime applies these patterns to discover complex events and report them. Designed the Barrage compiler and implemented it in Avail. Prototyped the Barrage virtual machine (VM) in Smalltalk. Designed the production Barrage VM and implemented it in Java, using dynamic translation of Barrage bytecodes to Java bytecodes to maximize performance.
-
Designed and implemented MIOsoft's MIOplexer™, a platform-neutral network transport layer engineered to scale significantly beyond the 16-bit port limitations imposed on user applications by TCP implementations. MIOplexer provides deep, efficient network buffering and a robust service architecture that supports anycast and multicast addressing, load balancing, persistence of identity, and reliable notification of events. The existing deployments effectively and efficiently manage tens of millions of active communication endpoints distributed across thousands of user applications and hundreds of nodes while requiring only commodity hardware.
-
Designed and implemented vital subsystems of MIOsoft’s MIOedge™ cloud platform. MIOedge conjoins a business application development environment, a high-performance distributed object database engine, and a sophisticated ad hoc reporting apparatus. The existing deployments include multi-petabyte databases supported by hundreds of nodes.
-
Designed and implemented fast parallel algorithms for performing statistical analysis of extremely large datasets (i.e. > 1 TB). Sub-second responses are normal for datasets of < 1 million records. Algorithms were specifically engineered to maximize disk and network throughput while avoiding contention between the participating hosts.
-
Developed and maintained a custom VisualWorks virtual machine for use with MIOedge. In particular, resolved critical defects in the virtual machine’s garbage collection, dynamic translation, network I/O, and event notification subsystems. Introduced numerous performance enhancements and supplementary features. These modifications enabled the use of the platform for reliably developing and deploying enterprise applications.
-
Designed, implemented, and maintained numerous other subsystems of MIOedge, e.g. object indexing, object relationship management, object caching, data parsing, code generation, internationalization (specifically Chinese language support), user interface, etc.
|
|
Blue Sahara Technologies |
Cary, North Carolina |
2006 to 2007 |
|
Role: |
Software Engineer |
Environment: |
Windows XP. C, x86 assembly. Intel C compiler, MASM. |
Researched and developed extremely high-performance mission-critical subsystems of the flagship product, a next-generation water-modeling application.
-
Implemented an extremely fast, reliable, well-distributed 128-bit secure universally unique identifier (UUID) generator. UUID generation is 1 to 2 orders of magnitude faster than popular and traditional alternative implementations (e.g. Microsoft "guidgen", "e2fsprogs").
-
Developed an extremely fast implementation of Message-Digest algorithm 5 (MD5), several times faster than the GNU utility "md5sum".
-
Developed an extremely fast implementation of the pseudorandom number generator Mersenne Twister, almost twice as fast as the Agner Fog implementation (the next fastest that I could find on x86).
|
|
GlaxoSmithKlein |
Durham, North Carolina |
2005 to 2006 |
|
Role: |
Senior Software Developer |
Environment: |
Red Hat Enterprise Linux 4.0. C++, Java, Lua, Perl, Python. GCC, Eclipse. Torque/PBS, United Devices Grid MP. |
Solo development of complex software systems in the pharmaceutical and high-performance computing domains.
-
Developed, maintained, extended, and tested components of 2D and 3D molecular analysis toolkits including conformation generation, feature mapping, pharmacophore fingerprint generation, and fingerprint hashing phases.
-
Designed, developed, tested, and benchmarked high-availability management frameworks for distributed computing of 2D and 3D molecular analysis toolkits. Frameworks targeted Torque/PBS-managed RHEL 4.0 cluster and United Devices Grid MP-managed Windows grid. Implemented web service and console interfaces. Enabled the company to analyze or filter over 1 million hypothetical compounds daily.
-
Designed, developed, tested, and benchmarked high-performance genetic algorithms and genetic programming multi-paradigm toolkit. Features and functionality are competitive with existing toolkits (e.g. Open BEAGLE, JAGA) but tailored to the pharmaceutical domain with domain-specific operators and evolvers.
|
|
WebInsights |
Raleigh, North Carolina |
2002 to 2005 |
|
Role: |
Director of Information Technologies |
Environment: |
Linux. C++ .NET, Perl. Oracle, PostgreSQL. |
Managed and spearheaded development of software products. Responsible for the product design, system design, development, testing, maintenance, and deployment of all company products.
-
Developed eMARC, a web-based instructional tool implemented using Apache, mod_perl, and Oracle/PostgreSQL which enables instructors to record standards-based observations and assessments and allows principals and central office administrators to gather classroom statistics and oversee staff usage. For a time, this product was in use at all Wake County public elementary schools.
-
Developed eMARC Mobile, an iPAQ/Windows CE application written in Visual C++ .NET which gives instructors the ability to record student observations during class and then hotsync with eMARC.
-
Developed QV, a web-based assessment authoring system implemented using Apache, mod_perl, and Oracle/PostgreSQL which promotes community sharing and supports on-line student testing.
-
Developed MapClick, an NMEA-0183 compliant GPS-based fleet management system and GIS-based information system implemented using Visual C++ .NET (for the GPS application), Java/XML (for the coordinator client application), and Apache/mod_perl/PostgreSQL/XML (for the server-side coordinator application).
|
|
Wachovia |
Charlotte, North Carolina |
2002 |
|
Role: |
Systems Engineer |
Environment: |
Solaris 2.5 / Solaris 2.6 / Solaris 7 / Solaris 8, AIX 4.3, HP-UX 10.20 / HP-UX 11, Windows NT / Windows 2000 Server. C, Perl. |
Served on a team of system administrators responsible for building, implementing, and maintaining nearly 200 development and testing machines, including Sun servers running Solaris 2.5, 2.6, 7, 8, IBM servers running AIX 4.3, HP servers running HP-UX 10.20 and 11, and Compaq servers running Windows NT and Windows 2000 Server. Responsible for the design, development, testing, and deployment of software written to simplify the task of administering a large test lab.
-
Created and deployed secure server/client software designed to permit web-retrieval of log files from arbitrary hosts in the test lab using C and Perl. This enabled system administrators and software developers to access system or application logs with minimal effort and time investment.
-
Assisted testers and developers in conducting functionality and stress tests for the in-house on-line bill-pay product. Performed code reviews of core system components of said product, including plug-ins for Netscape iPlanet Web Server 6.0 (a secure passthrough plug-in and an SSL connection-pooling plug-in).
-
Performed operating system and application software upgrades and migrations for Sun, IBM, and HP systems, as well as performing routine maintenance for those systems.
|
|
WorldCom |
Research Triangle Park, North Carolina |
2000 to 2001 |
|
Role: |
Senior Software Developer |
Environment: |
Windows NT, OS/2. C, Perl. Oracle. |
Led software engineers and business analysts in the design, development, documentation, and delivery of internal, high-profile, revenue-sensitive software. Played a central role in database and software design, development, and administration. Represented our project in a leadership capacity to other organizations and individuals within the company.
-
Rigorously designed, implemented, and tested a complex data-auditing suite using Perl, PerlXS, C, and PL/SQL. Enabled the company to diagnose database and network problems central to billing and revenue recovery.
-
Solely developed specialized benchmarking and bottleneck identification software using Perl, PerlXS, and C. Enabled the development team to measure performance and improve throughput in critical sections of code, thus empowering the company to increase the frequency of audits and thereby rectify network-to-database synchronization issues more expediently.
-
Acted as a subject matter expert to a team of data analysts responsible for testing the correctness of the implemented utilities. Intimately involved in testing and bugfixing.
|
|
BrainBench |
Raleigh, North Carolina |
2000 |
|
Role: |
Test Developer |
Developed a skill certification test for C programming. Worked from a committee approved test content outline to develop a 135 question multiple choice test aimed at determining the aptitude of C programmers. Provided more than 200 test takers per hour with a means of demonstrating their value to prospective employers.
|
|
Homes.com |
Tallahassee, Florida |
1999 to 2000 |
|
Role: |
Senior Software Developer |
Environment: |
Solaris, Linux, Windows NT. C, Perl. Oracle. |
Led a team of software developers in the design, implementation, and maintenance of mission-critical infrastructure components and subsystems. Assisted in the administration of production Unix systems running on Sun and PC hardware.
-
Produced a highly flexible statistical analysis and aggregation tool, using Perl, PerlXS, C, Lex, and PL/SQL. Provided the company with a viable alternative to purchasing a high-cost statistics solution. Empowered the company to perform clickpath and trend analysis of site activity on the consumer and corporate sites.
-
Produced a high-performance mail engine using Pro*C and PL/SQL. Enabled the company to provide high-volume e-mail services to over 15,000 customers.
-
Produced a web-based mail merger using Perl. Provided the company with a powerful and convenient means of mailing personalized newsletters, service announcements, and other notices to over 15,000 customers or company employees.
-
Produced a red alert status monitor for the company's production servers using Visual Basic and SQLServer. Provided the system administrator with immediate notification whenever vital processes began to flag or ceased to function, thereby minimizing server downtime.
-
Maintained a suite of Visual Basic utilities designed to generate and manipulate PDF documents. Enabled the company to generate forms quickly and to customer specification.
|
|
Supercomputing Computations Research Institute |
Tallahassee, Florida |
1998 to 1999 |
|
Role: |
Software Developer |
Environment: |
Linux. C, Perl, Java. |
Assisted professors in the development of distance learning tools for Florida State University, particularly in the science and liberal arts arenas. Produced a virtual classroom and discussion board. Enabled professors to conduct lectures, proctor examinations, and host live discussions for students online. Provided the university with a means to enroll students studying abroad in web-friendly courses.
|
|
Department of Physics, Florida State University |
Tallahassee, Florida |
1997 to 1998 |
|
Role: |
Software Developer |
Environment: |
Linux. FORTRAN. |
Assisted professors in the analysis of data produced by experiments with Florida State University's low-energy nuclear accelerator. Produced a lambda particle decomposition analyzer. Enabled professors to perform high-quantity data analysis of reaction-induced particle four-vectors.
|
|