<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>J()s≡ph W()rksh()p</title><link>https://jsphwrkshp.com/</link><description>Recent content on J()s≡ph W()rksh()p</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 31 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jsphwrkshp.com/index.xml" rel="self" type="application/rss+xml"/><item><title>May 2026</title><link>https://jsphwrkshp.com/log/2026-05/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://jsphwrkshp.com/log/2026-05/</guid><description>&lt;p&gt;Spring is in full swing though it already feels like summer&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I wrote about &lt;a href="https://jsphwrkshp.com/posts/how-to-set-your-bluesky-handle-to-a-porkbun-domain/"&gt;setting your bluesky handle&lt;/a&gt; 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 &lt;a href="https://porkbun.com/"&gt;Porkbun&lt;/a&gt; for a while so I got the domain &lt;a href="https://jsph.online"&gt;jsph.online&lt;/a&gt; which currently redirects to my personal GitHub page. I think the &lt;code&gt;online&lt;/code&gt; TLD is cool.&lt;/p&gt;</description></item><item><title>Ideas About How to Get People to Use a Free Wishlist App</title><link>https://jsphwrkshp.com/posts/ideas-about-how-to-get-people-to-use-a-free-wishlist-app/</link><pubDate>Thu, 28 May 2026 22:49:41 -0400</pubDate><guid>https://jsphwrkshp.com/posts/ideas-about-how-to-get-people-to-use-a-free-wishlist-app/</guid><description>&lt;h1 id="free-app-no-users"&gt;Free app? no users?&lt;/h1&gt;
&lt;p&gt;I like it&amp;rsquo;s pretty well documented around the internet bubble I live in that it&amp;rsquo;s difficult to get new
users for an app if you don&amp;rsquo;t have an established audience. This is true even when you give it away for
free and perhaps freeness works against user acquisition also.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;ve added to
&lt;a href="https://wishlistpalace.com"&gt;wishlist palace&lt;/a&gt; that I think improves the user experience and is more realistic
about users who will actually make an account on that site.&lt;/p&gt;</description></item><item><title>How to set your Bluesky handle to a Porkbun domain</title><link>https://jsphwrkshp.com/posts/how-to-set-your-bluesky-handle-to-a-porkbun-domain/</link><pubDate>Wed, 27 May 2026 00:00:00 -0400</pubDate><guid>https://jsphwrkshp.com/posts/how-to-set-your-bluesky-handle-to-a-porkbun-domain/</guid><description>&lt;h2 id="why-bother-with-a-custom-handle"&gt;Why bother with a custom handle&lt;/h2&gt;
&lt;p&gt;Bluesky lets you set your handle to a domain you own, so instead of &lt;code&gt;@yourname.bsky.social&lt;/code&gt;
you get something like &lt;code&gt;@yourdomain.com&lt;/code&gt; itself. It&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>April 2026</title><link>https://jsphwrkshp.com/log/2026-04/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://jsphwrkshp.com/log/2026-04/</guid><description>&lt;p&gt;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 &lt;a href="https://jsphwrkshp.com/posts/how-to-protect-your-new-vps/"&gt;How to Protect Your New VPS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;ll also
send out an email with these updates.&lt;/p&gt;</description></item><item><title>SEO and LLM Discoverability for Phoenix Web Apps</title><link>https://jsphwrkshp.com/posts/seo-and-llm-discoverability-for-phoenix-web-apps/</link><pubDate>Wed, 15 Apr 2026 22:23:07 -0400</pubDate><guid>https://jsphwrkshp.com/posts/seo-and-llm-discoverability-for-phoenix-web-apps/</guid><description>&lt;h1 id="how-i-set-up-seo-and-llm-discoverability-for-my-phoenix-app"&gt;How I set up SEO and LLM discoverability for my Phoenix app&lt;/h1&gt;
&lt;p&gt;I recently shipped the discoverability layer for &lt;a href="https://wishlistpalace.com"&gt;Wish List Palace&lt;/a&gt;,
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 &lt;code&gt;llms.txt&lt;/code&gt; 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&amp;rsquo;t want to buy ads or try to exploit SEO. The wishlist app space is already super
crowded so I don&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>Github Actions for Phoenix App Deployment to Hetzner</title><link>https://jsphwrkshp.com/posts/github-actions-for-phoenix-app-deployment-to-hetzner/</link><pubDate>Fri, 10 Apr 2026 23:21:17 -0400</pubDate><guid>https://jsphwrkshp.com/posts/github-actions-for-phoenix-app-deployment-to-hetzner/</guid><description>&lt;p&gt;Recently I started hosting &lt;a href="https://wishlistpalace.com/"&gt;wishlist palace&lt;/a&gt; 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 &lt;code&gt;mix&lt;/code&gt; releases which prepare binaries.&lt;/p&gt;
&lt;h2 id="os-and-chip-architecture"&gt;OS and chip architecture&lt;/h2&gt;
&lt;p&gt;Originally I was just going to compile on my local machine (A thinkpad T480) and upload
to the server. But this didn&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>How to Protect Your New Vps</title><link>https://jsphwrkshp.com/posts/how-to-protect-your-new-vps/</link><pubDate>Fri, 03 Apr 2026 23:43:51 -0400</pubDate><guid>https://jsphwrkshp.com/posts/how-to-protect-your-new-vps/</guid><description>&lt;p&gt;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&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>How to Use Augmented Coding to Build a Web App</title><link>https://jsphwrkshp.com/posts/how-to-use-augmented-coding-to-build-a-web-app/</link><pubDate>Sun, 29 Mar 2026 12:31:49 -0400</pubDate><guid>https://jsphwrkshp.com/posts/how-to-use-augmented-coding-to-build-a-web-app/</guid><description>&lt;p&gt;I recently launched &lt;a href="https://wishlistpalace.com"&gt;wishlist palace&lt;/a&gt; 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).&lt;/p&gt;
&lt;p&gt;When I first heard of vibe coding, I wasn&amp;rsquo;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&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>Setting up a hugo static site hosted with Porkbun</title><link>https://jsphwrkshp.com/posts/how-to-host-static-sites-on-porkbun/</link><pubDate>Mon, 23 Mar 2026 22:24:03 -0400</pubDate><guid>https://jsphwrkshp.com/posts/how-to-host-static-sites-on-porkbun/</guid><description>&lt;h2 id="content-generation"&gt;Content generation&lt;/h2&gt;
&lt;p&gt;This is a static site generated with &lt;a href="https://gohugo.io/getting-started/quick-start/"&gt;hugo&lt;/a&gt; with the
PaperMod theme. I wanted an easy to use static site generator. I considered &lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;
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&amp;rsquo;s a pretty superficial choice but I also don&amp;rsquo;t plan on hacking on the
site generation itself so I was agnostic to the Go versus Ruby choice.&lt;/p&gt;</description></item><item><title>Subscribe</title><link>https://jsphwrkshp.com/subscribe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jsphwrkshp.com/subscribe/</guid><description>&lt;p&gt;Subscribe to get new posts delivered straight to your inbox.&lt;/p&gt;
&lt;div class="subscribe-form"&gt;
&lt;p class="subscribe-label"&gt;→ get posts in your inbox&lt;/p&gt;
&lt;form
action="https://buttondown.com/api/emails/embed-subscribe/jsph"
method="post"
class="embeddable-buttondown-form"
&gt;
&lt;div class="subscribe-row"&gt;
&lt;label for="bd-email" class="subscribe-sr-label"&gt;Enter your email&lt;/label&gt;
&lt;input
type="email"
name="email"
id="bd-email"
class="subscribe-input"
placeholder="you@example.com"
required
/&gt;
&lt;input type="submit" value="subscribe" class="subscribe-btn" /&gt;
&lt;/div&gt;
&lt;p class="subscribe-hint"&gt;
no spam &amp;mdash; unsubscribe anytime. &amp;nbsp;
&lt;a href="https://buttondown.com/refer/jsph" target="_blank" rel="noopener"&gt;powered by buttondown.&lt;/a&gt;
&lt;/p&gt;
&lt;/form&gt;
&lt;/div&gt;</description></item></channel></rss>