CHRISTOPHER PLATNER
chris@platner.com
| https://chrisplatner.com/
| https://github.com/cplatner
| https://www.linkedin.com/in/cplatner
Summary: Experienced full-stack developer with
a background in multiple languages and technology stacks. I'm good at
writing REST APIs, migrating legacy applications, fixing production
performance problems, and making tools to improve team productivity.
Skills
Languages:
C#, T-SQL, Java, TypeScript, JavaScript, Python, C, C++, PL/SQL
Tools:
.NET (5/6/8), .NET Core (2/3), .NET Framework 4.x, bash, PowerShell,
ASP.NET Core, SQL Server, Dapper, Entity Framework, EF Core, Redis,
Polly, MediatR, SQLite, Apache Camel, Git, ASP.NET, Gradle, Node.js,
xUnit, NUnit, JUnit, TestNG, tSQLt, TestBox, OpenAPI (Swagger), Angular,
Spring, Spring Boot, Jira, Confluence
Cloud:
AWS S3, AWS EC2, AWS SQS, AWS SNS, AWS DynamoDB, AWS Lambda, LocalStack,
Terraform
DevOps:
Docker, Grafana, Prometheus, GitLab, PagerDuty, GitHub, Jenkins,
GitLab CI/CD, Splunk, SonarQube, SAST, DAST, OWASP
Experience
Unanet, Inc —
Principal Software Engineer, Tech Lead (Remote) —
Dulles, VA (2020 - 2025)
-
Designed, wrote, and maintained high volume, public REST API endpoints in C# for a customer relationship management
system. These APIs were targeted at customers, internal users, and integration writers. The API was implemented in
two services: one written in .NET Framework 4.8 using Entity Framework, and one written using .NET Core, ASP.NET
Core, MediaR, Dapper and Entity Framework Core. Wrote and tuned T-SQL queries for reads via Dapper, and used EF Core
for writes. Data was cached with Redis. The services were hosted in AWS on Kubernetes. Grafana was used to visualize
logging and metrics captured in Loki and Prometheus. OpenAPI documentation was exposed via Swagger UI.
-
Designed and wrote a bulk copy service in C# to copy data from one tenant in a legacy multi-tenant database to a
different multi-tenant database in another environment. All foreign key constraints and relationships were
maintained, along with implied dependencies only visible in legacy code. The service supported queued, long-running
jobs, with intermediate data stored in S3. This replaced a process that ran quarterly with one that could be
initiated on demand. Created a new GitLab CI/CD pipeline to build, test, and deploy to production.
-
Designed an application modernization process, then migrated portions of a large legacy ColdFusion codebase to use
REST APIs, rather than run SQL queries embedded directly in ColdFusion Markup Language (CFML) files. The process
allowed the development team to quickly migrate the CFML pages and get them into production, while requiring minimal
changes to the pages themselves. Wrote tools to find and analyze SQL queries, and identify files that were no longer
used. Also migrated business logic from ColdFusion Components (CFC) to new REST API endpoints written in C#. Wrote a
tool to partially convert the CFCs to C# to make the migration process easier.
-
Wrote and reviewed architectures and designs for feature teams, the backend team, and product owners.
-
Mentored other developers, and performed code reviews for multiple teams.
-
Wrote scripts, tools, and endpoint examples to help other developers use best practices. Wrote dotnet new templates
for endpoints and unit tests. Updated the containerized local development environment.
-
Ran Agile standups for our cross-functional team when needed. Regularly attended Scrum of Scrums.
-
Wrote a tool to partially migrate a .NET Framework REST API service to .NET Core. The tool used Roslyn to update the
C# source files.
-
Created new dashboards and alerts to monitor running services. These were used to troubleshoot production crashes
and performance problems. After discovery, diagnosis, and additional profiling, performance was improved in those
areas, sometimes to more than 10x faster, or to 1/4x memory usage.
-
Modeled cloud changes using Terraform scripts running against LocalStack, for services required for upcoming
features. That included Lambda, SQS, S3, and Kinesis services. The Terraform scripts were for the cloud team to
provide a starting point for their production configuration.
Apex Systems, LLC (onsite at Nike World Headquarters) —
Senior Software Engineer —
Beaverton, OR (2019 - 2020)
-
Wrote and maintained microservices in Java and Spring Boot for a cloud-based order management system that were part
of the backend for Nike's retail site. Integrated with other microservices using Apache Camel's implementation of
Enterprise Integration Patterns. Also used Retry with Backoff, Scatter-Gather, Backends for Frontends, and
Choreography cloud design patterns, among others.
-
For new services, created SQS queues, DynamoDB schemas, EC2s, and CI/CD pipelines to deliver to production.
-
Created and maintained dashboards and alerts in Splunk to ensure microservices were operating correctly after
deployment to production on AWS EC2s.
Planview, Inc —
Senior Software Developer (Remote) —
Austin, TX (2015 - 2018)
-
Designed and wrote a Visio Add-in with C# and Visual Studio Tools for Office (VSTO) that integrated with Enterprise
Architecture modeling and metamodeling tools. The Add-in allowed customers to model their own data using custom
stencils built from metamodel data in their repository. All actions, like connecting shapes to each other, followed
the rules specified in the customers' metamodel. Advanced features included a 'visual query', which generated
complete diagrams of related shapes from simple drawings of how various categories of data should be connected to
one another. Wrote REST endpoints in Java to support the modeling functionality in the Visio Add-in. The server was
written using Spring, JAX-RS, with OAuth2 security, for both on-premise customers, and customers using various
hosting services, including AWS.
-
Wrote T-SQL and PL/SQL queries to perform custom calculations for a custom ETL that automatically created datamart
tables after every change in a complex source database. Worked with customers to help them get correct results for
their own custom queries. Wrote a Visual Studio Code extension to find table and column dependency problems in the
query configuration files, saving time and reducing errors.
-
Integrated ag-Grid data grid into an Angular web application, and ensured that all of its advanced features worked
correctly with our data, including column grouping, moving columns, and compound columns.
-
Ported an Excel download feature from Dojo to Angular using TypeScript and RxJS. Since the processing time on the
server could be long, the client polled to determine when the file should actually be downloaded.
-
Taught a TypeScript class for the development team in preparation for moving to later versions of Angular.
Troux Technologies, Inc —
Software Developer (Contract - Remote) —
Austin, TX (2014 - 2015)
— (acquired by Planview)
-
Wrote and maintained endpoints in Java and Spring, for the Enterprise Architecture public REST API. Data was
retrieved with T-SQL and PL/SQL to support SQL Server and Oracle databases.
-
Ported the main in-house end-to-end testing tool from JavaScript to Python and pytest.
Banfield Pet Hospital —
Software Developer (Contract) —
Portland, OR (2014)
-
Worked on a modern patient scheduler in C# for an Electronic Health Records application for pets. With Telerik's
Scheduler component as a base, the new scheduler and all new dialogs were built using WPF and the MVVM pattern. Made
changes to all layers of the application, from stored procedures up to the user interface. The new scheduler was
built to work seamlessly with the existing application, which used Microsoft's Composite UI Application Block (CAB)
architecture and WinForms. Existing automated tests using NUnit and Moq were updated, and new tests were added.
IST, Inc. —
Software Developer (Contract - Remote) —
Walla Walla, WA (2012 - 2013)
-
Designed and wrote a C# application to manage two different kinds of custom ARM-based devices for use in an
industrial vertical market. Collected data was downloaded and stored in a local SQLite database using an ADO.NET
provider. A custom standalone SSRS-like reporting engine produced reports from RDL files.
-
Wrote bare-metal firmware in C for an ARM Cortex M4 to support the USB Mass Storage device class so sensor data
could be recorded to and retrieved from an internal USB drive. FAT file system calls were intercepted so that
settings stored in EEPROM could be exposed as special files, and be easily read and updated.
Iovation, Inc. —
Software Developer (Contract - Remote) —
Portland, OR (2012)
-
Wrote a new two-factor authentication REST service to work in a high-volume environment. Used Java and Spring Web
Services that integrated with TeleSign SMS and Voice Messaging services. Leveraged Ehcache to provide scalability.
Wrote a small server using JavaScript and Node.js to test and demonstrate the service for the documentation team and
customers.
Routeware, Inc. —
Software Developer (Contract - Remote) —
Beaverton, OR (2010 - 2012)
-
Wrote C# code to integrate RFID, VoIP, and Bluetooth support on a ruggedized onboard computer system that was
installed in vehicles. All communication with the backend server occurred over cell modem and was asynchronous to
handle periodic disconnects.
-
Redesigned C# WinForms user interfaces, including those for controlling cameras and navigation with ESRI mapping
software, to streamline steps and eliminate entry mistakes for drivers and administrators. Changes required updates
to the local SQL Server database schema, and to messages exchanged between the onboard computer and the backend
server via MSMQ.
-
Wrote a Windows service in C# to communicate with multiple Motorola RFID readers on different networks, using a
vendor library to wrap the underlying LLRP commands.
-
Wrote a route analysis tool that combined the output of multiple log files, and produced a map that showed the route
on Google Maps using the v3 API. Lines and multiple marker types were used to show how trucks moved, and where
various events occurred.
Iovation, Inc. —
Software Developer (Contract - Remote) —
Portland, OR (2010)
-
Wrote over 400 end-to-end tests using Java and Selenium WebDriver, in a way that both developers and quality
engineers could understand the test flow, and easily add additional tests. Added all of the tests to the CI system,
so the health of the software project could quickly be shown to all project stakeholders. Used TestNG to execute the
tests in parallel to cut overall runtime.
Fedarra, Inc. —
Software Developer (Contract - Remote) —
Portland, OR (2009 - 2010)
-
Collaborated on the design of an internal line-of-business web application to fill out complex government forms for
the Recovery Act of 2009. Wrote the first version with ASP.NET MVC. The LINQ to SQL ORM was used to connect to the
SQL Server database.
-
Worked with the team to redesign the second version using Silverlight. The user interface was written using
Silverlight's WPF subset. All communication to the backend was with WCF RIA Services.
Serena Software, Inc. —
Senior Software Developer (Remote) —
Portland, OR / Bellevue, WA (1995 - 2009)
-
Over the course of employment, worked on several new product and maintenance teams for the Software Configuration
Management (SCM) and Product Portfolio Management (PPM) products. Worked with different tools and methodologies, and
with constrained resources to deliver award-winning shrink-wrap on tight schedules.
-
Worked in C#, Java, C, and C++ languages on heavyweight clients, client/server, and web applications. Worked on
interfaces between new and legacy products using web services in SOAP and REST, and APIs written in C and C++. Other
tasks included managing the development infrastructure, mentoring developers, interviewing, and helping Product
Managers with product direction.
-
Led a team that created an extensible, cross-platform presentation engine that became the foundation of the user
interface for all IDE interfaces to the flagship SCM product. The core engine had C# and Java implementations
targeting Windows, Linux, HP-UX, AIX, and Solaris. The user interfaces were written using an XForms/XAML-like
declarative XML which described layouts, control locations, and interactions between controls. The engine supported
binding to controls, dependencies between controls, and easy localization.
-
Worked on award-winning project portfolio management software for both SaaS and on-premise customers. Coded features
using Dojo and a custom MVC layer written in JavaScript for the web client, C# for the middle tier, and SQL Server
for the backend. Worked in all of the major areas of the application, from writing stored procedures to writing code
for the middle and presentation tiers.
-
Wrapped existing internal C and C++ APIs to create a new C++ public API that was cleaner and easier to understand
for customers. This interface was also used internally to implement integrations between SCM, requirements, and
deployment products.
Education
B. S. E., Computer Engineering Concentration, Computer Science and Chemistry minors
(90% complete) — Walla Walla University — Walla Walla, WA