Myles Skinner's Development Portfolio

"The best praise I can give Myles is that I can give him a task with minimal direction and know it will be done correctly the first time with a solution that is both effective and creative. Myles never hesitates to roll up his sleeves and get to work. No task is too small or too large for him to take on. I never have to worry about his productivity—he is self-motivated and takes pride in his finished work."
—Christopher P. Smith, VP of Engineering, PartnerPath

I've been programming for 36 years now; I got my start writing BASIC programs on a Commodore PET 2001 and quickly graduated to 6502 machine language. Hand-assembling machine code from a very early age has given me a level of comfort with low-level work—what is sometimes referred to as "heavy lifting" programming. I enjoy working behind the scenes and under the hood to help talented designers bring their visions to life. The languages and technologies with which I am most familiar include: Ruby on Rails, PHP, Laravel, C, C++, Java, Perl, HTML, CSS, Postgres, and MySQL. I am experienced with numerous version control systems including Git, Mercurial, and CVS (I strongly prefer Git). In addition, I have fun learning new languages and technologies and will happily tackle the unknown.

PartnerPath

I contracted with PartnerPath for ten years from early 2008 to late 2017. The techonology team at PartnerPath developed and maintained the eponymous PartnerPath Partner Relationship Manager, which was a load-balanced, multi-tenant, multi-language, fully configurable Software-as-a-Service (SaaS) solution with some incredible features. Because PartnerPath supported multiple vendors (called 'tenants') using the same app simultaneously, it was very important to maintain the data integrity of each tenant and to ensure that one tenant's implementation would never leak into any other's. I wrote the majority of the systems that allowed these tenants to coexist peacefully with their varied and often conflicting configuration requirements.

Our team at PartnerPath were strict about following Best Practices using some of the best tools available: Jira for Agile project management, GitHub for version control and managing branches, CircleCI for continuous integration and running our test suite, Heroku for review apps and deployment, ScreenHero for remote pair programming, and Confluence for sharing knowledge.

I Write Quality Code Quickly

The graph to the left tracks my contributions to PartnerPath's GitHub repository over the past three years—nearly 200,000 lines of Ruby! I believe in rapid development, using Agile methodologies where possible. In my time with PartnerPath, I worked on over 5,000 tickets—tickets could range in scope from minor copy edits to substantial revisions to our application workflow to the complete design and implementation of new modules. I have also taken the lead on several development projects, ensuring that our code is built to specification and delivered on time.

Through PartnerPath, I have had the privilege of implementing Partner Relationship Management (PRM) solutions for some of the most significant players in the tech industry, including Apple, PayPal, and Liebert-Emerson (now Vertiv). I've included the logos of the companies I've worked with below; each one has brought something new to the table, requiring me to develop new and interesting features for the PartnerPath portal.

Enlarged Image

Apple Consultant Locator

In 2008, Apple engaged PartnerPath to create an interim Consultant Locator to be used in Apple Stores while they developed their own in-house solution. The Consultant Locator is a searchable directory of Apple's authorized third-party vendors and service partners. You started your search by entering a zip code (or postal code in Canada); the system would then calculate the distance to the nearest consultants and display this information in a table alongside a map generated with Google's map API. You could further refine your search by looking at Customer Focus or Skill Category. Our system tracked which certifications each consultant had earned as well as a client rating system from 1 to 5 stars.

Apple kept the directory up-to-date by supplying an overnight data feed which was processed daily by our system; we also created an administrative interface so that Apple admins and trusted consultants could update their information in real time. As a long-time Mac user, I have to admit it was a real thrill to be able to walk into the Apple Store at the Walden Galleria in Buffalo, New York to ask the Geniuses on duty how well the Consultant Locator that I helped design was working for them. Our Consultant Locator was in use in Apple Stores until 2012. You can see Apple's current proprietary Consultant Locator on the web today; if you play around with the current search tools, you can get a good sense of how our system worked back in the day.

Enlarged Image

PayPal Error Monitoring Dashboard

Because the team at PartnerPath was lean and Agile, we were able to deploy new implementations quickly. Consequently it was not unusual for enterprise-level companies to engage us to create interim solutions while they worked to complete their own projects internally. For their PRM portal, PayPal required two additional reporting modules: Revenue Share reporting and Error Monitoring.

While the details of PayPal's revenue sharing program are naturally confidential, I can show a mockup of the Error Monitoring Dashboard. This dashboard represented a diagnostic tool to track PayPal transactions that experienced errors; the data was populated by a nightly feed and processed for presentation as depicted in the mockup. You could refine the report by date range, error code, or product. The summary table on the bottom right shows the most common types of errors and where in the world those transactions occurred.

App-In-A-Day Mobile Challenge

