Post Job Free

Resume

Sign in

Java Developer Computer Science

Location:
Pensacola, FL
Posted:
October 04, 2023

Contact this candidate

Resume:

Duane M. Thigpen

301-***-****

Education

University of Maryland University College

B.S. Computer Science 2009

Louisiana State University

B.S. Geography 1987

Active Clearance: Top Secret SCI

Experience

Axient for USAF at Eglin AFB

February 2023 – September 2023

Java Developer

Wrote java program that would take a java integral type and generate a Signed Magnitude Floating-Point number in IEEE 754 Standard format or a DEC floating point format. By working in the binary notation, I was able to spot the patterns that my customer was looking for. Also, wrote a java program to convert Omega Next SQLite databases into XML configuration files for ingest. TMATS extracts were used as an aid to the data defenition.

Cohere Technology, LLC for BAE Systems

November 2022– February 2023

Java Developer

Commited upgraded .pom file, tested the new version and did Pull Request in git in order to upgrade Web application run with Java 11 and Spring Boot. Upgraded builds and associated bash shell scripts to run application on a gradle build instead of the older maven build, as requested. Wrote a dependency graph application in Java 11, as requested. Aforementioned dependency graph was used in oder to map fields from their front end GUI through the middle tier and to the database. The middle tier has Factory classes as well as DAOs and DTOs that had to be mapped in detail. The dependency graph was implemented with an Adjacency List data structure in java and mapping were done with a ordered Power Set, modulo 128, in order to layer the data.

AVID Technology Professionals for CACI

November 2021 – November 2022

Java Developer

Used Angular CLI command line utility, to create Angular application. Installed the CLI using npm package manager (e.g. ng install –g @angular/cli). Used “ng new” and “ng serve” commands to get angular running in the localhost on port 4200. Added hierarchical menu using Typescript and Angular. Built Angular project and did pull request with git.

Built Spring JPA connection classes to PostgreSQL database as a graph service using Spring Data Annotations. Built and deployed graph functionality with “jgrapht” API using Depth First Search, Breadth First Search, Topological Sort, and Minimum Spanning Tree algorithms. Built a service to call a PostgreSQL database. Said service was used to populate a graph-dependencies DAO. Spin up development environments from AWS EC2 instance. Move data files from AWS S3 bucket for upload/ingest and parsing of data. Built and deployed graph functionality with “jgrapht” API using Depth First Search, Breadth First Search, Topological Sort, and Minimum Spanning Tree algorithms. Built a service to call a PostgreSQL database. Said service was used to populate a graph-dependencies DAO. Helped team to gather requirements. And worked in a SAFe Scaled Agile environment using Jira and Confluence extensively.

TEKSystems for Jacobs Engineering for USAF

April 2021 – October 2021

Java Developer

At the request of civilian Chief Engineer, I ran and debugged a java parser of XML radar data. Said parser was coded to validate that XML documents conformed to a specific grammar. Additionally, domain logic and control flow was coded to handle invariants from the radar equipment and physical wave-form domain. Knowledge of said domain included knowledge of radar antennas, physical wave-forms and techniques used by USAF. Also, I designed and programmed data structures in C# to support other radar techniques. Said C# data structure design required me to understand certain aspects of the physical wave forms and radar techniques used.

General Dynamics Information Technology

January 2021 – April 2021

Java Developer

Ran both Ant and Maven builds on various Java services and deployed both .jar and .war files for

production changes. These builds were done as part of a test before migration to AWS EC2. Fixed issues with existing code base by adding “Positive Lookahead” Regular Expresion. The “Positive Lookahead” RegEx was needed to fix existing splits that were being done on strings where delimiters were embedded within double quotes, thus causing Data Loader to fail.

Avid Technology Professionals for Lockheed Martin

January 2020 – January 2021

Java Developer

