Garret Wilson Resume

Email
garret@globalmentor.com
WWW
https://www.garretwilson.com/

Highlights

Programming
Java, JavaScript, Rust, …
Cloud
Amazon Web Services (AWS), Docker, DevOps, CD/CI, …
Front-End
React, AngularJS, …
Specialty
Genomics, EPUB ebooks, TWAIN …
Leadership
Agile/Scrum, standards work, mentorship, remote team management, …
Education
Computer Information Systems, MBA, law, …
Subject During Skill (1–10) Experience
Java (including Java Enterprise Edition / Jarkarta EE, servlets, etc.) 1997–present 10 >25 years
Java Libraries (e.g. Hibernate, Spring) 6 10 years
JavaScript/ECMAScript 6/2015 8 >20 years
Big Data: Apache Hadoop, Apache Kafka, Apache Spark, Apache ZooKeeper 2019–present 5–8 4 years
Data Formats: Avro, JSON, Protocol Buffers, Thrift, XML 1997–present 6–10 4–20 years

Skills

Computer Languages

Java 1.0/1.1/1.2/1.3/1.4/5.0/6.0/7/8/9/…/17
I have expertise with applications, applets, threads, networking, and reflection. I am an expert in the latest Java language features, such as typesafe enumerations, generics, streams, and lambdas. I have found and reported several core Java bugs including JDK-8218280, an off-by-one error in underlying line buffering I/O that had apparently existed for decades.
Extensible Markup Language (XML)
I implemented an XML processor from scratch directly from the XML specification. I constructed an XML-based persistence scheme for Java objects using Java reflection. I created XML schema parsers and CSS parsers from the W3C recommendations.
HTML/HTML5/XHTML/DHTML
I've co-authored markup languages, and have a philosophical insight into good markup design and rigorous separation between content and presentation.
C/C++
I've created and marketed entire applications written in C++. I developed a custom windowing toolkit from scratch. I created an object-oriented framework to wrap low-level TWAIN scanner access, as well as an object-oriented development kit for creating scanner drivers as TWAIN data sources.
JavaScript/ECMAScript
I've been intensely involved in JavaScript long before it was fashionable, creating entire Ajax frameworks before libraries like JQuery were available.
Other Languages and Formats
ObjectPascal (Delphi), 6502/6510 assembly, 80x86 assembly, Extensible Markup Language (XML), JavaScript Object Notation (JSON), Simple URF (SURF), Apache Avro, Google Protocol Buffers, Apache Thrift

Frameworks, Protocols, APIs, and Standards

JavaServer Faces (JSF)
I worked deep within the JSF reference implementation source code and submitted multiple bugs to Sun. I am the inventor of US Patent 20070016660 for a JavaServer Faces Upload technique.
Hypertext Transport Protocol (HTTP)
I created from scratch an implementation of HTTP directly from the specification, along with an implementation of the HTTP Digest authentication scheme for both client and server.
Web-based Distributed Authoring and Versioning (WebDAV)
This HTTP extension is the basis for Microsoft's WebFolders. I created from scratch a WebDAV servlet that allow custom authentication (using, for example, the HTTP digest authentication module I created).
Java Message Service (JMS)
I am familiar with the the JMS API, and in the past I created an implementation from scratch both on the server and on the client using SOAP as an underlying exchange syntax.
Session Initiation Protocol (SIP)
I created a SIP server and SIP stack from scratch for this HTTP-like VoIP signaling protocol made to replace H.323.
Java Swing
I've leveraged Swing to to its fullest extent, creating custom formatted text flowing views, many times researching into the Swing source code to find answers and submitting bug reports to Sun. I created an eBook reading platform which supports XHTML, pagination, and right-to-left languages such as Arabic and Urdu.
Resource Description Framework (RDF)
This metadata framework goes beyond mere descriptions to encode ontological assertions, allowing semantic-aware queries and inferences. I implemented an RDF processor from scratch, and I have a deep understanding of the propositional underpinnings of RDF and its relation to the semantic web.
Other Frameworks, Protocols, APIs, and Standards
Java Enterprise Edition / Jarkarta EE, Java Abstract Windowing Toolkit (AWT), Enterprise JavaBeans (EJB), Resource Description Framework (RDF), Cascading Syle Sheets (CSS), XML Document Object Model (DOM), XML Simple API for XML (SAX), XML Stylesheet Language (XSL), XML Namespaces, XML Schemas, XML Linking (XLink), XPointer/XPath, Active Server Pages (ASP), Java Server Pages (JSP), TCP/IP, UDP, Microsoft Foundation Classes (MFC), Borland ObjectWindows Library (OWL), Delphi Visual Component Library (VCL), Win32 API, TWAIN, C++ Standard Template Library (STL), COM/ActiveX, Unicode, MathML, Unified Software Development Process (USDP), Rational Unified Process (RUP), IMS Question & Test Interoperability Specification, IMS Content Packaging, Simple Object Access Protocol (SOAP), Spring

