Website as Workshop?

A Workshop is a place for iteration and deepening skills and understanding. This site is a place where writing about my learnings to make technologies that solve problems in life.

  • The wishlist palace is an app for simply sharing and coordinating lists for birthdays and other gift giving occasions

May 2026

Spring is in full swing though it already feels like summer I wrote about setting your bluesky handle to be a domain you own. I’m trying to increase my presence on Bluesky and one of the hip things seems to be to set your handle according to a domain that you own. I’ve been a user of Porkbun for a while so I got the domain jsph.online which currently redirects to my personal GitHub page. I think the online TLD is cool. ...

May 31, 2026

Ideas About How to Get People to Use a Free Wishlist App

Free app? no users? I like it’s pretty well documented around the internet bubble I live in that it’s difficult to get new users for an app if you don’t have an established audience. This is true even when you give it away for free and perhaps freeness works against user acquisition also. One way I think you can get more users of any software is to better refine the problem that it solves. This is an iterative activity and I wanted to share a new feature I’ve added to wishlist palace that I think improves the user experience and is more realistic about users who will actually make an account on that site. ...

May 28, 2026

How to set your Bluesky handle to a Porkbun domain

Why bother with a custom handle Bluesky lets you set your handle to a domain you own, so instead of @yourname.bsky.social you get something like @yourdomain.com itself. It’s a nice way to tie your social presence to something you already control or just to feel like you are satisfying your childhood notions of L33t or just because your own domain is really cool. For me I just wanted to seem cooler to people on Bluesky but maybe this is not something that will actually accomplish that goal. ...

May 27, 2026

April 2026

After launching [wishlistpalace.com] at the end of last month I had some things to learn about how to secure my VPS that is running that site so I did some minimal research which I wrote up in How to Protect Your New VPS. I plan to do monthly dev log updates on what I learn and what has shipped and will post them in the logs section of this site. I’ll also send out an email with these updates. ...

April 30, 2026

SEO and LLM Discoverability for Phoenix Web Apps

How I set up SEO and LLM discoverability for my Phoenix app I recently shipped the discoverability layer for Wish List Palace, a free wish list app for coordinating family gift giving. This post covers everything I put in place: standard search engine SEO, structured data, and the newer llms.txt standard for getting picked up by AI tools and training crawlers. I hope people stumble upon this site. People who for whatever reason have a need for it, but I also definitely didn’t want to buy ads or try to exploit SEO. The wishlist app space is already super crowded so I don’t think any of those strategies would help much but making it easier for crawlers and LLMs to understand what the app is and what it does was the goal. ...

April 15, 2026

Github Actions for Phoenix App Deployment to Hetzner

Recently I started hosting wishlist palace on a Hetzner CX23 VPS (that has 4 GB of ram and 2 vcpu). At work usually I package software into a container before deploying it. One of the reasons I chose Elixir and Phoenix as the tech stack for wishlist palace is that I wanted to try out mix releases which prepare binaries. OS and chip architecture Originally I was just going to compile on my local machine (A thinkpad T480) and upload to the server. But this didn’t work because the VPS I had provisioned was running ubuntu 24.04 LTS and my local machine is on EndevousOS (a flavor of Arch by-the-way). So rather than local build and push, I opted to get claude to build a series of github actions that would build on a worker that was running ubuntu. This had the added benefit of basically completely setting up a basic CI loop so that when a release is cut we build a new binary and deploy it on the server. ...

April 10, 2026

How to Protect Your New Vps

I was very intimitaded about using a VPS outside a VPC my web apps. I had never used a stand alone VPS without some kind of walled garden around it. At work everything is usually behind a VPC. And I have always worked with awesome security people to double check things! I don’t have to worry so much about bots or people constantly trying to exploit my service (of course we follow guidence from our excellent security colleagues). But when you turn on your new VPS it immediately can be discovered and bots will immediately try to exploit vulnerabilities. ...

April 3, 2026

How to Use Augmented Coding to Build a Web App

I recently launched wishlist palace which is a web app to help share information with friends and family about birthday lists and christmas lists. This app is my first exploration into using Augemented coding (which is a term I prefer over vibe coding). When I first heard of vibe coding, I wasn’t particularly interested in engaging with it as a mode of production I use myself. I enjoy the problem solving aspect of software engineering and at face value much of that process falls into the lap of the LLM when doing vibe coding. And it’s not only the solution of the problem at hand that is of interest to me but directly engaging and phrasing that problem in the formalisms of programming languages scartches an itch in the same way I image poets feel when they want to express themselves in poetry. The trouble with the situation we (as tech folk) are in now is that the terms (like vibe and augmented coding) are highly overloaded and are used to described vastly different development cycles from the one shot prompt of 100 words attempting to get a polished app to the very detailed prompt to obtain the 10 line fix you requested in a few hundred words. ...

March 29, 2026

Setting up a hugo static site hosted with Porkbun

Content generation This is a static site generated with hugo with the PaperMod theme. I wanted an easy to use static site generator. I considered Jekyll and believe it to be a good choice for static sites. There seemed to be slightly more themes I liked with hugo so I went with that. That’s a pretty superficial choice but I also don’t plan on hacking on the site generation itself so I was agnostic to the Go versus Ruby choice. ...

March 23, 2026