it is with a heavy heart and shaky hands that i post a page in loving memory of my best friend.
projects
- gitcook.ing: a browser for Cooklang recipe repos on GitHub with pretty print layout
- cooklang-go: a Cooklang parser for Go
it is with a heavy heart and shaky hands that i post a page in loving memory of my best friend.
Man, this is the first I've added to this page in like 3 years. I've prodded myself over the years to write thoughts or new little projects down here but I always brush it off. What's the point? This is just a branding page, after all. I have a job I love - I don't need more branding, lol. Still, though, there is probably some value in getting thoughts out, if only to yell into the void a little bit.
Since the last post about automation, I've:
Suffice to say blogging isn't the biggest thing on my mind. With the advances in these models, though, it's starting to feel more and more appealing.
A friend at work mentioned he's running out of ideas and ways to kill time on the good screen because of Claude. I didn't really understand that until recently. I can just point Claude at any of my litle side projects and they're done. Any little "hey it'd be nice to..." idea that involves the computer can be solved - sometimes within an evening. I'm going to be spraying nicknacks and doodads all over the internet because of that little freak.
I've been working as an "AI developer" for over two years now but Opus 4.5 has been a huge step forward for me.
I'm using this post as a bit of a testing ground to see if my CI is working.
Ideally, when I change files in src/ and push them up to master
the website should get built and deployed. In reality, we're about to find out what happens.
I'll explain in a second...
Ah, now see, that didn't work. Not that I expected it to, but still. Let me explain what I have set up so far, then we'll get this fixed. I've got my site running on a basic Debian server somewhere in the ether. It's served with Caddy. The website repo is hosted on GitHub and there's a workflow to build it then copy it over to the server.
The website is bundled with Parcel. If you check the
package.json,
you can see Parcel will bundle, optimize, etc the source files and spit everything out into a new
dist/
directory. The files in dist/ need to be copied over to the directory they're served
from on the server.
We'll use rsync to do that.
The server has a github user. It's not allowed to log in, it doesn't have a shell, it's
basically only
there to receive files from our Github Action. In fact, that's the only command that will
run whenever
the github user connects. The Github user has an authorized SSH key stored as a secret
in the Github repo.
Command restriction is accomplished with the really neat rrsync script that comes
bundled with rsync.
The reason why that first attempt didn't work was a little tricky. SSH connections validate a
server's fingerprint
when you first connect. If you check the Action, I copy both the private key and the
known_hosts file to
the runner's .ssh directory. Well-what-had-happened-was that key was coped incorrectly
in my repository secrets.
Let me update that and try this again...
And there we have it! I grabbed the proper host key with ssh-keyscan justintout.com and
updated
the secret. Now, whenever I push changes in src/ to master, they'll
automatically get
built and deployed to my server.
For a more "tutorial-ey" walk-through of the process, I wrote this Gist. Check it out if you're interested in setting something similar up. Honestly, hosting a github.io site is probably easier, but I think this is a super worthwhile exercise.
It's been nice working on this page again. It's a bit of a welcomed break from daily complexity.
Beside actually adding content, I've made the style a bit nicer and upgraded to Caddy 2. The upgrade
was really simple.
A few, quick edits to the Caddyfile and we were off to the races. A proper caddy user
actually runs the server
now, and I've got everything except the Action written to do automatic deployment. Feels good.
I can already feel the desire to grow complexity like crazy. I could template a lot of this out. I could render these posts from Markdown somewhere else in the repo. I could switch to Svelte or htmx or start using Sass or whatever else. Everyone says not to. I think they're right. I just need to press on and remind myself to keep writing posts. The design will evolve.
Realizing this is the first update since before COVID. It's surreal to look back and see this as a relic of the before times.
Ignoring the pandemic, I've been happily married for nearly 3 years and my wife and I have both changed our careers significantly.
I'm doing open-source advocacy at Progressive now and it's like night and day. I don't want to gush too much but I'm having a great time. I get to do help other devs work smarter, faster, and, most importantly, easier. We're all in this together, after all. It's a slow-moving company so it'll be some time before I feel like our team has really made a big impact but the stars are aligning.
Work's lame though and I'm a super cool guy so here's our dog:
Her name is Mango Mae and we adopted her in February 2021. She was found on the street, neglected,
some time in 2017. She was over 25 pounds underweight and
trying to support a litter of 6 puppies. She was passed between rescue and foster groups for years
until we were lucky enough to call her our own.
We made it through heartworm, spay, and an attack from an incredibly irresponsible trail-goer. I'm
grateful every day to have her in my life and do what I can
to give her the comfortable life she's earned after all she's been through.
Friends have had children. My sister (💜) and friends have been married. Family has graduated college. My grandfather passed away. Life goes on, 3 years later.
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit aamet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quae atque eaque blanditiis, neque delectus alias voluptate ad ipsum accusamus cumque non aspernatur distinctio iure? Maiores consectetur commodi excepturi molestias obcaecati!