Cloud /Distributed Data

I am comfortable with a range of distributed data systems. I have added features to a proprietary, internal big data solution involving hashing and replication clusters.

Docker
Currently deploying Docker containerized services with CloudFormation and Amazon Elastic Container Registry (ECR).
Apache Hadoop
Rewrote core logic of a MapReduce project to allow efficient, multithreaded division of labor for processing a hierarchical data set. Wrote and published as open source a Java-native decorator class for Hadoop FileSystem to allow Spark usage on Windows without the need for third-party binaries.
Apache Kafka
Implemented data transformation and enrichment into Apache Avro for a pipeline siphoning payloads into a data lake.
Apache Spark
Configured, tested, and provided architectural review of a Scala-based Spark application meant to replace an existing MapReduce application.
Apache Thrift
Interfaced with a Thrift-based RPC mechanism for enriching data as part of a Kafka pipeline. Within days of looking at the Thrift source code, I reported and fixed bug THRIFT-4857 in which a core Thrift class validated Java consistency rules for hash code and equality.
Google Protocol Buffers
Added features to an existing project using protocol buffers both for RPC and also as a general serialization mechanism.
Apache ZooKeeper
Hands-on design and programming experience with a ZooKeeper deployment providing state for all the nodes in their big data system.

Cloud

Amazon Web Services (AWS)
I wrote the Guise™ Mummy static site generator from nothing, including automatic deployment to AWS: Route53 DNS routing to a CloudFront distribution using AWS Certificate Manager SSL/TLS certificates for multiple S3 buckets, with apex domain support. Currently deploying VPCs, subnets, and Docker containerized services with Amazon Elastic Container Registry via CloudFormation.

Front-End

AngularJS
I led a two-year project using AngularJS on the front-end with custom LDAP authentication and data storage via a RESTful API data storage microservice. I've created nested, dynamic AngularJS with custom models.
Guise™ Framework and Ajax
Extremely dissatisfied with JSF, I created a comprehensive and elegant Internet application framework that handles asynchronous server communication and real-time component updates transparently. The entire framework component hierarchy is abstracted from the end-user technologies, without application developers to write any HTML or JavaScript. All Ajax functionality was written from scratch.

Platforms and Tools

Operating Systems
Windows 10, Windows 7, Windows Vista, Windows XP, Windows 2000, Windows 9x, Windows 3.1x, Red Hat / CentOS Linux, Ubuntu Linux, Vax/VMS
Development Environments and Tools
Microsoft Visual C++, Borland C++, Borland Delphi, Symantec Visual Cafe, Borland C++Builder, Borland JBuilder, Eclipse, Rational Rose, Together/J, ArgoUML, Magic Draw UML, Maven, Microsoft Visual SourceSafe, Subversion, Git, GitHub, Bitbucket, GitLab, JIRA
Server/Cloud
Apache HTTP Server, Apache Tomcat, Orion Application Server, UW-IMAP, SquirrelMail, Mailman, OpenSSL, Amazon Web Services (AWS) / Elastic Compute Cloud (EC2)
Database
Borland Database Engine (BDE), Paradox, dBase, SQL, Java Database Connectivity (JDBC), Oracle, PostgreSQL, SQLite, HyperSQL DataBase, H2 Database, Hibernate, jOOQ

Spoken Languages

English
native
Portuguese (Brazilian)
almost fluent
French
rusty
Hindi/Urdu
introductory
Hungarian
introductory
Spanish
almost forgotten

Communication and Interaction

I have excellent control of the English language, with the skills to write software documentation, prose, or poetry. I excel in education and teaching, working in environments in which I manage and/or educate groups or individuals. I work well as part of a group or alone. I interact well with others of diverse personalities and backgrounds. I apply skills of logical thinking, rational problem solving, and object-oriented design and analysis both to complete my work and to effectively function within the work environment.

Experience

LinkedIn (January 2021 – June 2022; Senior Software Developer Consultant)
I was responsible for several applications providing regulatory compliance for cloud data storage, involving traversal of entire data lakes. I gained deeper experience with Apache Hadoop and its FileSystem API; along with the job scheduling platform Azkaban; both technologies originally developed at LinkedIn. Additional duties included adding metrics, alerts, and visualization for monitoring.
Global Relay (June 2019 – January 2021; Senior Software Developer)
I was a senior developer on the core distributed data platform providing regulatory compliance solutions for financial institutions worldwide. My responsibilities were diverse, including adding new features to distributed data storage; transforming and enriching data via Kafka to data lakes; and using distributed tracing and log monitoring for system analytics and alerts.
Intrexon Corporation, South San Francisco, California USA (August 2016 – September 2018; Software Development Consultant)
I interviewed users, formed requirements, created proposal, designed architecture, and implemented lab automation software for an Intrexon Energy Partners project, leading the developers through several releases.
Affymetrix, Inc., Santa Clara, California USA (February 2012 – December 2015; Software Development Consultant)
I returned to Affymetrix to help design and implement a new version of the Chromosome Analysis Suite (ChAS) software for visualizing genomic data using Java Swing, Maven, JAX-RS, PostgreSQL, and jOOQ.
Archimedes, Inc., San Francisco, California USA (March 2012 – June 2014; Software Development Consultant)
I implemented new features on the Archimedes health mathematical modeling and predicting platform, parsing and processing customer health data from health care industry standard formats. I fixed bugs and refactored parts of the architecture based on Spring and Wicket in Java.
Navigenics, Inc., Foster City, California USA (November 2010 – November 2011; Software Development Consultant)
I help maintain and develop the front-end and back office web applications, business logic, and database tier for personalized-genetics management. With a team I designed and implemented a multi-time-zone scheduling component and a monthly subscription billing system in Java based on Wicket and Hibernate.
Affymetrix, Inc., Santa Clara, California USA (November 2007 – November 2010; Software Development Consultant)
I formed part of a team designing and implementing the Chromosome Analysis Suite (ChAS) Java software for visualizing genomic data as part of the cytogenetics product.
Grey San Francisco, San Francisco, California USA (June 2005 – May 2007; Consultant)
I helped design architecture of GreySF software projects, provided input on project priorities, as well as guided a team of developers in Shanghai implementing software systems. I was technical lead on the Wellpoint Blue Cross of California small business insurance project, and the entire resulting BeneFits web site was built on top of my Guise™ Internet application framework.
Texas Instruments, Inc., Dallas, Texas USA (May 2002 – 2003; Consultant)
I gave advice on technical data formats for educational content for the TI E&PS division. I provided assistance with implementing recommendations produced by standards bodies such as the World Wide Web Consortium (W3C), the IMS Global Learning Consortium, Inc., and the Unicode Consortium. My contribution primarily supplemented the development of a new version of TI-Navigator, a wireless classroom network system for distributing educational material to TI hardware devices.
WebTelecom, Inc., Pleasanton, California USA (May 2000 – March 2001; Contracted Senior Developer)
I led a team for creating from scratch a transport stack for the Session Initiation Protocol (SIP), the successor to the H.323 voice signaling protocol. I led the architecture for the company's future technologies, which included real-time multithreaded multi-user interaction with EJB/JSP/JDBC integration. I interviewed candidates for joining the development team. I documented legacy code using the latest features of modeling languages such as UML 1.3 within design tools such as Rational Rose and MagicDraw UML. I analyzed and prepared critiques for aiding technology acquisition/partnering decisions. I traced and repaired errors in legacy systems. I constructed a company-specific software development process that is use-case driven, architecture centric, and iterative using the phases (inception, elaboration, construction, transition) outlined in the Unified Software Development Process (USDP) and extended in the Rational Unified Process (RUP).
J. F. L. Peripheral Solutions, Inc., Ottawa, Ontario, Canada (December 1997 – April 1998; Contracted Senior Programmer)
I was responsible for creating the majority of each TWAIN scanner driver for the Bell & Howell scanner models Copiscan II, Copiscan 4000 series, and Copiscan 8000 series. I designed C++-based object-oriented engine using C++ features such as templates and exception handling. I ported this MFC-based engine to Microsoft COM/ActiveX, writing a custom window wrapper object set and constructing an object-oriented TIFF library from scratch.
GlobalMentor, Inc. (1999–present; CEO)
I continue to provide consulting services and develop useful products and tools through GlobalMentor.
Mentor Computer Solutions, Chelsea, Oklahoma USA (1993–1999; Owner)
I formally started Mentor Computer Solutions in September of 1993 as a company to produce quality educational software. Mentor Computer Solutions is now GlobalMentor, Inc.
Chelsea Software, IVR, Chelsea, Oklahoma USA (1990–1993; Programmer)
I was responsible for converting company-specific libraries, originally written in BASIC, to assembly language. These libraries comprise PhoneTools, which the company both uses internally and markets to other developers. PhoneTools allows creation of custom Interactive Voice Response (IVR) applications by interfacing with Dialogic voice cards using the BASIC programming language.

