Norman Francis

I'm a New York-based web developer with over five years of experience. Please take a moment to check out some projects I've worked on and what I can do for you.

Let's go!

About

Born and raised on the sunny island of Jamaica, I emigrated to the states in 2001 and have been based in New York since. I got my start in programming by teaching myself QBasic as a child and have been fascinated since.

My continued interest in programming led me to graduate from the computer science program at Queens College. Since then I’ve continued to work as a web developer with over five years of experience and counting. I’m particularly experienced with the Wordpress, Shopify and Magento platforms.

When I’m not coding, I enjoy making music, unicycling and going to the beach whenever the weather allows.

Services

Build

Whether it’s launching a brand new site, updating or customizing an existing one, I’ve got you covered. I will build your site accurate to your designs using contemporary web technologies and best practices. I will ensure that your site is performant and user-friendly across multiple browsers and devices.

Configure

Visually pleasing and performant sites often require some configuration on the back-end. This can include tracking pixels, meta tags, payment gateways ,shipping and taxes among other things. I will help you to get the most value out of your site by making sure its setup properly and tested.

Data Entry

Whatever it is, be it articles, products or white papers, your site’s content is its most valuable aspect. Importing data into your site can be an arduous and time-consuming process. I will ensure that your content is available to your users as quickly and accurately as possible.

I was primarily responsible for developing Ironside’s product page which housed the site’s most crucial feature, the PC customiser. The process for creating the product page involved starting with a plugin that added the functionality for configurable products and extending it to include the additional features. The features included the grouping of product options by tabs, the ability to view additional information for each option through modals, the ability to toggle all options and displaying the relative price of each option compared to the currently selected option. I achieved this by making extensive use of WooCommerce’s template overrides, hooks to alter the markup with CSS and Javascript for theming and functionality respectively.

Another requirement for Ironside was the ability to have orders automatically cycle through statuses at set times depending on the contents of the order. Additionally, orders needed to be sorted by the priority of each status in the backend. I achieved this by developing a plugin that utilized WooCommerce’s hooks to scan an order’s contents and WordPress’s core functionality to write metadata to an order with relevant information about it’s status and when next it needed to be updated. Similarly, hooks were used to add an additional column to the orders page that allowed administrators to quickly sort orders by priority.

When working with Archways & Ceilings, I was tasked with converting several dozen of their spreadsheets, each with intricate price formulas, into a format that could be used with their online store. Each spreadsheet’s fields were reproduced using GravityForms which was then attached to the corresponding product using an existing plugin. Hooks were used to replace the plugin’s default calculation formula with the formulas that were converted from the spreadsheets to Javascript. In addition to the custom price formulas, each product’s form was given unique Javascript validation with warning and error messages to let users know users know if their dimensions were within parameters as they were being entered.

Launching Farmacy involved porting content from their WooCommerce store to Shopify and working with their design team to customise a theme of their choice. Farmacy wanted to continue tracking users on their existing site using Criteo. I created a plugin that took advantage of WordPress’s and WooCommerce’s hooks to inject the required Javascript into the relevant pages without the need to modify any of the existing site’s code.

One of the customizations I made for their new Shopify store was implementing “gift with purchase” functionality. This allowed customers who entered a coupon code during checkout to have additional items added to their cart which isn’t normally possible during checkout. I achieved this by taking advantage of Shopify’s Ajax API to modify the cart’s contents. In addition, the theme’s settings were updated to include fields for specifying which coupon code and which products would be used during checkout.

Cover FX

Shopify

Cover FX had an existing Shopify site that they wanted to add more functionality to. I was tasked with coming up with the strategy for implementing their shade finder quiz. The quiz allowed users to answer a series of questions, with previous answers affecting subsequent ones, and then be shown suggested products for their skin type. I decided early on to take advantage of Shopify’s tag filtering, with the quiz being a form that would submit filters to the appropriate collections. The quiz’s interface used several Javascript plugins tailored for displaying the sets of questions and answers as well as updating answers as the user progressed. In order for the correct results to be displayed at the end of the quiz, the products needed to be tagged properly. Clear and concise communication with the client was crucial to getting this done as efficiently as possible.

I implemented the mattress finder tool for OrthoMattress. The mattress finder is a series of questions about a customer’s sleeping preferences followed by suggested products. The mattress finder takes advantage of Magento’s attribute filters to retrieve the relevant products. The front-end of the tool utilized Magento’s static blocks in conjunction with XML layout updates to correctly position the elements within the page. Because all filterable attributes appear on standard category pages by default, I used custom template logic to exclude attributes exclusive to the mattress finder.

I worked closely with American Casting’s team to move their products from their decade-old website over to Magento. I created several CSV templates along with documentation on how to the enter the data to make the process as efficient as possible. In addition to being responsible for implementing the majority of the site’s design on the front-end, I also developed custom functionality for the product page. Most notably, I made it possible to have conditional product options that changed based on what the user selected which was not available as a standard feature.

Get in Touch