Technical Skills

Below is a list of my technical skills that merit mentioning.

Highlights

  • 20 years software development experience with full stack of software tools (embedded to cloud)
  • 20 years 24/7 operations experience (I have carried the pager for a long time)
  • 15 years Server Linux
  • 10 years high performance networking
  • 6 years DevOps experience
  • 4 years Embedded Linux

Embedded Linux

Evaluated and developed 2 production hardware / software systems built around embedded linux controls. Designed firmware OTA strategy, and implementation. Participated in hardware HALT reliability testing to evaluation embedded components for failure. Worked with Yocto build system and buildroot build system, as well are Snappy Core Ubuntu.

Java / Android

Mobile development of prototypes for IoT environment. Bluetooth and Wifi protocol integration to smart kitchen equipment.

C / C++

Lead team of software engineers with strong proficiencies in C / C++. Adept at performing peer review, root cause analysis, and memory leak detection.

Erlang

Over the last 5 years, I have been using erlang for work on projects personally and professionally. I have really grown to love erlang. Long thought to be only a language for telecommunications switching, erlang has become my go-to language of choice when starting a new project. Mirroring the core principles of internet applications, erlang is designed to scale in a distributed manner down to its core. Recognizing that the applications with shared state (eg. memory) would always be prone to error when attempting to reach higher scalability to multiple chip with many cores, erlang does not share process memory.

Highlights

  • Micro Services Based Protocol Suite
  • Custom RabbitMQ plugin
  • Kazoo
  • Custom Kazoo Modules
  • Provables.com (side project I am working on)

PHP

I have been building applications in PHP since before __construct() was available. Skills in building custom php environments from source or linux package distribution.

Highlights

  • Skills in configuration of PHP as a apache module and FastCGI PHP-FPM
  • PHP-FPM pools configuration
  • Opcode Caching mechanisms (APC, eAccelerator, Zend OPCache)
  • Strong OOP Skills with PHP (all versions) (namespaces, anonymous functions, and traits!)
  • Strong grasp on usage of composer
  • Strong knowledge of current php web application toolkits (Silex, Symfony2, Symfony Components, Zend Framework, Laravel)
  • Interactive and behavioral front-end Skills (see javascript section below)
  • HTML5 - Experience with Bootstrap2/3, Blueprint CSS, reset.css, Zurb Foundation 3/4/5
  • Symfony 1.x/2.x/3.x development
  • Magento development
  • SugarCRM module and framework development
  • Wordpress plugin development / theme development
  • Web service server development (REST, SOAP, JSON-RPC, XML-RPC)
  • Web service client development
  • Up to date working knowledge of data formats (JSON, XML, YAML)
  • Up to date working knowledge of documentation tools (phpdoc, sphinx)
  • Experience with continuous integration with Travis, phpUnderControl, and Jenkins
  • Experience with package distribution via PEAR and packagist.org

RabbitMQ

Central to the product strategy of Kazoo is a highly available, fault tolerant, high throughput messaging bus. I have done performance testing with RabbitMQ under high volumes of voice traffic and SIP signaling to find hotspots in queue and channel setup times.

Highlights

  • Erlang application bindings and control
  • PHP bindings

FreeSWITCH

Under the hood of Kazoo are 1 or more FreeSWITCH servers doing media codec transcoding and sip signal processing. I have been party to work to customize the C modules that interact between Kazoo and FreeSWITCH as well as customizing the functionality of other core modules.

Highlights

  • mod_kazoo
  • mod_conferences

Kamailio

Another component of the Kazoo platform. I have done work to configure Kamailio to work with Kazoo, and done introductory work on extending the core functionality with custom scripting.

HAProxy

I have used this product to round robin traffic between Kazoo application nodes and a cluster of BigCouch database nodes. Configured for health checks, http options configurations and advanced logging.

BigCouch / CouchDB

The NoSQL datastore used for Kazoo. Using Map / Reduce and schema-less databases was a change after 10+ years of work using only RDBMS, but the gains found in running a true master-master eventually consistent have brought me around.

MongoDB

Built a few proof on concept products for clients over the years. Has a nice interface for querying collections, but does not have true master-master like CouchDB.

Networking

Behind every great web application is a great network. I have spent a great amount of time in the past 20 years becoming proficient at tuning networks, finding bottlenecks, and consulting on best practices for service architecture.

Highlights

  • OpenVPN automation, setup, tuning, and scaling
  • Pritunl configuration and
  • Expert level tcp / udp protocol (I have been on protocol design groups)
  • Hardware / Software Firewall Administration (ufw, iptables, brute force detection tools)
  • Linux network stack tuning
  • Packet Capturing and analysis
  • Switch Backplane analysis
  • Cisco / Force10 iOS console experience
  • BGP Routing / MPLS Networking

Riak

Built a small sdk library in php to connect to a Riak cluster. Basho does a lot of good work in the distributed database world, and Riak promises big things over the long run.

Redis

I have used this for caching extensions in Magento as well as custom plugins to symfony applications.

Apache

  • Performance tuning
  • FastCGI / mod_php
  • mod_proxy - configuration experience
  • mod_dav - configuration experience
  • Rewrite rules - LOTS of experience
  • Virtual Host configuration

nginx

nginx is my new favorite web server for php projects. The static serving of resources is extremely fast and efficient on server resources. Using nginx with php-fpm as a fastcgi interface is definitely the best php hosting setup I know of with respect to high performance and configurations for reverse proxying.

  • Tuning of fastcgi params (ip / socket configs)
  • Proxy
  • SSL configuration
  • Reverse proxying

Memcache

I have used this for caching extensions in Magento as well as custom plugins to symfony applications.

MySQL / Sqlite / Postgres

15 years experience building, customizing, and maintaining databases.

  • Doctrine
  • Propel
  • Custom Value Objects
  • SQL Scripting
  • Operations
  • Performance Tuning
  • Percona Toolkit
  • Built schema migrations tools

JavaScript

Was toying with XMLHttpRequest in January 2006 after reading the article by Jesse James Garret describing the term AJAX. Heavy development using the following libraries:

  • Prototype
  • Scriptaculous
  • Dojo
  • Tried doing xslt in the browser, terrible, found JSON
  • Yui (All versions)
  • jQuery / jQueryUI (and evaluated hundreds of jQuery plugins)
  • Custom jQuery applications
  • ExtJS (now Sencha)
  • Amplify (alpha tester done with appendTo())
  • jQuery Mobile
  • KnockoutJS
  • Backbone.js
  • Best O’Reilly Book - Javascript The Good Parts - Douglas Crockford

.NET

Designed and lead group of external contractors on End of Line manufacturing systems. Software built custom labels, performed integration with Epicor ERP,

Node

Used node for building a couple of proof of concept applications, and reference implementations for clients. Co-developed a messaging server for a mobile application.

PhoneGap

Co-developed html5 mobile application, and then ported to PhoneGap for testing and deployment.

Xamarin

Did research into their product offering and built statement of work for large multi-platform mobile application. Built proof of concept bluetooth application to test the new Bluetooth 4LE functionality in their SDK.

iOS

Built small proof of concept project to test out the tools.

Git / SVN

I am now fully converted to using Git for my development workflows. Fluent in branching strategies, complex merge scenarios, package management.