DESIGN and WORK ETHIC built on PASSION for

CODING

LIFTING

PHILOSOPHY

JOHN LEWIS

Let Me Introduce Myself

I'm a cum laude graduate of Portland State University with a B.S. in Computer Science. As a recovering philosophy major, I took a very non-traditional route to a degree with stops at two different colleges and three different majors over the course of 15 years. I have 10 years of large scale retail management and operations experience that have honed my communication, mediation, and conflict resolution skills. My current focus is finding a path into software development by blending my CS skills with my work experience to improve any team or company that I join.

Professionally, my interests are AI, Machine Learning, Web Development, and the ethics surrounding barriers to technology accessibility, especially those of race, income, and disability. I am proficient in low-level and high-level languages, allowing me to code efficient solutions to bottlenecks and utilize object-oriented programming to organize large projects. I like puzzles and the power of statistics to simplify large problems, so I enjoy the elegance of good datascience and AI algorithms.

When I'm not coding, I love to lift weights and follow strength sports. I can tell you more than you would ever want or need to know about World's Strongest Man, powerlifting, and bodybuilding. There is a lot of carryover from the skills that make a good lifter to the skills that make a good programmer.

My other interests include reading dusty old books by dead philosophers, spending time with my wife and twin girls, everything involving bicycles, eating great food, and catching any sleep I can from the sleep deprivation of having twins.

Want to Know More?

SELECT A TAB BELOW

With almost four years' worth of credits already, I assumed I'd be out with a degree in no time. I WAS VERY WRONG.

I began my college career with a deep interest in what makes individuals tick. I pursued a degree in psychology for two years and learned the basic terminology and frameworks to better understand how people develop their basic beliefs, but the science was too soft for the answers I was seeking. This coincided with a renewed popularity in the works of Richard Dawkins and E.O. Wilson as breakthroughs in neuroscience changed our understanding of the "hardware" that human "software" runs on. I added a major in biology hoping to learn about the brain as a means of understanding the beings they control.

During an unplanned, low-GPA-related "sabbatical," ... I began working in a bookstore. There I found existentialism , predicate logic, and ethical philosophy in the quietest, dustiest corners of the store. The way I thought about and understood everything was fundamentally altered forever. Predicate logic was the mathematics of language, existentialism explored "being," and ethics explored the implications of our actions as beings. Epistemology scrutinized knowledge, metaphysics questioned reality, and philosophy of religion offered an honest assessment of religious belief. I WAS IN LOVE! I returned to school as a philosophy major with a passion. Unfortunately, after my first year of upper division coursework, my university dropped philosophy as a major. I was left adrift, unsure where to go next. Around this time I read Joseph Campbell's "The Hero with a Thousand Faces" and decided it was time to take some version "The Hero's Journey" myself.

I worked hard, saved money, and moved to Portland, Oregon. I excelled in my retail management career, met my hot ass wife, and started looking back to school to move into the next phase of my life. I could finish my degree in philosophy, but my career potential was limited to being the most highly educated retail manager alive and earning a fairly low salary. While doing the practice questions in my logic textbook as a fun pastime (Nerd Alert!), the seed of an idea began to grow; I realized computer science would give me an opportunity to leverage a background in logic, science, and problem-solving toward a degree with earning potential that wouldn't eventually bore me intellectually.

With almost four years' worth of credits already, I assumed I'd be out with a degree in no time. I WAS VERY WRONG. It took more than three years of full course loads, summer classes, and retaking credits to finally earn my degree. I could not have done it without the support of my wife. As a student in my thirties, I managed to make it through the "survival of the fittest" approach to teaching lower division CS, the all-nighters to debug programs, and the calculus/physics that I hadn't touched in more than 10 years. Despite my long road, I have finally found something I excel at and enjoy. I maintained a place on the Dean's List and President's List for high honors throughout my time at Portland State. Finally, after 15 years, I had 280-ish credits, a 3.7 GPA, insight into how people work, arcane knowledge about "Being and Time" , the tools to code anything, and a magic piece of paper that opens the doors to my future.

Maybe, with work, I could be one strong-ass string bean.

I was always an active kid. Growing up in Boise, Idaho, (ACTUAL Boise) we rode bikes everywhere, hiked the foothills when we were bored, and skiied in the winter. Home video game consoles were gaining popularity, but those were for rainy weekends and required renting the games and console. I worked on my grandmother's ranch over many weekends and summers and learned the true meaning of hard work. General fitness was just built into my way of life. However, I was always a string bean no matter how many hay bales I lifted or miles I mountainbiked.

I idolized Schwarzenegger and Stalone, loved Hulk Hogan, and would watch in wonder at the reruns of World's Strongest Man. I fully accepted that I would not look like them, but I was stronger than I appeared ... from ranch work ("farm strong" is real) and an active lifestyle. Maybe, with work, I could be one strong-ass string bean. I got my hands on "Bodybuilding: The Weider Approach" by Joe Weider. I learned about rep ranges, set ranges, and how to structure workouts for progression. I would go to the YMCA with my mom to put my new knowledge into practice. Luckily, the workouts made for mass monsters fueled by anabolics were just about perfect for a pubescent teen: moderate weight, high reps, no recovery time.

I would go through phases of varying dedication through my teens and twenties, often motivated by vanity more than anything. Then, I traded the P90-X and bodybuilding routines for powerlifting. I was obsessed with the tangible progress that powerlifting offered. Intellectually, there had to be a perfect plan in place to incrementally increase weight and make projections for hitting the biggest lifts. Physically, it allowed me to put every bit of myself into something and get measurable results. Sometimes you give everything you've got to achieve a goal and for one reason or another things just don't go your way, with powerlifting the work you put in directly correlates to the things you achieve. The gym became my church. When nothing else made sense in life, I could always go there and get out what I put in.

In 2017, I had a devastating knee injury leaving me partially paralyzed that required multiple surgeries and LOTS of physical therapy. Instead of ending my lifting career, it deepened my love for strength sports. All the tools and mental tricks I used to improve my weightlifting translated into recovery. I set my goals and worked toward them incrementally with a focus on doing the best I was capable of safely, without over-reaching. I went from a 500lb deadlift to carefully lifting an empty bar. I focused on my form as I re-learned how to walk. I pushed through pain to get my body where I knew it could go. I can tell you that today I'm stronger than I ever was before and you'd never guess I have any kind of disability thanks to the mindset developed lifting weights.

Just as they helped me through hardship, the principles for improving in the gym are helpful in coding. What is practicing algroithms but learning the correct form so you don't waste energy or break your shit? Are reps and sets not an iterative approach? Isn't there a waterfall model inherent in deciding a fitness goal, designing a routine, going to the gym, hitting your goals, then maintining your new fitness level? The carryover has helped me practice every day, put in my reps, and improve my coding and knowledge to be the best developer/engineer I can be.

We are better off when we know that we don't know than when we are ignorant to our ignorance.

I can't begin to describe how thankful I am for my dead-end road to being a philosopher. Three years of examining everything in excruciating detail and questioning everything we "know" about the world altered me forever. It was extremely tedious, and many times it felt like my brain had been turned inside out, but once you've pulled back the curtain on science, knowledge, religion, ethics, being, and time, you see that nothing is a concrete as we take it to be.

If you've taken a physics course, you may have learned that the only reason we don't pass right through the ground is not due to earth being "solid" but from the electrostatic force. In truth, you have never actually physically touched any of the solid objects you interact with. If you've learned this, you either don't care because it doesn't change anything about your life, or you start to question other parts of our perception of reality. Philosophy bombards you with these instances and even if you try to toss them away as semantic games, a pile of reasons that our reality and objective reality don't quite match grows ... , festers, and becomes impossible to ignore. However, we are better off when we know that we don't know than when we are ignorant to our ignorance. In the words of Socrates in Plato's Republic :

Although I do not suppose that either of us knows anything really beautiful and good, I am better off than he is – for he knows nothing, and thinks that he knows. I neither know nor think that I know.

Luckily, philosophy also provides a way to navigate this abyss with logic. You begin to rebuild what you "know", what you believe, and what you want from the world starting from a priori to a posteriori, from deductive to inductive, all while understanding your own limitations in understanding. Statements and sentiments can be examined in a mathematical way with formal logic to uncover meaning (Sound familiar CS kids? Ever built an interpreter?), achieve sound reasoning at the very least, and determine "truth" at the very best. .

There is also a beautiful, almost poetic side of philosophy. My favorite book of all time is Thus Spoke Zarathustra for precisely this reason. Existential and ethical philosophers pondering the questions that all of us ponder and creating thought experiments or stories for us to dissociate and examine our own thoughts is as stirring to me as the best literature ever written. Imagine the same gut-punch or insight that an extremely apt metaphor provides extended and examined over an entire essay or whole book and you begin to see the emotional impact good philosophy provides. Some will reach for scripture to reach enlightenment in the face of life challenges, I reach for the existential philosophy. It may not feel uplifting to be told there is no purpose, fate, or meaning at first pass, but it is certainly empowering and grounding to believe that existence preceeds essence and we have the power to make ourselves into something greater, create meaning, and determine our own values. Without the barriers of fate, we can become anything we choose to be.

PROJECTS

ServiceNow Chatbot

Multnomah County Logo

This was a chatbot prototype built for Multnomah County in Portland, Oregon. They were experiencing frustrations with the interface provided by ServiceNow and wanted a simple way for employees to submit and check on work orders without becoming experts in the ServiceNow dashboard. The chatbot allowed users to interact with natural language to request services or report outages. Since chatbots can be frustrating, conversation details for current and previous conversations were saved in a user profile to remember common fields for forms and the problem the user is experiencing. This was also intended to reduce the work done by the departments addressing the work orders by checking current tickets before submitting and allowing comments to be added as others exerience similar issues rather than creating duplicate requests.

Requirements:

  • Open ServiceNow tickets, incidents, or work requests
    1. Through chat dialogue
    2. Through forms
    3. Using information from previous conversations (never re-ask a question)
  • Check open tickets to prevent duplicates
  • Query/Search previous tickets
    1. By service reported/requested
    2. By who created the ticket
    3. By date and time
  • Allow comments or new reports
    1. Additional reports of outages
    2. Feedback from department assigned to the ticket
    3. Additional information from reporters
  • Integrate LUIS (Language Understanding Intelligent Service) for natural language interactions

The Stack:

  • Azure Web Apps
  • Azure Bot Framework
  • Azure Language Understanding Intelligent Service (LUIS)
  • Azure Key Vault
  • Bot Framework Composer
  • C#, .NET, JSON

Seismic Dashboard

Snapshot of Seismic Dashboard Website
--> See Source Code <--

This project accesses the USGS Earthquake Catalog to get real-time seismic activity around the world. The central goal for this project was to create a user-friendly and attractive dashboard to analyze and display information from a large and dynamic dataset. The USGS API is queried every second for alerts and every minute for new seismic activity. Using Leaflet.js and Chart.js, the location, time, depth, magnitude, and alert information related to each earthquake are displayed for the user. Any alerts or hazards trigger a notification at the top of the screen as well as a color code in the live earthquake feed. Mapped earthquakes are given both a color code, a relative marker size, and a ARIA enabled callout so that any visual disabilities or impairment should not interfere with accessibilty. Activity can be filtered by set timeframes and the user's location if they allow it to offer options to filter the data that is relevant to the user without filling our form fields. This project should offer a one-stop-shop for users looking for quick insights, but also offers more in-depth information if the user needs more details or chooses to explore more.

This was my first foray into front-end design and still bears some of the scars of being hacked at by a beginner. Fortunately, my skills have developed and this site is being redeployed using React in 2021 so it can get a full overhaul and remain available to the people who have enjoyed it as a web app while offering a mobile app for a fully native mobile experience.

Goals:

  • Single-page dashboard
  • Access and process large dataset available through APIs
  • Explore interactive map functionality
  • Include interactive charts/graphs
  • Accessible for limb-different and visually impaired users
  • Responsive - Any screen size should feel native

The Stack:

  • HTML/CSS
  • Bootstrap
  • AJAX
  • Leaflet.js for maps
  • Chart.js for charts
  • Moment.js for world time conversions
  • USGS API

This Site!

Picture of this sites landing page
--> See Source Code <--

This is my fixed-gear bike:

  • It's stylish and fast.
  • It tells you about the builder and stands out from all the others.
  • It's not overly practical, but it has a singular purpose that it should fulfill.
  • I've removed the parts I don't want, don't like, or don't care to maintain.

This project is a platform for sharing what I do with everyone without being constrained by the format of LinkedIn. The goal was something like a marketing splash page that would give people a feel for who I am and what my work looks like. It should immerse the visitor while remaining as simple as possible. Anyone should be able to visit this site, not just engineers, developers, and recruiters.

A large part of this was exercising HTML/CSS and limiting the JavaScript needed. It should be easy to use, easy to understand, fully accessible to everyone, and impactful in its design.

EXPERIENCE

Another Life

Before pursuing computer science, I spent 10 years in retail management. I ran large scale retail stores making upwards of $7M annually, managing up to 100 employees, with duties including operations, logistics, people management, and customer service.

On the other end of the spectrum, I've run small businesses such as gyms, franchises locations, and mall stores. Between the two I have learned how to crank up productivity and roll out new projects while maintaining the personal connection that inspires a team to work for you and clients to trust you. I take pride in seeing my name on Google and Yelp reviews everywhere I've worked knowing that I was able to protect businesses from operational loss while growing the customer base through genuine customer focused service.

This experience has given me the communication, mediation, and conflict resolution skills that can benefit any team or company that I work with. Even when I don't find myself in a leadership position, I am an advocate for hearing every voice in the room, making sure everyones true position is understood, and no miscommunication can exist to hurt the team or the project.

A Realization

As I started to learn front-end, I also learned that most developers do it begrudgingly and it shows. I mentioned in the previous section that I found this not only unfortunate for the "typical user" in a user story, but especially unfortunate for those who fall outside the scope of the typical user. I became obsessed with how design and accessibility make a project usable. The coolest software on the planet won't gain any traction if it's painful to operate and users shudder at the mention of it.

My interest naturally expanded to accessibility for those with differences and disabilities. A passion for good design turned into a mission for equal access. Many of us take for granted how UI/UX favors those of us who don't have to use screen readers, operate our mouses or keyboards differently due to limb differences, or follow complex user experiences with developmental or induced neurodivergence. Having experienced how civil engineering can make small things more difficult with a physical disability, I would love to offer design solutions that fit everyone by really considering how others will interact with it so that technology is useable and available to everyone.

As I become a better full-stack developer, I hope to carry this goal with me to any frameworks or tools so that the back-end is built to facilitate an accessible front-end, and those tools themselves are accessible to the people using them. This can clear the barriers to more diverse builders and designers of technology that will in turn lead to an expanded circle of people considered in their designs. I'm still learning, but I'm on a mission to improve because more accessible technology benefits everyone.

A New Career

During my university studies pursuing a degree in computer science, I was heavily focused on machine learning, artificial intelligence, and front-end development. I've become familiar with data analysis and data processing techniques using Pandas, NumPy, seaborn, Matplotlib, Excel, etc. in order to prepare data and using Scikit, PyTorch, and TesorFlow to build and train models on that data.

I have focused most of my effort after graduation on front-end accessibility and working down the stack from the user experience to the back-end in order to become a full-stack developer without losing sight of the people who will use the applications and software that is being built. It will always be my goal to make the technology that I build work for everyone and to never consider user differences as minorities or outliers. Design for the "average user" is useful to "average users", accessible technology is accessible to everyone.

I currently work as a Software Engineer for ClickBank building full-stack solutions for their e-commerce and affiliate marketing platform. My daily responsibilities range from managing cloud infrastructure resources to designing and implementing front-end solutions in JSP, React, Angular, and JS/HTML/CSS.

SKILLS

Genereal Skills

  • Just-in-time Learning
  • Communication, mediation, conflict resolution
  • Management and Leadership
  • Object Oriented Programming
  • Front-end Design
  • Accessibility
  • Simplifying and Streamlining Complex Solutions
  • Data Analysis
  • Basic ML/AI

Languages

Currently Working In

  • Java
  • JavaScript
  • Python
  • CSS
  • HTML
  • SQL / MySQL

Familiar or Experienced In

  • C
  • C++
  • C#

Tools, Frameworks, and Environments

Currently Working With

  • React
  • Node.js
  • Docker
  • Kubernetes
  • Spring/Webflux/Reactor
  • APIs / GraphQL
  • AWS, Azure, GoogleCloud Resources
  • Terraform
  • Mac
  • Linux

Familiar or Experienced With

  • Pandas
  • PyTorch
  • TensorFlow
  • Terminal / Command / Bash
  • Windows

ONE FINAL WORD



Even stumbling forward is progress.

We ARE headed toward being something greater, despite our setbacks,
as long as we continue to seek being something greater.

In the words of Zarathustra...



"[Humanity] is a rope stretched between the animal and the Ubermensch (advanced being)—a rope over an abyss.
A dangerous crossing, a dangerous wayfaring, a dangerous looking-back, a dangerous trembling and halting.
What is great in [humanity] is that it is a bridge and not a goal...
I love [those] who liveth in order to know, and seeketh to know in order that the Ubermench may hereafter live."

- Friedrich Nietzsche, Thus Spoke Zarathustra