This page has lots of details about my career. I also have a standard resume available.
Phase 5: Web Development Consultant and node.js Expert
I'm currently working as a consultant to bring my expertise and experience to your node.js web application. I work remotely from Colorado. My specialty is augmenting small teams to boost their node.js expertise and accelerate delivery of solid node-based APIs and services.
- node.js, helping your team master node and deliver solid applications
- Data Intensive Real-Time (DIRTy) applications
- APIs (consuming and providing)
- automated provisioning and deployment, containerization
- Serverless/IoT application design and development for an automative industry supplier
- Implement heavily-distributed IoT applications on AWS Iot/Lambda/DynamoDB integrating numerous disparate APIs and meeting strict security requirements
- Helping gaia build a state-of-the-art video streaming service
- Bringing test-driven practices and culture to the team
- Development methodologies for a complex microservice architecture
- Developing robust modules to exact specifications for an automotive industry client
- Low-latency, high-security message architecture
- Working with NowSecure building full-stack web applications as part of their mobile device security platform
- node.js, express.js, mongodb, angular.js, mocha.js, REST APIs
- python, flask, elasticsearch, postgresql
- docker, Amazon SES, PostmarkApp inbound email processing, continuous integration, frequent deployment
- secure audit trail, token-based authentication
- Helping bootstraper and Rackspace "intrepreneur" Lee Kimber prototype his web-based remote automated/manual server diagnostic service
Testimonial from Robert Jordan (Gaia Director of Engineering)
Pete's an exceptional guy, period. At Gaia, we hired Pete as we started converting a PHP legacy application into a services-based architecture using Node and AWS. At that time, we were people constrained and needed a team lead and architect to set up the development framework, patterns, TDD, and best practices. I loved Pete's "backpack" of scripts to make everything run smoother, from the IDE to testing to committing code to everywhere in-between.
Not only will you find Pete to be super productive and very efficient; he's also an exceptionally smart person that's curious and asks the right questions including about the business domain. You'll find his pragmatic approach and ability to make things simple are his secret weapons. In so many projects, it's what's needed to deliver business value on-time and with quality.
On a personal level, Pete's charismatic and well-spoken, and full of great stories, especially about his band! Whether you have an existing team or are building one from scratch, he works and plays well with others.
I highly recommend Pete and would hire him again in a heartbeat. If you find yourself lost on a project, buried with complexities, lacking people or domain knowledge, or just trying to figure out where to start, give him a call. Pete is truly one of those multiplier engineers you hear about but can't seem to find or hire.
Testimonial from David Smith (Gaia)
I had the great fortune and opportunity to work with Pete on a Node.js server-side project. Pete brings a depth of experience the likes I’ve not seen much in the industry. This blended with his ability to head on solve problems, whether in his domain or even his responsibility, is truly humbling and inspiring. Pete brings professionalism and levity to any challenge, and is a natural leader, always stepping up to bring balance to chaos and clarity to the unclear. He is a true teacher, always his genuine self and is respected by cross team members and leadership. I would recommend Pete in a heartbeat for any project, no matter the application – he’ll get the job done in a scalable manner, with integrity, quality and as a respected member of any team.
Testimonial from Lee Kimber (Rackspace)
My experience of working with Pete has been excellent.
I am paying him to code to functional and usability specs. He grasps the specs and codes against them. He asks questions, catches issues and suggests improvements ranging from code detail to architecture. My product will be very much improved because of these characteristics.
He is also fast and flexible - working easily with our six-hour timezone difference - and delivers value for money. He has responded positively to my requests for more documentation - to help us fill a gap in technical knowledge at our end - and is an all-round pleasant person to work with.
I would recommend working with him.
Phase 4C: Lead Developer for Trending.com
I led a small team of senior developers in building a media-heavy social platform Trending. Key features included masonry style layout, extensive URL discovery, embedding photos and videos, uploading photos, community curation and moderation with a reddit-style ranking/trending algorithm
Dates: October 2012-December 2013
- node.js (express, mongoose, socket.io, cheerio, awssum, request, mocha)
- backbone, jQuery
- MongoDB, Redis
- Amazon Web Services S3, SES
Key Skills Learned
- Code organization for large code base with hundreds of view components
- data modeling for social graph features including comments, voting, friending/following, activity logs, real-time notifications
- Built state-of-the-art isomorphic framework capable of running the same code to render identical HTML on either server or browser. Comparable to AirBnb's rendr framework.
- OpenGraph discovery, image manipulation
- Lightweight and consistent scrum process. Deployed new features every week and recorded a screencast demo for a year without exception.
Phase 4B: Web Developer at Sococo
I joined for the express purpose of doing node.js development work, but the project I worked on was PHP/Backbone.js with the promise of node.js work to follow after that project completed. After 7 months of additional development taking a detour from my career's desired path, I had to throw in the towel and find a real node.js-based job.
Dates: February 2012-September 2012
- jQuery, REST, JSON
- Python Fabric Framework
Phase 4A: Web Developer and Start-Up Junkie
After 6.5 years working on enterprise software, in January 2011 I quit my job with HP to work on building web applications and start-up businesses.
Dates: January 2011-February 2012
dojo4 Project Summary
I worked with dojo4 building Ruby on Rails web applications
- Ruby on Rails
- Rails 3.1 with asset pipeline
- Mongoid ODM
Key Skills Learned
- MongoDB schemaless design. Data migrations and advanced queries with mongodb.
- Use of presenter and conductor patterns
Linkzie Project Summary
- Ruby on Rails
- jQuery UI
Key Skills Learned
- Modern web development tools and techniques
Phase 3B: Software Engineer at Hewlett-Packard
Dates: November 2007-January 2011
HP acquired Opsware for $1.6 Billion in November 2007. My work and role as technical lead for OS provisioning continued on more or less the same as it was prior to the acquisition. I also led a major project to implement the HP Server Automation Solaris Patching feature and shepherded that from design to shipping.
- Led a large team to a successful re-architecture of the OS provisioning feature - slashing technical debt, reducing complexity, and providing an easier to use and more powerful feature with six times less code
- Designed and implemented a best-in-class Solaris Patching feature based on my own professional services work while consulting at Opsware customers
- Development lead for OS Provisioning and Solaris Patching features on the HP Server Automation product across multiple releases
- Bourne Shell
Key Skills Learned
- Getting things done in a very large software development organization
- leading large distributed teams (up to 15 engineers in 4 time zones)
- Making well-reasoned trade-offs in product design and implementation
- Designing features for rapid application development
- Unit testing and system testing in complex distributed environments
- Software Patent draft and application process. I am listed as an inventor on three pending patent applications.
Phase 3A: Software Engineer at Opsware
Dates: June 2006-November 2007
I changed roles and joined the main product engineering team at Opsware, focusing on our bare metal OS provisioning feature. I soon moved into the technical lead role for this feature and began guiding the design and implementation. There were several notable changes leading a team building enterprise software. I now had several engineers working with me on projects, QA teams, documentation writers, and product managers to work with. The release cycle was between 8 and 12 months or so, so it was long projects with a lot of detailed design work, planning and specification. The work was technically very detailed - diving into the guts of three major platform families (Windows, Linux, and Solaris) and supporting several major hardware architectures. There were also lots of open bugs in numerous prior releases to manage and somewhat frequent escalated customer support cases. Also this was my first exposure to a truly gigantic (millions of lines) code base with dozens of components in many languages.
- Maintained and improved a large, mature, and complex code base. This includes making careful trade-off decisions around product functionality, defect management, and quickly resolving top-priority customer escalations
- Bourne Shell
Key Skills Learned
- Planning for enterprise software release schedules
- How to quickly resolve escalated customer issues, including remote hands-off troubleshooting
Phase 2B: Consultant at Opsware
Dates: August 2004-June 2006
Fearing spending my whole career as a Microsoft expert when in general I was not fond of Microsoft technology, I decided to take a job with a small software company called Opsware, Inc at the recommendation of a friend. Opsware was selling data center automation software which at this point was still very new. It was the vision of Internet pioneer Marc Andreessen. After Netscape, Marc founded LoudCloud which was a hosting provider focused on automation and scale-on-demand technology which they developed in-house. In 2003 they pivoted, selling the hosting business to EDS and taking their software directly to market as Opsware, Inc.
This was a very sudden and significant technology change for me. I went from all Windows all the time to working at large-scale Unix/Linux heavy shops. Opsware professional services was comprised of entirely hard-core elite sysadmin/programmers, some having come over from Sun Microsystems professional services. This was a very small team of only a handful of people responsible for all customers in the eastern US. The stakes were high as Opsware was still very much a young and problematic enterprise software application, and it was up to professional services to fill in the gaps between what the customers' needs and expectations were and what the product could actually deliver. We were also seen as sources of best practices for system administration by our clients, who were already often cutting-edge technologists interested in automation. After spending 20 months doing Windows, they sat me down in front of 1500 Solaris servers at Comcast and said "sink or swim". I swam.
This job was a mix of consulting, systems administration, and custom software development, gradually shifting toward more and more software development with each new project. We ended up writing large pieces of custom software for our customers in Java and Python. My client focus was on the financial services customers on Wall Street and Exchange Place in Jersey City. I spent time at many of the largest financial firms including JP Morgan Chase, Lehman Brothers, and Merrill Lynch.
- Technical lead for the Eastern US, providing best practices, guidance, procedures, and support to less experienced team members
- Developed enhancements to meet the needs of large financial services clients. Enhanced Opsware's Solaris Patching capabilities for deeper automation. Created program to synchronize user accounts with an external LDAP directory. Developed new web GUIs for customer-specific enhancements.
- Worked closely with customers to design, plan, and implement Opsware Server Automation System to automate management of complex, large-scale, heterogeneous, enterprise data centers
- Provided troubleshooting, analysis, and technical expertise in high-pressure, escalated production problems
- Successfully upgraded nearly every Opsware customer in the Eastern US. Used precision and careful, thorough planning to turn nightmare, disaster-prone on-site product upgrades into successes.
- Bourne Shell
Key Skills Learned
- Consulting and technical leadership working on complex, high-value (7-figure) enterprise software sales and implementations
- Unix/Linux systems administration
- Python for systems automation
- General exposure to enterprise software sales
- Writing for technical documentation
- Road Warrior Kung-Fu
Phase 2A: Consultant at Accenture Technology Solutions
Dates: November 2002-August 2004
In the tough economy after 9/11, I took a position at a new subsidiary of Accenture called Accenture Technology Solutions (ATS). ATS was formed to add more technical depth to Accenture's staff of consultants. Here I got exposure to large enterprises and became a jack-of-all-trades technologist. We were building projects on the Microsoft platform. I got to spend time both programming new applications as well as building the data center cages where we hosted the applications from scratch. I learned networking in detail and became a Cisco Certified Network Associate (CCNA) and got to configure Cisco switches and routers. I became heavily involved in projects to the level where I would assist with selecting and purchasing equipment (racks, servers, cables, switches), physically racking, stacking, and cabling it in the data center, installing the operating systems (using automation scripts I had written), installing and configuring MS Exchage Server, Active Directory, and ISA Server, configuring the switches and networking topology, and coordinating with the data center staff on our Internet connection and firewall rules. I also helped provision and configure a dedicated T1 line we used for administrative access out of band from our office to the data center.
I got exposure to large, complex, high-budget (8-figure) projects and the logistics of navigating that. My primary client during this period was AT&T and I was also involved with Payless Shoes and Jelly Belly Candy Company.
- Responsible for planning, design, implementation, and operation of multiple carrier-class highly- available computer networks involving dozens of servers, layer 2 and 3 network switches and routers, fiber channel SAN systems, firewalls, load balancers, SSL accelerators, and tape backup
- Designed and implemented enterprise-class software solutions using Microsoft Active Directory, DNS, Exchange Server, Microsoft Operations Manager, IIS, SQL Server, ISA Server, Commerce Server
- Developed an end user self-provisioning portal for a Hosted Exchange solution including database schema design, T-SQL stored procedures, object-oriented business logic classes, an abstract reusable superclass for persistent business objects, transaction processing across multiple databases, LDAP directories, and web services, a robust exception handling and logging system, and web presentation layer in ASP.NET
- Served as key resource in troubleshooting and resolving difficult problems in both functionality and performance in heterogeneous network environments
- Quickly learned a vast array of cutting edge hardware and software technology from a wide range of vendors
- Windows Server 2003
- MS SQL Server
- MS Exchange Server
- Active Directory
- MS ISA Server
- Cisco IOS
- IBM eServers
Key Skills Learned
- Consulting and working with global enterprises on complex projects
- Full stack process from ordering equipment through go live through operations
- TCP/IP networking and firewalling
- General exposure to the Microsoft stack
Phase 1: Web Development
Dates: August 2001-September 2002
My first full-time job straight out of college was at a boutique web development consultancy in NYC called CodeFab. This was a small (approx 20 employees at its largest) shop formed by a core group of old die-hard NeXTSTEP/OpenStep enthusiasts. We built database-driven web applications on the Apple WebObjects platform. We used the Extreme Programming methodology which involes full-time pair programming. This pairing afforded me a great opportunity to learn from many veteran developers, many of whom are now working at Apple. We were also heavily invested in unit testing and Test Driven Development (TDD). Thus I learned early on what solid, well-tested code looks and feels like.
Sadly, CodeFab's consulting business did not survive the post-9/11 economy and they had to close up shop for a while, later re-emerging with a focus on iPhone/iPad and mobile development.
I should also note that at this time I started to learn Python on the side, taking a cue from my boss Bill Bumgarner. This turned out to be a key language two jobs later at Opsware.
- Developed and maintained numerous sophisticated database driven web applications including a real-time trading system
- Integrated diverse technologies such as email (JavaMail), LDAP directories (JNDI), XML-RPC, and WebDAV
- Created transparent, on-the-fly database upgrade system that significantly reduced the downtime, risk and complexity of updating production software. This design was later written up in StepWise and is now common in application frameworks such as Ruby on Rails, but this was in 2002!
- Designed, developed, and integrated centralized, single sign-on authentication system that allowed employees to use multiple web applications without needing to reauthenticate
- Maintained internal and external company web sites; redesigned and updated external web site for better standards compliance, browser compatibility and easier access to current information
- Created simple content management system to facilitate updating news section of the web site
- Apple WebObjects/EnterpriseObjects
- Mac OS X
Key Skills Learned
- Unit Testing and Test Driven Development (TDD)
- Extreme Programming (XP)
- Object-Relational Modeling (ORM)
- Apple Core Foundation APIs