Joshua Hayden, Developer in Wichita, KS, United States
Joshua is available for hire
Hire Joshua

Joshua Hayden

Verified Expert  in Engineering

Java Developer

Location
Wichita, KS, United States
Toptal Member Since
December 22, 2016

As a results-driven, agile software engineer, Josh focuses on implementing high-quality code. He is thorough with details and iteratively drives projects to completion. He is equally comfortable owning an entire project or dividing the work across a team. He also regularly contributes to all phases of the software development lifecycle.

Availability

Part-time

Preferred Environment

Eclipse, IntelliJ IDEA, Visual Studio Code (VS Code), Git, Windows, Linux

The most amazing...

...project I've built was a relational database with dozens of tables and nearly 1000 fields that was metadata driven for creation and insertion.

Work Experience

Software Engineer in Test

2016 - 2016
NetApp - E-Series Web Services
  • 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.
Technologies: Jersey, TestNG, Java

Software Engineer

2011 - 2016
NetApp - E-Series Core Productivity
  • 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.
Technologies: Microsoft SQL Server, PHP, Jersey, Jackson, Jetty, JUnit, Web, Selenium, Java

Single-page Application with a RESTful Web Service and Tests

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.

Our tech stack included AngularJS, Windows Server, Java Jetty, Jersey, Jackson, Hibernate, and SQL Server with REST integration with our Java Swing UI desktop app. We developed with Eclipse and Gradle. We used Jasmine for JavaScript unit tests and JUnit for Java unit tests, RESTful service tests, and end-to-end tests (with Selenium WebDriver).

Metadata-driven Database Schema and XML Shredding

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

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

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

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

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.

Languages

JavaScript, Java, TypeScript, SQL, XML, PHP, Python, HTML5, Visual Basic, CSS, Perl

Frameworks

JUnit, AngularJS, Mockito, PHPUnit, TestNG, Jersey, Selenium, Hibernate, Swing, Jasmine, Express.js

Paradigms

Test-driven Development (TDD), Agile, Refactoring, REST, Clean Code, Behavior-driven Development (BDD)

Other

QA Automation, Quality Assurance (QA), Front-end Development, Data Migration, Single-page Applications (SPA), Command-line Interface (CLI), DSLR Photography, Audio Production, Video Editing, Transport Layer Security (TLS), LDAP, RSync

Libraries/APIs

Nightwatch.js, Apache POI, Selenium WebDriver, Node.js, Jackson, Socket.IO, JAX-RS, JavaMail, jQuery

Tools

Eclipse IDE, Inkscape, Jetty, WebdriverIO, Microsoft Access, Gradle, InstallShield, Apache Ant, Jenkins, IntelliJ IDEA, Git

Platforms

Linux, Windows, Eclipse, Web, NetBeans, Android, MacOS, Visual Studio Code (VS Code)

Storage

Microsoft SQL Server, HTML5 Web Storage, JSON, MySQL, PostgreSQL, MongoDB

2006 - 2009

Bachelor of Business Administration Degree in Management Information Systems

Wichita State University - Wichita, Kansas, USA

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring