See something, solve something.
/about
Hi, I’m Zack! I’m a software engineer based in Boulder, CO. As a fourth generation engineer, I adopted an engineering mindset rooted in deep analysis and problem solving from an early age. Though my background is in computer science and electrical engineering, I am largely a generalist. My primary strengths are in developing and maintaining scalable software systems, embedded systems, and networking, however I work on a wide range of engineering projects. I am passionate about seeing projects through from conception to completion; the more multidisciplinary the better!
I spend a lot of my free time working on projects that entail electronics and software design and 3D design and printing. On the less technical side, I love exploring the outdoors (hiking, biking, skiing, etc.), playing video games, and fostering deep connections with people.
I am currently back on the job market looking for roles in software and infrastructure engineering. I have professional experience in software engineering, devops, and site reliability engineering. As a generalist and an autodidact, I can be dropped pretty much anywhere and find my way to making a large impact.
/why me?
creative systems thinking
Raised with a systems thinking mindset for optimization and efficiency.
human first
Rooted in empathy and compassion as both a manager and an individual contributor.
self starter + natural executor
Building abstract ideas into simplified solutions. More than 90% of engineering projects in progress or completed.
generalist
I value growth and personal development. I strive to learn as much as I can in as many areas as I can.
/mission + values
I strive to help build a world where a strong sense of shared humanity guides how we live and where creativity and compassion drive solutions through inclusive systems and human-centered technology.
authenticity
compassion
Everyone deserves to be treated with dignity and respect.
perspective
Heterogeneous perspectives are critical for solving complex problems.
community
We’re all in this life together. We should behave as such by providing mutual support to those around us. When everybody is happier, EVERYBODY IS HAPPIER.
efficiency
Efficient utilization of resources means more resources to go around. We need smarter technological design to enable users to more effectively utilize their time and money to accomplish their goals.
creativity
Our world is complex with many complex problems. Abstract thinking is required to solve them.
/projects
Hephaestus
A system to add intelligent convection to radiant heat systems.
challenge
Many homes throughout the world utilize radiant heat systems. These systems are large thermal masses that distribute heat indiscriminately throughout homes. As a result, these systems do not efficiently deliver heat to the zones in which it is needed and are prone to hotspotting.
approach
Radiant heat systems rely on passive convection across the heat exchange fins of radiators. By deploying centrally-controlled arrays of quiet, high velocity computer fans underneath the radiators, active convection is added to more rapidly extract heat from the system where and when it is needed.
development
I wrote the microcontroller firmware in C++ using the Arduino framework for the ESP-8266. The firmware includes OTA updates, WiFi connection, sensor reading, PWM fan control, and mDNS for finding and connecting to the control module. For the nodes, I designed PCBs and 3D printed enclosures. The central control module is written in Python and runs on a Raspberry Pi, which also acts as a thermostat.
outcomes
This system has managed to reduce winter heating bills by upwards of 20% by moving heat from the large thermal mass of the radiant heat system to the zones in which it is required.
technologies + skills used
- Python
- C++
- Microcontroller firmware
- 3D design and printing
- PCB design
- Electronics design
SOS Button
A critical button for non-critical response.
challenge
Elderly people and those with certain chronic health issues may have periods of decreased lucidity. During these periods, contacting friends and loved ones for support can be very useful but hard to accomplish. More drastic solutions such as buttons that contact emergency services exist, however this is likely overkill in such moments.
approach
It’s just a button! Think of the Staples Easy Button. When the button is pressed, SMS messages are sent out to a preconfigured group of responders. Each message contains a link to a response dashboard that provides the contact information of the other responders in order to coordinate a response.
development
I began development with a backend for sending SMS messages to responders and a web service for the response coordination. SMS messages are sent via an old Android phone running an SMS gateway server. A Flask-based web app runs on my home server for the button API and response dashboard. The button, designed in Autodesk Fusion, incorporates an ESP-8266 microcontroller, LEDs, a piezo buzzer, and AA battery power.
outcomes
Currently a work in progress. The hope is to provide friends and loved ones a peace of mind.
technologies + skills used
- Python
- Flask
- C++
- Microcontroller firmware
- 3D design and printing
- Electronics design
PSU Autoscheduler
An app for automatically scheduling watchlist courses.
challenge
While in undergrad, my university used a watchlist system to notify students of openings in fully registered courses. Emails and texts were sent out en masse to everyone on the watchlist, leading to a scheduling frenzy. The first person to get to their computer and schedule the course got a seat. Since I had tested out of most of my freshman year in AP courses, I was a full year ahead. I needed to schedule more advanced courses, however I lacked scheduling priority due to the fact that I was only a sophomore.
approach
I developed an Android app that would automatically schedule courses based on incoming SMS messages from the registrar. Courses were registered within seconds of receipt of a registrar message.
development
Going into this project, I had no idea how the web worked, nor had I any experience with mobile app development. Since there was no straightforward API, I had to reverse engineer every step of the registration process by examining browser requests. From this, I was able to programmatically mimic a user navigating the registration process. I locked myself in my room for a weekend and hammered out a functioning app.
outcomes
Using this app, my friends and I were able to schedule courses with hundreds of people on the watchlist, which would have otherwise been impossible.
technologies + skills used
- Android development
- Java
- Reverse engineering
- Rapid immersion and adaptation