• SKILLS + QUALIFICATIONS
    .

    Tools
    • Docker
    • JavaFX
    • MongoDB
    • Spring Boot
    • GIT
    • GitHUB
    • RxJava
    • Robo3T
    • Eclipse
    • IntelliJ
    • JUnit / JMock
    • BCEL (Byte Code Engineering Language)
    • Gradle
    • Maven
    • Phone Gap
    • Sencha Touch
    • Hibernate
    • Travis-CI
    • Jenkins
    • Cruise Control
    • Bugzilla
    • CVS
    • Ant
    • Log4J
    • Velocity
    • JavaCC
    Languages
    • Java
    • JavaScript
    • Python (light)
    • Unix Shell Scripting
    • SQL
    • Visual Basic
    • VBScript
    • Perl (briefly)
    • Assembly (Intel 8085, Motorola 68000) (Degree Curriculum)
    • C (Degree Curriculum)
    MiddleWare APIs
    • REST
    • SPRING
    • Web Services
    • RMI
    • JINI / JavaSpaces
    • JDBC
    • Java IO Sockets
    • Java Servelets / JSP's
    • JNLP / WebStart
    • JNDI
    • CORBA
    • LDAP

    Client APIs
    • Java FX
    • Java2D
    • JDK1.8/SWING
    • AWT
    • JavaScript
    • DHTML
    • CSS3
    • HTML5
    Language Formats
    • JSON
    • XML / XML Schema
    • SOAP
    • HTML/HTML5
    • EDI
    • Style-Sheets (CSS / CSS3)
    Application Servers
    • WebObjects
    • Websphere
    • I-planet
    • Weblogic
    • Jboss/Tomcat

    Operating systems
    • OSX
    • Linux
    • Windows NT/98/XP/2000/7
    • Solaris
    • AIX
    • MACHLinux
    Databases
    • Oracle
    • SQLServer
    • MySQL
    • Hypersonic SQL
    • DB2
    • MS-Access


  • CERTIFICATIONS
    .

    Sun Certified Java Programmer


  • PERSONAL PROJECTS
    .
     
    • Port of NuPIC (from Python/C++ to Java)
      • An official Java port of NuPIC (Numenta's Platform for Intelligent Computing). A commercial venture founded by Jeff Hawkins (the founder of Palm / Handspring), which has since open sourced their algorithms. This is a framework of algorithms to implement "Machine Intelligence" using cortical theories (theories around the biological function of the neo-cortex). I have since been made the Java lead of that project, currently on github

    • Mosaic (A Cross-Framework / GUI-Framework-Agnostic Layout Manager)
      • A First in GUI Layout Managers! Drag-n-Drop multi-directional Split Pane which may be used in any GUI framework such as JavaFX, SWING, Apach Pivot etc. NO Nesting! and Dividers/Panes may be laid out in any arrangement. Dividers may be dragged in any direction simultaneously.    [ See Demo GIF !! ]

    • Financial Chart API
      • Never before seen UI visualization functionality written in Swing!
        Financial Charting (work still in progress) featuring customizable live-data input, unique time-line context viewing, unique zooming functionality, animated swappable axis, simultaneous sync'd axis scrolling across multiple charts! etc. API written for Financial Developers.

    • CellSplitPane / CellLayout custom layout manager.
      • Custom layout manager aimed at providing functionality not found in JSplitPane. Features dragging of dividers, API to customize divider button painting, Drag-n-Drop of components within the split pane, and among other things, animated cell component swapping.

    • "Transparent" - Java Look & Feel™

    • Java Disassembler
      • Written as self-instruction to learn more about the Java Language Specification™. Reads in a class file from which information can be obtained about the entire class - or specific methods and fields can be programmatically "searched" from which output can be printed.

    • Jar Class Loader
      • Able to resolve resource references in nested JAR files removing the necessity to compile jars into one giant JAR file. Nested references can refer to classes in other nested JARS regardless of degree of "nestedness"/location. Classes and other resources can be loaded dynamically or at program start.


    • Simultaneous Linear Equation Parser & Manipulation API
      • Used in financial/trading applications to resolve hedged positions. Coefficients can be any expression and also may refer to coefficients in other equations - thus resolving those expressions and using the result in the referring coefficients of term fragments contained in terms in other equations.

    • AI Context Resolver
      • Uses clustering to determine a theoretical distance between bodies of text (each character in the words) to determine contextual similarity. Highly accurate in experimental phase using limited test data.

    • Animated Revolving Column JTable API
      • Animates column rotation within a JTable! Uses a custom 3D model to hold the data for each "side" of a given column. Written using Java2D/Swing API to animate/emulate 3D column rotation.

    • Custom Inference Engine
      • Uses BCEL (Byte Code Engineering Language) to dynamically write classes which function as "interrogators" to access data objects specified as input objects to a given rulebase (to replace slow introspection) - created at Rule Engine startup. Included a "Natural Language" rule format and Parser.

    • Syntax Highlighter API
      • Java/Swing based document formatting abstraction to ease developer utilization of complex Swing document formatting API. Tool has GUI which can then generate the desired code to produce wsiwyg ("what you see is what you get") Syntax Highlighter code.


  • PROFESSIONAL EXPERIENCE
    .


    NOVEMBER 2015 – 2020
    • Cortical.io

    • Austrian based company specializing in text-based Natural Language Understanding (NLU)/ Processing (NLP) across different languages.


      Senior Sofware Engineer

      PROJECTS

      Various projects, both internal and client-facing demos. First 2 projects were Knime Workbench Process Workflow Manager (briefly), then the flagship JavaFX RetinaLibrary API Demo, IRIS

      Some Specific Projects:

      • IRIS - Development of JavaFX based desktop application Using Retina Library Natural Language Understanding (NLU) technology in an advanced JavaFX UI.
      • RetinaLibrary API - Java API for accessing Fingerprints; obtaining ontological classifications; document similarity; and filter/selector creation.
      • Development of Table Extraction API / PDF Extraction API - expansion of existing algorithms to extend extraction accuracy, capability and ease-of-use.
      • Development of Semantic Search Demo - Spring based REST application which produces lists of PDF documents which match the semantic content of input documents and search phrases.
      • Development of COIN (Contract Intelligence API) - REST based NLU contract document element extraction of PDF documents.
      • Development of Semantic Repository - document retrieval system based on adherence to semantic query content, using Retina Library and Fingerprint technology scoring.





    AUGUST 2014 – PRESENT
    • Numenta.org (Open-Source)

    • Lead Java Developer / Code Reviewer


      PROJECT

      AI / Machine Intelligence Framework

      An official Java port of NuPIC (Numenta's Platform for Intelligent Computing). A commercial venture founded by Jeff Hawkins (the founder of Palm / Handspring), which has since open sourced their algorithms. This is a framework of algorithms to implement "Machine Intelligence" using cortical theories (theories around the biological function of the neo-cortex). I have since been made the Java lead of that project, currently on github

      Developed multiple Java module conversions and tools to adapt functionality present in Python which doesn't exist in Java - and to span the gap in language semantics. Developed / Ported Temporal Memory; Spatial Pooler; many Encoders (to convert raw input to suitable input format); and Classifier (for statistical correlation of input to predicted output probabilities). Created unit and integration tests to identically reproduce and match Python/C++ Test output.

      • Manage and orchestrate the work of 5 (so far) other developers/contributors
      • Learned and created Gradle repository management
      • Configured Continuous Integration service using Travis-CI (together with test coverage and reporting functionality
      • Created Github source repository
      • Created and authored Github Wiki for user orientation
      • Created auto-Java Docs
      • Created Network API for easy HTM Network composition and execution




    FEBRUARY 2013 – DECEMBER 2014
    • Barchart INC

    • Senior Java Programmer


      PROJECT

      Development of the Barchart Trader trading platform.

      Design / Development of multiple components within the "Trader" platform application. Added functionality and features to core packages. Front-end system developed using Apache Pivot (A Java AWT-Like GUI Framework) using an OSGi module framework.

      • Dynamic Options Strategy Visualizer, with live data and calculations on any user input. Development of custom components for simplified user input to obtain live configured data.
      • Options Strategy Charting - Able to dynamically chart and sum any leg configuration.
      • Developed "Windowing API" to host Java FX Browser for Weather display within Apache Pivot
      • General Charting Package enhancements.
      • Developed dynamic Time Series API




    AUGUST 2012 – OCTOBER 2012
    • Self-Employed - Cross-Platform Mobile Application (For Arpac)

    • PROJECT

      Development of Packaging Calculator for Arpac Industries - learned new technologies (Sencha Touch, Phonegap, HTML5, CSS3, and expanded JavaScript knowledge) to successfully deliver application which has 12 calculator screens for determination of packaging materials and size, together with cost estimates specific to inputted materials.

      Application works for Android Phones/tablets, and iPhone and iPad apple devices.

      In Apple App Store®   (see Arpac Calc)



    OCTOBER 2010 – DECEMBER 2011
    • CMEGroup
      contracted through TEKSystems, Chicago, IL.    (6mo.s - Contract extended twice - 3 mo.s then 6 mo.s)

      Senior Java Programmer

      PROJECT
      Development of EOSTrader for the "PUMA" version integration with BM&F BOVESPA (Brazilian Collaboration); Then subsequent versions.

    • Client:

      Development of the "Time & Sales" (vertical ticker) screen and client-side architectural improvements, bug fixes, optimizations, and many user-experience enhancements. Examples include (but not limited to):

      • Debugged, enhanced and smoothed pre-existing zoom functionality.
      • Expanded preference handling to include elaborate user controls, saving of the desktop state and location within multiscreen environment.
      • Ability to save multiple instances of workspaces locally and visually preview them, select and load them.

      Server:

      Addition of historical queries into the "Time & Sales" functionality; batching of server responses, work on improving entity responsible for saving realtime market data to the db.




    FEBRUARY 2009 – APRIL 2010
    • Infinium Capital Management, LLC, Chicago, IL.
      Senior Java Programmer

      GENERAL DUTIES
      Design and build (in tandem with the project manager) "Einstein" the new in-house custom trading platform, aimed at satisfying deficiencies found in "Trade Station", their primary trading platform at the time.


    • PROJECTS
      Client:
      • Design / Implement the Charting Package
        • Included time-line scrolling/zooming along x and y axis with custom "zoom around point", rendering of bars, zones, and formatting of prices and dates, with custom look & feel.
      • Design / Implement Trade Alert Indicator
        • Custom JTable with a row for every registered alert, and columns which featured dynamic real-time updating of alert state through text and color changes, depending upon the "style" of the alert.
      • Design / Implement Desktop Manager
        • Window manager which allowed snapping of windows to each other and to the edge of a monitor. Also featured snapping during resize of windows, and "snap-into" functionality to resize windows into a given space between other windows.
      • Design / Implement Preferences Storage Mechanism
        • Custom extension of the Java Preferences API to load preferences into a tree which could load and write preferences to and from a properties file for easier debugging and viewing of preferences - which would later serve as a tree capable of manipulation from a user interface and JTree.
      • Design / Implement custom "zoomable" panels to display GUI elements on zoomable layers. and many other custom widgets

      Server:
      • Design / Implement "Analytics Engine"    [ description ]
        • Allowed user-specified chaining of analytics to produce custom analysis which could be charted or "fed" into other analytics within the engine.
      • Extension of my own Rule Engine to use Fuzzy Logic to determine rule "truth".    [ description ]
        • Extension of my Rule Engine to provide Fuzzy Logic inferencing over rules.
      • Design of server side object model and multi-tiered application communication.
        • Design work on object model, establishment of terminology and concepts to support current and future design and extension of the system.
        • Design / Implement communication idioms and code utilizing the "Blitz" open-source implementation of JINI/Javaspaces.



    AUGUST 2006 – OCTOBER 2008
    • Allston Trading, LLC, Chicago, IL.
      Senior Java Programmer

      GENERAL DUTIES
      Participate in enhancement of trade strategies and tool refinement. Provide technical support to both inhouse traders and other IT staff.


    • PROJECTS
      • Design / Implement the "Allston Spreader"    [ description ]
        • A real-time electronic trading application which used directly piped data arriving from exchanges to manage spread positions in related instruments - generating trades and monitoring the user's trade position, code named "Katana".
      • Design / Implement the real-time emergency cover tool    [ description ]   [ screenshot ]
        • Used instrument positions per Trader/User stored in a SQLServer database to display a user's position in a GUI, supplying buttons to obtain quotes and calculate positions in either "straight" trades or to present multiple cover strategies in the case of a hedged position.
      • Design / Implement real-time trade parameter editing program & GUI    [ description ]   [ screenshot ]
        • Allowed traders to control multiple trade programs across multiple servers. Featured JTable with dynamically instantiated "editors and renderers" according to data type of properties (i.e. custom spinner components with dynamically configured float precision, text fields and boolean check boxes - including the ability to store step functions for incrementing/decrementing doubles).
      • Add functionality and refine the "OrderViewer" GUI program
        • Application which displayed instrument prices and real-time user positions in a JTable - additionally sending order cancellation messages to the exchange with single click functionality.



    SEPTEMBER 2004 – APRIL 2006
    • G2SwitchWorks, Inc. Chicago, IL - [ Spinoff of   Orbitz® ]
      Senior Java Programmer

      GENERAL DUTIES

    • Enhance, Design and maintain WebServices API and supporting infrastructure to expose a consistent global interface to airline fare-search and reservation system.

      PROJECTS   [ details ]
      • Design / Implement Rule Engine & Reservation Routing Rules
        • Combine specific client request rules involving contractual obligations, with specific airline reservation rules to dynamically route and provide reservation context and route requests to internal servers. Included “Natural Language” rule format translation layer to more fully integrate business management personnel into rule maintenance and build process in order to facilitate their direct responsibility of "business rules"
      • Help Design / Implement “Modify Reservation” API
        • One of several API functional components such as “Create Reservation” and “Cancel Reservation”. Add/Modify XML/Schema to add and modify functional objects; Modify Spring and JiBX code to redefine translation between xml and internal objects; add functionality to objects to further perfect reservation modification functionality.
      • Add G2Agent® functionality
        • Web based reservation system for small travel agencies. Help modify and enhance functionality using Struts, JSP's, and Servlets.
      • Design and build Fare-Search Stress Tester
        • Multithreaded interface to the component which makes requests to 3rd party information suppliers. Contained properties file to supply parameters such as number of simultaneous connections and number of requests; log and provide reports to monitor connection code efficiency.



    JUNE 2003 – SEPTEMBER 2004
    • Adeptia, Inc., Chicago, IL
      Multiple Independent Consulting Contracts For Java Development

      EXPEDITED HIRE FOR:
      • Completion of 2 week deadline to construct a prototype for a presentation to SBC®.
        • The success inspired continued work to "product-ize" the interface (described below). GUI work involved animation of connection lines between nodes of two "Trees" and custom re-dispatching of low-level and semantic events from overlying "glass pane" to coordinates of underlying components.

      PROJECTS
      • Design / Implement “Process Flow Designer™”    [ description ]   [ screenshot ]
        • "Visio-like" SWING stand-alone GUI for modeling business processes using BPMN (Business Process Modeling Notation) constructs utilizing SWING Drag-n-Drop and custom Java2D API, and (Apache)Jelly.
      • Schema Mapper Applet Prototype    [ description ]    [ screenshot ]
        • Contracted to construct a prototype SWING drag-n-drop GUI for their previously existing enterprise system, then having a "Web" interface.
      • Later Development and Productization of Schema Mapper (Aurora™)
        • Completed post prototype functionality and subsequent re-implementation as a SWING stand-alone application.
        • Provided the means to map XML Schema elements and processing rules to route Vendor XML data to a differing target Schema. (i.e. "Telco Fees" element in source Vendor's schema might be called "Telephone Charges" in the target Vendor's schema and may require mathematical or text formatting manipulation before insertion into target XML data).



    MARCH 2001 – MARCH 2003
    • EpicEdge, Inc.,Seattle, WA
      Software Engineer

      GENERAL DUTIES

    • Original hiring expedited to solve crucial threading problem in their proprietary “Advanced Java Beans™” modeled “GUI Engine”.

      MAIN PROJECTS
      • Acords™ - Washington State Appellate Court System    [ description ]
        • Solved major client-side threading issue. Worked on adaptation of existing code for Superior Courts.
      • Prototype project for SUN Microsystems® web site.
        • Wrote JSP / Servlet code to programmatically interact with the U.S. Postal Service website to input addresses for a zipcode lookup and automatically populate the zipcode field in the SUN order form.
        • Later client-side work on above project.
      • CAPS™ – Washington State Court Scheduling System.    [ description ]



    JANUARY 2000 – JANUARY 2001
    • FizzyLab Inc., Seattle, WA
      Senior Java Programmer

      MAIN PRODUCT DESCRIPTION

      RELEVATOR™

      An "Artificially Intelligent" search program which dynamically executed a search algorithm to link currently viewed documents with other massively archived documents on a client's website which contained contextual similarity, thus increasing the utilization of archived documents that would otherwise never be retrieved during a website search.

    • PROJECTS
      • Worked solely with the principal engineer to develop the Categorization Engine API™
        • Dynamically related written content to a category, and conversely, found content belonging to a given category.
        • Solved a major AI domain problem; automatically categorizing documents which would otherwise require extensive man-hours to setup on a document-by-document basis, and furthermore require extensive labor to maintain.
        • Used internally by other products such as the Product Relevator™
          • Utilized the Categorization Engine API™ to dynamically populate the margins of client websites with product adds related to the "contextual meaning" of the document being currently viewed.
      • Lead developer/designer of the Relevator Alert™ email notification system.    [ description ]
        • CONSISTED OF TWO MAJOR COMPONENTS:
          • Web component added to a client's website which allowed registration and storage of a user's profile together with the ID of the current document being viewed.
          • Nightly multi-threaded background process which ran the RELEVATOR™ over the body of newly added documents on the client's site to send e-mail notifications to registered users when the newly added documents contextually "matched" documents which users registered interest in.
      • Developed several prototypes, one that eventually became the Inline Results Applet™
        • Where as the RELEVATOR™ redirected the user to a discrete page listing all search results; the Inline Results Applet™ allowed placement of search results anywhere on the current web page (i.e. the margin etc.).

        Did much of the early work to configure the system platforms and overall architectural components.




    FEBRUARY 1997– JANUARY 2000
    • Furkon Inc., Chicago IL
      Senior Consultant, (Consultant 1997–1998)

      Java developer responsible for researching, introducing and applying new technologies. Team-leader in matters of architecture and design of Distributed, Multi-tiered Web-based Intra/Internet applications. Mentor and advise other programmers.

      PROJECTS
      • Testing System (slated for shrink-wrap) for Furkon Software Solutions, an affiliate of Furkon, Inc.
        • Designed and distributed middleware utilizing JINI
        • Wrote server with specialized classloader for uninterrupted restart of middleware objects
        • Designed recursive virtual client for application usage tracking.

      • Multi-tiered Billing System for major credit card network services provider:
        • Designed the interface and middleware architecture (Web-based intranet SWING interface, CORBA middleware objects with Oracle/SQLServer database connectivity)
        • Wrote database abstraction API to simplify programmer usage of middleware objects.

      • Online Underwriter’s Manual/Rating Tool for major national insurance company: developed initial prototypes
        • Designed and wrote 80% of application including extensive DHTML (dynamic navigation and menuing) and Java scripting, with specialized Java tools (e.g., interactive analysis/rating tool and search engine).


  • NON-PROGRAMMING INDUSTRY WORK
    .


    JULY 1996– FEBRUARY 1997
    • The Planet Group Inc., Chicago IL
      Network Administrator

      • Administered in-house network that utilized Unix (BSDi & Linux) and Windows NT servers, together with Cisco and Ascend routers, to provide ISP, Server Hosting and Web Hosting services.
      • Installed and trouble-shot on-site ISDN routers and installed network cabling.
      • Set-up and administered Unix and Windows managerial software and configurations in-house (e.g., DNS, dial-up profiles, e-mail, Web server access).



    NOVEMBER 1992– MARCH 1996
    • Track Data Corp., Chicago, IL
      Systems Engineer

      • Oversaw Main/Mini frame Data General servers.
      • Installed both LAN and Asynchronous I/O cabling for internal and external networks.
      • Installed wiring in 12 floor high-rise for phone system and alarm system.
      • Installed proprietary routers, muxes and CSU/DSUs for both serial and LAN-based proprietary networks, to provide communications channel between servers in NYC and London to real-time multiplex ticker and news information to trader’s location.


  • EDUCATION
    .

    OCTOBER 1992
    • DeVry Institute of Technology
      B.S. in Electronics Engineering Technology


  • OTHER INTERESTS
    .

      chess, music, sailing, hang-gliding, bicycling



DAVID M. RAY cognitionmission@gmail.com