Summary
My name is Dylan Dy (or Dylan-Matthew Garza).
I graduated with a degree in Computer Engineering (December 2024), but its kinda means nothing beyond
letting me have a job that requires a degree.
If you are reading this, you probably care enough to know I am currently* working as a Firmware Engineer
at Resideo in the NYC Metropolitan Area.
*start date: April 7
In terms of technologies, I am very interested in Linux, embedded Linux, programming (systems, embedded, firmware,
and occassionally web). I also enjoy teaching those mentioned interests to people and sharing what I know about
them.
Other than that, my main "hobby" is
Olympic Weightlifting (also known just as Weightlifting), which should not
be confused with
powerlifting,
bodybuilding, or
CrossFit.
Software I enjoy
A brief summary of some tools I enjoy using and working with:
NixOS(currently as daily driver),
Artix Linux, and
Void Linux.
neovim/vim and recently
nixvim (neovim configured by nix modules) since
terminal-based text editors are for serious software developers.
ed: The early text editor that was used to write the
C programming language and UNIX. Only REAL engineers use this one. Despite no code-completion,
integrated debugger, syntax highlighting/checking, it was used to write 2 very relevant technologies of today.
Just a parallel to common modern development environments and the people who use them :-)
dwm (tiling window manager)
but nowadays to be future-proof by using Wayland,
I now use hyprland (with dwm-like bindings and behavior).
tmux is pretty neat.
Hare Programming Language: A C-like systems programming language. I really just like the Hare mascot.
nob.h: A header-only library that writes a program that rebuilds itself and your project
by only using a C compiler. By the great tsoding
Projects
These are some projects I am pretty happy about/proud of.
httpS server(yes http"S")
Click to view more details
- I aim this project to replace httpd/apache that hosts this website so I can HOPEFULY have
more defined control of connections thats "easier" for me to manage instead of
figuring out how to configure httpd/apache. Still early in development (as of February 28).
- I abuse a finite state machine approach to parse through the headers as it makes the most
sense (assuming everything there is correct)
Server properly handles HTTP headers and striclty allows only GET
and strictly serves files that are explicitly defined.
Implemented SSL/TLS with
openssl and testing with a self-signed certificate
with mkcert.
Using Tsodings nob.h to build the program.
Currently implementing asynchronous behavior on the TCP listener socket and client
sockets with Linux's
epoll in order to allow multiple
connections on a single thread. Using another state machine approach to keep track of what part
of exchange (TLS handhsake, reading header, writing response, closing).
Custom Status Bar in Rust with GTK4
Click to view more details
I wanted to implement my own status bar and not rely on as much abstractions as the Eww widgets bar.
This status bar is implemented with GTK4 using the Rust bindings as well as the GTK4-layer-shell rust
bindings since this is primarily running on the Hyprland compositor. I plan to one day port it to dwm
with dwm's IPC patch. I port over a lot of the rust code I used for the implementation in the Eww widget
bar to this. Luckily the language Eww widgets used was very similar to the relationship to how GTK objects
behave.
custom bar using Eww widgets and custom modules in Rust and C
Click to view more details
utilizing the
Eww widget system. The bar does not use any silly, slow scripts to obtain system
information. It instead uses compiled binaries written in real programming languages meant for
creating useful software. The compiled binaries dynamically generate the s-expressions for eww to generate
the widgets with realtime information. The different ones I have written:
- eww-workspaces: dynamically shows workspace numbers
as clickable buttons, allowing for differentiation between the active one and the open ones.
- eww-windows: dynamically shows open windows across
open workspaces, while listing workspaces by most recently used (clickable with icons!).
- statuses(in rust): Shows SSID, WiFi connection strength,
and ram usage.
- statuses(in C): Shows battery, time, and date.
Multi-input automotive testing device implemented on a heterogenous architecture (ARM Cortex-A7 and ARM Cortex-M4)
where I was responsible for multiple Software/embedded Software components.
Click to view more details
A link to the presentation here
IMPORTANT NOTICE REGARDING THE WORK DONE: ALL ASPECTS OF THE PROJECT DISCUSSED HERE WAS DONE
BY ME AND ME ALONE. ANY PERSON(S) CLAIMING OTHERWISE IS BEING FACETIOUS. THE SOURCE CODE WAS
NOT WRITTEN WITH ASSISTANCE FROM ANY OTHER TEAMMATE. THE PRESENTATION FOR THE PROJECT WAS DONE
IN COORDINATION BY THE TEAM BUT ITS OVERALL PRODUCT OF IT AND THE PORTIONS DISCUSSED IS DONE BY ME AND
ME ALONE -- DYLAN-MATTHEW GARZA AKA DYLAN DY
- Custom embedded Linux image using the
Yocto Project
using STM32MP157F-DK2 with custom layer.
here. Built/ installed other software I wrote
for the project. Uses custom generated device tree from STM32CubeMx and patched stm32mp1 Linux kernel
device tree. Also used a custom defconfig for loading necessary kernel modules.
- WebAssembly (WASM) application written in Rust
using the Yew framework.
Simple user interface
for device testers to interact with to see real time results and remotely test devices.
- Custom API application server written in Rust
,meant to interact with server to load ARM Cortex-M4 firmware
and communicate to firmware regarding the state of the test, results, and recoreded realtime data
saved to the kernel trace buffer. Used the
warp web server framework, which is a minimal
framework that allows filtering of HTTP requests.
- Microcontroller (ARM M4) Firmware created communication system between firmware and the
Rust server API
using the OpenAMP Project to communicate over virtual UART.
Communication consisted of status of loading the firmware, confirmation of necessary information for the test,
and test progress. Also contributed to the debugging and development of the firmware that would test devices
and was responsible for porting the necessary RCC configurations to the appropiate DeviceTree so that Linux
may configure the system clock the same way the standalone firmware would on the STM32MP157F-DK2.
Conway's Game of Life in Hare Programming Language: Not really anything too fancy
or serious but the language is fun and simple enough and I've never written Conway's game of life before.
snake game using termios: Terminal game snake written in C without
using ncurses and by manipulating the terminal interface with
termios.