One of the great things about contracting with PartnerPath is that I got to work with some really intelligent, highly skilled people. In the summer of 2011, we decided to challenge ourselves to write a mobile application in a single workday. We set some ground rules: the app had to do something useful ("Hello, world!" doesn't count), we had to follow best practices as much as possible, and no code could be written before the day of the challenge. The six of us worked from 9:00 in the morning until about 4:30 that afternoon, and we finished with a completed app that allows you to log into the PartnerPath portal from an iPhone and pull up real-time graphical reports from live data. We did more than the bare minimum, too; in addition to the application code, we wrote a partial harness of unit and feature tests.

This short video documents our heroic efforts.

Training Paths

As a former university instructror and Adjunct Professor, I was enthusiastic about taking the lead role in developing a training system to integrate with PartnerPath. What we created is a flexible system that allows clients to create and manage all their training content. With the Training Paths administrative tools, you can track and compare student progress through each path. The Training Path overview is represented visually by a subway map metaphor where each curriculum is represented by one of the stations; the display to the left was designed and implemented by Scott Collins. The training system is composed of the following components:

  • Training Path: an organized collection of training courses that make up a complete unit of training, usually targeted at a specific certification, and often organized by job function, solutions, technical expertise, etc.
  • Focus: a collection of curricula organized into subject matter groupings or themes.
  • Curriculum: a collection of training classes or training units that make up a specific course of study. A focus is the subject matter's "theme", while the curriculum is the collection of actual courses contained in the Training Path.
  • Training Unit: refers to a single section of training such as a training video, an exam, a training document, or any other single unit of training that can be taken by a partner and evaluated for success.
  • Skill Assessment: a quiz or questionnaire that can be used to assess the retention of a given training unit.

Widget PDF Export

The PartnerPath and RegPoint Dashboard project was one of the most challenging things I've ever worked on, but also one of the most rewarding. The dashboards are composed of several reporting 'widgets' that provide real time, graphical reports based on live application data inside the PartnerPath and RegPoint portals. The PartnerPath Main Dashboard is configurable; users can choose which reporting widgets will appear on their dashboard. My most significant contribution was making the dashboard reports exportable as PDFs; the PDF files are built on-the-fly from up-to-date data (including graphs), with the various layout elements—pagination, headers, footers, and column breaks—derived on demand from each specific dashboard configuration.

This sample PDF demonstrates the output; I am very happy with the way it turned out. There's something very satisfying about writing code that will generate a full-colour, printable document that you can hold in your hands.

Informatica's Partner Directory

I was asked to develop an enhanced partner directory to replace the original "A-Z Partner Directory" that used to appear on Informatica's website. Each entry in the directory includes information on Informatica's network of partners worldwide; the data displayed in a partner's profile on the directory is dynamically updated from the information each partner puts into their profile on beINFORMed, Informatica's Partner Portal. This improved directory offers customers, prospects, and field personnel the benefit of being able to search Informatica's worldwide partner network by country, vertical focus, product and solution specialization and locate a contact at any partner. The partner directory formed the core of the Consultant Locator that was used in Apple stores until 2012.

RPGme online store

RPGme was a start-up company founded by Christopher P. Smith. Chris designed the site, wrote the site copy, populated the catalogue, filled orders, and set up and maintained the site forums. I was brought on board to develop an online store application capable of secure transactions. This was a challenging project because in the beginning, I was completely unfamiliar with the necessary tools and languages. (Bear in mind, this was 2002. Frameworks have come a long way since then.) In two weeks, I learned enough Java, JSP, and MySQL to begin development; within two months, I had written a fully-functional online store application from scratch that was modular, configurable, and scalable.

Features:

  • User registration and secure login
  • Shopping cart capable of persisting across separate sessions for registered users
  • Search engine that allowed users to restrict searches of the store catalogue by combining multiple search criteria (keywords, product category, price)
  • Product recommendations derived from shoppers' browsing history
  • Administrative tools to maintain the MySQL database for users, the catalogue, and shopping cart transactions
  • Credit Card handling over secure connection to VeriSign
  • Secure model for the purchase and delivery of eTexts and PDFs

The RPGme online store application was sold in 2003 and subsequently dismantled by the new owner. I have created mockups of the original RPGme home page and a typical catalogue page that show how the store looked when it first opened in June 2002.

Cornerstone

I've always enjoyed working with talented designers, working behind the scenes to realize their visions. The Cornerstone website, designed by Jewel Mlnarik, was my first exposure to WordPress. Jewel introduced me to the idea of using a Content Management System to set up a website. In many cases, the big CMS packages are a bit of overkill, but they do allow you to launch a site quickly and give the client control over their own copy. Among the jobs Jewel brought me in for were massaging the front-end Javascript, working out the IE6/Firefox compatability issues, and writing a custom contact form that plays nicely with the WordPress main loop. Because construction companies depend on their mobile devices, we made sure the site was browsable on Blackberry in both portrait and landscape orientations.