I work on a Big Data system that uses Java to parse data going into the system. I created a Maven build of the existing code base. Said build required me to first resolve dependencies by adding needed .jar files as well as dependencies in the pom.xml. I wrote an Abstract Builder to test parsers as needed. I also generated new .jar files in order to replace sub-components of the system as needed. I modified a bash shell script in order to distribute the workload by selecting different applications on different Linux servers. Also, I wrote a bash shell script which uses the Lniux awk command to print columns of information grep’d from other bash commands and piped to awk. Said script loops through and checks a given column for a given condition in order to decide if the file will be moved. I modified Regular Expressions in Java code in order to meet changing customer needs. I monitor the network with Nagios and Linux command line tools such as tcpdump, tracepath, traceroute and nslookup. And, I used Ansible to configure servers in a more like-for-like way from one centralized location. I did a detailed analysis of java classes which implment Accummulo's SortedKeyValueIterator interface as well as Hadoop's WritableComparable interface. The aforementioned analysis was done in order to write "JUnit" unit test. These unit test successfully demonstrated that a pre-existing iterative version of a recursive method would produce different results than the original (older) recursive method.

Avid Technology Professionals for Leidos

June 2018 – March 2020

Java Developer

I maintain a JSF application with Java backing the JSF components. We us a MySQL database and both GIT and SVN repositories. I set up Eclipse to use both GIT and SVN. I have also written several bash shell scripts to automate processes and work with bash shell to drive Maven builds. I have enabled and disabled JSF components based upon changes in state from the backing Java objects. I’ve added and updated code in GIT on multiple branches. I have added conditionals to JSF .xhtml code for displaying “outputText” in one mode and “selectMenu” for another mode based upon elevated user access, such that the boolean check enables toggling of JSF components in the same layout space. I use Tomcat, Maven, and Junit, and bash shell for all builds. By building Test Harness around certain java methods I have created a Fast-Feedback-Loop from which I was able to detect and remove bugs in the code logic. I also wrote methods in the java backing that clean out characters that were causing unwanted delimiter shifting. Additionally, I also got rid of unwanted Control Character in other java methods from the backing java object for a JSF file download feature. I also changed the delimiter type to prevent data shifting and added fields to the download. Additionally, I added a JavaScript functional callback in order to limit character types and number of characters for a file download feature. I refactored some java code to properly use a class hierarchy in conjunction with composition to complete new features. I graphed existing call stack because it was making unnecessary method calls which made the code very hard to follow and less efficient. I found an ordering of the vertices such that each method was called only once. That is, I found a Hamiltonian path were a non-Hamiltonian call stack previously cluttered the code base. I used new simplified Hamiltonian path to map User with appropriate HttpSession for application permission decisions. Additionally, I imported the StAX parser and built a XML Verifier with it. The XML Verifier can verify any XML with it's associated .xsd schema. That is, it can

read in any .xsd and validate a given xml with the schema. Determined state of cached user objects in order to enforce appropriate user access. Added field to MySQL database which is set from JSF “h:inputTextArea” to it’s back object. Added validation of in JSF which implements javax.faces.validator.Validator and is called from f:validator in the .xhtml. Used java enum as a type to represent state in a bug fix where state is tested in control flow logic. Also, used check-boxes on a .jsf page in order to set a defined set of Enum constants. The type-safe object is used for Boolean logical checks in control flow. Also, converted a “Product-of-Sums” form logical conditional to a “Sum-of-Products” form, which has one “min-term” instead of having a unbounded check with the “Product-of-Sums”. This use of Boolean algebra enabled me to discover that the previous approach (i.e. unbounded “Product-of-Sums approach) had been used in an attempt to handle the complexities of two separate Use-Cases. So, by using the “Sum-of-Products” approach with one min-term, I was able to determine that the two separate Use-Cases could be correctly represented in a nested if /else clause; where each Use-Case had it’s own nested if condition inside of the if/else clause. This effort lead to a more bounded check, since the one min-term is true only at one point with a unique result. Also, and most importantly, the end result of this approach removed a logical-error (i.e. a “bug”) from the application’s code base and runtime.

APEX Systems, Washington DC November 2017 – May 2018

Java Developer

