CV

Education, experience, selected works and play.

Filters

Education

M.S. Computer Science

Backstory

Working on pre-reqs when COVID hit, so I put it on pause.
Didn't wanna go remote. I enjoy being in the classroom.

Lay off from Ion Channel was catalyst to begin again.

Computer Science Courses

Algorithm Design & Analysis

The core graduate level algorithms course.

Formal Proof Foundations

Proofs are… programs?
Type checking is the same as verifying a proof? WHAT?!

Software Engineering

One of the most practical classes I took.
Professor LeBlanc (opens in a new tab) sheds wisdom about engineering principles.
We often don't think of software as "engineered" since it is abstract and not physical in nature, but that is a poor mindset.
Software can certainly (and must) be engineered.

Internet, Web & Cloud Systems

Also one of the most practical classes I took.

Professor Wu-chang Feng (opens in a new tab) does excellent work and spends a lot of effort to keep re-inventing the course and keep it up to date.
The goal is to give students an opportunity to learn about current technologies.
All of his course material and labs are also available at the above website for free!

This meant our final project required us to expose handful of APIs as "tools" (via MCP) to a LLM.

Functional Programming

One of my favorite classes. The Haskell language… so concise and clean.
Pure vs effectful code, yes. Pattern matching, duh! Lazily evaluated hunks, why not. Property based testing via QuickCheck (opens in a new tab), woah. And monads, sure.

Taught by Dr. Yao Li (opens in a new tab) who did an excellent job of keeping it fun and light while shepherding us through mind bending concepts.

For the final project – I wrote… this story… about… Santa and… monad transformers…

I'm not sure how good it is at illustrating monad transformers, but
the narrative and character interactions? It may be one of my finest works.

Artificial Intelligence & Machine Learning Courses

  • Math Foundations of Emerging Technologies
  • Artificial Intelligence
  • Machine Learning
  • Deep Learning
  • Reinforcement Learning
  • Trustworthy AI
  • Agentic Software Engineering

Computer Vision Courses

  • Foundations of Computer Vision
  • Intro to Computational Imaging

B.S. Electrical & Computer Engineering

I started out in Industrial Engineering (same early curriculum as Civil/Mechanical).
I didn't like the idea of standing in a factory measuring people and eliminating their jobs…
So at the end of the 2nd year I got caught up over the summer and switched to Electrical & Computer Engineering.

Mechanical Engineering Courses

  • Systems Dynamics & Controls
  • Engineering Economy
  • Computational Methods for Industrial Engineering
Statics, Dynamics, Strength of Materials

Enjoyed these courses. The spatial thinking… I can still feel it today.

Engineering Graphics & 3D Modeling

Designing parts in Solidworks.

Introduction to Manufacturing Process

Metal shop. One of my favorite classes.
Made a single hole punch… It still works!
I loved zeroing out on the mill…

Mathematics Courses

  • Differential Calculus
  • Integral Calculus
  • Vector Calculus I, II
  • Applied Differential Equations
  • Discrete Mathematics
  • Matrix & Power Series Methods

Science Courses

  • Physics with Calculus I, II, III
  • Chemistry for Engineering Majors
  • General Biology

Computer Science Courses

  • Intro to CS I, II
  • Computer Organization & Assembly Language
  • Data Structures
  • Operating Systems
  • Computer Networks
  • Social & Ethical Issues in Computer Science

Electrical & Computer Engineering Courses

  • Electrical Fundamentals I, II, III
  • Electronics I, II
  • Signals and Systems I, II
  • Digital Logic Design
  • Energy-Efficient VLSI Design
  • Introduction to Probability & Random Signals
  • Power Electronics
  • Transmission Lines
  • Electric and Magnetic Fields
  • Engineering Magnetics
  • Antennas and Propagation
  • Microwave Design Techniques

General Education Courses

  • English Composition
  • Technical Writing
  • Argument & Critical Discourse
  • Appearance, Power and Society
  • Geography of the Western World
  • Sustainability for the Common Good
  • Introduction to Macroeconomics

