Projects

Internship – Subaru of Indiana Automotive

During the summer of 2023, I worked as an intern for Subaru of Indiana Automotive (SIA). During this time, I learned a lot of important skills in software development and full-stack development. I gained skills in Java EE, JBoss, angular, and proper database design. I also strengthened my skills in problem solving, testing, professional communication and documentation, and overall engineering skills.

I can’t say exactly what I did, but my big project was essentially an organization application for managing internal and external applications for SIA. I also developed various scripts and library management tools and plugins for Eclipse and Python.

For More information, please reach out to me!

ZORO – Zack’s Open Row-Oriented Memory Scheduler

NOTE: This paper has not been professionally published. This paper was written as a research project for Rose-Hulman Institute of Technology ECE532 – Advanced Topics: Computer Architecture. We plan to possibly do further research on this topic and professionally publish this paper. The post will be updated at that time.

Jack Davidson, Zackery Painter

Abstract:

Conventional memory scheduling takes advantage of the row currently open in memory by prioritizing memory requests in that row. Only if there are no more memory requests for the open row does memory switch to another row, based on the oldest memory request in the queue. This First-Ready-First-Come-First-Serve (FR-FCFS) scheduling is standard in modern processors. This paper aims to take advantage of FR-FCFS by implementing a memory scheduler that prioritizes same-row memory requests sent from the memory controller – ZORO.  

We found a slight improvement in activation energy and read latency for larger cache sizes but found minimal changes in row hits for all cache sizes. For smaller cache sizes, our results were worse for all metrics we recorded.

Related Documents

Research Paper:

Presentation

Fish Tank Backup Pumps

Overview

This project is a work-in-progress.

The purpose of this project is to create a backup air and water pump system for my (Zack’s) fish tank.

Why Create a Backup?

Overtime, the water in an aquarium will become increasingly toxic. The main way to overcome this issue is to filter the water using biological and chemical processes. This is usually done through mechanical pumps. However, this can also be done by forcing water up through a filter medium using air pumps. If the main power goes out (such as a power outage), the normal filters are no longer functioning. The goal of this project is to create a simple, relatively cheap, automatic backup pump system.

Basically, I want to create a backup pump system in the case of a power outage. (Power outages are unfortunately pretty common in my current place of residence)

Requirements

Here’s my current requirements:

  1. Run an air and mechanical pump off a single, common 5 volt USB power bank.
  2. The air pump should be enough to run the main air network.
  3. The mechanical water pump should be able to run the main HOB system
    1. NOTE: This ended up not working correctly (see below)
  4. The resulting solution must be simple and mostly cost-efficient

Progress

  1. Block Diagram / Circuit created – Completed
  2. Supply List Created – Completed
  3. Breadboard test – Completed
  4. Soldered Project-board – Completed
  5. Test – Completed (Got real-world results!)
  6. Tweak and Fix any issues – In progress

Known Issues

  1. The project board has a different hole spacing than the relays that I purchased. The current solution looks very bad and is not ideal.
  2. The USB ports are not secured onto the board, this means they can come off easily
  3. The Battery lead is fairly long (Maybe not fix)
  4. The mechanical water pump did not work because the HOB filter starts siphoning through the pickup tube.

Planned Fixes

  1. I will likely not fix the relay because it works and I would rather not break it.
  2. The USB ports will be fixed by putting thick, double-sided tape under the ports.
  3. The battery lead will not be fixed, it will be most-likely hung outside of the main controller
  4. I have no fix planned for the mechanical water pump.

Future Feature Ideas

  1. Attach a micro-controller (maybe Raspberry pi?) to send a text message on power outages.
    1. Automatically power off after warning to prevent power?
  2. Design circuitry to detect pump faults
  3. Design a nice-ish enclosure to put the electronics in.

Documentation

To be uploaded later.

RHIPS-Ext. Assembler

Overview

RHIPS-Ext. Assembler (RHIPS-Ext. ASM) is an assembler written by Zackery Painter. The Assembler is written in Java 8 and was written for Rose-Hulman Institute of Technology CSSE232 – Computer Architecture 1.

The Assembler was designed to be changed and updated easily with additional and different definition files and instruction lists. Additionally, automatic assembling is possible by watching for changes in the input file after first assembling.

Additional Features

  • Automatic Assembling – The assembler will watch for changes in the file and re-assemble when changes are made
  • Automatic Kernel appending – The assembler will automatically append a pre-compiled kernel to the top of the binary file if requested.
  • Side-by-side- The assembler will create an additional file with a side-by-side comparison of the machine code and assembly. The output also contains line numbers. This is useful for debugging.
  • Automatic Human-Readable generation – The assembler will dis-assemble the assembled file for verification that the correct result was created.
  • Basic Labels – Supports basic label replacing and section headings.
  • Data-type conversion – All basic primitive data types are supported (excluding strings, and floats).

Resources

Please contact Zackery Painter at zpainter.1234@gmail.com for demonstrations or code.

RHIPS – Extend Processor

Overview

The RHIPS Processor is a very simple 16-bit processor that is based on the RHIPS processor created by Zackery Painter, John Neil, Anthony Sparks, and Jack Thorp. This processor was created as a class project for CSSE232 – Computer Architecture 1, at Rose-Hulman Institute of Technology. RHIPS-Extended attempts to expand on RHIPS and give a bit of security to the previous processor. RHIPS-Extended is designed and created entirely by Zackery A. Painter.

Links / Documents

FireTV Connect

Overview:

FireTV Connect is a Python library that allows easy connection and control of Amazon’s FireTV Stick or FireTV. The library uses the Android Debugging Bridge (ADB) to connect to the FireTV wirelessly.

Below is a link to the GitHub page and additional documentation.

Why Was FireTV Connect Created?

FireTV Connect was created by Zackery Painter because he wanted to write voice-control software and additional remote applications for his Fire Stick. He decided to publish the Python Library that he created so that others could benefit the library as well.

Links / Resources

Github Repository