Hi I'm,

Ethan Honzik and I do:

please enable javascript

please enable javascript


Job History

SPS Commerce

Software engineer
  • Spearheaded development of Jira bot written in python
  • Wrote a chrome extension that integrated a Java abstract syntax tree parser into an internal browser based Java editor for live error detection
  • Contributed to internal python based tooling

University of St Thomas

Undergraduate Computer Graphics Researcher
  • Implemented an algorithm that can produce novel views from a collection of depth enhanced panoramas (CDEP) for VR viewing
  • Contributed a computer shader based interpolation algorithm
  • Created a unity implementation of the algorithm

Luminary Lighting

Lead Engineer and Embedded Software Developer
  • Designed and brought to market a user friendly wifi enabled addressable LED strips
  • Built on top of open source MIT licensed software to create firmware for the ESP8266
  • Utilized CAD to model the product casing and sourced parts from local print farms

Batteries Plus

Customer Service / Consumer Electronics Repair Technician
  • Performed mobile phone repairs
  • Helped customers with technical troubleshooting
  • Provided general customer service

Education

University of St Thomas

Bachelors in Computer Science

Some of My Work

Luma Graph

A tool for building real time visuals built from scratch


Luma Graph is a visual data flow "programming language" of sorts that is used to create procedural real time visuals. I developed it from scratch in unity. Initially built for creating LED strip effects, it has since grown into a tool I use for creating general music visuals. More info and the source are available on my github.

A video built in Blender utilizing Luma Graph

A real time web implementation of a Luma Graph recording viewable here

PCB Design / Embedded Development

A wifi enabled addressable LED controller board designed by me

Some of My Embedded Projects

  • A Java program that does screen recording and sends the data over serial to an arduino running custom C++ firmware
  • C++ Firmware that runs on a that runs on an arduino leonardo acting as a midi controller. A multiplexer is used to do capacitance sensing on piano keys printed onto a PCB. Variation in pressure applied is used to do after touch.
  • C++ Firmware that runs on an arduino leonardo and sends keypresses mapped to a IR remote.
  • A Java program that receives midi data and forwards it to C++ Firmware over serial for audio synthesis on an Arduino.
  • C++ firmware that runs on an ESP8266 proving a web dashboard showing current humidity levels and triggering an alarm if a threshold is met.

Virtual Reality Graphics Undergraduate Research

CDEP stands for Collection of Depth-Enhanced Panoramas. It’s an algorithm designed to reconstruct 360-degree views from a novel viewpoint using a dataset of depth-enhanced panoramas. The depth information can be obtained either from a LIDAR scanner or by applying structure-from-motion algorithms to estimate a point cloud, which can then be converted into depth values.

I created two implementations of this algorithm in unity written in C# and HLSL. Additionally I contributed a interpolation algorithm that utilizes compute shaders to create smoother transitions between captures. The repo can be found here.

Game Development

I've been making games in some form since 2016. Though, haven't done much game development since high school. Back in 2017 I started a Rhythm game shown in this youtube video. It is able to dynamically generate levels in real time from player song files. I abandoned it due to scope creep and a general feeling that the game just wasn't very fun. It was essentially a music visualizer pretending to be a game. After this I tended to just make music visualizers.

A flappy bird clone I built when I was 15

Robotics

I am a current FIRST robotics alumni. Back in high school I was the team captain and lead programmer of the team. Since graduating I've mentored the team helping teach programming and electronics to high school students.

Accomplishments while on the robotics team

Computer Vision Driver Assist / Autonomous driving Features With OpenCV

Targets were able to be tracked by an algorithm running on a raspberry pi. This data was then streamed to the main on board computer over ethernet. This allowed for both fully autonomous routines as well as driver assist features such as target tracking upon button press. The repos for this are here:

A network proxy used to connect the robot to the Unity Game Engine

Most of the networking on the robot was done with the network tables API provided by the WPI Library. I wanted to integrate unity with the robot and so I built this application to serve as a layer between unity and the robot.

Github link
Robot Simulator

Back in 2018 we needed a way to train for the robotics competition but didn't have access to the robot. As a solution I created this simulator application written in unity. The simulator mimicked the look of our, at the time, unfinished robot. It also had a 1 to 1 recreation of the arena taken from the FIRST provided cad files.

WEBGL and HTML5 Canvas

A Typescript and Parcel template for p5.js

I'm a fan of p5js.org for creative coding projects. Thing is, I much prefer Typescript to plain Javascript and I like to be able to use NPM to manage my packages with es6 syntax. For various reasons p5js doesn't always play well in these environments and so I made this template both for me and any others that might be interest in using modern web tooling with p5. Usage instructions are documented for others in the repo readme.

Freelance Blender VFX Work

I've done some freelance work with blender. One client I've worked with is Xeuphoria. This video was made in blender for an album release