- Work experience
April 2016 - October 2016
- Created playbooks using ansible to configure and provision a load balanced cluster of web and job servers
- Used redis for PUB/SUB message queue and caching
- Created a fully automated local environment using vagrant, virtualbox and ansible
- Designed an API using Symfony3 with PHP 7.0 running on Nginx, which accepts payloads from IoT devices in the field that collect scientific measurements, such as temperature, ORP, pH, pressure, tank level, flow rate etc.
- Built a fully functional web UI using bootstrap to display charts and reports from the collected data
- Created a global exception listener to triage different categories of thrown exceptions and to send them to different locations depending on their nature
- Deployed a horizontally scalable architecture for web servers, job servers, redis cluster, NoSQL and SQL database using AWS services
- Created tests using phpunit to ensure system durability
February 2015 - April 2016
Senior PHP API Developer
- Led the effort to migrate a legacy API written in node using express to PHP using Symfony
- Contributed to writing Ansible playbooks to provision, orchestrate and deploy code, all using AWS
- Created an infrastructure to list, deploy and execute jobs to run work asynchronously
- Collaboratively created an API client which is used by several applications
- Created several internal composer packages that other teams consume
- Migrate users from one platform to SalesForce via an ETL job
- Implemented iOS wallet functionality used for a digital rewards card via an API endpoint
- Authored several jobs, that run at scale, to create rewards card numbers, relate identifiers and sync sensitive user information to and from several backend systems
- Created the ability to send emails in real time using API calls to Epsilon via scalable background jobs for the purpose of company wide e-mail marketing
- Contributed heavily to the development of a system to securely store and unify user profile information to and from various backend systems
- Created a mechanism to encrypt field level, sensitive user data, using AWS KMS
- Heavily contributed to writing database migrations, using Phinx, against PostgreSQL, running on RDS after designing a schema that maintained referential integrity by creating true foreign keys and on cascade rules
September 2014 - November 2015
Austin Coding Academy
- Taught Python and later PHP for four semesters
- Gave public talks on bash, git, redis, resque, AWS etc...
- Mentored junior developers and students and spent time with them frequently while collaborating on class and or personal projects
September 2014 - February 2015
Senior PHP Software Engineer
- Implemented features in an application called Platform that was being replaced by a ruby based legacy application called Neuron.
- Worked on financial reports by porting over metrics and improving the quality of the report.
- Improved code quality by making the controllers thinner by creating a well organized service layer.
- Introduced unit and functional testing to the project using Codeception.
- Wrote several unit and functional tests and set a standard for how to interact with the service container and to write testable code.
- Introduced, installed and demonstrated New Relic as a replacement to a MySQL driven custom performance data collection and reporting system.
- Created an Ansible playbook that provisioned a fully functioning vagrant virtual machine, complete with a local instance of the development database.
- Changed the deploy process from an RPM/SCP based approach to a git based deploy using Ansible.
- Used a GitHub centered Pull Request workflow to get others to look at the code prior to merging using HubFlow.
June 2014 - September 2014
Lead PHP API Developer
- Created an API using Symfony2 that interfaced with external APIs for the purpose of consolidating various external API calls into a standard API
- Used Resque as as job queuing mechanism to defer execution of long running processes.
- Created a central data broker to inform the web cluster of the status of a job and any data that it might have returned
- Leveraged polymorphism along with the factory pattern to instantiate required implementations at runtime.
- Used Doctrine as the ORM layer along with Symfony's Service Container to achieve loose coupling using dependency injection.
- Created several unit tests and functional tests using Codeception.
- Wrote several bash scripts to work with chef in order to automate certain parts of theworkflow, including setting up and maintaining state for the job servers.
September 2013 - June 2014
PHP Software Engineer
- Port over really old code to a new Symfony2 application using solid PHP5 OO principles making the system highly scalable and highly available.
- Design caching code that works under load and scales horizontally over a cluster of Memcached servers. Code also leverages local caching using APC and protects user’s from stampeding on the same data object.
- Create Order, Transaction, Cart, Tax, Shipping, Handling etc.. classes to handle placing an order, using abstraction, inheritance, polymorphism, dependency injection, singleton and factory patterns.
- Created asynchronous jobs for carting, account management, save order information and place an order. The jobs are bidirectional i.e. data from the async process is returned back to the frontend using a standard JSON response object.
- Write, explain and consolidate queries using advanced joins, aggregate functions, range clauses and having conditions.
- Thoroughly document each method, it’s signature, return type and any thrown exceptions. Also document class overview and properties by type and purpose.
- Conform to PSR-1 and PSR-2 for coding standards and style. Also follow all FIG coding guidelines for naming conventions, logging and autoloading.
- Created and developed several features in the system that all generate measurable revenue that directly impacted the bottom line.
June 2012 - February 2013
PHP Web Developer
Fort Mill, SC
- Develop Reports using custom Reporting framework developed in house. DataCollection class generates data behind the report. DataView class handles all presentation logic, DataParameter classes handle any additional filter data that is automatically rendered as an appropriate control. i.e. drop down, multi select box, check box, date picker etc.
- Create dashboards using real time technologies like node, and meta refreshes to display accurate real time statistics about various business metrics as they happen. Data is cached using memcache. Framework developed to build and manage dashboards ties in to the reporting framework. Once a report is created, the data on the dashboards can simply subclass the report DataView and extract one data point by passing in DataParameters that are configurable from DataParameters, which are powered by a MySQL database.
- My primary role is to actively develop and maintain a LAMP ERP and CRM system that runs on over 35 load balanced web servers and empowers a sales force of over 1500 people to sell millions of dollars in products and services a day!
- The Orvis application uses full MVC concepts with a home grown ORM.
- Objects perform various show/hide logic for questions that drive customer experience based on hundreds of parameters and dependencies. Application is finely configurable using inputs from data tables that are generated by administrators using in house intranet applications.
- Data from these tables drives what the customer experiences and is able to buy based on prior purchase history, credit score, physical location etc...
- Write queries that join 20+ tables, in some cases, to efficiently aggregate data to answer business questions in real time. Debug slow MySQL queries using explain.
- Write import scripts that transform data automatically using SOAP, and FTP connections to several third party vendors. Use the concept of buffers in conjunction with memcache to run queries in bulk.
- Use InnoDB specific features in MySQL, transactions and foreign keys to maintain data integrity for orders and related tables.
- Use inheritance in conjunction with abstraction and design patterns effectively to simplify development, readability and reuse. Document code thoroughly and adhere to naming conventions.
February 2011 - June 2012
Industrial Distribution Group
Lead PHP E-Commerce Developer
- Completely redesigned IDG's eCommerce web presence www.shopidg.com using Joomla (MVC) with over a 100 new features and improvements completely transforming IDG's online presence and invigorating the sales force, including lightning fast relevant searches using Sphinx and SEF URLs.
- Created a web based iPad Application using HTML5 and jQuery Mobile, with local WebDB SQL storage. App can run completely offline, all assets are loaded from the local cache, auto compile script to compile PHP down to HTML for local caching. All server side calls made via JS.
- Re wrote StoreRoom completely in PHP, email notifications, SOAP calls for table based auto complete, business logic and display separation, DB abstraction, logging every action on every trigger, interface to view user interaction history, AJAX'd the entire interface with page reloads only when presenting a new UI, OO JS creating native objects extending prototype then stringifying and converting a multidimensional data set to JSON, objects are consumed using a generic handler that unravels the object for logic and insert into MSSQL .
- Created a Python application to receive documents from GMail via IMAP IDLE using threading . Compiled down to windows executable using py2exe . Documents automatically printed in the background as a batch process . RPC communication with central server for synchronizing a swarm of users with application level TTL to match GMail’s IMAP timeout .
- Created a windows based forms application in VB 6 to interact with the API for a symbol barcode scanner that scans part numbers into the application which would send that data directly to the shopping cart of the aforementioned website to streamline repetitive mass ordering in a warehouse environment .
- Created a standards compliant PHP/ MySQL application for on site customers at factory locations to procure items by adding them to a queue in a storeroom . IDG Buyers interact with the interface. Emails are sent out to multiple individuals in the manufacturing authority chain, who click accept or reject which drives a complicating process to approve or disapprove orders . Orders are submitted to the ERP via a SOAP based web service .
- Wrote over 20 SOAP clients and a handful of SOAP servers to consume various data sets directly from the ERP to get real time QOH, pricing, attributes, items, customer P / Ns etc . directly from infor's SX.e ERP system, written in PHP.
- Wrote a giant import script to update the website from a local content management application complete with processing and writing to over 12 related tables, consuming a giant XML file with a multidimensional product to item structure. Script is automated via CRON and processes high quality TIF images. Website is automatically updated nightly with fresh products and information added daily by the content team. Script is written completely in PHP.
- Created a generic data collection handler for most of the web services and for every meaningful click on the website to derive application use, performance and user experience.
- Created CURL scripts using PHP and XPATH to automate scraping semi structured data from competitors website into a structured set of data tables to automatically analyze competitor pricing and market dominance, stored in MySQL then transformed to FileMaker for reporting.
October 2008 - February 2011
PHP Web and Filemaker CWP Developer
San Antonio, TX
- Create custom front end and back end components, modules and plugins using MVC pattern for TASA
- Custom development work for several small to medium sized businesses with a primary focus on PHP/MySQL/FileMaker development deployed on a linux web server.
- Create and deploy eBC applications for several customers customizing integration with SCPRO and automating the import of content, vendors and accounts from the ERP using PHP.
- Created an application in PHP for Cure Solutions that allows users to create database tables, fields and add records for the purpose of storing sensitive customer network, machine and application credentials.
- Ground up creation of applications using LAMP + FileMaker + AJAX
- Bash Scripts for backup, FTP, grep on linux, Automation applications in .NET deployed on windows.
- Team based application design and creative problem solving.
October 2007 - October 2008
Applications Programmer / System Administrator
- Created and maintained DTS packages.
- Modified and created Visual basic 6 programs.
- Conducted the migration of old MS Access applications into an ASP.NET version.
- Created reporting applications using existing data for executive level trend analysis.
- Resolution of open issues with malfunctioning hardware/software on networked windows based machines.
October 2005 - October 2007
The Rug Store
E-Commerce Developer / System Administrator
San Antonnio, TX
- Built an ECommerce website using Web Store technology. (PHP / MySQL)
- Set up company wide network with access rules and inventory management.
- Synchronize inventory and availability across multiple physical locations.
October 2004 - October 2005
E-Commerce Developer / Digital Display Content Creator
San Antonio, TX
- Designed and developed an online catalog for product promotion and sales.
- Pixel perfect smooth content rolling for an outdoor digital display.
- Creating and managing multiple schedules for target marketing.
- Client facing technical advice for streamlining business processes / network.
January 2000 - October 2004
Related Experience / Freelance Work
Web Developer / Consultant / Network Engineer / System Administrator
San Antonio, TX
- Created numerous websites for individuals and small businesses.
- Debugged and tested malfunctioning machines to determine source of problem.
- Analyzed problems and developed solutions for Truman State University.
- Design and maintain personal tutorial website and CMS for personal promotion, articles on technical subjects, solutionsamir.com
- Ground up design for theillbeat.com, hobby music mix upload site for musicians.
- Created application for mystery shoppers using AJAX and OOP with inheritance, composition and polymorphism, consumerimpressions.com
- Created a web application that allows content creators to upload technical part information, clients use a filtering mechanism to add items to their order globalfasteners.com