Java Developer in Wichita, KS, United States
Software Engineer in Test2016 - 2016NetApp - E-Series Web Services
Technologies: Java, TestNG, Jersey
- Developed with a QA hat on a REST API product for managing the E-Series storage systems. Exposed root causes, and resolved issues with test and production code.
- Identified scenarios, implemented automated tests, and created technical documentation for release of new security feature required for clinching multi-million dollar sale.
- Coached QA team members on best practices for improving test coverage and maintainability of test code for higher team efficiency and product quality.
- Pinpointed concurrency and other issues within complex technology stack to the component or specific code in error to drive resolution from the appropriate teams.
Software Engineer2011 - 2016NetApp - E-Series Core Productivity
Technologies: Java, Selenium Web Driver, JUnit, Jetty, Jackson, Jersey, PHP, MS SQL Server
- Built and maintained several web and desktop apps along with back-end databases for tracking test component details. Supported 100+ engineers in use of apps.
- Designed and implemented metadata-driven SQL Server database to ingest XML data for tracking and reporting 900+ data points of SAN storage systems under test. Developed and performance-tuned reports. Eliminated time spent on manually creating reports.
- Architected a solution as a personal innovation project with the existing database schema along with other internal apps to quickly begin ingesting and reporting customer use of SAN storage systems. Achieved working solution in weeks rather than months or longer.
- Identified delayed responses for user support requests and created support team rotation that successfully cut typical response times from days down to hours.
- Organized requirements and design across multiple user and developer teams and apps for verifying SAN storage system configuration details. Successfully integrated the components, meeting user need.
- Introduced to team test driven development for PHP code bases, version controlling and automatically applying database schema changes, and automated end-to-end web app testing with WebDriver, resulting in improved quality and stability of apps.
- Reduced the scope and optimized the planned order individual components were developed for a hardware version tracking system. Engineering organization gained value months sooner and provided feedback for iterative enhancements.
- Started new projects with GUI, CLI, and/or REST API mockups and examples to flesh out details with users and product owners, which quickly met expectations and needs.
- Single-page Application with a RESTful Web Service and Tests (Development)
For the improved tracking and reporting of engineering lab equipment, we needed a single-page app, a RESTful service, an integration with a Java Swing UI desktop app, and an integration with an existing MS SQL Server database.
I primarily focused on implementing the end-to-end tests following a page object pattern to create reusable test components with well-factored, clean code. I also contributed to various other layers of the stack including front-end Angular JS and tests, RESTful services, Java Swing UI, and POJOs for Hibernate.
- Metadata-driven Database Schema and XML Shredding (Development)
We maintained an internally used engineering tool for auditing QA storage system configurations. The goal was to create a relational database populated from this tool's XML output of a point-in-time scan of a storage system. Each XML document ranged in size from tens of KiB to several MiB. The system needed to handle ingesting hundreds of such XML documents each day.
I defined a metadata schema that described the 900+ attributes, data types, and relationships between various entities within the XML document. I then used this schema for both generating the SQL DDL for creating and maintaining the tables with foreign key references as well as for parsing each incoming scan XML document and inserting into the appropriate tables.
I created database views with automated integration tests for various common reports while providing ad hoc querying capabilities directly to the tables. I performance-tuned the views by adding indexes and reworking the SQL as needed.
I utilized PHP DOM and PDO_SQLSRV and Microsoft SQL Server. This was the first major project on which I practiced Test Driven Development to achieve near complete unit level test coverage with PHPUnit.
- Database Import/Export From/To XLSX File (Development)
I designed and implemented a service behind a REST API for interacting with multi-sheet Excel (XLSX) files and a SQL Server database.
We had a template Excel file that users could download, populate with their needed data, and upload through the service to the database for later reporting. We also used this template Excel file as a baseline to populate for users to export from the database to an Excel file.
The Java tech stack included Jetty, Jersey, Jackson, Hibernate, and Apache POI.
I created abstractions for each sheet to provide mappings between the rows/columns and the Java objects to be inserted/read from the database. I created a facade over the Apache POI to provide a consistent interface with minimal code duplication.
- Offline-first Web App for Memorizing (Development)
To aid in memorizing and reviewing passages of the Bible (or other literature), I built a web app designed to be used offline. It aids in prioritizing what to review each day and uses regression analysis for determining desired review intervals.
The app functions in the browser via the URL whether or not a network connection is present. The user can save (backup) and load (restore) data from the server when a connection is available.
I was specifically targeting Chrome running on an Android tablet while still allowing use with a desktop browser. I built the front-end with AngularJS and used HTML 5 application cache (AppCache) to cache the static files in the browser. I stored all the user data as JSON in the browser's local storage.
The Node.js/Express back-end provides authentication, TLS, and serving of static files. It also features a simple reviewable resource with PUT for backing up to a date-stamped JSON file on the server file system and GET for retrieving the latest saved data.
- Adventures in Character Team Assigner (Development)
I developed a solution used for an annual children's event. The algorithm distributes the population of students into a specified number of small groups (teams), attempting an even distribution based on age and gender. It also takes into consideration students requesting to be together on the same team.
I integrated with the organization's existing macro-enabled Excel file to parse out the relevant details using PHP and related libraries. It then outputs the team number assignments for each student along with related statistics.
- Classroom Presenter for Hour of Code (Other amazing things)https://embed.plnkr.co/uIQyjwyDCXOoJzaKIQW1/
For a day in December 2015 and 2016, I presented to students during the Computer Science Education Week in conjunction with the Hour of Code initiative. My goal was to inspire sixth—grade students to consider careers in technology and programming. For part of my presentation, I created a small Angular app that I demonstrated and explained.
- A Guide to Robust Unit and Integration Tests with JUnit (Publication)Automated software tests are critically important to the long-term quality, maintainability, and extensibility of software projects, and for Java, JUnit is the path to automation. While most of this article will focus on writing robust unit tests and utilizing stubbing, mocking, and dependency injection, Toptal Software Engineer Josh Hayden will also discuss JUnit and integration tests.
FrameworksJUnit, AngularJS, Mockito, PHPUnit, TestNG, Hibernate ORM, Swing, Jasmine, Express.js
ParadigmsTest-driven Development (TDD), Agile, Refactoring, REST, Clean Code, Behavior-driven Development (BDD)
OtherQA Automation, Quality Assurance (QA), Data Migration, Single-page Applications (SPA), Command Line Interface (CLI), DSLR Photography, Audio Production, Video Editing, Transport Layer Security (TLS), LDAP, RSync
Libraries/APIsNightwatch.js, Apache POI, Selenium WebDriver, Node.js, Socket.IO, JAX-RS, JavaMail, jQuery
ToolsEclipse IDE, Inkscape, Gimp, WebdriverIO, Microsoft Access, Gradle, InstallShield, Apache Ant, Jenkins, IntelliJ, Git
PlatformsLinux, Windows, NetBeans, Android, MacOS
StorageMicrosoft SQL Server, HTML5 Web Storage, JSON, MySQL, PostgreSQL, MongoDB
- Bachelor of Business Administration degree in Management Information Systems2006 - 2009Wichita State University - Wichita, Kansas, USA