Resumes are the OkCupid of the working world: you describe yourself with an opening paragraph or two, and hope your call-to-action attracts the right kind of attention. :)
What I've done: I've operated two small businesses, worked for a few startups, navigated a large financial firm, a larger DOE contractor, and an even larger social media company. I've built infrastructure ranging from a handful of office machines and a bunch of cloud systems all the way past 100,000 systems spanning multiple countries, along with writing or configuring a good amount of the software running on them. I've written software in anger in a few languages now, from glue between systems to tier-0 services that can't go down.
What I'd like to do: build critical services in creative ways, make people and systems more productive through tooling and process, work with organizations that are changing the world for the better, and keep learning new things.
That last part? About learning new things? That's important.
I hold citizenship in both Canada and the United States, and I do not require sponsorship to work in either country.
I started out as a Senior Operations Engineer on a small team focused on "engineering for operations at scale", managing software and configuration deployment and core services infrastructure. Worked on a variety of projects, including a period of development work on an internal application deployment framework (think Docker, and you have the right idea), and the initial build-out of the operations software stack in a new datacenter.
I shifted full-time focus to software engineering in early 2012 as part of a newly-formed Infrastructure Automation team supporting a variety of provisioning and fleet management tools. Officially changed role to Senior Software Engineer under the Provisioning Engineering group in late 2012.
I took a brief detour in 2013 to the Operating Systems team, to assist with retooling large portions of our provisioning stack and configuration management systems to handle multi-OS delivery, and porting most of our low-level infrastructure to CentOS 6.
As of 2014, I was back on Provisioning Engineering, working on low-level systems provisioning tooling and hardware lifecycle tracking under a broader "manageability" mandate.
Was previously titled "Computer Professional IV"; titles were shuffled shortly after starting.
Came aboard as part of a two-person UNIX administration team supporting Oracle Financials/PeopleSoft services for Finance/Business Services group on Red Hat Linux and Scientific Linux platforms, as well as older Tru64 systems. Roughly 30 systems, with a mix of development, QA, and production in a SAN-connected environment (HP EVA, Brocade FC switches). Completed HP EVA and EMC/Legato Networker training immediately upon joining the team. Strongly involved in several major RHEL upgrade projects and RHN Satellite upgrades and maintenance, as well as backup- and SAN-related configuration and troubleshooting.
As part of a 2009 restructuring, moved into a newly-formed Virtual Services group, supporting VMware and related technologies for lab-wide service. Completed both VMware VI3 and vSphere 4 coursework. Participated in construction and deployment of lab-supporting virtual infrastructure, while continuing to maintain and assist with existing financial/HR-supporting environment.
Came aboard in the midst of a data center relocation project; took on systems management role for all Linux (RHEL 3 and 4) systems and networking/infrastructure gear for highly-available, SAN-connected web- and email-centric production environment, as well as internal Windows, MacOS, and Linux desktop and development environment. Support requirements were broad, including networking (Cisco and off-brand firewalls, Cisco/3Com/Nortel switches with failover), systems, remote management, backups (Amanda, Retrospect), alerting (Nagios), and other duties as required.
Part of a three-person UNIX administration team, focusing on Gentoo and Red Hat Enterprise Linux running Apache, MySQL, DB2, and a variety of in-house software and third-party products in a 24/7 highly-available environment. Initially assisted in a complete data center relocation from Illinois to Colorado without customer-impacting downtime; strongly involved in centralized system configuration management (cfengine, Red Hat Network), migration from local disk to SAN hardware (NetApp, brocade) for DB2 databases, and general maintenance/ongoing operational duties. Participated in monthly on-call pager rotation; reported to Production Operations Manager.
Part of a large team of UNIX administrators responsible collectively for managing a 300+ system (Solaris, Linux, FreeBSD) floor/"open outcry" and electronic trading environment. Platforms range up to several E15k/6x00 systems, with the majority of systems being V880s, E4500s, and lower-end systems for maintenance duties. Initially responsible for QA environment planning and build-out (complete replication of production systems and networks) and a "single sign-on" authentication centralization project; provided a mix of primary and secondary support for a wide variety of internal infrastructure systems (NIS, DNS, NFS, NTP, Apache, Sendmail, patch management) and externally-facing systems (Internet services, order routing systems). Handled system build-out and maintenance of in-house telecom management systems. Assumed primary UNIX administration role for in-house PeopleSoft HR/Financials environment. Coordinated systems-side of a major data center decommission project.
Owner/operator of a Chicago-area technology consulting company, specializing in UNIX systems management and Internet services deployment. Specific projects have included Linux consulting and training, load-balancing and high-availability service deployment, data center relocation management, and custom systems software development.
Sole UNIX architect and administrator for internal development systems and offsite 24/7 environment. Responsible for 50+ servers, running different UNIX variants: Solaris, Linux (Red Hat, Slackware, SuSE, Cobalt, Debian), AIX, IRIX, Tru64, HP-UX, BSD/OS, and FreeBSD. Hardware exposure includes x86, Alpha, PA-RISC, MIPS, and UltraSPARC. Focus on cross-platform solutions and emulation of customer field configurations for product testing. Provided mentoring to developers for UNIX programming issues (C/C++, Bourne shell, Perl, make, linker issues, performance evaluation and tuning), specified and maintained UNIX development tool-chain. Experience with building load-balanced clusters of systems; several Red Hat Linux systems configured identically providing HTTP services (JBoss/Jetty) with shared NFS file storage (Solaris) and Oracle database residing behind a Cisco/Arrowpoint load balancer. Received three "Do-It-Right" employee recognition awards in 2001.
Part of an 8-person team of UNIX and database administrators, managing an infrastructure of approximately twenty co-located systems and an extensive on-site internal UNIX network. Primary technologies were SPARC/Solaris, Linux, Netscape Enterprise Server, StoryServer, NetGravity, OpenMarket Transact, and custom management and CGI components. Served as the primary line of support for developers both on- and off-site (nationally), in addition to regular administration, evaluation, and deployment.
Initially handling oversight, maintenance, and implementation of UNIX-based services, moved quickly into a design and management capacity recommending architecture, software, and general system design. Worked directly with a network of 20 UNIX (Solaris and Linux) and servers, servicing dialup, web hosting, e-commerce, Usenet, email, DNS, and Oracle/Sybase RDBMS customers (and the underlying support infrastructure; NIS, NFS, RAID sets, monitoring, configuration management and revision control, with an availability and security focus). Development in Perl, C, Bourne shell, awk, make, PHP as necessary. Experience with building load-balanced clusters of systems; several Sun/Solaris systems configured identically providing HTTP with SSL (Apache) FTP (ProFTPD) services with shared NFS file storage and Oracle databases residing behind a Cisco/Arrowpoint load balancer (after a lengthy evaluation of products from Arrowpoint, Big/IP, Cisco, and in-house solutions). Received XNet "Quality" award in 1998.
Sole architect and administrator for daily operations of Linux-based ISP service infrastructure, including web, email, Usenet, UNIX shell, PPP/SLIP dialup, leased line and wireless connectivity, provisioning automation development (Perl, bourne shell, C, make), and helpdesk management. Focus on stability, availability, and customer relations. Did extensive work toward stable Linux configurations (1.0 and earlier kernels through 1.2.x). Held executive duties as Vice-President; assumed additional role of Treasurer 04/1996.
These positions pre-date my career in information technology, and are provided here for completeness.
Student computer lab advisor; responsible for helping students with assignments and general troubleshooting for a 48-workstation Windows 3.1(1) and Windows NT 3.51 lab with Solaris, VMS, and Windows NT servers, using Novell Netware as the network platform. Application assistance included various word processing, database, spreadsheet, and Internetworking programs, and interactions between them across platforms. Also provided programming assistance for Computer Science students.
Courtesy Bagger; promoted to Grocery Clerk in August, 1995. As a Courtesy Bagger, responsibilities included extensive work with the general public, bagging of groceries, and light janitorial work. The Grocery Clerk position requires work with the public, handling of cash as a checkout operator, restocking of grocery department, receiving of stock, and light janitorial work. Bagger position was very team-oriented, while Clerk position required more personal initiative. Left due to time constraints with operating Common Internet Inc. and studies at Brandon University.
Worked as a Carpet salesman as summer employment. Worked with various styles of carpeting and adhesives, and dealt directly with customers in providing selling suggestions and offering advice on cutting and laying techniques. Finished work in mid-August to prepare for return to University.
Miscellaneous duties, including grounds maintainance, garbage collection, and other general labor. Left to pursue post-secondary education at Brandon University.
Served as a reporter for The Norquay North Star, collecting newsworthy information, writing articles for publication, and taking photographs of events.
Responsible for running and maintaining the computer systems in an organization that uses a UNIX operating system. A system administrator configures, installs, and maintains computer hardware; deals with system security issues and anti-virus upgrades; troubleshoots and fixes system failures; and handles software and hardware purchases.
Completed the following individual certifications to obtain this Job Role certification: "Disaster Recovery and Planning", "Information Technology Terminology", "Networking Concepts", "Server Administration", "Linux Administration (General)", "Perl", "Unix Korn Shell Scripting", "Customer Assistance", "Listening Skills".
Responsible for running and maintaining the computer systems in an organization that uses a Linux operating system. A system administrator installs, configures, and maintains computer hardware; deals with system security issues and anti-virus upgrades; troubleshoots and fixes system failures; and handles software and hardware purchases.
Completed the following individual certifications to obtain this Job Role certification: "Disaster Recovery and Planning", "Information Technology Terminology", "Networking Concepts", "Server Administration", "Unix Administration (General)", "Perl", "Unix Korn Shell Scripting", "Customer Assistance", "Listening Skills".
Measures knowledge of the key issues and concepts in administering an UNIX environment. This is our core UNIX Administration test and is focused on the general aspects of UNIX that span all UNIX variations. Designed for experienced system administrators, this test covers the following topics: Communications, Devices, File Systems, Files, General Principles, Managing System Resources, Processes, Security, Shell Scripts, Startup and Shutdown, TCP/IP Network, Troubleshooting, and User Accounts.
Measures retention and listening skills. This test assesses knowledge and recognition of everyday spoken English, and it is NOT focused on any specific topical areas. The items presented in audio format consist of everyday spoken English phrases, sentences, short announcements, statements, or exclamations. Designed for all professionals, this test requires that you to listen to passages and then answer questions related to what was said.
Measures knowledge of interpreting a policy guide and resolving customer issues and problems based on policy, procedures, and guidelines within a scenario or reference guide.
Measures ability to administer a server. Designed for experienced administrators, this test covers the following topics: Storage, Backup, Scheduling, Security, Network, Users and Resources, Optimization, Hardware, Software, and General Knowledge.
Measures knowledge of recovery techniques in the event of a disaster. Designed for administrators, this test covers the following topics: Essential Concepts and Terminology, Exposure and Risk Analysis, Disaster Prevention (Avoidance), Planning Fundamentals, Asset Management, Backups and Offsite Storage, Communications, Preparation Essentials, Recovery/Interim Restoration, and Relocation to Primary Site/Final Restoration.
Measures knowledge of the terms associated within the IT industry. Designed for all IT professionals, this test covers the following topics: SCSI Terminology, Processor Terminology, Data Storage Terminology, PC Peripheral Terminology, Operating System Terminology, Application Terminology, Cable Terminology, Network Topology, Network Compliances, HTML Terminology, WWW Browser Terminology, Internet, Security, Computer History, and WWW History.
Measures knowledge of programming using Python 1.5. Designed for experienced programmers, this test covers the following topics: Core Language, Conversions, Internet Modules, Process Management, Storage, and Persistence.
Measures knowledge of programming in Practical Extraction Report Language. Designed for experienced programmers, this test covers the following topics: Basics, Expressions, Functions, Literals, Modules, Statements, and Subroutines.
Measures knowledge of Korn Shell Scriting. Designed for scripting professionals, covers the following topics: Korn Shell Basics, Shell Initialization, Command-Line Editing, Script Creation and Execution, Script Variables, Flow Control, Integer Variables and Arithmetic, Script I/O, Functions, Built-in Script Commands, and Script Debugging.
Measures knowledge of the core aspects of local area networks, whether Windows NT or Novell. Designed for experienced network administrators, this test covers the following topics: Design, LAN Topologies, Network Cards, Network Devices, Network Management, Network OS, Network Standards, OSI Model, Protocol Stacks, Resource Sharing, TCP/IP, Transparent Protocols, Troubleshooting, and WAN Topologies.
Measures knowledge of the most important aspects of RDBMS. Designed for both programmers and administrators, this test covers the following topics: Data Modeling, Design, Normalization, Performance, Procedures and Transactions, and SQL.
Measures knowledge of the key issues and concepts of administering in a Linux environment. Focused on the general aspects of Linux that span all Linux variations. Designed for experienced administrators, covers the following topics: Configuration and Administration, General Issues, Installation, Kernel Configuration and Installation, Networking, Programming Issues, Security, System Administration and Security, and Transitioning from Windows.
Measures knowledge of Sun's Solaris 8 implementation of UNIX. Designed for experienced administrators, this test covers the following topics: Administrator Maintenance, Devices, File Systems, Network Services, Security, Setup and Configuration, Shell Programming, Troubleshooting, and Performance Tuning, and UNIX System Knowledge.
Measures knowledge of programming the C Language. Designed for experienced programmers, covers the following topics: Arrays and Strings, Basics, C Expressions, Functions, Input/Output, Pointers, and Program Statements.
Measures understanding of the Solaris operating system. Intended for administrators working in a Solaris 2.x environment. Concepts covered: Sun & Solaris Terminology, Unix Basics, File Manipulation, Shell Scripting, Startup & Shutdown, Device Administration, User Administration, Printing, Networking Basics, Open Network Computing, Networking Daemons, Security Configuration, System Configuration, Solaris Server Topics, and Common Desktop Environment.
The Sun Fire High-End Server (HES) Administration course provides students with the skill set necessary to identify the features and architecture specifics of the Sun Fire 15K/12K and Sun Fire E25K/E20K servers. These skills include performing configuration and platform administration methodologies supported by Sun on the Sun Fire HES; be familiar with and use troubleshooting tools and techniques available within the Solaris Operating System (Solaris OS) relevant to the Sun Fire high-end servers.
Awarded the G. F. MacDowell Entrance Scholarship based on academic merit. Studied Computer Science in a four-year B.Sc. program; did not complete final year, but instead moved on to Chicago taking on employment in UNIX/Internet field.
Took a three-year high-school accounting course via correspondence, which covered fundamentals and procedures of double-entry accounting, transaction and event analysis, financial statement reporting and interpretation, preparation of financial records and income tax returns, taxes levied by various levels of government, and managerial accounting topics relating to operating decisions.
Attended grades 11 and 12, and received high school diploma.
Attended Kindergarten through grade 9.
References will be made available upon request for specific opportunities.
I was asked a series of questions at one point in my career about my approach to certain topics, and how I felt about management in information technology; I have reproduced my answers below.
Have you ever hired anyone? What qualities do you seek?
As the owner of an Internet Service Provider, I was resposible for bringing on new employees in technical roles. I've become convinced over time that skills and experience are merely a starting point when seeking a new hire; while new skills can be taught, a solid work ethic and a personality pre-disposed to creative problem solving is much harder to come by. Give me a team of people who can think beyond their job description, and ferret out innovative solutions to the problems any business will face over time, and we can collectively achieve anything.
How can you help our company be more profitable?
I'm a stickler for the bottom line. With typical IT budgets being squeezed in response to current economic forecasts, I have a responsibilty to my company to be consistantly searching for more effective ways to perform critical tasks, finding and establishing relationships with more affordable vendors, and carefully reviewing technology spending requests that are channeled through my group to ensure that everyone is taking an equally-hard look at spending. This doesn't mean "never spend anything"; this means being frugal, and spending in such a manner as to maximize the overall benefit to the company.
How do you go about making important decisions?
Research, then debate, followed by "compassionate dictatorship". No major decision should be entered into without a solid understanding of the options involved. Those most impacted by decision must feel as though they are a part of the process, and be given a chance to interject their thoughts. Finally, an individual or a group must take all of this into account, and take ownership of the decision and it's ramifications. By ensuring that all three steps have been completed in a visible and credible manner, while you may never reach universal agreement, you will have achieved a consensus that those affected can accept.
How have your technical skills been an asset?
Having a broad set of skills to call upon has helped immensely in the past, usually to keep me from reinventing the wheel. While I specialize in UNIX and Internet technologies, having a software development education and an understanding of the business lifecycle are invaluable when making purchasing and deployment decisions. This quote sums up my feelings on the matter far better than I could state them myself:
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
Without the ability to adapt, and without a wide array of skills to draw on, you will never be an innovator.
How would you describe your philosophy about management?
There is no one answer to this question, despite the many pundits who would love to sell you a single all-encompassing approach. If a single philosophy is needed, it is this: "always remain flexible". Employees take on any number of different personality traits, all requiring slightly different approaches to help them find their most effective road. Projects within a company never fit a well-defined description; they change and improve over time, and so must those who oversee them. Budgets can change from week to week, so a competant manager will constantly strive to find the most cost-effective approach, while never compromising the integrity and vision of the company. Companies are constantly reinventing themselves; the management staff must be equally flexible if they are to lead the company to success.
Tell me something about yourself that I didn't know from reading your resume.
I'm an avid software developer and researcher. One of my pasttimes is getting involved in open source projects to "scratch an itch", and learning new languages and development methodologies. I am currently most comfortable with Python, C, Ruby, and the majority of typical UNIX "scripting" commands (sh, awk, sed, etc), and I'm comfortable navigating C++, Java, Perl, Tcl, Scheme, and few others. I'm familiar with the Agile/XP approach to the software development lifecycle, and am a strong proponent of the pair-programming and refactoring aspects of the model. I think "Design Patterns" from the "Gang of Four" was a wonderful book put to terrible uses by programmers who can't look beyond it, I understand the difference between forced-induction and naturally-aspirated engines, and I can do amazing things with a can of tuna, a pot of macaroni, and some white cheddar cheese. I've also been told that I have a somewhat odd sense of humor.
What aspects of your job do you consider most crucial?
The single most important aspect of good systems architecture and administration is planning, at both the project and technical level. Balancing time between multiple (often opposing) tasks is key, as well as being able to plan the growth and needs of your systems and users.
What do you do for fun?
You can usually find me doing a wide range of activities; playing video games, working on open source projects, camping with my wife, playing with my dogs, and scuba diving. I'm an avid hobbyist mechanic, finding new and usually expensive ways to squeeze a little more performance (along with a few broken parts) out of my car at the track. You can often find me sitting at a local bookstore in the evenings, usually with a pile of technology books and a cup of some highly-caffienated beverage.