Education

Juris Doctor: 17 December 2005; University of San Francisco School of Law, San Francisco, California USA (2002–2005)
I earned a law degree and was awarded the International and Comparative Law Certificate, with Honors.
Master of Business Administration: 17 December 2005; University of San Francisco School of Business and Management, San Francisco, California USA (2002–2005)
I earned a law degree and was awarded the International and Comparative Law Certificate, with Honors.
MA International Studies and Diplomacy; School of Oriental and African Studies, University of London, London UK (1998-1999)
I received a masters with a merit status at the end of 1999.
BS Computer Information Systems: May 1997; University of Tulsa, Tulsa, Oklahoma USA (1993–1997)
I graduated with a cumulative GPA of 3.651. I was a member of the Kappa Sigma Fraternity, where I was social chairman for one semester. I was also president of the Academic All-State Alumni Association, an organization that has grown out of the Oklahoma Foundation for Excellence, promoting academic excellence in Oklahoma's public schools.

Personal Projects

Configuration Foundation (Confound) (GitHub)
Provides a lightweight yet powerful model for accessing various types of application configuration facilities via Csar.
Concern Separation Aspect Registrar (Csar) (GitHub)
Provides access to some concern (usually cross-cutting) that may configured globally or locally to some section of the program. Csar acts like a global service locator that provides flexible, transparent local configuration.
Resource I18n Concern Library (Rincl) (GitHub)
Provides a unifying Java API for resource lookup across frameworks, with plug-and-play implementations for resource storage.
Csar Logging Registration (Clogr) (GitHub)
Simplifies SLF4J logger access while providing compartmentalized logging configurations via Csar.
Datimprint (GitHub)
A tool to help ensure data backups are accurate and detect corruption.
Guise™ Mummy (GitHub)
A static site generator written from scratch.
Guise™ Skeleton (GitHub)
A custom CSS framework written from scratch.

