My Portfolio
This site is intended for use by potential employers and their agents. It serves as a companion piece for my resume and CV.
What I Can Do for You
This site, developed in PHP 7 using the Laravel framework
Instance Management Process, a server instance management console written in PHP
Recipes from the Chef cookbook used to provision this site
Effector for a 3D Printer, designed in Fusion 360
The effector after printing and assembly, along with some custom Arduino boards I made
Hall-Theta Z-probe, designed in SketchUp
A fully 3D-printed lamp with custom electronics and firmware
My custom-built linear delta 3D printer, including a counterweighted "flying extruder" system and many other accessories I designed
From a business or institutional perspective, my best traits are my ability to solve hard problems, even if I'm encountering them in unfamiliar territory; and my experience across several disciplines, which gives me a great depth of knowledge that I can use to solve problems for you.
Positions Sought
This list is not exhaustive. If you think my skills would be a good fit for a position not listed here, let me know!
- Linux System Administrator
- Back-End PHP Developer
- Embedded/Firmware Developer
- Machine Learning Developer
- NOC Engineer
- Product Developer
- CAD/CAM
- Small Electronics
- Robotics (3D Printing, CNC, articulated arms, balancing, bipedal/quadrupedal, drones, etc.)
Areas of Expertise
- Linux System Administration: Debian, Ubuntu, RedHat and CentOS. Apache, MySQL, PHP, BIND, dhcpd, Exim, NFS, Samba, iptables. Configuration management with Chef. Atlassian JIRA and Confluence. vBulletin. Custom kernels. Software and hardware RAID. Site migration, post-intrusion sanitization. VMs, KVMs.
- Software Development: PHP, C/C++, Java, C#, Assembly. Version control with Git. Client-server (Web, RESTful encrypted internal services for configuration management). MVC/MVP Frameworks, including Laravel and Joomla. Botnet defense. Game development. Preferred methodology: SOLID.
- Embedded/Firmware Development: Atmel AVR (Arduino) and Broadcom ARM (Raspberry Pi) platforms. Device drivers (DMA/PWM). Bus protocols: I2C, SPI, and WS2812B (1-wire). Analog/digital GPIO, joystick calibration, physics simulation, pixel shading, EEPROM.
- Network Operations (NOC): System monitoring, troubleshooting, escalations.
- CAD/CAM/CNC: Autodesk Fusion 360, SketchUp, Blender. LinuxCNC (emc2). Probotix 3-axis CNC routers. 3D-printed fixturing.
- Electronics: Circuit schematics, prototyping single-board computers (Arduino) and other circuitry on breadboards and perfboards, power supplies, wiring harnesses, oscilloscopes and multimeters, solid-state relays, PCB design, soldering.
- Robotics / 3D Printing: Design, construction, calibration, troubleshooting, repair, accessories, upgrades, carriages and effectors, failure analysis, firmware development (specifically, heuristic calibration and real-time position correction). FDM and Stereolithography. G-code post-processors. Hand-tuning PID loops for heaters with large and small thermal masses.
I'd be happy doing any combination of these things.
Advantages
- I have corporate and entrepreneurial experience. I've worked for nationally-recognized companies, but I've also worked for three startups. I founded one myself, and co-founded another.
- I focus on the customer perspective. What I produce is not just something I give to someone else. I take pride in my work, and I want to ship a product that I'd enjoy using myself.
- I'm a proficient self-directed problem solver. When I ran a gaming service provider, there was no one to escalate to. Later, when I worked on device drivers and heuristic algorithms, I had to solve very difficult problems without any help. I'm used to working without a safety net.
- I document and track everything. I've been using JIRA and Confluence for years, and I've also used Wiki-style systems. I use Git for source code and other assets. I keep a daily journal, and use it to measure my performance over time.
- I enjoy learning new things. I've been programming since the second grade. I started working with electronics around the same time. I kept programming and building electronic circuits in junior and senior high. In college, I took every programming language I could get my hands on, even if I didn't need it for my major; and when I wasn't programming for class, I was programming something for myself. After I graduated, I did software development to earn a living — and for fun. College, of course, doesn't have enough time to mint good developers. Not by itself. In the 2010s, I got back into electronics, and began to work with 3D printers and CNC routers. These occupations all require life-long learning, and I've always been predisposed to do that.
- I've worked in multiple areas of software development. I've been using PHP and MySQL since 1999, but I've done much more than that. I wrote a device driver for the Raspberry Pi that the primary hardware vendor thought was impossible to write. It was so complex that I had to buy an oscilloscope, but that didn't stop me. I also wrote a heuristic calibration system for 3D printers that uses parallel simulated annealing to solve a 13-dimensional problem — which would take days to solve using an exhaustive search — in a few seconds. Both of these projects were very difficult. It didn't matter because I never give up.
- I don't just do software. 3D printing, CAD, CAM, 3-axis CNC milling, game dev, firmware, electronics, heuristics — these are all skills I can readily demonstrate. You may not need me to do all of those things, and that's fine. The point is that I'm highly adaptable, and have never been afraid to learn something new. Greater diversity in problem solving capability — including the attitude that there's always something else I can try — will benefit your mission. That's part of what I bring to the table.
- I have enough software dev and Linux sysadmin experience to bootstrap the IT side of a business from scratch. I launched a game service provider in 2010. I did all of the coding, and all of the Linux system administration. We had servers in data centers across the country. The OSes were hardened, and I wrote code that stopped a botnet attack in its tracks. The attackers never bothered trying that again against any of our servers.
- You can count on me. When I was working in a network operation center (NOC), someone crashed a truck into a power pole down the street, knocking out power to the data center. The automatic transfer switch failed to put the data center on generator power, leaving hundreds of millions of dollars of assets at the mercy of rapidly-draining battery backups. I wanted to be a part of the solution to that problem, so I volunteered to pull a 24-hour shift. Years later, I had to migrate a website, and I knew from timing a test run that the migration would take a 24-hour shift. So, that's what I did. I do require a good work-life balance, but if there is a genuine need for me to do something like that, I'll do it.
- I can make tough decisions. If there is some adverse condition, such as an emergency, I'll either handle it myself or escalate according to procedure. I have no problem taking full responsibility for mission-critical systems. When I was running the entire technical side of a game service provider by myself, there was no one to escalate to, and I liked that just fine. As a private pilot, I have been faced with difficult and even frightening situations; and despite my inward feelings, my outward response to them has always been cool and measured. These qualities have served me well as an employee at large businesses, and as an entrepreneur. They will serve you well if you hire me.
My contact information is on my resume, and my references are on my CV. Call me, or send me an email. Let's talk about what problems you're trying to solve, and what I can bring to your organization.