<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Peter Briggs</title>
  <subtitle>Peter thinks about technology, humanity, the small web, etc., and might write some of it down.</subtitle>
  <link href="https://peter.briggs.seattle.wa.us/feed.xml" rel="self" />
  <link href="https://peter.briggs.seattle.wa.us/" />
  <updated>2026-03-06T22:58:21Z</updated>
  <id>https://peter.briggs.seattle.wa.us/</id>
  <author>
    <name>Peter Briggs</name>
    <email>contact@email.peter.briggs.seattle.wa.us</email>
  </author>
  <entry>
    <title>Randomizer tools</title>
    <link href="https://peter.briggs.seattle.wa.us/tools/random/" />
    <updated>2026-03-06T22:58:21Z</updated>
    <id>https://peter.briggs.seattle.wa.us/tools/random/</id>
    <content type="html">&lt;p&gt;Need to randomize things? Here&#39;s a tool that&#39;s helpful to me and might be helpful to you.&lt;/p&gt;
&lt;p&gt;&lt;noscript&gt;These tools aren&#39;t server-side, so they probably won&#39;t work without JavaScript enabled.&lt;/noscript&gt;&lt;/p&gt;
&lt;h2&gt;Shuffle&lt;/h2&gt;
&lt;p&gt;&lt;label for=&quot;shuffle-input&quot;&gt;Insert a list to shuffle:&lt;/label&gt;&lt;/p&gt;
&lt;textarea id=&quot;shuffle-input&quot; autofocus=&quot;&quot; rows=&quot;8&quot; placeholder=&quot;Alice
Bob
...&quot;&gt;&lt;/textarea&gt;
&lt;p&gt;&lt;button onclick=&quot;javascript:shuffle()&quot;&gt;Shuffle!&lt;/button&gt;&lt;/p&gt;
&lt;pre id=&quot;shuffle-output&quot; hidden=&quot;&quot;&gt;&lt;/pre&gt;
&lt;script&gt;
function shuffle_array(array) {
    let current_index = array.length;
    while (current_index != 0) {
        let random_index = Math.floor(Math.random() * current_index);
	    current_index--;
	    [array[current_index], array[random_index]] = [array[random_index], array[current_index]];
    }
}
function shuffle() {
     const input = document.getElementById(&quot;shuffle-input&quot;).value.split(/&#92;r?&#92;n/);
     shuffle_array(input);
	 const output = document.getElementById(&quot;shuffle-output&quot;);
     output.innerText = input.join(&quot;&#92;r&#92;n&quot;);
     output.hidden = false;
}
&lt;/script&gt;</content>
  </entry>
  <entry>
    <title>Locality Domains</title>
    <link href="https://peter.briggs.seattle.wa.us/page/locality-domains/" />
    <updated>2026-03-06T22:58:21Z</updated>
    <id>https://peter.briggs.seattle.wa.us/page/locality-domains/</id>
    <content type="html">&lt;p&gt;I have &lt;code&gt;briggs.seattle.wa.us&lt;/code&gt;, and you might be able to get one for yourself, with your own city and state, if you&#39;re in the US! They&#39;re free, too. I had success following &lt;a href=&quot;https://fredchan.org/blog/locality-domains-guide/&quot;&gt;Frederick Chan&#39;s great guide&lt;/a&gt;, but your mileage may vary, especially depending on what city you want your domain to contain.&lt;/p&gt;
&lt;h2&gt;Services&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DNS&lt;/strong&gt;: I went with AWS Lightsail but I regret it. It&#39;s free because of a sort of pricing loophole, but it&#39;s a bit of a pain to work with. The input validator is very cryptic, and I still haven&#39;t found a way to point stuff at a CloudFront distribution or other AWS endpoint. I intend to switch to Route 53 (which Lightsail DNS seems to use, but doesn&#39;t let you manage the zone in the Route 53 dashboard) if I ever have the need for a more competent DNS nameserver.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CloudFlare&lt;/strong&gt;: Not. I&#39;ve tried and researched, but CloudFlare seems to insist that I can&#39;t use their services, even without their DNS, on what they see as a subdomain. Without an enterprise account, that is. I wonder if it&#39;s worth getting &lt;code&gt;.seattle.wa.us&lt;/code&gt; on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Public_Suffix_List&quot;&gt;Public Suffix List&lt;/a&gt; (PSL) so it gets recognized as an effective top-level domain (eTLD). I guess &lt;code&gt;.wa.us&lt;/code&gt; is already a recognized eTLD in the PSL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email&lt;/strong&gt;: I use &lt;a href=&quot;https://purelymail.com&quot;&gt;Purelymail&lt;/a&gt; and they&#39;re awesome. Nothing special about the locality domain for registering with them. I&#39;m remembering some issue I had, possibly with a different email provider, where one of the email authentication DNS records was too long for Lightsail so I had to re-split the string onto different lines? I think the record I was instructed to add was already split at 256 characters, but Lightsail had some arbitrary limit that&#39;s just a little less than that, like 240 characters. So I concatenated and re-split the authentication record at 240 or whatever and it worked fine.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>App Defaults</title>
    <link href="https://peter.briggs.seattle.wa.us/page/app-defaults/" />
    <updated>2026-02-08T08:09:21Z</updated>
    <id>https://peter.briggs.seattle.wa.us/page/app-defaults/</id>
    <content type="html">&lt;p&gt;&lt;em&gt;Inspired by &lt;a href=&quot;https://www.lkhrs.com/blog/app-defaults-2025/&quot;&gt;Luke Harris&lt;/a&gt; and Robb Knight&#39;s &lt;a href=&quot;https://defaults.rknight.me/&quot;&gt;App Defaults&lt;/a&gt; project, but admittedly more verbose! Last updated February 2026&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mail Server:&lt;/strong&gt; &lt;a href=&quot;https://purelymail.com/&quot;&gt;Purelymail&lt;/a&gt;. They&#39;re awesome.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mail Client:&lt;/strong&gt; Gmail, with a little guilt. Gmail&#39;s UI isn&#39;t even that nice, but I have yet to find a &amp;quot;real&amp;quot; email client that works and looks nice and I like. So, for now, Purelymail just forwards mail to Gmail and Gmail is set up to use Purelymail&#39;s outgoing SMTP servers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; Obsidian.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;To-Do:&lt;/strong&gt; Sporadically, Home Assistant &lt;a href=&quot;https://www.home-assistant.io/integrations/todo&quot;&gt;to-do list&lt;/a&gt; for some tasks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Photo Management:&lt;/strong&gt; Google photos and/or one of my Syncthing folders. I&#39;ve also tried out &lt;a href=&quot;https://www.photoprism.app/&quot;&gt;PhotoPrism&lt;/a&gt; as a more specialized self-hosted app, but have not set up a more permanent installation (yet?).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Calendar:&lt;/strong&gt; Several different calendars on Google Calendar sorted roughly by event category. Then Home Assistant pulls the calendars and turns on appropriate status LEDs around the house to remind me.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cloud File Storage:&lt;/strong&gt; Not in the cloud. I vehemently despise OneDrive despite it being shoved down my throat at every opportunity by Windows (which I rarely use) and seemingly every organization that uses Microsoft Suite (or 365 or Copilot or whatever they call it nowadays). I sync most of my files with Syncthing, between my various home directories and an instance running as a Home Assistant add-on.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;RSS:&lt;/strong&gt; Newsflash. Initially I was resistant to using an online feed aggregator (after all, doesn&#39;t that partially defeat the purpose of decentralization?) but then I was switching laptops and realized it really is quite nice to have my read/unread statuses synchronized. I currently use the &lt;a href=&quot;https://github.com/Athou/commafeed/&quot;&gt;CommaFeed&lt;/a&gt; public instance at &lt;a href=&quot;https://commafeed.com&quot;&gt;commafeed.com&lt;/a&gt;, but would consider self-hosting an instance of either CommaFeed or &lt;a href=&quot;https://miniflux.app/&quot;&gt;Miniflux&lt;/a&gt;. (I&#39;m not tied to any particular aggregator since I mainly use Newsflash in front anyway. I&#39;m on CommaFeed currently because I chose it at random from Newsflash&#39;s list of supported aggregators.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contacts:&lt;/strong&gt; Google contacts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Browser:&lt;/strong&gt; Long story. I originally used Chrome, but then I switched to a Raspberry Pi as my main computer for a few months, and Firefox was the default. I would have installed Chrome (for familiarity, password sync, DevTools, etc.) but Google didn&#39;t seem to build Chrome for ARM64 (Chromium was available but, if I remember correctly, it didn&#39;t sync passwords &lt;a href=&quot;https://blog.chromium.org/2024/08/seamlessly-use-your-passwords-and.html&quot;&gt;at the time&lt;/a&gt;—and might have felt a little slower than Firefox on the RPi5). So I stuck with Firefox and used Firefox&#39;s sync feature across my devices for bookmarks, passwords, etc. Then, recently (November 2025?), I happened to be introduced to &lt;a href=&quot;https://zen-browser.app/&quot;&gt;Zen Browser&lt;/a&gt; when reading through Alex White&#39;s &lt;a href=&quot;https://thatalexguy.dev/posts/bring-back-shareware/bring-back-share/&quot;&gt;&amp;quot;Software I Love&amp;quot; list&lt;/a&gt;. It works with Firefox sync but feels more polished and less clunky than Firefox, so I&#39;ve been enjoying it. When I do need Chromium (mainly for the DevTools, especially that one CSS Flex attribute editor menu), I also have &lt;a href=&quot;https://ungoogled-software.github.io/about/&quot;&gt;Ungoogled Chromium&lt;/a&gt; installed—not so much to avoid Google as that it was packaged in a way that made it the fastest and easiest to install on my system.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Text Chat:&lt;/strong&gt; Well, I use Google Voice for MMS (and voice calls if those ever happened). I&#39;m also in a couple Slack workspaces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bookmarks:&lt;/strong&gt; Firefox bookmarks. When I&#39;m using a horizontal-tabbed (aka normal) browser, I can&#39;t bear letting my bookmarks make a huge mess, so they&#39;re nicely categorized into folders. In Zen Browser, bookmarks aren&#39;t visible (unless I&#39;m missing them somewhere obvious). It can be a little annoying, but I typically just type the name of the bookmark into the address bar and Zen auto-completes to the bookmark.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Read It Later:&lt;/strong&gt; I fear that if I make it too easy to dump stuff somewhere, I&#39;ll never get around to actually reading it. I have a reading list in Obsidian, which adds just enough friction to make me decide whether to read something now, add it to the list, or drop it and do more important things.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Word Processing:&lt;/strong&gt; LibreOffice. The only viable alternative I know of is Microsoft Word, which doesn&#39;t run on Linux (and &lt;em&gt;do not&lt;/em&gt; tell me to use &amp;quot;Word on the Web&amp;quot;— that webapp is so inconsistent in its document rendering, and just straight-up not designed for UX once you try to use any options more advanced than bold/italic. Plus, it requires that you save your document in OneDrive, and makes it &lt;em&gt;way too difficult&lt;/em&gt; to download the actual file when you&#39;re ready to extract it from the editor).[^1]&lt;/p&gt;
&lt;p&gt;Recently, I&#39;ve been experimenting with writing the bulk of my content in Obsidian, because it somehow feels cleaner and easier.[^2] Then I reluctantly dump that text into a &amp;quot;proper&amp;quot; word processor and format it to meet standard expectations. Or not if I think I can get away with just directly sending a PDF exported by Obsidian.[^3][^4]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Spreadsheets:&lt;/strong&gt; I use LibreOffice or Google Sheets. Google Sheets is generally nicer because it&#39;s better about crunching large amounts of data without freezing up (lots of work going on server-side at Google to support my smooth experience). But Google Sheets feels more well-rounded for the stuff I use it for, and is generally easier to use. Easy conditional formatting, loading rows from Google Forms, usually enough functions for what I need, and good integration with Apps Script if I need to squeeze a little more juice out of it (once I wrote a script to do some custom filtering of data so it was intuitive and easy for both the spreadsheet user and the one filling out the Google Form).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Presentations:&lt;/strong&gt; I don&#39;t do them much, at least not with visuals. I&#39;ve had to give a few speeches recently, which I draft and write in Obsidian. When I do need slides, I use LibreOffice Impress in lieu of PowerPoint (Linux). But I had a slip-up recently where I saved my slides in OpenDocument format (instead of &lt;code&gt;Save As&lt;/code&gt; &amp;gt; &lt;code&gt;.pptx&lt;/code&gt;) when sending my presentation to the presenter device (it wasn&#39;t an option to just plug in my own laptop). PowerPoint actually did what these editors always warn about, specifically, it stripped my nice background colors, completely changing the spirit of the slides—oops! That was not a fun presentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;News:&lt;/strong&gt; Almost exclusively the Sunday paper. I&#39;ll look an event up if it sounds major and I&#39;m interested, otherwise I let the world do its thing and hear about it at a more gradual pace.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Music:&lt;/strong&gt; 70% of the music I listen to (mostly classical) is either ripped from CDs or downloaded from Wikimedia Commons / Internet Archive. I use &lt;a href=&quot;https://www.strawberrymusicplayer.org/&quot;&gt;Strawberry Music Player&lt;/a&gt; on my computer, and I also Syncthing the music folder to a Samba server on the LAN, from which Music Assistant (running as a Home Assistant add-on) pulls the audio. Perhaps more complicated than necessary. The other 30% (mostly &lt;em&gt;Hamilton&lt;/em&gt; and random one-off songs that get sent to me) I stream with ads using Spotify.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Podcasts:&lt;/strong&gt; I don&#39;t listen to podcasts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Audiobooks:&lt;/strong&gt; I&#39;ve recently discovered that online services at many libraries are really cool and have tons of resources. So I can use BiblioCommons / Libby to borrow audiobooks from several local libraries on a short-term basis. I am around the library a lot, yet the ability to get library content remotely somehow makes it a lot more convenient.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Password Management:&lt;/strong&gt; Firefox passwords.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I guess I could probably rearrange this list to make more sense. Also there&#39;s some more categories to cover, e.g. Home Assistant. (I&#39;ve also removed some items that were on Robb Knight&#39;s list.)&lt;/p&gt;
&lt;p&gt;[^1]: It&#39;s not just me: https://lionelbarrow.substack.com/p/dont-even-consider-starting-with&lt;/p&gt;
&lt;p&gt;[^2]: Both from a UI perspective of &lt;em&gt;&amp;quot;wow I&#39;ll never use 60% of these features in my life, and I certainly don&#39;t even need to change my font or anything right now&amp;quot;&lt;/em&gt; and because I don&#39;t really like WYSIWYG editors (I often find them more difficult to use, like when the italics are &amp;quot;sticky&amp;quot; when you try to insert new text near formatted text... you know what I mean?)&lt;/p&gt;
&lt;p&gt;[^3]: I need to improve my Obsidian print stylesheet, which should help my documents look more like what people expect. I want to avoid a separate build or templating process, though this seems mostly feasible with just CSS.&lt;/p&gt;
&lt;p&gt;[^4]: Wow I guess I have a lot of feelings about this. Maybe I&#39;ll write them down somewhere else.&lt;/p&gt;
</content>
  </entry>
</feed>