Contributions

Tomcat FAQ: Character Encoding Issues
I updated one of the Tomcat Wiki pages to clarify encoding issues with the Java servlet specification and explain how to work around them in Tomcat.
Java UCUM Implementation
A developer I had trained, working under my supervision, worked to bring back and update (see uom-systems Issue #58) the most complete Unified Code for Units of Measure (UCUM) implementation available in Java.

Speaking

ApacheCon NA 2019 (2020-09-10)
In Las Vegas I gave the presentation “Serving Clean URLs via Custom Internet Media Types on Tomcat” describing how my Guise™ Mummy serves resources without extensions directly as HTML using embedded Tomcat.
SouJava Campinas Meetup (2018-08-23)
In Campinas, Brazil I presented “Confound: Simple and solid configuration foundation for Java”, introducing and explaining my recently released Confound library.
Seattle Java User Group (2017-05-16)
Unveiling of my my new SURF format in “From JSON to SURF in Java”.
San Francisco Java User Group (2016-08-10)
Introduction to Java internationalization and presentation of the Rincl library.
Tulsa Tech Fest 2016 (2016-08-05)
Oklahoma technical training conference. My two sessions were Unicode Processing in Java and Internationalizing Java Applications.

Bibliography

Patents

Differential Filtering of Genetic Data (US 2011/0257896)
Computer software products, methods, and systems are described which provide functionality to a user conducting experiments designed to detect and/or identify genetic sequences and other characteristics of a genetic sample, such as, for instance, gene copy number and aberrations thereof.
JavaServer Faces Upload (US 2007/0016660)
This invention consists of a custom JavaServer Faces UIForm component, a custom JavaServer Faces UIInput component , and a corresponding process which allows file uploads to be implemented within JavaServer Faces without the need for a separate servlet filter.

Specifications

Uniform Resource Framework (URF) (2007–2019; Author, Editor)
Designed to remedy RDF deficiencies, URF provides a consistent way for representing resources and their relationships. It is useful for data storage, data interchange, data querying, and logical inferences. URF together with its interchange formats provides a more powerful yet in many ways simpler and more consistent replacement for data-oriented XML, RDF, and JSON.
Open eBook Publication Structure (OEBPS) 1.0.1 (2001-07-02; Co-Author, Maintenance Sub-Group Chair)
A specification for representing the content of electronic books, created through the Open eBook Forum (OEBF), an international trade and standards organization for the eBook industry. The OEBF later became the International Digial Publishing Forum (IDPF) and then combined with the W3C; the specification later became the ePub format. The OEBPS 1.0.1 specification is available via the Wayback Machine.

Technology Articles

Creating Local Globals with Csar (2016-08-01)
Introduces Csar, the Concern Separation Aspect Registrar, which helps object-oriented programs separate concerns by providing localized registrations rather than global singletons.
Easy Resource Internationalization with Rincl (2016-07-14)
Introduces Rincl, the Resource I18n Concern Library, which provides a unifying Java API for resource lookup across frameworks.
Internationalization Using String Resource References (2007-02-09)
Describes a flexible technique of non-intrusive text referencing for application internationalization.
Typed and Targeted Property Change Events in Java (2007-01-29)
Introduces a method for using Java generics when listening for property change events, and for identifying when a change occurred in an object other than the event source.

Law

Refactoring the Law: Reformulating Legal Ontologies (2006)
Explains the common philosophical underpinnings of jurisprudence and software engineering, traces their similar evolutions, and lays out likely future interactions and convergences within and between these two disciplines.
The Effect of Legal Tradition on Affirmative Action in the U.S. and Brazil (2005)
Examines how the distinct legal traditions in Brazil and the United States affect the legitimacy and applicability of affirmative action in those countries.