Solutions Specialist at Applied Information Sciences (AIS)
|phil, at my domain
- CompTIA Security+ ce
- Microsoft Certified: Devops Engineer Expert
- Microsoft Certified: Azure Developer Associate
Passionate about programming – want to design and develop apps and systems, do it right, and do it with style.
Dream job: teach lead developing cross-platform native apps or games with Xamarin or Unity3D -or- designing robust and resilient cloud solutions for large-scale applications with Terraform.
20+ years of professional experience, 15+ years of C#/.NET, 5 years of DevOps – and not the same repeated experience, but varied, wide-ranging, and in-depth experience, spanning many disciplines. Have done full-lifecycle and full-stack design for the development of desktop, web, and mobile applications.
8+ years of full-time remote work in small, medium, and large teams. Self-motivated, self-disciplined, and communicative team member. I’ve guided development, reviewed code, and interfaced with customers, all from the comfort of my home office. Proficient in gif selection in Slack or Teams.
My current contract is for a large energy utility as a Senior DevOps Engineer, where I provide guidance and documentation, develop and execute automation scripts, and design Infrastructure-as-Code processes with Terraform.
Also, I have worked in medium-sized teams for different efforts to adapt and modernize legacy applications for cloud architectures, or rapidly implementing features and functionality for newer applications. This entails analyzing existing .NET architectures and C# code and proposing the minimal design changes necessary for cloud deployment.
Recently, I was working on a 6-developer team for a global jewelry company to rewrite their legacy Java app responsible for managing assembly-line production, with C#, Azure, and modern patterns and practices. This effort requires analyzing the original unstructured java code, then re-engineering, prototyping, and ultimately defining code patterns and practices to be used by the whole team.
Prior to that, I was the senior developer for a team of 7-10 developers (U.S. and global) for over 3 years, developing internal cloud services as part of a large interconnected system for a multi-billion dollar company, supporting many thousands of users in production environments with on-call support, handling triage and troubleshooting – all while performing technical leadership, requirements analysis, development guidance, and mentoring duties.
I provided technical leadership and expertise in developing RESTful cloud services with C#, ASP.NET, and Azure. I encouraged a culture of Test-Driven Development, urging for elegance of code and clarity of tests. My love of developing tools and utilities, coupled with distaste for unnecessary work, led me to create custom frameworks and apps that improved the experience and efficiency of all my developers and analysts, by automating the repetitive and obscuring the irrelevant.
I’ve also worked in the DoD sector, where I led a team of 9 developers on a government contract for enhancing and maintaining a web application supporting several hundred users; handling technical lead & architect duties, providing development guidance and mentoring. I introduced Test-Driven Design processes and Agile methodologies to the team to enhance the development process and improve code quality.
Experienced with agile development processes such as short-cycle, rapid turn-around, mode of business – direct and daily interaction with the customer and subject matter experts. Having done government work, I’ve also plenty of experience with monolithic, waterfall-style development cycles. There’s certain advantages/disadvantages to each style but regardless I get the job done. I’ve worked with C# 6.0, XAML (UWP & Silverlight), ASP.NET, MVC, AngularJS (1.x), jQuery, WPF, WinForms (desktop & mobile), and the years before .NET with Java and Swing. I’ve been developing apps for a long time. In the last decade at work I’ve released 5 cloud services, 3 1/2 desktop apps, 2 mobile apps, 1 tablet app, and 6 web apps – and for personal pleasure, another 3 desktop apps and 4 mobile apps.
What makes me tick
Personally, the rewarding part of developing applications is not just shipping and meeting customer requirements, but finding ways to enhance and improve the customer’s business workflow, whether by process improvement or by UX – something that makes them wonder “why didn’t we think about this before?”. And if along the way, I manage to sneak in some code-cleanup and refactoring that makes the code as elegant as the UI, well that’s just for my pleasure.
That mindset carries over into my DevOps work, where I write elegant scripts in powershell and bash, design complex Azure Devops pipelines in YAML, and craft elegant infrastructure in Terraform.
I also have a strong passion for mobile application development, ever since I moved from my PalmOS-based Samsung i330 to the WindowsMobile-based Treo 700wx, and discovered that my C# skillset transferred easily to .NET Compact Framework development. Being able to develop my own handheld apps was my biggest programming revelation. In my ever-dwindling spare time I develop Windows apps, and have released a handful of apps and multiple C# libraries.
Over the last 20 years, I’ve delivered many apps, using a wide array of technologies.
- ASP.NET (Core, MVC, WebForms)
- XAML (WPF, UWP, & Silverlight)
- WinForms, WPF
- Comfortable with MVVM, MVC, and MVP architectures
- MSSQL Server
- Entity Framework, ADO.NET, Dapper, nHibernate
- Azure Table Storage, Queues, CosmosDB
- JSON, XML
- Windows Azure
- Azure Devops
- Kubernetes (limited)
- Agile/Scrum, Kanban, Waterfall
- Autodesk Fusion 360 (CAD for 3D printing)
- Azure Media Services
- Senior devops engineer on a small team
- Interact with clients to capture, develop, and document requirements
- Triage and troubleshoot issues in production and lower-tier environments
- Perform high-level design & architecture of software solutions
- Provide design & development work plans, assign work
- Mentor developers, write guidance documents
B.S. Computer Science, University of Dayton, 2002
Open Source Projects
Library for chaining notification properties in a ViewMode
Utility for attribute-based wiring-up of MVVM Commands
Tic Tac Tutorial
A series on identifying code smells, understanding the importance and purpose of tests, and improving your software craftsmanship.
MVVM Pain Points
A series on MVVM pain points – describe the problems, and hopefully come up with some solutions.
Automating setup of your windows development environment for fun and profit
How to automate the setup, configuration, and installation of a windows development environment
Designing a twitter alternative
A series on how to improve upon twitter’s structural failures and design a scalable and low-cost alternative.
At Applied Information Sciences
Articles that i’ve written for work