I'm a Java Developer for the FBI's IT / AAU division. I am currently working on migrating existing applications from legacy IBM Mainframe environment to a modern Java Web application. I use the Spring framework's Controllers in a MVC pattern. The controllers that I write within the Spring framework give a URL to the front end Javascript in order to make a asynchronous HTTP call from the front end View. We are currently using the DOJO framework with Javascript on the front end (view) and Java with Spring framework for the MODEL (POJOs) and Controller. Spring controllers are used when making a HTTP request/response to the server. For these controllers Spring annotations @Controller and @RequestMapping("/someURL") were used to simplyfy coding of the HTTP request/response. Also, the @RestController annotation was also used for coding RESTful endpoints and marking the class as a controller where every method returns a domain object instead of a view. I have also used DOJO’s DataGrid to display various layouts populated from JSON returns through Spring HTTP controllers that I custom built for the task.

Avid Technology Professionals for Lockhead Martin October 2017 – November 2017

Software Engineer / Developer

·I set up development environment in Eclipse. And I had my PKI certificates reset. This project ran out of money 1 week after I arrived on board.

Avid Technology Professionals January 2017 – September 2017

Software Engineer / Developer

·I wrote an Http client in Java 8 which imported org.apache.http.client.methods.CloseableHttpResponse, org.apache.http.client.methods.HttpGet,

org.apache.http.impl.client.CloseableHttpClient, and org.apache.http.impl.client.HttpClientBuilder. These apache classes were used to instantiate a HttpClient that would test a specific proxy service with various IDs and measure response time.

Reports of the aforementioned response times were generated and distributed to management.

·I also created RESTful endpoints in Java 8 using Streams, Lambda expressions, and Vert.x for Http request and response. These RESTful endpoints would query Elasticsearch. The results of the Elastisearch Query were transformed into another model with java POJOs. The resultant POJOs were parsed with a Jackson JSON parser and made available as a Transformed JSON in a Swagger Client. Additionally, a legacy Source Code repository was searched in efforts to discover and re-engineer all of the the various permutations of endpoints that could be generated by that legacy API.

Avid Technology Professionals for Northrup Grumman January 2016 – November 2016

Software Engineer / Developer

·I supported the design of a new project by building a Java EE 7 JAXS-RS RESTful Web Services. I built the RESTful Web Service with JAX-RS in a Java EE 7 EJB container. The RESTful Web Service utilized the @EJB annotation for Dependency Injection. In addition to the Dependency Injection annotation, I used @GET, @POST, @PUT, and @DELETE annotations for the Stateless HTTP calls. The aforementioned RESTful Web Service updated and modified a local Derby database. I also wrote a Ant build script to compile the application and move .class files to the WEB-INF/classes directory of the TomEE container that I had set up to run the application. I also resolved all classpath issues from EJB .jar files and a JAXS-RS .jar file between the original TomEE container and the application that I had set up in the TomEE container. I also wrote a standalone GSON JSON parser application to test JSON returns from various remote Web Services. Said JSON parser parsed nested JSON arrays into java Objects. Additionally, I built multiple modules that added additional functionality to a second project that is built on the J2EE architecture. In order to build these modules from client to server I had to code in the client and middle tiers. To do this I coded in the MVP design pattern with “Activities and Places” when calling GWT components on the front end. The MVP Pattern with “Activities and Places” was set up in order to more easily maintain and JUnit Test the GWT client side in separate layers. Said “Activities and Places” were separated into the View Interface, View Implementation, Client Factory, Activity (which is the Presenter in MVP), Places, Place-History-Mapper, and Activity-Mapper .java source files. In the middle tier I called Proxy Classes that mapped to Stateless Session Beans in the middle tier. If no proxy was available, I would write a handler class that mapped to Stateless Session Beans. That is how I worked within the existing architecture to get data from the GWT client through the middle tier and to the EJB back end. When persistence was needed I would call helper classes and pass them data through parameters, when the helpers existed. If no helper class already existed, then I would build these classes that acted much like Entity Beans in J2EE. Build for the J2EE application were also done in Ant. Contributed to forum towards picking up particular configuration management tools for project, researching Jira, Maven, GIT, and Hudson. Downloaded Gradle and performed builds with the technology as research for the organization regarding their decision for adopting Gradle or Maven. On a given .jsp application upgraded from SSL 3.0 to TLS 1.2 as per government requirement due to bugs in SSL 3.0 and earlier. Used TIBCO EMS message service to work with TLS 1.2. I wrote several component of a utility program that loaded data from MS Office Excel spread sheets into variables for further processing. The aforementioned utility program imported components of the Apache POI API that assisted in getting data by row. Rows were returned as List and List were added to a Map<String, LinkedList<String>> java Collection. Nulls were handled and a switch case was used to determine type of data being retrieved from the aforementioned cells. I also loaded configuration data from .properties file with java Properties and FileInputStream. Used properties getProperty method to get particular properties by key and split their values into a String[]. Then set application variables in a switch case switching on Enum’s valueOf.

