About

December 27, 2021

Me | My Goals in 2022 | Goals in 2023 | This Site

Me

  • Links: GitHub | LinkedIn | Medium | Twitter | Certs and Classes

  • Primary Skills:

    • Full Stack Web App Development

      I started out developing 3 tier apps, first with MS Active Server Pages (ASPs), then Java Server Pages (JSPs). I then moved to “fat client” multi page apps hitting REST services. I was still using JSPs for header, footer, and session mgt.

      I almost exclusively made extranet and intranet apps. The apps were nearly all orphaned “brown field” apps, so they required a lot of forensics and refactoring. I developed SSO code vis a vis MS Active Directory for intranet apps, and MS CRM for extranet access.

    • DevOps and Agile Evangelist and Tools Engineer

      Modifying orphaned legacy apps is difficult. I taught myself DevOps while researching best practices for refactoring. I inherited monoliths with no version control, no testing, no documentation. The code was litered with the former developers human usernames and passwords. Code was updated by copying individual class files over their predecessors. The end users turned over so much they did not know the history of how their apps were developed.

      The last developer job I’d had used SVN and rudimentary unit testing and I knew that the world had moved along since then. I loaded up on books and implemented Git, Gradle, JUnit, and Selenium. I drove adoption of AppDynamics monitoring. I creatdd AD service accounts and pulled all references to user credentials out of the massive code base. I laid out a plan to break apart the Java monolith into microservices.

      I took a contract to develop a CI/CD pipeline for BI report developers. The company was having problems with the reports quietly breaking and presenting erroneous data. Without version control and some sort of automated testing, they could not spot new breaks. I used JGit to create a workflow. I created an interface for the report developers to create JUnit like tests against known data with expected results.

  • Secondary Skills

    Full stack web app development touches nearly all infrastructure in a company: DNS, Load Balancers, Networks, Identity, DBs, VMs, ERP apps, file systems, and Email Servers. When an app fails due to timeouts, the problem can be nearly anywhere in the system. I mostly worked in smaller companies, and needed to learn about all of those in the course of being productive.

    • SysOps: In the last job that required me to do Ops, I started learning about IaC (Infrastructure as Code) and helped the limited IT staff learn and begin adopting it. I pitched it as “sharpening the axe” versus “chopping harder”.

    • DB Admin: I worked several years at a company that only had a part time, contractor DBA. He delegated a lot of his power to me. The web apps used legacy MS SQL server stored procedures that intermittentantly timed out and it was unclear what was causing it. The queries accessed JD Edwards ERP tables and stored procedures, so I needed to learn the JDE schema to figure out what could be causing it on their end. This recurred when JDE was upgraded.

    • Mentor: I documented and coached best practices for:

      • class, variable and function naming to support self documentation
      • “code smell” avoidance (too much code in one class, entanglement)
      • git workflows, at least daily merge
      • DRY, YAGNI
    • Technical Educator

      After the .com crash, I took a detour from software development into secondary school science and technology education. I enjoy educating and mentoring, and it was a good schedule fit for raising five school age children. I earned a Masters of Education in secondary education, primarily physics and general science. I ended up using my software experience to instead teach HS software engineering, robotics and CAD.

      I sponsored computer gaming clubs and robotics teams.

My Goals in 2022

Strategic

  1. Work as a consultant and be able to offer the following services:
  • Modernize legacy Java web apps
    • The market is not sexy but its large.
    • From “lift and shift” to re-architect and refactor.
    • From monolith to microservices.
    • Migrate state to a seperate datastore to facilitate horizontal scaling.
    • Implement vanilla, MPA web client or SPA.
    • Upgrade to latest Java LTS (17) and native compilation
  • Offer pub/sub integration to increase performance and resilience.
  • Containerized, vendor neutral, serverless APIs
  • Introduce or enhance DevOps Infrastructure, and custom DevOps tools if needed.
    • Turnkey CI/CD: Integrated with existing client infrastructure or de novo.
      • Migrate from classic Jenkins to Jenkins Files
      • Automated load and security testing during dev
    • Converting IT/Ops to IaC
      • Create on prem Kubernetes cluster to leverage existing data center
      • Containerize everything (migrate from pet servers on VMs to generic containerized versions with state and data somewhere else)
      • IaC build scripts for dev, staging, prod
        • for n clusters, nodes
      • Create cloud vendor clusters.
  • Improve App and API integrated security
    • Federated auth, AD integration.
    • Move secrets to secret repos and secret services (same for configs)
  1. Earn Kubernetes certs (I’ve already bought them and they must be used)

Tactical

I will be learning and demonstrating the following things to support strategic goals. It will be a very busy year as I run to get back on this fast moving train.

Front End

  • App Frameworks
    • Maintain: GatsbyJS, React
    • Improve: Next.js, Redux
    • Explore: SvelteKit, Angular 2, Remix
    • Skip: Vue/Nuxt, React Native, Flutter, Ruby, Android, Swift
  • SSO: Okta, AuthO
  • API Consumption: GraphQL and gRPC
  • Master SPA and webworkers
  • Master Typescript and auto testing

Back End

DevOps

  • Enable more self serve capacity creation and management:
    • Multi Cluster (vs Namespaces): vcluster virtual clusters that provide more isolation than namespaces (though they in fact live in a namespace)
    • Gitpod
  • Enable multicloud packaging and deployment: KubeVela
  • Offer transition away from Docker, Docker Desktop. Rancher Desktop
  • Master TerraForm
  • Master Jenkinsfile.
  • Security scanning build plugin: Probley

SysOps

Containers

My Goals in 2023

  • Offer HA Multi Cluster architecture
    • Beyond Dev, Staging and Prod clusters
  • Offer migration from vendor specific solutions to vendor neutral Kubernetes options.
  • Master GoLang
    • Be able to migrate Java apps to GoLang
    • Be able to create cloud native apps (Kubernetes is written in Go)
    • Be able to offer de novo API’s
  • Master DevSecOps
    • Automated Pentesting
  • IOT DevOps
    • On prem equipment
    • Biology Cloud Lab Automation
  • Master Python
    • Be able to migrate POC ML jobs to scalable production apps
  • MLOps
    • TensorFlow, Keras
    • Data/Feature Engineering Pipelines
    • NGS (Next Generation Sequencer) data pipelines (very large files).
  • Explore Rust
  • Get more Cloud Vendor certs

This Site

I wrote EdPike365.com in Gatsby. I wanted to learn a lot about React, JAM Stack, GraphQL CSS in JS, and NPM publishing. At the time, it was a better offer than NextJS.

I am documenting my work and what I learned in my Site Customization Journal.

© 2023, Edward Pike
Built with Gatsby v4 in production mode.