Compare commits
8 Commits
feature/so
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
183418ff70 | ||
|
|
18134bb2bb | ||
|
|
29255ac829 | ||
|
|
d2def91928 | ||
| f5a94d2285 | |||
| 7c5bf31f53 | |||
|
|
61084c69ca | ||
|
|
8e902fefcc |
@ -19,6 +19,7 @@
|
||||
packages = with pkgs; [
|
||||
# Add packages here...
|
||||
bun
|
||||
nodejs
|
||||
];
|
||||
|
||||
# Define the shell that will be executed.
|
||||
|
||||
6734
package-lock.json
generated
6734
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
<footer class="flex w-full items-center justify-center">
|
||||
<p class="mx-2 my-10 py-2 text-sm text-gray-600">© 2025, Hayden Hargreaves</p>
|
||||
<p class="mx-2 my-10 py-2 text-sm text-gray-600">© 2026, Hayden Hargreaves</p>
|
||||
<a
|
||||
href="https://www.linkedin.com/in/haydenhargreaves/"
|
||||
aria-label="LinkedIn Profile"
|
||||
|
||||
@ -1,12 +1,17 @@
|
||||
<div class="">
|
||||
<h2 class="py-2 text-xl font-semibold text-blue-300 border-b-1 border-gray-600">TLDR & RESUME </h2>
|
||||
<h2 class="border-b-1 border-gray-600 py-2 text-xl font-semibold text-blue-300">TLDR & RESUME</h2>
|
||||
<p class="py-4 text-gray-200">
|
||||
<span class="font-semibold">TLDR:</span> I like to program, I have 5+ years of experience in over
|
||||
<span class="font-semibold">TLDR:</span> I like to program, I have 6+ years of experience in over
|
||||
a dozen programming languages. Developer experience and tooling is my expertise.
|
||||
</p>
|
||||
<p class="py-4 text-gray-200">
|
||||
My resume can be downloaded
|
||||
<a href="HaydenHargreavesResume.pdf" download class="group relative inline-block no-underline" target="_blank">
|
||||
My resume can be downloaded
|
||||
<a
|
||||
href="HaydenHargreavesResume.pdf"
|
||||
download
|
||||
class="group relative inline-block no-underline"
|
||||
target="_blank"
|
||||
>
|
||||
<span class="relative z-10 font-semibold text-gray-300">here.</span>
|
||||
<span
|
||||
class="absolute bottom-0 left-0 h-[3px] w-0 bg-blue-300 transition-all duration-300 group-hover:w-full"
|
||||
|
||||
@ -85,7 +85,8 @@
|
||||
'SSH',
|
||||
'PostgreSQL',
|
||||
'Neovim',
|
||||
'Grafana K6'
|
||||
'Grafana K6',
|
||||
'Bubble Tea'
|
||||
];
|
||||
|
||||
skills.sort((a, b) => b.rating - a.rating);
|
||||
|
||||
124
src/journal/Termtap - Debug Your Backend.md
Normal file
124
src/journal/Termtap - Debug Your Backend.md
Normal file
@ -0,0 +1,124 @@
|
||||
Date: 2026/05/11
|
||||
Desc: Observe outbound HTTP requests in real time - without modifying your code.
|
||||
|
||||
|
||||
# Termtap - Debug Your Backend
|
||||
|
||||
<img src="/journal/termtap.png" alt="Termtap demo screenshot." width="500">
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
###### Author: Hayden Hargreaves
|
||||
|
||||
###### Published: 05/11/2026
|
||||
|
||||
## Problem
|
||||
|
||||
Backend API debugging is still largely guesswork in 2026. Web engineers get rich browser DevTools; server engineers get partial logs and speculation.
|
||||
Backend engineers lack a simple, reliable way to see outbound API traffic from their local apps or CLI tools. Browser tools do not cover this workflow,
|
||||
and debugging using logs is incomplete and slow. As a result, developers spend too much time guessing what requests are sent, what went wrong,
|
||||
what responses they got and where integration breaks. Backend, terminal-first engineers are even worse off. Heavy, industrial tools exist, but they
|
||||
do not suit the needs of a developer who does not want to leave their terminal. They need a local, low-friction tool that exposes HTTP/S
|
||||
behavior without requiring code changes, dashboard hopping or industrial overhead.
|
||||
|
||||
|
||||
## What is Termtap
|
||||
|
||||
Termtap is a terminal-based proxy inspector for backend engineers. You run your code using the `tap` CLI and Termtap shows outbound HTTP/S traffic
|
||||
in real time. You can see requests, responses, status codes and failures - all without changing your code.
|
||||
|
||||
Termtap was built for local iteration, not enterprise observability. Instead of dashboards, agents and long setups, Termtap is small and direct:
|
||||
a single command, immediate visibility with a keyboard-driven workflow. If you live in the terminal and need to understand what your app is sending
|
||||
over the network, Termtap is the quickest way from "something is wrong" to "here's exactly why."
|
||||
|
||||
|
||||
### How it Works
|
||||
|
||||
Termtap wraps the command you run, starts a local proxy and streams HTTP/S traffic into a TUI.
|
||||
|
||||
#### Wrap your command
|
||||
Run your app normally, just prefixed with the `tap` CLI.
|
||||
|
||||
```bash
|
||||
tap run -- go run .
|
||||
```
|
||||
|
||||
Termtap launches your process with proxy environment variables set, so outbound requests flow through Termtap automatically.
|
||||
|
||||
#### Capture traffic in real time
|
||||
|
||||
While your app runs, Termtap captures request/response metadata and timing information as they occur. You can immediately see what endpoints
|
||||
are hit, what methods were used, response status and where failures occur.
|
||||
#### Inspect HTTPS locally
|
||||
|
||||
For HTTPS inspection, run the `cert` command.
|
||||
|
||||
```bash
|
||||
tap cert
|
||||
```
|
||||
|
||||
Termtap creates (or reuses) a local CA, shows where it lives, and prints trust instructions for your OS. Once trusted, HTTPS traffic
|
||||
can be inspected locally on your machine. More details regarding certs and why we need them can be found in the [docs](https://termtap.dev/docs#https-certs).
|
||||
#### Investigate the terminal
|
||||
|
||||
Use keyboard-first navigation to move through requests, inspect details, and filter with search. No browser tabs, no dashboards, and
|
||||
no instrumentation changes in your app code.
|
||||
|
||||
## Why Now
|
||||
|
||||
With microservices on the rise, applications have added layers of communication between systems that *might* not need them. Debugging
|
||||
large webs of microservices is cumbersome without a strong observability tool. Termtap provides a simple way to see what each service
|
||||
is "seeing" and "saying," allowing a developer to find the cause of issues faster.
|
||||
|
||||
## Project State
|
||||
|
||||
Termtap is currently in beta; usable today, however, it is intentionally narrow and improving quickly through real developer feedback.
|
||||
|
||||
Right now, Termtap is strongest for local debugging of outbound HTTP/S traffic from terminal-run apps. The core workflow is stable:
|
||||
wrap a command, observe live traffic, inspect failures, and iterate without changing application code.
|
||||
|
||||
This is not a polished, enterprise-grade observability platform. Expect rough edges, missing features, and occasional breaking changes as
|
||||
the tool evolves. That tradeoff is deliberate: optimize for speed, focus, and a tight terminal-first workflow over broad surface area.
|
||||
|
||||
If you’re a backend developer who lives in the terminal and wants to shape the direction of the tool, you’re the ideal early user. Feedback,
|
||||
edge cases, and bug reports are especially valuable right now.
|
||||
|
||||
|
||||
### Who it's For
|
||||
|
||||
Termtap is built for backend developers who debug API integrations from the terminal and want immediate visibility into outbound HTTP/S traffic.
|
||||
|
||||
It is **for you** if:
|
||||
- You run services, scripts, or CLI tools locally and need to see real requests in real time
|
||||
- You prefer terminal-native workflows over browser tabs and dashboards
|
||||
- You want low setup and no app instrumentation just to debug network behavior
|
||||
- You care more about fast feedback loops than enterprise observability features
|
||||
|
||||
It is **not for you** if:
|
||||
- You need a full production observability platform with team-wide dashboards and alerting
|
||||
- You want long-term analytics, tracing infrastructure, or hosted telemetry pipelines
|
||||
- You are looking for a GUI-first workflow as your primary interface
|
||||
- You expect a fully polished, zero-edge-case product today
|
||||
|
||||
Termtap is intentionally opinionated: local-first, terminal-first, and focused on the shortest path from “something failed” to “I can see exactly why.”
|
||||
|
||||
### What's Coming
|
||||
|
||||
The goal of Termtap is to remain lightweight and **simple**, so the feature list is small. However, there is room for additions and improvement.
|
||||
Reliability is the focus, but meeting user needs comes first. Some possible features include **request replay**, **payload modification**,
|
||||
**standalone proxy functionality** or **multi-process support**.
|
||||
|
||||
### How You Can Use It
|
||||
|
||||
I’m looking for 15–20 terminal-first backend engineers to try Termtap on real integration bugs.
|
||||
|
||||
If that’s you:
|
||||
- install from GitHub Releases
|
||||
- run it on one failing API flow
|
||||
- tell me what was confusing, missing, or slow
|
||||
|
||||
GitHub: https://github.com/haydenhargreaves/termtap
|
||||
Docs: https://termtap.dev/docs
|
||||
|
||||
|
||||
@ -129,6 +129,7 @@
|
||||
me to develop a strong understanding of IoT networks and the AWS ecosystem. Furthermore, it
|
||||
has opened my eyes to the world of research and has introduced me to many bright individuals.
|
||||
</p>
|
||||
<p class="mb-4 w-full text-sm text-gray-500 md:w-3/4">Last updated August, 2025.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -159,8 +160,8 @@
|
||||
<h2 class="mt-14 py-2 text-xl font-semibold text-blue-300">CONTACTS</h2>
|
||||
<div class="mb-4">
|
||||
<h3 class="text-sm font-semibold text-gray-200">Email</h3>
|
||||
<a href="mailto:hhargreaves2006@gmail.com"
|
||||
><p class="py text-xs text-gray-200">hhargreaves2006@gmail.com</p></a
|
||||
<a href="mailto:hayden@gophernest.net"
|
||||
><p class="py text-xs text-gray-200">hayden@gophernest.net</p></a
|
||||
>
|
||||
</div>
|
||||
<div class="my-4">
|
||||
@ -187,7 +188,7 @@
|
||||
<div class="my-4">
|
||||
<h3 class="text-sm font-semibold text-gray-200">Gitea</h3>
|
||||
<a href="https://git.gophernest.net/azpect" target="_blank"
|
||||
><p class="py text-xs text-gray-200">git.gophernest</p></a
|
||||
><p class="py text-xs text-gray-200">git.gophernest.net</p></a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Binary file not shown.
BIN
static/journal/termtap.png
Normal file
BIN
static/journal/termtap.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 476 KiB |
@ -1,19 +1,67 @@
|
||||
[
|
||||
{
|
||||
"title": "TCP Server Notification System",
|
||||
"description": "Server/Client TCP notification system for communication between a server and many clients. A custom event loop and protocol was created to handle the communication between the server and clients.",
|
||||
"date": "February, 2025 - Current",
|
||||
"title": "Termtap",
|
||||
"description": "Tap into your app's API traffic from the terminal. Observe outbound HTTP requests in real time - without modifying your code.",
|
||||
"date": "April, 2026 - Current",
|
||||
"stack": [
|
||||
"Go"
|
||||
"Go",
|
||||
"Bubble Tea"
|
||||
],
|
||||
"image": "projects/termtap.png",
|
||||
"imageAlt": null,
|
||||
"link": "https://github.com/haydenhargreaves/termtap"
|
||||
},
|
||||
{
|
||||
"title": "Gim",
|
||||
"description": "Gim is a modern, lightweight text editor written in Go that brings the power of vim-style modal editing to your terminal. Built on the excellent Charm stack, it combines the speed of Go with the elegance of functional UI patterns.",
|
||||
"date": "January, 2026 - April, 2026",
|
||||
"stack": [
|
||||
"Go",
|
||||
"Bubble Tea"
|
||||
],
|
||||
"image": "",
|
||||
"imageAlt": null,
|
||||
"link": "https://git.gophernest.net/azpect/Gim"
|
||||
},
|
||||
{
|
||||
"title": "Markdown to HTML Transpiler",
|
||||
"description": "A C++ tool that converts Markdown files into clean HTML. It uses a recursive descent parser to recognize headings, lists, and formatting, then outputs valid HTML for easy web publishing or automation. The code is modular, modern, and designed to be both reliable and easy to extend. I have plans to migrate this project to a different tech stack in the near future.",
|
||||
"date": "September, 2025 - Current",
|
||||
"stack": [
|
||||
"C++"
|
||||
],
|
||||
"image": null,
|
||||
"imageAlt": null,
|
||||
"link": "https://github.com/haydenhargreaves/TCPNotificationManager"
|
||||
"link": "https://git.gophernest.net/azpect/MarkdownToHtmlTranspiler"
|
||||
},
|
||||
{
|
||||
"title": "Potion - Web App",
|
||||
"description": "A web-based recipe sharing platform allows users to discover, submit, and share recipes with a community online. This application is built using Go for the backend, leveraging its high performance and concurrency capabilities to efficiently serve many users at once.",
|
||||
"date": "July, 2025 - Current",
|
||||
"stack": [
|
||||
"Go",
|
||||
"Typescript",
|
||||
"React"
|
||||
],
|
||||
"image": "projects/potion.png",
|
||||
"imageAlt": "Image of Potion, the web app.",
|
||||
"link": "https://git.gophernest.net/azpect/Potion"
|
||||
},
|
||||
{
|
||||
"title": "File Server Manager - Web App",
|
||||
"description": "Simple web UI for accessing a server's file system. The UI allows for creation, removal and moving of files and directories. This project was used as a way to refresh my memory on React before interviewing for a role.",
|
||||
"date": "February, 2025 - May, 2025",
|
||||
"stack": [
|
||||
"React"
|
||||
],
|
||||
"image": "projects/fileManager.png",
|
||||
"imageAlt": "Image of the file manager, the web app.",
|
||||
"link": "https://git.gophernest.net/azpect/ServerFileManager"
|
||||
},
|
||||
{
|
||||
"title": "Python Stock Market Analysis",
|
||||
"description": "A simple stock market analysis tool that uses a backdoor API to get stock data and analyze it, collecting basic information of historical data. This project was built as a homework assignment for my SE320 (Software Construction) class.",
|
||||
"date": "February, 2025",
|
||||
"date": "February, 2025 - March, 2025",
|
||||
"stack": [
|
||||
"Python"
|
||||
],
|
||||
@ -24,7 +72,7 @@
|
||||
{
|
||||
"title": "Acoustic Drone Detection Sensor Network",
|
||||
"description": "This project aims to develop a low-cost, acoustic drone detection system as a supplementary security measure for locations like borders and airports. The system will use small microphones and microcontrollers to detect drone sounds, even amidst background noise, at distances of at least 50 feet. This data will be collected by a network of weather-resistant, solar-powered sensors, transmitted wirelessly via LoRa and WiFi, and securely reported in real-time to Amazon Web Services for monitoring. This project is a research project funded by Embry-Riddle Aeronautical University and the Undergraute Research Institute (URI).",
|
||||
"date": "December, 2024 - Current",
|
||||
"date": "December, 2024 - August, 2025",
|
||||
"stack": [
|
||||
"C++",
|
||||
"Python"
|
||||
|
||||
BIN
static/projects/fileManager.png
Normal file
BIN
static/projects/fileManager.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
BIN
static/projects/potion.png
Normal file
BIN
static/projects/potion.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 608 KiB |
BIN
static/projects/termtap.png
Normal file
BIN
static/projects/termtap.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 476 KiB |
@ -1,4 +1,10 @@
|
||||
[
|
||||
{
|
||||
"company": "Garmin",
|
||||
"position": "Software Engineer Intern",
|
||||
"description": "Served as an intern on the Marine Cloud Backend team.",
|
||||
"timeframe": "May 2026 - August 2026"
|
||||
},
|
||||
{
|
||||
"company": "Embry-Riddle Aeronautical University",
|
||||
"position": "Teaching Assistant",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user