Avid Technology Professionals for Leidos March 2015 – January 2016

Software Engineer / Developer

·I was the only developer on a project that is built around the Servlet technology and its architecture. I have executed a migration of my customer’s web application from a Weblogic server to an Apache server running in a Tomcat container. I also built up a new operating system in a new VM with CentOS 6 and mounted Volumes for production and development servers, as part of the aforementioned server migration. I used java’s keytool to generate Test Certificates. The process used keytool’s -genkeypair, -exportcert, –importcert in order to copy public certificates server.jks to client.jks and client.jks to server.jks. I created a $CATALINA_HOME/keys directory to store server .jks file. I next modified Tomcat’s server.xml configuration file’s Connector tag for https. I also modified many preexisting Weblogic dependencies such that the application could run in a more typical folder structure in Tomcat.

I also dumped the MySQL database from the original server. I then set up MySQL on my newly created CentOS instances and imported the database into the newly installed MySQL. I also used the Ant build tool to create a “Faster-Feedback-Loop” for the build process. I used the aforementioned build process for Junit Testing and immediate feedback after modifying code. I made many code changes to Sevlets in order to change the root application and other paths that were hard coded in the original servlet code. I also used java’s Reflection in order to get public variable names and convert them for use with the GUI.

Avid Technology Professionals for Leidos July 2012 – March 2015

Software Engineer / Developer

·I was the lead developer supporting the following technologies in a Linux development environment: Perl, JavaScript, AJAX, Oracle, LDAP, PL/SQL, Bash shell scripts, XML, several RESTful web services, and a SOAP web service. I have written and implemented a SAX parser in Perl for parsing a stream of XML tags being read from a service. I modified Perl code in order to achieve a one-to-one and onto (isomorphic) mapping from server side generation to elements on the DOM namespace. I wrote code in both JavaScript and Perl to make use of AJAX calls to the server. I am also used the Prototype framework extension to JavaScript. I also used Rico, the open source JavaScript library for developing rich internet applications that use AJAX in conjunction with Prototype. I wrote code to parse data in various formats including XML and JSON.

Avid Technology Professionals (this and next project were worked concurrently) February 2013 – April 2014

Software Engineer / Developer

