Projects

    trippy (Rust) đź”—

    Combines the functionality of traceroute and ping and is designed to assist with the analysis of networking issues.

    I help out with the development of the trippy program. I answer issues on github (when I can) and occasionally assist with code reviews. I’ve also corrected a few typos and introduced a more automated approach to snapshot testing using insta.

    Click to see more

    I was originally interested in trippy when I was looking for a way to do “ping” from rust. I was building a network monitoring tool to provide alerts when devices became unreachable. Trippy wasn’t yet a good fit for this use case but the maintainer was open to working with me on what I needed and thus I got involved with the project. Trippy is now at a point where it is ready to support my use case. However while waiting I developed a temporary solution based on the ping program that ships with debian. Once time permits I will rebuild on top of trippy and incorporate what I learned from the temporary solution. Even though I’ve not used trippy yet for my original use case, I am actively involved with the project.

    reqwest (Rust) đź”—

    An easy and powerful Rust HTTP Client

    I create a PR to add cookie support for WASM builds.

    Click to see more

    I needed to use reqwest in a WASM context (inside of the browser) for a project I was working on. However, reqwest currently does not support cookies when compiled for WASM. After experimenting with a workaround that resulted in success, I decided to try to implement the functionality directly into reqwest. I was fortunate that others had already tried before me and cleared the road blocks. Hence I met no resistance and was able to create the PR to add cookie support for WASM builds.

    • egui (Rust)

      An easy-to-use immediate mode GUI in Rust that runs on both web and native

      I’ve contributed several small improvements based on my interactions with this community.

      Click to see more

      I’ve really enjoyed using egui. This crate was my introduction to immediate mode GUI development. I’ve found that using immediate mode for PoC helps me focus on functionality instead of ascetics. IMHO they end up looking reasonable anyway (example). I am using it for multiple of my ongoing projects. I’ve contributed:

    bazooka-bot (Rust) đź”—

    Discord bot for the Bazooka Alliance Server (Alliance for Command and Conquer: Rivals Game)

    • Created a discord bot rust using poise to replace the older one that I had written in python.
    • Hosted on shuttle
    Click to see more
    • Highlighted features:
      • Schedule events
      • Manage players voting on ideas
      • Manage recording of scores during the event
      • Uses both text based commands and slash commands
      • See the readme of the project for all functionality

    log-viewer (Rust) đź”—

    Simple log viewer for logs with json lines

    I developed a simple log viewing application using egui. It enables basic log file navigation. There is an a version able to be run from the browser available here. (See sample log files) It works on log files where each line is a json string.

    Click to see more

    This project servers as an example for many things that I’ve learned to do in egui.

    • It demonstrates how to “preserve empty space”. By default egui will shrink controls to the size of the content that they contain but I wanted the height of the bottom panel to stay the same size even when it had less content. That was accomplished using a function that allocates the rest of the space so that the control does not shrink. If using this example, take note of the if that comes before calling the function. Without the if the size of the control will grow instead of staying the same. (See exert of code below)
      if ui.available_height() > 0.0 {
          ui.allocate_space(ui.available_size());
      }
      
    • It also demonstrates the use of hotkeys in egui applications, both how to only enable the hotkey when the corresponding button is active and global hotkeys that are always active.