An image of Andrew outside. He wears a blue shirt, a gray flannel, and a lanyard with his name.
A picture of me at MadHacks!

About me

Hello! I'm Andrew Moses, an engineer who loves tinkering with anything remotely electronic. I'm a student at the University of Wisconsin-Madison. Most of the time you can find me hanging at the Undergraduate Projects Lab in the Computer Sciences building. When I'm not at UW, I'm back home in New York City, where I love skating around the boroughs.

Contact

Feel free to contact me for whatever reason. (Please no spam!) My email is "me" plus this domain. If you'd like to sign a message, my PGP key is below.

PGP Key: 09B002A2D2EC587198CDEA50F2857F8A8836A7CF

Colophon

I've wanted to have a personal website/a place to be able to write and put blog posts for a while now, and it's only until somewhat recently that I've been able to actually sit down and build out the site I wanted.

This site was built off of Astro, which is a really neat framework for designing content-heavy websites like this one. This page is being written in HTML for flexibility, but it just as easily could have been done in markdown. Astro makes it insanely easy to design the components that you'd like, and then add them in layouts that you can implement as templates for pages. This creates an elegant layered architecture, where -- at least in my case -- I have a base layout that contains a blank page with a header and footer, with a slot in the center for inserting whatever content I'd like. Then, I can define other structures that use it -- say, a layout for my blogs that will take some frontmatter variables from any markdown post I make and show them above the post.

I've been really happy with Astro. Its plugin support has allowed me to implement rehype features, swap out the vanilla HTML code blocks for much nicer syntax-highlighted ones, generate og meta images dynamically based on page titles/descriptions, and create an RSS feed from my content (complete with an XSL stylesheet. Did you know that's something browsers support?! I didn't.).

You may not have noticed it if you're on mobile (the site will attempt to disable it if it detects mobile browser agents or a mobile screen size), but hovering over a link that directs to an external webpage (one not on this site) will display a tooltip with the link that follows your mouse. This feature was directly inspired by MIT's website design (which was made by Upstatement). There's a treasure trove of really well designed features across their primary website and admissions blog -- I attempted to replicate their sidenotes design at one point, but I wasn't prepared for how intensive the calculations are for drawing them on screen dynamically without disturbing the content. I'll try to get back around to that at some point, because I like the idea of sidenotes more than footnotes. (P.S: That gwern link has a fantastic, almost scarily in-depth page on sidenotes in web design. I'd highly recommend checking it out if that kind of stuff interests you.)

The source for this website is available on my GitHub, and you're able to view the changes made in the most recent revision with the commit link in the footer. If you're wondering, that's done server-side at build time by parsing the output of git rev-parse --short HEAD (which is ran by Node.js' child_process). That feature was inspired by Xe Iaso, whose work I've seen on Hacker News.

While I do have a VPS that I put my dynamic projects on, this site is built with GitHub Actions due to its static nature. I just have to make a change, commit, and push it, and GitHub will automatically re-build the site and deploy it automatically for me.

I've certainly wanted to write more posts on this website -- and once I'm able to get my schedule under control, I definitely think I will. It's super fun knowing that there are actual people reading the things I'm writing, and as long as I have interesting things to talk about, I don't see any reason to stop.

Andrew