resume/data.yaml

1285 lines
47 KiB
YAML
Raw Permalink Normal View History

Skills:
Languages:
- Java
- C# (Boo, VB6, VB.NET)
- C
- JavaScript
- TypeScript
- Nim
- HTML5
- CSS3
- Erlang
- PHP
- XML (XSD, XPath)
- SOAP
- LaTeX
- Perl
- Ruby
- Bash Script
- Lisp
Jobs:
Freescale Semiconductor:
Positions:
June 2004 \- Oct 2004: Summer Intern / Contractor
Description: >
Notable accomplishments included:
- developing hardware diagnostics scripts
- schematic capture using Mentor Design Architect
- assisting lab technicians in circuit assembly
Tools \& Technologies:
- Perl
- Mentor Design Architect
Colleagues \& References:
- Michael Geroge
Gemalto:
Positions:
June 2005 \- August 2005: Summer Intern
September 2005 \- August 2010: Developer (Solutions and Special Projects)'
Description:
Responsible for finding solutions to new problems, developing custom
solutions for customer problems, and providing tools and support to other
development teams.
Projects:
Custom Card Procurement Service:
Short Description:
Designed a generic SOAP-based web service framework for secure
machine-to-machine procurement of smartcard-based credit cards.
Created custom services using this framework for multiple customers.
Description:
We desired to offer a machine-to-machine service that our customers
could integrate into their customer-service terminals. In their
applications the customer service agents could capture cardholder
details and submit an order for replacement cards. Using the web
services I created these orders would be directly routed to one of
our many manufacturing centers around the globe and a new card
created and shipped directly from the manufacturing center to the
cardholder. This allowed our customers to provide 24-hour turn-around
to their card holders with shipping anywhere in the world.
Using this service, a cardholder traveling for business who left or
lost their card on one leg of their trip could have a new card
printed and waiting for them at their destination.
Among the requirements was compliance with the WS-Interoperability
and WS-Security extensions to the SOAP standard. I worked alongside
customer engineers to document and define the service API, as well as
help them integrate our service into their applications.
During development of this framework and the related services I had
the opportunity to contribute a small amount of code to the Apache
Axis2 project addressing defects I encountered.
Tools \& Technologies:
- Java
- JCA
- SQL
- Apache Ant
- Apache Axis2
- Glassfish
- HSQLDB
- PKI
- SOAP
- WS-Security
- WS-Interoperability
- Mercurial
Responsibilities:
- Architecture
- Database Administration
- Backend Implementation
- Documentation
- Customer Engineering Support
Tags:
- Open-source contribution
Generic Report Generation Tool:
Short Description: Custom, in-house application used to define and
generate a wide range of reports required during the manufacturing
process, built around the JasperReports reporting engine (then only a
few years old).
Description:
In the process of supporting existing manufacturing centers, and
standing-up a new service bureau we found the need to have a single
solution for defining and generating reports. Ideally this solution
would be simple for our manufacturing centers to use, easy to
automate and embed into production processes, support reports in
multiple formats (PDF, XML, XLSX, etc.), and provide a relatively
simple interface for defining new reports. After researching
available options, we decided to build our own application around the
(then-young) JasperReports reporting engine.
I worked with my direct manager to architect the application, and was
the sole contributor to it's implementation. In addition to the
implementation of the GRGT application, I was responsible for
creating or converting the reports required to support existing
manufacturing processes. Finally I was responsible for internal
evangelism for the tool, training on-site personell in the daily use
of the tool and in the creation of reports, and production support.
Tools \& Technologies:
- Java
- Java Swing
- JDBC
- JasperReports
- Apache Ant
- SQL
- Database Administration
- Mercurial
U.S. E-Passport solution for the Government Printing Office (GPO):
Short Description:
Gemalto has been a primary supplier to the GPO since the inception of
the U.S. E-Passport. I was part of the initial team creating the
E-Passport technology as well as extending and customizing our usual
manufacturing process for the GPO's unique needs.
Description:
The manufacture of the E-Passport was a multi-stage process. Initial
manufacture and application programming was performed at Gemalto's
manufacturing facilities but final programming, personalization, and
manufacture were performed on-site at GPO facilities. To facilitate
this, Gemalto provided software and support for the GPO to complete
the final steps of manufacture and personalization.
I was responsible for designing the database schema required to store
the intermediate data about the manufacture process for each card,
providing production support for the database in manufacturing, and
creating high-performance tools and processes for extracting the data
from the manufacturing database into secured data files in the format
specified by the GPO for the purposes of auditing and import into
their manufacturing databases.
Tools \& Technologies:
- Java
- Java Swing
- JCA
- JDBC
- Oracle Database
- SQL
- Apache Ant
- Mercurial
Responsiblities:
- Database Administration
- Backend Implementation
- Performance Optimization
Cryptographic Service Implementation:
Short Description:
Built a service exposing cryptographic operations of a new hardware
security module securely via our proprietary protocol for
interoperation with our existing manufacturing engine.
Description:
We were exploring the use of the Luna PCM 2.2 hardware security
module by SafeNet for use in our development environments and
potential use in our manufacturing environments. In order to expose
the HSM's cryptographic services to our personalization engine
(Samarcande), we needed to create an interface to the HSM.
Tools \& Technologies:
- Java
- JCA
- JNDI
- BouncyCastle
- HSM SDK
- PKCS#11
- Mercurial
In-house Operations \& Tool Development:
Short Description:
As a member of the Solutions & Special Projects team I was personally
responsible for the operational infrastructure used in development by
our Banking and Telecommunications Personalization teams for North
America, and created several in-house development tools used by the
same.
Description:
In addition to the individual, special projects listed, the Solutions
and Special Projects team focused on supporting the Banking and
Telecommmunications Personalization teams for North America. In this
capacity, we created and maintained the in-house development
environments used by these teams. This included servers dedicated to
running Oracle databases, cryptographic servers containing hardware
security modules, and other more general-purpose servers required to
support the local development efforts and coordinate delivery of
software to manufacturing centers.
In addition to the operational responsibilities, I created a number
of custom, in-house tools for use by the developers in our
Personalization teams, including utilities for managing plugins to
our proprietary manufacturing engine, utilities for manipulating test
data with cryptographic primatives, debug tools exposing standard
cryptographic primatives used in our in-house standard library, and
other general utilities specific to the handling the common data
formats and workflows of our developers.
Tools \& Technologies:
- Visual Basic 6
- C/C++
- Java
- Java Swing
- JCA
- JDBC
- Oracle Database
- Apache Tomcat
- Apache httpd
- Red Hat Enterprise Linux
- Windows Server 2003
- Windows Servier 2008
- ISO 7816 (Smart Cards)
- ISO 14443 (Contactless IC Cards)
- EMV payment standard
- Mercurial
- Subversion
Responsibilities:
- Native Application Development
- Operations
Colleagues \& References:
- Mridul Sharma
- Shirley (Kusumawati) Lay
- Tze Yang Ng
- Richard Dollet
- William Tran
- Francois Radet
- Raghav Sundaravaradan
Tools \& Technologies:
- Windows
- Ubuntu Linux
QuantumDigital Inc.:
Positions:
August 2010 \- February 2012: Systems Developer
Description:
Responsible for supporting the legacy order and fullfilment systems and
migrating these systems to modern technology. Launched the company's
first mobile app.
Projects:
FoxPro to Java Bridge:
Short Description: Dynamic, runtime interface layer to expose FoxPro
tables to Java programs via JNI.
Tools \& Technologies:
- FoxPro
- Java
- JNI
Quantum Post Cards:
Short Description:
The starting point for QuantumDigital's migration from their legacy
FoxPro-based web application to a new web application written in PHP,
based on Magento.
Description:
QuantumDigital's primary backend was a monolithic FoxPro application
written almost two decades prior, leveraging a framework called West
Wind Web Connection. Over time the company had worked toward
modernizing some of the periphery business logic as well as setting
up database replication from their primary FoxPro tables into a MS
SQL instance.
Quantum Post Cards was the first large-scale migration of core
functionality away from Visual FoxPro towards PHP. As a systems
developer I participated in the architectural and design decisions
leading up to the new effort as well as the core implementation of
the new system.
Tools \& Technologies:
- PHP
- Magento
- MS SQL Server
- XHTML
- CSS2
- JavaScript
- JQuery
QCards Mobile App:
Short Description:
Developed the company's first mobile application enabling realtors to
create custom ad campaigns and postcards in the field using their
smartphones.
Description:
QCards was an effort to build a mobile app that would enable realtors
to create direct mail marketing campaigns from their phones while on
location at homes they represented. QCards allowed the realtor to
capture images of properties, set those images within a standardized
postcard template, define marketing campaign parameters using
existing business logic within Quantum's larger product offerings,
and submit an order.
In this role I was resonsible, with one coworker, for the
implmentation and testing of the mobile application. We initially
targeted iOS, then Android. In addition to the mobile development,
this required building out APIs in FoxPro to expose core business
functionality from the legacy codebase to the mobile application, as
well as implementing all of the associated logic for user
authentication, session management, etc.
Tools \& Technologies:
- Appcelerator Titanium SDK
- JavaScript
- jQuery
- iOS SDK
- Objective-C
- Android SDK
- Java
- Visual FoxPro
Colleagues \& References:
- Rory Derrick
- Dude Spellings
- Chris Anderson
HID Global:
Positions:
February 2012 \- September 2013: Staff Engineer
Description:
I was part of the team responsible for all software controlling and
supporting the production process, ranging from low-level machine control
and automation to server-oriented architecture that supplied production
software services such as key management, cryptographic services, and
configuration management.
I was brought onto this team at it's inception to help build out the
foundational infrastructure and software that would become the base of
HID's new approach to manufacturing control.
Projects:
Common Machine Control Framework:
Short Description:
Responsible for architecting and implemting a common framework for
production control. The goal was to create a modular platform that
could be used to marry common business and production logic with
machine-specific control and automation.
Description: >
HID had a wide range of different machines used in their production
processes and control software varied from machine to machine without
a unified approach. Control software being written in a variety of
languages (including C/C++, VisualBasic 6, and LabVIEW, among
others) made centralized support challenging and hampered efforts to
create a standardized process.
Our goal was to unify all of the machine control, creating a platform
that would allow us to create and leverage standardized modules for
common functionality such as:
- card programming
- access to standard services like cryptographic processing, key
management, order configuration, etc.
- physical personalization (printed graphics, etching, coating,
etc.)
To this end I designed and architected the common machine control
framework that provided a common base bridging machine-specific
control logic with the common modular library being written to
provide the standardized functionality of our platform.
As part of this architecture, the common framework provided a bridge
layer via C/C++ to allow communcation with machine control modules,
an embedded rich user interface layer built on HTML, CSS, and
JavaScript, and a plug-in architecture to simplify the inclusion of
standardized modules and services provided by the broader production
environment. The primary language of the framework itself was C#.
Tools \& Technologies:
- C#
- C/C++
- .NET
- HTML
- CSS
- JavaScript
- Backbone.js
Emperor Card Personalization Control:
Short Description:
Responsible for the initial implementation of the machine control
software for HID's new, custom-developed card personalization
machines from Emperor Tech. This was the first green-field
implementation using our new common machine control framework. This
required working with the Chinese vendor's technical staff to
properly implement the driver allowing HID's control software to
control the individual component elements of the hardware (motors,
vacuum grippers, etc.).
Description: >
HID partnered with Emperor Technologies in Chine to create a
purpose-built card personalization machine aimed at small-to-medium
production runs. The machine ran cards in batches of 50-100 (don't
remember exactly how many) and was intended to support rapid
transitioning from one order to the next, allowing manufacturing
personell to quickly run through a series of orders with minimal
re-configuration of the machine required.
Being a new machine, new control software was required. Emperor
Technologies supplied a low-level drive package that provided direct
access to the machine hardware. HID needed to create the software
that actually exercised the machine, coordinating all of the
individual hardware mechanisms (actuating motors, card grippers,
etc.) and providing the platform for the appropriate card programming
for each order.
I was the sole developer responsible for the end-to-end
implementation of the machine control software for the Emperor line
of production machines, leveraging the common machine control
framework. This was a particularly fun project as it required a truly
multi-threaded approach with soft real-time requirements. The Emperor
production machine has seven stations which operate and are
controlled in parallel, performing simultaneous actions:
- feed card in
- generic programming (application/batch-specific)
- card printing
- UV coating
- flip
- personalization programming (card-holder-specific)
- feed card to output
Our target goal was to produce one card per second, meaning each
station had to perform its function in less than a second. The
machine control software has to coordinate the actions (physical and
logical) of all stations, as well as track the progress and results
for each card throughout the process. In some cases we supported
double-sided printing and UV coating, meaning we had to coordinate
cards travelling in reverse direction as well as forward, to
accomodate moving back through the printing and coating stages after
being flipped.
Tools \& Technologies:
- C#
- .NET
- C/C++
- HTML
- JavaScript
- Backbone.js
- CSS
- Git
Common Card Programming Library:
Short Description:
In line with our goal of standardizing the manufacturing process, our
team was creating a standard library of functionality specific to
programming ISO 7816 and ISO 14443 cards, built around the .NET
platform, and targeting specifically the Boo language as a DSL for
smart card programming. As part of this effort I was responsible for
the implementation of standard operations involving card
communication and cryptographic operations.
Description:
ISO 7816 and ISO 14443 define the communication protocols used by
smart cards and readers. We built a standard library of functionality
to provided higher-level abstractions on top of the low-level
communication primitives defined in the ISO specs. In addition to
low-level bit manipulation-style logic used to create the protocol
data units (PDUs), we provided implementations of the common
cryptogrphic operations used in the communication protocol to
simplify the creation of card programming logic. We also included
bindings to our common environment configuration to expose, for
example, centralized HSM services, configuration management, and
end-to-end reporting to the runtime environment of our manufacturing
operations.
We exposed this standard library via a domain-specific language built
on top of the Boo language in the .NET ecosystem. This allowed us to
write code that adhered closely to the structure of the psuedo-code
one would write to perform the required operations when programming
or interacting with a smart card.
As part of the team which owned this standard library I was
personally responsible for implementing portions of the functionality
described above, particularly the authentication and handshake
mechanisms which allowed the reader and card to establish a secure
session, as defined in the ISO 7816 and ISO 14443 specifications.
Tools \& Technologies:
- Assymetric Cryptography
- Symmetric Cryptography
- C#
- Boo
- .NET
- ISO 7816
- ISO 14443
- Git
Card Programming \- Application and Personalization:
Short Description:
In addition to being responsible for the machine control software,
our team was responsible for the programming of the cards themselves,
both the code loaded as applications onto the cards themselves as
well as the code responsible for programming the cards with that
application code and configuring the card data for it's individual
owner.
Description: >
Personalization of smart cards typically involves two steps: the more
general application programming, and the card-holder specific
personalization. The application programming involves writing the
logic that will live in the card and perform the core card functions.
Card-holder specific personalization is the process of loading
personal identifying information into the application memory and
card-specific cryptographic key material, as well as potentiall
printing customer data onto the face or back of the card.
ISO 7816 and ISO 14443 define the communication protocols spoken by
the cards which must be used when programming in both steps.
Tools \& Technologies:
- ISO 7816
- ISO 14443
- Boo Language
- .NET
- C#
- Git
Colleagues \& References:
- Richard Dollet
3M (contracted with Maxis Group):
Positions:
October 2013 \- October 2015: Software Engineer VI
Projects:
Next-generation Tolling Platform:
Short Description:
The next-generation tolling platform was a paradigm shift for 3M's
tolling business, moving away from devloping single-purpose solutions
towards a cloud-based, tolling-as-a-service model. I had a wide range
of responsibilities on this project, owning the architecture and
implementation of functionality across the entire stack from database
to front-end, serving as the team lead for the front-end developers,
and providing internal operational support for our development tools
and environment.
Description: >
The next-generation tolling platform was an initiative at 3M to
develop a cloud-native, multi-tenant, extensible software platform
pairing with newly developed tolling hardware. It was our goal to
create a system that could be used to support new RFPs and tolling
projects globally, moving away from a model where custom software was
required to be developed for each project with individual data
centers and operational environments. The desired end state would
require design and architecture of the physical systems but could
integrate directly into 3M's existing tolling platform.
I joined the team near to the beginning of the project. Our initial
task was to describe the system in detail sufficient for inclusion in
3M's response to a current RFP for the state of Georgia's State Road
and Tollway Authority, which was to be our pilot project. Following
several weeks of technical writing and documentation, we began the
architecture and implementation of the platform.
My responsibilities on this project included:
- UI/UX team leadership. I providing the bulk of the front-end
implementation as well as directing and mentoring our two other
front-end developers.
- UI/UX design. I was the primary designer.
- DevOps. I managed the team's internal git server, our internal
maven and npm repositories, and the team's development environment
in AWS.
- Release management. I was responsible for defining our versioning
schema as well as building, versioning, and publishing our release
packages.
- Ownership of several of the core micro-serves, from architecture to
implementation. Specifically, I was responsible for the whole of
the Vehicle List Service (VLS), the Batch Processing Service (BPS),
and parts of both the Image Processing Service (IPS) and Lane Data
Administration Service (LDAS). This includes everything from the
REST API layer down to the database.
- Oversight and coordination of our offshore quality assurance team.
- Working with Georgia SRTA management and operations personell to
gather requirements for the initial product design and feedback on
iterations of the product as we were building it.
The core architecture was one of micro-services, where each component
service of the tolling software infrastructure would be broken out
into it's own horizontally-scalable service. Some examples:
- Vehicle List Service (VLS): This service was responsible for
managing the list of known vehicles and their associated data.
Key functions included the need to batch-import lists of tens
of millions of vehicles daily, the ability to quickly and
efficiently serve information about specific vehicle queries, and
the ability to publish updates to physical tolling endpoints.
- Image Processing Service (IPS): The IPS was a core component of
the overall solution which provided both automated and manual
review of toll point imagery. IPS provided a rich user interface
with purpose-built workflows for image review personell
responsible for identifying license plate and ownership
information in images where the automated system was unable to
identify the vehicle. IPS supported advanced queueing mechanisms
to support call-center-like operations, providing the ability to
evaluate the accuracy and efficiency of individual reviewers, the
ability to send sets of difficult images to multiple reviewers,
and the ability to tag and filter images according ti ad-hoc
metadata created by the reviewers. Using this, reviewers could
build up a set of images correlated to the same vehicle over
time.
- Lane Data Administration Service (LDAS): The LDAS was another
core component of the overall solution, tasked with aggregating
and organizing data provided by the individual toll points into a
coherent view of the system as a whole. In addition, it managed
the low-level communication with the toll point infrastructure.
LDAS had a sophisticated user interface that allowed tolling
operators to follow the aggregate flow of traffic through the
tollway in soft real time, including anomaly detection to alert
operations of exceptional conditions (wrong-way traffic, for
example). This interface also provided operators the ability to
manage the toll point infrastructure.
- Transaction Control Service (TCS): The TCS served as the single
source of truth for all transaction data. Transaction data was
the most important type of data managed by the system.
Originating from the LDAS, transaction data passed through most
of the other services in the solution, being enriched by data and
information provided by each service in turn. TCS was the
high-performance system of record for all transaction data.
- Batch Processing Service (BPS):
- File Store Service (FSS): This served as a distributed store of
arbitrary file data. This was built on many of the same
principles as AWS S3, and served as an abstraction on top of
multiple underlying storage systems (physical disk, AWS S3, and
database-backed blob storage).
- Naming Service: provided service discovery and canonical name
lookup.
Tools \& Technologies:
- AWS
- AWS EC2
- Apache Tomcat
- Backbone.js
- Bash
- CSS
- CentOS Linux
- Drools
- Elasticsearch
- Git
- HTML
- Hazelcast
- Hibernate
- J2EE
- JPA
- Java
- JavaScript
- LevelDB
- Oracle Database
- SQL
- XML
- XPath
- XSLT
- jQuery
Responsibilities:
- Architecture
- DevOps
- Full-stack Implementation
- Mentorship
- Requirements Gathering & Analysis
- Technical Leadership
- UI/UX Design
Internal Time-Reporting Tool:
Short Description:
As part of their effort to create a center of software excellence, 3M
designed their own time reporting tool that was then used across the
Motor Vehicle Systems and Solutions. For a few months I was given
technical ownership of the time reporting tool. In addition to
on-going maintenance and support, I refactored the application at a
foundational level, extending it to work transparently for multiple
divisions (originally there was no concept of work groups or
divisions). This enabled 3M to pusue cost-savings across multiple
division by replacing externally licensed software with this
internal tool.
Description:
Tools \& Technologies:
- ASP.NET
- CSS
- HTML
- JavaScript
- MS SQL Server
- SQL
- jQuery
Parking Software (ScanNet):
Short Description:
One of the projects that 3M inherited when it acquired Federal Signal
was their legacy parking lot management software, ScanNet. This was a
mature product more than 20 years old, made up of embedded control
software, server-side backend processing, and user-facing intrefaces,
with large-scale existing deployments at facilities rancing from
shopping centers to airports including a number of clients who were
still actively rolling out new deployments. As a part of those new
deployments there was functionality promised to clients that had not
yet been implemented. In addition to maintainence and support the
dev manager, my teammate, and I were responsible for addressing the
feature gaps between existing functionality and the promised
functionality. This allowed 3M to realize the revenue from contracts
that were contingent on delivery of promised functionality.
Tools \& Technologies:
- .NET
- C#
- C/C++
- MSBuild
- Power Builder
- Visual Basic 6
- x86 Assembly
Colleagues \& References:
- Ben Benson
- David Ferreira
- Anthony Barahona
- Glenn Dawson
Edgecase:
Positions:
November 2015 \& April 2017: Senior Software Engineer
Short Description:
Description:
Tools \& Technologies:
- AWS CloudFront
- AWS ElasticBeanstalk
- AWS RDS
- AWS Redshift
- AngularJS
- CSS3
- Elasticsearch
- Git
- HTML5
- JavaScript
- Node.js
- PostgreSQL
- Ruby
- Ubuntu Linux
- express.js
- macOS
- node.js
Colleagues \& References:
- Derrick Geeting
- Cameron Cooper
- Angell Tsang
- Jeffrey Dorrycott
- Ryan Moore
- Lee Goolsbee
- Michael Tran
SailPoint Inc:
Positions:
May 2017 \- March 2018: Senior Software Engineer
Tools \& Technologies:
- AWS DynamoDB
- AWS Kinesis
- AWS RDS
- Apache Flink
- CentOS Linux
- Docker
- Docker Compose
- Elasticsearch
- JAX-RS
- Java
- JavaScript
- MySQL
- SQL
Colleagues \& References:
- Joe DeVries
- Kameron Sween
- Trey Perry
- Rhutwij Tulankar
Fairway Technologies (now part of Accenture):
Positions:
April 2018 \- January 2020: Principal Consultant
January 2020 \- present: Assoc. Engineering Manager
Projects:
Cloudvirga:
Short Description:
Fairway partnered with Cloudvirga to deliver the next generation of
the their digital mortgage platform core product offering, built as
an Angular 6 application on top of their existing API backend. Given
the size of the team and account, we appointed two principal
engineers to lead this effort, myself and a colleague. While my
colleague was responsible for client-facing leadership and
communication, I was responsible for technical direction,
architecture, and leadership internally. In addition to my
responsibilities as the internal lead, I worked to build a close
relationship with the client's development team, working through the
challenges of growing their existing API approach to support the new
functionality designed for this next iteration of their product.
Description:
Tools \& Technologies:
- .NET
- AWS CloudFront
- AWS IAM
- AWS Route53
- AWS S3
- Angular
- C#
- CSS
- Elasticsearch
- HTML5
- JavaScript
- MS SQL Server
- SQL
- TypeScript
Responsibilities:
- Architecture
- Cloud Architecture
- DevOps
- Engineering Management
- Frontend Implementation
- Requirements Gathering & Analysis
- Team Composition
Cloudvirga ARRIVE:
Short Description:
After the initial effort to deliver their next-generation product,
Cloudvirga engaged the same team to help accelerate the development of
critical features in their existing product offering in order to meet
aggressive deadlines communicated to their clients. At this point I
was asked to become the overall delivery lead for the project. In
this capacity I worked closely with Cloudvirga's engineering
management to prioritize work and get it into the hands of our team.
We successfully delivered several major features ahead of schedule
allowing Cloudvirga to regain confidence with their clients who had
expressed concern at the anticipated schedule delay.
Description:
- Complex ASP.NET application straddling front and back.
- Complex existing backend database schema.
- Complex versioning schema as CV maintained multiple independant
branches of the code white-labeled for different clients with
differing feature sets.
- Aggressive timelines. Jumped immediately into fire-fighting
situations with CV engineering, helping them close several
high-visibility and high-priority defects the first week of
engagement. Continued to pick up new feature requirements, ramp up
on this complex environment and complete the first major feature
delivery inside of a month.
Tools \& Technologies:
- .NET
- C#
- ASP.NET
- jQuery
- HTML
- CSS
- SQL
- MS SQL Server
Responsibilities:
- Client Communications
- Delivery Lead
- Engineering Management
- Full-stack implementation
- Project Estimation (cost and timeline)
- Requirements Gathering & Analysis
Grant Country Principal Utility District:
Short Description:
Description:
Tools \& Technologies:
- Excel Power Query
- MS SQL Server
- PowerBI
- Microsoft Dynamics Great Plains
- Safe Software FME
Responsibilities:
- Database Architecture
- Requirements Gathering & Analysis
- Project Estimation (cost and timeline)
- Delivery Lead
- Reporting and Analysis
Smarter Balanced Tools for Teachers:
Short Description:
Tools for Teachers was
Description:
Smarter Balanced Assessment Consortium (SBAC) had a successful
history of partnering with Fairway Technologies for development and
delivery of technology surrounding their core assessment products.
Tools \& Technologies:
- AWS CloudFront
- AWS IAM
- AWS S3
- AWS CodeBuild
- AWS Route53
- Terraform
- Angular
- TypeScript
- HTML5
- CSS3
- SCSS
- REST API
- API Platform
- PHP
Responsibilities:
- Frontend Implementation
- Cloud Architecture
- DevOps
- Delivery Lead
- Requirements Gathering & Analysis
- Project Estimation (cost and timeline)
- Engineering Management
- Project Staffing
- Project Management
Chevron IAM Migration:
Short Description:
Description:
- Chevron wanted to migrate from Ping Federate onto Microsoft Azure
Enterprise Applications for SSO.
- Established a standard process and trained additional team members
in it's use.
- Migrated hundreds of applications within a six month period
(beating the deadline by three months).
- Worked with internal Chevron application owners (often
non-technical) and vendor support to perform the migration.
Tools \& Technologies:
- Azure Enterprise Applications
- PingFederate federation server
Responsibilities:
- Customer Service
- Requirements Gathering & Analysis
- Vendor Management
- IAM Consulting
- IT Operations
Tegra118 Unified Wealth Platform:
Short Description:
The Unified Wealth Platform (UWP) was a web-based software offering
for financial adviser and brokerages that allowed them to trade and
manage their customer's financial investments. Tegra was on their
second re-write of the front-end portions of the product when I
was brought in as the delivery lead for the project. It was again in
danger of failing due to unclear requirements, lack of architecture
and planning, undocumented APIs and system behavior,
overly-complicated backend systems, and unrealistic customer-facing
deadlines.
Through concerted effort, we were able to clarify the
requirements and align testing efforts to the documented
requirements, we were able to document large portions of the API,
adding strong typing to assist in correctness, and we put into place
fundamental architectural thinking. Along the way we navigated
competing stakeholder priorities, serious COVID disruptions, and
continual environmental disruptions. At the same time I had to build
a new team from the ground up as the client objected to plans of my
predecessor, requiring us to go back to the drawing board with regard
to staffing.
In the end we were able to work with the client stakeholders through
necessary schedule adjustments and coach their leadership through the
trade-offs that we were forced to make given the schedule. We
successfully transitioned the project from a waterfall-style,
plan-every-day release schedule and deliverables with predefined
release dates and scope to a more Agile method of rolling releases on
a regular cadence. Despite the unrealistic internal deadlines, we
were able to find a path to deliver almost all of the originally
promised functionality to the customer within the original customer
timeline, or with slight delays (on the order of weeks).
The successful delivery of this project was a direct result of the
continual, extraordinary effort put in by the team, and my efforts to
provide clarity and direction across all aspects of the product
development.
Description:
Tegra's main product has a heritage reaching back over forty years,
with the core of their product offering still running APL code on IBM
AIX mainframes. Over time they have built up layers on top of this
core and today offer their product as a SaaS-like web application
called the Unified Wealth Platform (UWP). A previous vendor built the
1.0 version of the UWP, the latest version of their offering packaged
as a web application. Unfortunately Tegra found that version to
be very difficult to maintain and extend, and they decided to rebuild
the application with new designs, updated requirements, and explicit
quality targets. Their hope is to have a foundation on which they can
continue to build into the future.
Due to tight timelines and scope miscommunications, the project was
almost dead before it could get off the ground. Tegra initially
scoped the project as a rapid prototyping effort, making clickable
demoes of mockups in progress to allow business to iterate quickly on
different ideas. All of the architectural choices reflected this
preference for rapid turnaround and iteration (for example,
purposefully forgoing common UI components in favor of copy/paste and
tweak). At this point Tegra still expected to be able to refactor
their existing 1.0 codebase to match the designs and prototypes being
created.
In time it became apparant that they would not be able to use the 1.0
codebase as a foundation for the new designs. Hard delivery deadlines
had already been communicated to Tegra's customers. Due to this time
pressure, the decision was made to take the prototype codebase and
flesh it out into a propoer 2.0 release of the UWP.
The original team staffed did not have anyone with experience running
a large-scale, end-to-end product delivery effort like this and the
team quickly found themselves behind schedule and over-committed.
Tools \& Technologies:
- Angular 10
- Azure DevOps
- Figma
Responsibilities:
- Engineering Management
- Delivery Lead
- Frontend Implementation
- DevOps
- Requirement Gathering & Analysis
- Project Estimation
- Project Staffing
- Project Management
- Scrum Master
- Architecture
- Technical Writing
Colleagues \& References:
- Steve Mock
- Noah Heldman
- Ben Heebner
- Cullan Bittner
- Landon Lunsford
- Aaron Sleeper
- Ernie Munoz-Diaz
- Jeff Treuting
- Natasha Lopez
- Ryan Anderson
- Brandon Savage
- Shreedam Parikh
- Amy Thierry
- Nohemi Acosta
- Walton Yeung
- Jeff Getzin
- Shankar Ramachandran
- Jessica Müller
- Ashish Nageet
- Chia-Yen Wu
- Prashanti Dasari
- Jacob Sonsteng
Other Projects:
UPCI Wall of Honor:
Short Description:
Description:
Tools \& Technologies:
- AWS Lambda
- AWS DynamoDB
- AWS CloudFront
- AWS S3
- AWS CodeBuild
- AWS API Gateway
- AWS VPC
- Vue.js
- HTML5
- CSS3
- SCSS
- TypeScript
- REST API
- Bash
- Make
- Git
- REST API
- Terraform
- Okta IAM
- Figma
Responsibilities:
- Graphic Design
- UI/UX Design
- Full-stack Implementation
- Cloud Architecture
- DevOps
- Database Administration
- Delivery Lead
- Project Management
- Requirements Gathering & Analysis
- Contract Negotiation
- Customer Service
- End-user Training
- Project Estimation (cost and timeline)
- Client Communications
StrawBoss Continuous Integration Server:
Short Description:
Description:
Tools \& Technologies:
- Nim
- Jester
- Docker
- Linux
- systemd
- REST API
- Bash
- Make
VBS Suite:
Short Description:
Description:
Tools \& Technologies:
- Erlang
- JavaScript
- Backbone.js
- Mnesia
- HTML5
- CSS3
- SCSS
- JavaScript
- Backbone.js
- REST API
- Bash
- Make
- Git
New Life Songs Database:
Short Description:
Description:
Tools \& Technologies:
- Groovy
- JavaScript
- AWS ElasticBeanstalk
- HTML5
- CSS3
- SCSS
- JavaScript
- REST API
- Git
- Bash
- Make
- Figma
Responsibilities:
- UI/UX and Design
- Architecture
- Full-stack Implementation
- DevOps
- Database Administration
SermonLink.net:
Short Description:
Description:
Tools \& Technologies:
- Groovy
- JavaScript
- Backbone.js
- HTML
- CSS3
- SCSS
- REST API
- PostgreSQL
- Git
- Bash
- Make
- Figma
Responsibilities:
- UI/UX and Design
- Architecture
- Full-stack Implementation
- DevOps
- Database Administration
Personal Measure:
Short Description:
Description:
Tools \& Technologies:
- Nim
- Jester
- Vue.js
- TypeScript
- HTML5
- CSS3
- SCSS
- REST API
- PostgreSQL
- Git
- Bash
- Make
- Figma
Live Budget:
Short Description:
Description:
Tools \& Technologies: