John Paul Keenan
Big ideas for Microcontainers
Hi! I'm John Paul Keenan, but most people call me JPK. I spend most of my time thinking about simple ways to fix complicated problems. Take a look at my Docker images or for some quick fun, run
docker run -it jpksf/snake:beta nsnake
Customer Success Engineer at Kong Inc.2017-Current
- Design and implement microservice based architectures in both private, public and hybrid clouds.
- Work directly with enterprise customers to build a scalable architecture for their public and internal APIs. This includes, everything from data-center selection to load balancing to stress testing to launching and scaling both horizontally and vertically.
- Work directly with global partners to train them on how to best use and position our products to potential customers.
- Be the direct contact for enterprise customers to have a single person to contact with all of their technical and account questions.
- Attend weekly technical planning and working sessions with customers to ensure continued ease of use and scalability our products.
- Work directly with customers to teach how to use an API Gateway. Everything from adding APIs, to routing and authentication and much more can be handled in Kong, and it's my job to ensure my customers know how to use all the tools available to them.
- Provide the tools and education to our customers Operations teams so that they can setup our products and then safely forget about them.
- With the knowledge of how our customers are using our products in their day to day life, work with engineering and product teams to ensure new features are added that have a direct benefit to our users.
Customer Success Engineer at Iron.io2015-2017
- Design custom implementations of worker systems and message queues in languages such as Ruby, Python, Go, PHP and Node
- Virtually pair with Iron.io Customers to ensure their long term business and success with Iron's products. By learning their specific needs, work out a customized approach to get the most out of our products
- Work across departments like sales and engineering to ensure an amazing experience for the end uses
- Debug customer's existing code across a variety of languages and fix current potential bugs
- Develop and implement internal business systems using SalesForce and ZenDesk to track customers and revenue from potential customer through long term client
Senior Technical Customer Support Engineer at Clickability2014-Current
- Find and correct issues in customer's Java Velocity code
- Create and institute Java based templates to create dynamic pages
- Create and maintain website hierarchies
- Set up 501 and 301 redirect rules
- Work with customer's CDN to ensure fast delivery of sites
- Train people how to use our content management system
Technical Support Engineer at Intuit2013-2014
- Launch and maintain application on client's servers.
- Edit XML of server side software to ensure proper running of product. Change the configuration of the software to meet specific needs of each individual client.
- Look into server logs to stop issues before they have a negative impact.
- Troubleshoot issues that arise in the product then adjust server and product configuration to correct issues.
- Assist users to grow their business by building their relationship with current customers and helping to find new ones.
Application Support Engineer at Pro Unlimited2011-2013
- Change the configuration of the proprietary software to allow clients like Nike use the tool in a different way than Genentech
- Assist users navigate highly complex proprietary software called Pro Wand
- Assisted internal users with more complex issues based in the internal configuration of the software itself.
Client Relations Manager at Emochila (Now a Thomson Reuters Company)2010-2011
- Built personal relations with each client so that they had a single point of contact when they wanted edits done to their website.
- Trained our clients on how to make the most of their SQL SaaS software, which gave every client a secure database to exchange highly secure financial documents.
- If clients opted to go with a custom designed website, I would take the Photoshop .PSD file and convert it into HTML and CSS. Once that process was complete, I would send that code to a sandbox server so the clients could see their website and have changes put in before it was released to the public
- Input all content changes on both clients with a custom design as well as clients who made used templates.
- Change the A Record and CNAME of the client’s domain's DNS to point it to our server and bring their site live.
Online Content Manager at Green Builder Media2009-2010
- Collected articles from a writing staff based all over the United States.
- Modified the software to allow it to fit in without major edits to email templates.
- Changed the content into HTML while keeping in mind that this was going to a number of different email clients. I had to be very cautious how the code was written and do a large number of A/B testing to ensure it looked uniform for every client.
- Maintain strong relations with our advertisers to ensure a lasting beneficial relationship and stay in constant contact with the sales team to confirm all of the ads were in the correct place.
San Francisco State University2009 Graduation
Bachelor of Arts
Broadcast Electronic Communication Arts
- Moving Away From Monolithic Thinking: In order to effectively transition into a container based environment you'll need to make a complete change in how you approach problems. Every container you deploy should do only one thing and do it very well. Knowing how to effectively handle dependencies and packages is a must.
- Preventing Docker Bloat: It's easy when building a new image to loose track of it's size. One of the reasons I like Docker so much is how easy it is to add things to a container. Things like choosing an efficient base image (Alpine is my current go to), and grouping similar commands in one line can have massive effects down the road when you need to debug an issue.
- Maintaining Properly Written Dockerfiles: The Dockerfile is one of my favorite parts of containers. It's so easy to create containers it's easy to make mistakes like using a :latest tag as our base image, or even (please never do thus) storing secrets. Using layers effectively allows you to make scalable maintainable containers.
Front End Web Developer:
- Meet The Client: By speaking with clients to get a full idea of their specific marketing strategy, I can gen then craft a plan to assist their needs
- Wireframe: Discussing the client’s goals with the designer ensures their final design meets the client’s goals and that they can be achieved from a technical standpoint.
- Write the code: This involves taking the Photoshop .PSD file from the designer and changing it into HTML and CSS so it can be put on the Internet.
- Edit The DNS: In order for the website to go live, changes to the DNS records (A Records and CNAMEs) and once the TTL has past, the site will be live on the Internet.
Technical Support Engineer
- Telephone Support: Field phone calls from frustrated clients and assist them in a calm demeanor.
- Email Support: Read and decipher their issues and respond back shortly either with their issue fixed or an ETA as to when it will be corrected.
- Reproduce The Issue: This is either done either in production or in a sandbox testing environment depending on the size and scale of the issue.
- Troubleshoot the issue Look deep into client configuration and server logs to pinpoint the source of the issue.
- Resolve The Issue: Once the testing process has been completed, I will solve the issue and let the customer know upon completion.
Business System Implementations
- Sanitize the Data: Good results can only come from a good base. Before any systems can be implemented, the data must be sanitized. This is accomplished through scripts and manual checks
- Create Clearly Defined Rules for new Data Input: Once the data is cleaned, it’s up to the architect to make sure the system is easy enough for the sales team to add and track leads without a struggle.
- Approval Process: Different sales require different approvals. Weather it needs to go to your Operations department to provision resources, your success team to welcome the new account, or a sales manager to approve the commission, no two accounts are the same. A well built system means you can do your job without struggling with systems
- Move the Customer into a CRM: Once the account has been signed up, they need to be onboarded into your CRM of choice. That CRM needs to communicate with SalesForce and your engineering ticketing system so every aspect of your company stays informed of what your users need
Online Content Management:
- Collect articles from writers: Contact assigned writers with their deadlines, if no writers have been assigned, either find one or search for already written pieces to use and cite.
- Proofread: There is no room for spelling errors or grammatical mistakes in the final product, so it must be avoided at all costs
- Layout Content: Using Adobe Illustrator with a standard web size template, add and arrange articles
- Write the code: Now that you know where you want the content placed, it needs to be inserted. The best programming languages used for this will differ from project to project. If it is for a standard website, it will be written in HTML and CSS primarily. However, if it for an email marketing campaign the HTML will need to be striped and as close to no CSS as possible as many older email clients do not support CSS. If it more of an advertisement, it will typically be written in Flash and ActionScript.