Extracurricular Courses

  • Billiards
  • Basketball
  • Soccer
Music: Native American Flute

Fond memories. This class was split between playing along as a class (sometimes an awful cacophany) and history.

Mind you, this wasn't some history merely of facts and dates to be memorized (forgotten).
This was a history of direct experience (what may be referred to as "oral tradition").

Towards the end of the series, on a whim,
I brought a friend to class who played the guitar.
After class we were jammin', messin' around.

The instructor walks up to us and asks,
"Are you going to play together?"

My response was, "Oh, uh, we just were."
Jan Michael Looking Wolf says, "No, I mean, in the future."

We both look at each other and nod, "Sure, yeah".
Jan Michael then takes the stock, generic, standard-issue flute out of my hand.
He gives to my friend.
He then hands me his flute.
"This is yours now."

It's a beautiful instrument. It sounds incredible.
Deep, rich sounds, both high and low. Sounds that give you goosebumps.

After writing this, I went and sat and played.

Thank you, Jan Michael Looking Wolf (opens in a new tab).

I didn't just receive a flute that day.
I received a life long lesson on generosity and making an impact in someone's life.

Employment

Bold Reuse

Backstory

As I returned to school full-time, Bold hired a fractional CTO to build out a team and continue with the grant.

  • Support daily operations software.
Backstory

Worked full-time during a 3 month break in school and over the summer.

The observations and intuition earned working in our operations meant
nobody had to waste time, sitting around, trying to explain to me
what our software needed to do.

It looked like I was just sortin' cups, but I was architecting our software…

First, I started hacking up our "Jotform" for intake of day to day operations data.
Then… Airtable scripts.
Once the hacks got ugly enough, it became clear we should just build what we need.

Daily Operations Software
  • Develop software tailored to our daily operations.
SBIR Grant
  • Author a successful grant proposal for Phase 1 of SBIR 2025 to develop a MES for the circular economy.
Automated Counting Systems
  • Design, model and 3D print an installation-free mechanical system which triggered on the rounded corners of standard dish racks.
  • Curate dataset and train an object detection model for counting dish racks through the wash line.
  • Member of team responsible for new contract with Moda Center.
  • Perform breadth of daily operational duties.
  • Play around with manual waste sorting techniques. Otherwise, pride in sorting as fast as possible.
  • Find efficiency, flexibility, and rhythm with team through repetive work.
Backstory

Started at the bottom.
Ripped open a lot of garbage bags, sorted a lot of cups.

3DIO

Makers of the coveted binaural microphone which mimics human hearing.

Backstory

I inherited a proposed design for the 2nd generation of 3DIO's signature stereo microphone.
Handed back a schematic, PCB design, and PCBAs.

Switching Power
  • Implement a switching DC/DC regulator for powering from phantom voltage.
Logic & Parts Simplification
  • Eliminate an expensive analog switch, simplify logic for battery monitoring and power delivery.

Ion Channel

A software security startup focused on SCRM.
In other words, we look your software's dependencies to look for vulnerabilities.

  • Extract metadata from 1.5M repos via GitHub's GraphQL API (Docker, AWS Fargate).
  • Transform dependency relationships into a graph (PySpark) to visualize and identify risks (Gephi).

Timberlab

The mass timber manufacturing branch of Swinerton.

  • Interpret and verify blueprints. Ensure myself and team's marks are accurate within 1/16th inch.
  • Entrusted with complex hand fabrication tasks.
  • Design a router jig for a fire tape channel: saved many hours across hundreds of pieces.1
  • Design a plunge chainsaw jig which allowed operating with one person instead of two.

Software Technology Group