·I created a Ant build script that compiles all java files from SVN trunk and places the .class files in a web environment. Additionally, the Ant script drives a test harness that uses JUnit to run unit and integration tests. These tests get a DTO as a Spring Bean. The unit test uses HibernateTemplate (a Spring object) while testing application domain DTOs. The test harness effectively builds up objects from subcomponents and test the objects through changes of state handled by the Hibernate framework transitions. I am using the Test Data Builder pattern to mock certain application objects in Unit Test. I am using said mock objects for behavior verification. I have implemented an abstract builder class (AbstractBuilder) that is used to extend all domain builder objects. I am using the AbstractBuilder class to set up Unit Test data. I have run scripts for the needed export of a complex MS SQL Server database schema. I ran script to import complex schema into a newly owned MS SQL Server database. I created a test .war file from an Ant build and dropped the .war file into tomcat container for testing on Test server. Next, I got the test application up and running in tomcat. Additionally, I wrote java code to do a SHA1 (secure hash algorithm #1) encryption of data. Next, I used said java program to SHA1 encrypt data when needed. I wrote several java utility programs that assist in the set up and tear down of the development sandbox. The first utility program was used to run .sql script files to create tables and insert test data into a development database. The second java utility program will pull schema information for quick graphical display.

Lockheed Martin 05/2/2012 – 7/21/2012

Software Engineer

·I worked on a CICS conversion to JAVA. This involved converting Cobol and JCL to JAVA. To do this, I wrote a suite of JUnit test that were run from the project in an Eclipse IDE. My unit test tested the Struts MVC ActionForm class as well as POJO and EJB classes containing business logic. All test were on java classes that made up business logic for the Social Security Administration’s” Notice” architecture and Struts based web application.

PayPal / eBay 4/8/2011 – 5/1/2012

Software Engineer

·Using a Builder design pattern and the java programming language, I mocked the Value Object of the in house Transaction Event Processor with a deep copy of their state. The Builder software design pattern was used to abstract the steps of constructing the objects of the TEP as a test Client. I wrote and executed a suite of unit test in JUnit as a test scoped dependency in the Maven project’s pom.xml. I stored unit test in the directory location of ${basedir}/src/test/java. I executed unit test using Maven’s default settings to scan the test directory for unit test matching the pattern of *Test.java. I ran unit test by specifying the test phase of the default Maven lifecycle and running mvn test. Test results were made available in ${basedir}/target/surefire-reports. State of the JVM, and data about the test, were examined in XML documentation. And stack traces were examined in text files. All test results were logged with log4j. Monitored the results of builds with Hudson. Used Subversion (SVN) as a version control system for checking in code. Objects such as CurrencyConversionTransition that extended ValueObject were mocked by a builder class CurrencyConversionTransitionBuilder. In the init method of the Builder, a CurrencyConversionTransitionMessage object would setTransition of a CurrencyConversion ValueObject. The Builder would then set activityId, eventId and timestamp. The withDetails method would then use ccHandle and timestamp variables to setPreviousStatus with and oldState.getValue method and setSubsquentStatus with a newState.getValue method call, then return this CurrencyConversionTransitionBuilder object. Builders were coded in java and built with Maven. Some legacy classes that were originally written in C++ were converted to java and subsequently tested. Said C++ classes were of both complex and simple types.

·Coded end-to-end regression test in Java. Used composite suites of JUnit test such that a String parameter to the constructor would let a TestCase return a reference to a named test method. Individual test would use java’s FileReader and BufferedReader to read XML file for Web Service request. Then Jakarta Commons HttpClient Components were added to the classpath in order to build an HTTP-aware client that functions as a Web Service client. Web Service responses were parsed for needed data such as Host URL and SessionIDs. JUnit asserts and invariants were used prove correctness of application being tested. Then Selenium Web Driver and HtmlUnitDriver were used to drive the application from the DOM. JDBC connectivity was used to verify fields in the database were correct. Log4j was used for logging throughout the test. Java coding was done primarily in Eclipse IDE.

MissionFocus, LLC 03/21/2011 – 04/8/2011

Application Developer:

·Set up Apache Hadoop on a MacBook pro laptop and worked with the MapReduce software framework for distributed processing of large data sets on computer clusters. Set up HDFS (Hadoop Distributed File System) to replicate data blocks in a reliable manner and placed them on different nodes.

Set up Apache ZooKeeper on MacBook pro laptop in order to have a reliable server for distributed coordination. Worked on scalability problems for a data analytics platform, by setting up the Hadoop cluster and ZooKeeper in memory data-base. Wrote MapReduce code for processing big data analytics solution using Hadoop. trouble shooting and solving performance bottlenecks in Hadoop was required.

Involved in technical evaluation of various cutting edge technologies mainly in using a Context Free grammar with Hadoop and NoSQL. Designed data model based on Context-Free grammar and existing Java object. Solved functional and performance problems of via JUnit. Wrote a unit testing package

Involved in Code reviews with other Java developers in an Agile environment.

IBM Global Business Services 06/2010 - 03/18/2011

Java Developer

·Worked on the Census DADS project as a Java Developer. Responsible for writing Java code that allows the Census Bureau’s web site to work with ESRI Geo-Spatial software. All Java coding conforms to the Spring Framework. Primary development environments are IBM Rational Application Developer and Rational Software Architect for WebSphere. Responsible for writing custom Java classes to work with an ESRI mapping software upgrade. Also responsible for complete builds and deployment of the current Census Bureau’s “American Factfinder” web page with the ANT build tool from a UNIX bash shell.

·Worked as a developer on the GoArmyEd Portal team. Improved performance of the Web site by changing absolute to relative path in the Web.config file and the Global.asa file. Also improved database connections, Submitted all file changes in IBM’s Rational ClearCase Remote Client version 7.1.

The Executive Office of the President of the United States, Washington, DC 1/2009 – 05/2010

Java Developer (Contract)

· I set up a 3-tier architecture as a working framework. The business logic tier was written in the Java programming language and that ran on an Apache Web server in a Tomcat container. Apache Struts were used to extend the Java Servlet API and adopt a model-view-controller (MVC) architecture. As such, the user interface / presentation layer was created with the combination of JSP and Struts. The Ant Build Tool was used for automated builds and running Unit Test. Unit Testing was done at the class level by adding code to test the functionality of individual classes. I used the JDBC API to select a specific MySQL driver for database connectivity. Logging was set up with log4j, such that it could be imported into any class. And, Turbine was used for database connection pooling. Additionally, I set up the Xerces XML parser which functions as a validating parser that checks XML formatted files against the rules imposed by DTD or XML Schema. SQL was used extensively to create the database schema and populate the database with data.

·In Java, I developed a robust and flexible program to read large binary files and

parse the data by using lexical and syntactical analysis with a lookup table. The application performs a separate lexical and syntactic analysis in order to get said tokens into object variables. Most of the binary data is also in a “packed” format with an implied decimal place. As such, my program handles the unpacking of the data through the use of shifting and masking. And, I inserted the decimal place by using Java’s “BigDecimal” type. Separate Object Oriented classes were created for each parent record type. Said classes were used to manage the large number of variables. Also, the program knows where to scan for irrelevant whitespace. Then, when the scan reads one byte past the end of the “whitespace”, the program will do a “pushback” of that one non-whitespace byte. The java application uses an inner class to manage the DataInputStream and PushbackInputStream that are in the outer class while handling the specific lexical and syntactic issues for each parent record type inside of a Java inner class.

·Set up Hibernate Message.hbm.xml file which maps Message object to appropriate table in the database. Then wrote a program to insert data into

the database by first instantiating a Session object with the statement:

“Session session = HibernateUtil.getSessionFactory .openSession ;”

This allowed the application to create the Hibernate Session by reading the

Configuration from the hibernate.cfg.xml file. I then created a Transaction and

a Message object. Then, I did a “session.save(message);”, a transaction commit and subsequently a call to session.close ;

·Analyzing existing PHP code used in the White House Tour System, for possible conversion to a Java based system.

TEKSystems for L3 for the Executive Office of the President of the United States

Washington, DC

01/2009 – 10/2009

Programmer:

·Wrote a Java program that recursively searches tree structured directories for files that end with a .txt extension, opens said text files, and uses a regular expression to do a search and replace for certain text on each line. Gathered requirements for the White House Tour System web site. Searched the existing PHP Web site with a Java program that uses Regular Expressions like the UNIX grep command and Memory-Mapped files. This enabled me to build a UML class diagram of the entire existing White House Tour System web site. I wrote an awk program that passes variables to a bash script in order to mount network drives for Macintosh PC deployment. I also combined various data sets in an Access database for reporting purposes.

·Used Java to develop a robust and flexible program to extract data from large binary files. Then parsed the data by using lexical and syntactical analysis with a lookup table, for data ingestion into another information system. In order to transform and load into another information system these data types had to be unpacked. Mr. T did this by using Java ability to shift and mask data from the input stream in order to transform from Extended Binary Coded Decimal Interchange Code (EBCDIC) data types into standard Java data types and subsequently from Java to SQL data types



Contact this candidate