About
The Human
I use the pseudonym “HotSocket” online to have some degree of separation between my “real” and online identities. I’m a self-taught programmer, continuously accumulating knowledge over the past ~decade.
Particularly Helpful Skills
- I am familiar with Nix, and can apply it effectively to create reproducible environments. (It’s very nice when combined with direnv for projects!)
- Proficient with TypeScript
- I’m a quick learner, ready to pick up on new technologies.
Some Fun Facts!
- I prefer hard tabs. “\t” tabs. They’re great for indentation.
- I’ve got some gnarly autism, offering unique perspectives and strategies when taking on problems.
Projects
hotsocket.pro (this site!)
This site is built with Hugo, and pushed up to Netlify. The theme is the template one generated by hugo new theme
with minor tweaks.
DomLink
This is a project that started as “Hey, what if I made my own SwiftUI-adjacent web framework type thing with my own flair?”, and has evolved into a larger exploration of TypeScript and the AT Protocol. This could be considered two separate projects in one, but as the unnamed ATProto half evolves, so does DomLink.
This project most prominently features the “DomLink” library, which makes for an easier way to build web applications by chaining methods in a way that resembles a builder pattern. Code tends to speak better than words in these kinds of situations, so here’s some example code for a button that increments a number represented by text:
import { Body, Button, Column, Label } from "@/domlink.ts";
const display = new Label("Number: 0");
let number = 0;
Body.with(
new Column().with(
display,
new Button("Increment!", ()=>{
display.text = `Number: ${++number}`;
})
)
);
You can view a demo of this here.
The project eventually evolved into me developing a windowed client for Bluesky and Tangled. It’s still fairly basic in its functionality, but I’m proud of it.
What’s Next With This?
A big driver for this project, aside from browsing of various ATProto-based platforms, is building intuitive tools for management of data in a user’s repository. The windowing functionality I built, combined with the Drag/Drop API, ought to make for an intuitive way to manage said data.
What I Accomplished Here
- Successfully built a UI library from scratch
- Integrated a CD pipeline to deploy the project to Netlify (of the tangled variety in particular)
- Further developed my TypeScript skills
- Used Deno to build and locally serve my project
- Implemented a small caching system to reduce duplicate requests
- Designed and implemented a mini ETL pipeline to load ATProto data (atproto data -> internal classes -> ui loading, display)
- Wrote code capable of fitting into unit tests, and subsequently writing them
- Discovered that there are cases where
this
is not what you expect it to be.
hotsocket.fyi
This is the site I use for more personal information about myself, files, and a simple dictionary thing using PHP and XSLT. (Google appears to have nuked XSLT out of Chromium, RIP.) I’m a fan of how the CSS on that one turned out.