A jack-of-all trades software agency.

  • Develop back & front-end for medical wire spooling machine. (InfluxDB/MongoDB/Node-RED/JavaScript/Vue)
  • Integration of laser sensor and PLC for map of ceramic substrate height at nanometer precision. (C#)
  • Mechanical design of robot end effector for United States Geological Survey soil sampling lab. (OpenSCAD)

EETech

A software agency for the electronics industry specializing in e-commerce, search engines, and design tools.

I ended up working on a part simulator for a passives (resistors, capacitors, inductors, etc) manufacturer.
We migrated a mysterious never-to-be-touched simulation binary to be exposed by a more modern C# web framework.
  • Develop electronics simulation web application (SQL/C#/.NET/TypeScript/Vue).
  • Take lead on client communication, meeting organization, feature definition & implementation.
  • Assist with scoping additional work & project management where I could save us time.

Folktek

Makers of analog electronic music instruments.

  • Responsible for mix of designs at low to medium volumes (thousands) from idea to PCBA.
  • Design analog logic functions from discrete components and analog ICs.
  • Ensure analog audio signal integrity in mixed-signal designs with switching regulators.
  • Developed AVR MCU firmware for timer configuration, clock generation, analog sampling, capacitive touch, etc.
  • Develop scripts for semi-automated PCB placement and routing, leveraging KiCad's Python API and open-source tools.
  • Manage library of symbols, footprints, and schematics via git submodules.
  • Hire a small team to assist with circuit prototyping & in-house PCB assembly.
  • Design 3D printed bit for common nut to decrease assembly time by an order of magnitude.

Novus Labs (opens in a new tab)

  • Primary role: electronics design & in-house prototyping (breadboard, schematic, PCB, SMT assembly, reflow & rework).
  • Developed microcontroller firmware for driving motors & solenoids, Bluetooth & Wi-Fi modules, GPIO/UART/Serial/I2C/SPI interfaces.
Capacitive Touch Screen Test Automation

Known as the "Soft Touch" (in constrast to our CNC that punches screens).
Originally, we tried etching ITO on glass and plastic (by hand first).
Then, we ordered a big production run on glass professionally. This was delicate and costly to iterate.
Because the setup was the most expensive part, I did a bunch of CAD to try out many patterns at once (a bad idea for a substrate which was unproven at the larger scale).
I made flexi-PCBs which were hot air mounted to the glass via conductive (only in vertical direction) tape.

After that, I said hey, why can't we do this with a regular ol' PCB? A went down an entire rabbit hole…
It was an experiment in making a PCB with a grid of touch points on one side and ton of relays on the back.
This way, I could experiment with a ton of sizes, patterns, trace thicknesses, etc for cheap.
Success on some devices but not others…
Trying to actuate points with a transistor… Sourcing the every single kind of relay, the tiniest reed relays I could find…
Sourcing a ton of different dieletrics to place between screen and PCB…
Clamping the PCB such that the force is spread equal & making thicker boards to compensate…

In the end, we decided that we were chasing a moving target.
Each capacitive touchscreen and the underlying electronics & firmware driving it are so vastly different and changing over time.
It was simply more reliable to have a CNC and metal fingers punching the screen.
  • Create model of capacitive touch-screen overlay PCB (Python, Eagle CAD) for parametric exploration.
  • Electronics and CLI for driving a bunch of relays to perform interactions with devices under test and capture device output.
IMU Benchmarking, Test Automation & Report Generation
Really enjoyed this one. Was one of first software projects. Learned the proverbial lesson not to automate everything up front. My manager might remember me being stubborn about being involved in this project. I just wanted to write some Python.
  • Create fully automated test execution and report generation (Python, bash) for benchmarking IMUs.
Modified Airsoft Gun for VR
A journey of part sourcing, a dremel, and solenoids.
  • We got tasked with helping some VR company doing doing a proof of concept for their zombie game. Mission critical work.
  • I scrolled endlessly through datasheets of solenoids and contacted every supplier I could find to get samples to play with. This little toy gun needed to kick as hard as possible, it ended up being more than you expected.
  • Then, the airsoft gun and I spent some quality time with a dremel to drop in the solenoid, lithium ion cells, and route wiring.
  • Next of course, I threw an Arduino at it. Turns out the Arduino loop isn't fast enough to put out a short enough pulse to whatever solenoid driver IC that I found. Wide (and somewhat variable) pulses from the Arduino were making that solenoid heat up. At the time, even though I was supposed to be an electrical engineer, another one of my colleagues ended up making a board for our "one-shot". Later, as I got deeper into the analog electronics world at Folktek, I'd learn that duh, we have all sorts of analog ICs for timing stuff this.

Oregon State University

  • Verilog for FPGA to configure buffers and initialize hardware for Ultra-Wideband tool tracking project.

Restaurants & Kitchens

  • As a busser you learn to move quickly, balance immediate needs vs overall efficiency, and constantly re-evaluate priority.
  • Helped launch a new pizza restauraunt, then chaos at the Old Spaghetti Factory, then some finer dining.
  • Learn how to take care of a knife. Dice a lot of potatoes and other veg.
  • Sear then bake a lot of chicken and beef.

Independent

  • Establish respect between all parties. Make quick decisions of compounding effect.
  • Prioritize safety while cultivating the flow of the game.

Projects

  • A version control authoring model playing on the idea of "stacks" of changes but adds "types".
  • The unit of change is a trail which is simply a segment of commit history (or, a stack of changes).
  • A trail must match a "pattern". In other words, a trail is "typed". Types are configurable.
  • The model also includes a multi-boundary history. One boundary preserves an immutable trunk, the other end allows dumping commits onto the tip, and in between is a malleable middle zone.
  • The unit of change is not an individual commit, but instead the formation or amendment of a trail.

inistory

Graduate Project

  • A model for authoring source code history which binds two histories into a single narrative.
  • A question-based model for decision history is bound with segments of commit history.
  • Within a bound segment, accepted answers must establish full (line-level) code coverage.
  • In partnership with Portland Underground Grad School and financial support from Cinder Staffing,
  • Developed curriculum and instruction for an all ages, hands-on, four session electronics course.
  • Spent an insane amount of time preparing before each session only to revise my strategy completely each time!

Wireless Hand Sensor

Undergraduate Project

  • Glove with capacitive touch points to activate macros and an inertial measurement unit to move the mouse pointer.

Volunteer

  • Mentor for undergrad computer science student.
  • Brief stint here until they closed to move into a new location.
  • Similar brief stint at the local food pantry.
  • Guide patrons through
  • An organization providing freshly prepared meals from gleaned ingredients for pick up.
  • Helped with kitchen prep. Built some garden beds.
  • A collection of farms on undeveloped lots in the city (owned by OSALT (opens in a new tab)).
  • Started as an apprentice at the Fargo Forest Garden (opens in a new tab) (mix of orchard and garden).
  • Fun time working with an ever flowing mix of people on whatever needed to be done that day… Weeding, hard scaping, cultivating, harvesting, distributing, etc.
  • First took a class making vinegar out of blackberries.
  • Spent a season out here helping weed, cultivate, and transplant. Also, learned what not to worry about.
  • Everytime I stepped foot here… I felt instantly healed. I can remember strolling through the rows…
  • Observed how you may bring many plants and fungi together.

Backstory

This was during COVID. It was an attempt to be a mentor remotely.
I tried introducing a student with no experience to programming via web development concepts.
This student was struggling in high school in general, so I hoped learning to make a website might bring some momentum to other areas.
We continued with bi-weekly meetings for roughly 6 months, then less frequent.

Often, another individual supporting this student would attend our remote sessions. I quite liked this 3-way dynamic because it gave an opportunity for the two individuals to work out a new concept together, try explaining to each other, etc. It broke up the "student vs teacher" dynamic.

I'm not sure that I was very successful, but in hindsight I hope that I at least demonstrated consistency in a time of uncertainty.
We also worked in other areas besides software: homework for other classes, accountability, communcation, and on.

Later, I was proud to learn that this student ended up graduating by taking a focused approach of one class at a time at an accelerated pace.
I would like to think I had some small part to play in that, maybe nudging them ever so slightly.
Well, I at least know they were proud when they told me that they graduated.

Curriculum

I was making up lessons the night before or on the fly as
the student expressed interest in something specific.
Below is a rough idea of the progression.

We used replit for multi-player sessions.
We first introduced vanilla HTML. We made some elements and looked at HTML attributes.
Then we made some pages with a navigation bar.

Much time was spent with the student typing out the syntax by hand.
I realized that we needed to learn some computer fundamentals such as
keyboard shortcuts for copying and pasting, undo, opening a new tab, etc.

To try to make things interesting, we look at making elements for
embedding songs and music videos into the student's website.
We then introduce CSS and JS to make the nav bar friendlier.

Now that we have JS, we integrate some APIs into his site.
Sticking with the music theme, we found the free MusicBrainz API and make a page where
we can type in an artist's name and show the information that the API returns.
I give an inspiring rant about the importance of what we just did…
communicate over the internet with another computer!
From my notes (again, really inspiring stuff…):

We are communicating with another website on the Internet. So we are introducing some really powerful things here. This is how all of the Internet communicates with each other: request, response.

But at this point I could tell the student was getting a little more engaged.
We'd be at the end of a 2 hour session, I'm trying to wrap it up and they'd be telling me,
"Wait, you said we were going to finish this topic today."

We also introduced a tool called Blackbird School (now Blackbird Code).
This provided structured lessons that the student could progress through at their own pace
instead of waiting on me.

We continued to piece away at the fundamentals… introducing loops, lists, etc.
We used loops and lists to draw lines on a canvas for the home page to animate the word "REAL".

At the end of it all the student had their own personal site to play around with and keep adding to.

Play

Soccer

Have played all my life… mostly indoor lately.

Lacrosse

Got my self beat up for a while in middle school, high school and even the first year of college.

Basketball

Played a lot of pickup for 3 years could at least play defense layup and finally had a little mid range…

  • Learn through cultivation and observation of the plants' responses.
  • Play with soil; dig deep, screen clay, compost, prepare mixes, etc.
  • Saving seeds, starting seeds indoor and outdoor, transplanting endlessly…
  • 3D print pulleys for managing lighting distance in indoor greenhouse.
  • Experimenting with permaculture & agroforestry techniques: I have set up a few guilds!

Certifications

Azure Developer Associate

My employer needed to renew their Microsoft cert. I volunteered.
Over the weekend, I ordered some pizzas, and crammed (opens in a new tab). Got a decent score.

Awards

  • Part of a team which built a location-based city resource aggregator for individuals living on the streets.
  • My role was "validation": walking around downtown engaging with people. It seems I am naturally approachable and a strong listener.
  • We came in the morning of day two and a hotshot on our team whipped it up on Firebase overnight.
  • We learned most people knew about a lot of the resources, but trying to get into a shelter to get a bed was often times impractical. You might hear about an opening but show up to find out it's full.
  • From there, we refined the idea to focus on bed reservation. However, we then learned from shelters that this is not so easy. People actually need to show up in person first for a shelter to do their own dilligence to take them in.
  • In the final demo, people were awed by the software that was built. But I think what won us the competition is when, after being silent, I snapped forward in response to a question and began talking about everything we learned from people on the street.
  • Lead team on building a PCB quote automation system. In our final demo, we were offered funding on the spot.
  • At the time I was working as an Electrical Engineer at Cinder Solutions and having to order a lot of boards.
  • As a naive engineer and trying to be frugal, I'd shop around… but my time usually never outweighed whatever discount I found or negotiated as a first time customer. It was essentially cost prohibitive to spend time comparing prices for a single prototype single quote.

Notes

1

Was pretty cool..! It slid on with no clamps needed! It was symmetrical and you could flip it over to do the other side without rotating the timber! (if you didn't mind sitting on the ground…)

Wooden router jig fitted over the end of a timber beam with a cordless router resting on top
Figure 1

Site settings

Reading progress
Reading progress