<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://mattlorentz.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://mattlorentz.com/" rel="alternate" type="text/html" /><updated>2026-03-30T21:09:48+00:00</updated><id>http://mattlorentz.com/feed.xml</id><title type="html">Matthew Lorentz</title><subtitle>Personal website of Matthew Lorentz</subtitle><entry><title type="html">OpenSats Grant Report Q1 2026</title><link href="http://mattlorentz.com/2026/03/30/opensats-q1-grant-update.html" rel="alternate" type="text/html" title="OpenSats Grant Report Q1 2026" /><published>2026-03-30T00:00:00+00:00</published><updated>2026-03-30T00:00:00+00:00</updated><id>http://mattlorentz.com/2026/03/30/opensats-q1-grant-update</id><content type="html" xml:base="http://mattlorentz.com/2026/03/30/opensats-q1-grant-update.html"><![CDATA[<p>This is a copy of my quarterly report to <a href="https://opensats.org">OpenSats.org</a> who generously funds my work in the Nostr ecosystem.</p>

<p>You can view the previous quarterly report <a href="/2025/12/29/horcrux-end-of-year-update.html">here</a>.</p>

<h2 id="how-did-you-spend-your-time">How did you spend your time?</h2>

<blockquote>
  <p>Describe your progress and accomplishments since the last report. Include links to pull requests, commits, and other work.</p>
</blockquote>

<p>This quarter I split my time between my social backup tool Horcrux and contributing to the Nostr community space project Flotilla. Horcrux is nearly ready for an open beta release, but I jumped full time into Flotilla a bit earlier than planned to try to capitalize on the exodus from Discord following the announcement of their new age verification policies.</p>

<p>Horcrux got a full UI rework based on user testing along with a couple quality of life features and a ton of bugfixes. Here is the detailed list in roughly chronological order:</p>

<ul>
  <li>Improved invitations links to work when Horcrux is not installed</li>
  <li>Fixed several synchronization bugs related to invitations and recovery plan changes</li>
  <li>Improved relay communication with an persistent publishing queue and retry system.</li>
  <li>Reworked Recovery Status and Recovery Request screens based on user feedback.</li>
  <li>Implement feature to auto-distribute vault keys to peers instead of requiring user interaction.</li>
  <li>Add UI for vault owners to distribute out-of-band contact info for each steward.</li>
  <li>Added Linux build of the desktop app (along with AI harness for cloud agents to test the app)</li>
  <li>Improved status banner on the Vault Details screen to more clearly explain the current state of the vault and any pending action items for the user.</li>
  <li>Improved the presentation of vault invitations according to user feedback.</li>
</ul>

<p>You can find all 33 merged PRs <a href="https://github.com/mplorentz/horcrux/pulls?q=is%3Apr+updated%3A2026-01-01..2026-03-31+is%3Aclosed">here</a>.</p>

<p>On Flotilla my main project was implementing Voice Rooms, which are similar in behavior to Discord’s voice channels. The full list of contributions I made in rough chronological order are as follows:</p>

<ul>
  <li>Helped fix a bug related to signing in with Primal’s new signer.</li>
  <li>Fixed navigation bug in Settings menu mobile devices.</li>
  <li>Helped fix an issue with uploading images on Android.</li>
  <li>Fixed a bug related to deploying a self-hosted instance Flotilla and improved documentation.</li>
  <li>Added voice channels (modeled after Discord) that integrate a Livekit server for WebRTC calls from within Flotilla. Contributed to NIP updates to standardize AV calls in NIP-29 groups.</li>
  <li>Deployed an instance of the pomade distributed signer to support email-based login w/ Flotilla.</li>
  <li>Working on starting a Nostr builder community-of-practice with a couple friends which will help me dogfood Flotilla as a space steward.</li>
</ul>

<p>These changes were split into 12 pull requests across two repositories:</p>

<ul>
  <li><a href="https://gitea.coracle.social/pulls?type=created_by&amp;sort=recentupdate&amp;state=closed">Flotilla</a></li>
  <li><a href="https://github.com/coracle-social/zooid/pulls?q=is%3Apr+is%3Aclosed+author%3Amplorentz+updated%3A2026-01-01..2026-03-31">Zooid</a></li>
</ul>

<h2 id="what-are-your-plans-for-next-quarter">What are your plans for next quarter?</h2>

<blockquote>
  <p>Outline your goals and plans for the next quarter. Be specific about what you aim to accomplish.</p>
</blockquote>

<p>For Horcrux my plan is to do a full release of the app in relevant app stores. The major tasks to complete include:</p>

<ul>
  <li>Implement background checking for notifications</li>
  <li>Conduct (internal) security audit</li>
  <li>Deploy public beta</li>
  <li>Submit NIP for shamir’s secret sharing over Nostr</li>
  <li>Create marketing materials and website</li>
  <li>Deploy release to App Stores</li>
</ul>

<p>On Flotilla my plan is to:</p>

<ul>
  <li>Run usability trials with 3 existing non-Nostr communities who are exploring Discord alternatives. Their needs may shift the remaining goals considerably.</li>
  <li>Add video calls and screen sharing.</li>
  <li>Improve notification delivery options and reliability.</li>
  <li>Build a tool for consent-based decision-making (potentially as a third-party addon/bot)</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[This is a copy of my quarterly report to OpenSats.org who generously funds my work in the Nostr ecosystem.]]></summary></entry><entry><title type="html">Horcrux End of Year Update</title><link href="http://mattlorentz.com/2025/12/29/horcrux-end-of-year-update.html" rel="alternate" type="text/html" title="Horcrux End of Year Update" /><published>2025-12-29T00:00:00+00:00</published><updated>2025-12-29T00:00:00+00:00</updated><id>http://mattlorentz.com/2025/12/29/horcrux-end-of-year-update</id><content type="html" xml:base="http://mattlorentz.com/2025/12/29/horcrux-end-of-year-update.html"><![CDATA[<p>I’m almost 4 months in to building <a href="https://github.com/mplorentz/horcrux">Horcrux</a>, an open source app for backing up sensitive data to friends and family. The work is generously funded by <a href="https://opensats.org">OpenSats.org</a> and since I’ve been working on my quarterly report for them I thought I would share a public progress update too. So even though this was written with a grant committee in mind, here is what I’ve been up to for the last 3 months:</p>

<h1 id="overview">Overview</h1>

<p>I am just completing my first quarter of work on Horcrux, the best way to back up sensitive data to friends and family. This project was called Keydex for most of the first quarter, but I renamed it Horcrux about a month ago. To refresh your memory, this is a cross-platform mobile app that uses Shamir’s Secret Sharing algorithm to split sensitive data into shares, then uses Nostr to backup those shares to trusted “stewards”. This creates a secure backup where no computer or person has a full copy of the data, and restoring is only possible by consent of the stewards.</p>

<p>I’m pretty happy overall with the state of the app after 3 months. The app has basic versions of all the main features I wanted to implement, and I have been testing it in a private beta with several early adopters which gives me confidence that it will meet their needs. The app is far from done or perfect, and I have cut many features that I wanted, but having a complex cryptography app that’s almost consumer-ready after 3 months is something I am very satisfied with.</p>

<h1 id="key-learnings--product-story">Key Learnings / Product Story</h1>

<p>In my experience the most important part of building software is to always be learning from your users. I want to summarize what I have learned and how my plans have changed over the first 3 months of this product. For the TLDR; of what has been built feel free to skip to the next section.</p>

<p>Before I even submitted my grant application I started conducting user interviews and I have kept up the practice of interviewing at least one user every two weeks throughout the project. My initial timeline had me releasing a public beta at the two months mark, but I have opted instead for these private testing sessions because 1) I learn more from them than an open beta 2) I want the freedom to keep changing the data schema 3) this is an app for very sensitive data, and I don’t want people putting real data in until I have had a chance to do extensive testing and a security audit.</p>

<p>Early on I identified a few different use cases for this type of tool:</p>
<ul>
  <li>inheritance planning - backing up essential passwords, backup codes, cryptographic keys, and other instructions for giving others access to your digital life/assets after death.</li>
  <li>border crossings - some users are interested in crossing international borders with sensitive data they do not have the keys to unlock. Think journalists, activists, etc.</li>
  <li>cryptographic key backup - although many good solutions exist for backing up cryptographic keys, social backup of Nostr keys, web3 wallets, or other key pairs is a desirable security/convenience tradeoff for some users and threat models.</li>
  <li>credential management for organizations - some businesses have ultra-sensitive permissions gated by traditional passwords (think root AWS account for a fintech company). Shamir’s Secret Sharing with a special sandbox could help them grant temporary access to these systems only by consent of several parties.</li>
</ul>

<p>I decided to focus on the inheritance planning use case because:</p>
<ol>
  <li>The users I interviewed were most interested in that.</li>
  <li>It seemed the easiest to dovetail with an ethical business model.</li>
  <li>It is a tool that I would like to use personally.</li>
</ol>

<p>This focus helped me clarify design decisions and prioritize feature building. Some key insights for this user group from my interviews:</p>
<ul>
  <li>Although the users setting up digital inheritance plans are generally very technical, the stewards holding their data are usually not. Even password managers are too complex for many of these users. This means the user experience for them must be extremely smooth and clear.</li>
  <li>Although there is a very high initial effort to set up inheritance planning, most competing solutions neglect the maintenance (social and otherwise) to keep such a system healthy.</li>
  <li>Although there are many physical metaphors that can help users understand how Shamir’s Secret Sharing behaves, all of them have drawbacks. Initially I went with the terms “lockbox”, “keys”, and, “key holders” to describe the metaphor of putting things in a box that requires multiple keys to open. After some testing I switched to “vault”, “keys”, and “stewards”. But I considered and tested several other metaphors like puzzles, shards, shares, mosaic tiles, mailboxes, and crystals.</li>
</ul>

<p>So far on the project the biggest challenge has been making the UI intuitive enough for non-technical stewards to use. I had the basic backup and restore functionality working after just 3 weeks of programming. But making that functionality easy, accessible, and difficult to misuse has taken another 11 weeks and it probably needs another 11 to really be great (more on the future timeline later). This follows the old software adage that building the first 80% of the app takes 20% of the time and building the last 20% takes 80% of the time.</p>

<p>About 2 months into my 4 month timeline for this project I began to panic realizing that I was only going to be able to get about half of my planned features implemented. I was worried that this would turn into some half-finished software that no one except me would use. At this point I had done many user interviews but I hadn’t really tested the app with any potential users because there weren’t really enough features there to do a real test. I was able to push through and get all the basic features covered: creating a vault, inviting stewards via links, distributing keys to stewards, initiating vault recovery, responding to recovery requests, and fully recovering the data. Once I got to this point I scheduled more interviews to show folks the app.</p>

<p>These interviews were tremendously clarifying. They confirmed that I had the basics right, but also confirmed what I was feeling already: I was going to have to cut features. I decided to lean more into the cryptographic key backup use case because it was a slightly simpler use case. It doesn’t require backing up large files, which meant I could punt on implementing encrypted blob storage with Blossom. Because users don’t need to do as much text editing in this use case I could get away without shipping to all desktop platforms and keep the app mobile-only for now. And I also decided to cut the P2P features I was trying to build - namely that no data would be stored on relays long-term to improve forward security. This greatly simplified account management, device migration, and the number of round trips needed to distribute keys and recover. The app will still work for the inheritance planning use case (and border crossings) but the UI won’t be as optimized for those use cases.</p>

<p>I hope this was a good summary of <em>why</em> I have built Horcrux the way I have. Below you’ll find more detailed lists of my progress and some notes on future plans.</p>

<h1 id="feature-list">Feature List</h1>

<p>Here is roughly what the app can do today. There is no open beta yet, but I would be happy to give a live demo to anyone who would like one.</p>

<ul>
  <li>Login with your existing Nostr key, create a new account, or use without an account.</li>
  <li>Create an encrypted vault with arbitrary text (up to 4 kilobytes).</li>
  <li>Make a recovery plan for your vault, specify how many keys your vault will need to be opened, what relay servers you will use, etc.</li>
  <li>Invite stewards via an invitation link that prompts them to download Horcrux if they don’t have it installed, and displays the invitation in app if they do have it installed.</li>
  <li>Initiate recovery of a vault.</li>
  <li>Respond to recovery requests to assist vault owners or stewards with recovery.</li>
  <li>Practice the recovery flow without exchanging real data.</li>
  <li>Wipe the vault contents from your own device and hold a key to your own vault for maximum security.</li>
</ul>

<h1 id="future-plans">Future Plans</h1>

<p>Here is roughly what I would like to accomplish before shipping Horcrux 1.0:</p>
<ul>
  <li>rework recovery UX</li>
  <li>finalize data format and submit NIP spec <a href="https://github.com/mplorentz/horcrux/blob/main/NIP-draft.md">draft</a></li>
  <li>add the ability for vault owners to share out-of-band contact info for each steward</li>
  <li>(internal) security audit. I would love to pay for an independent audit, but I will need to secure more funding for this in the future.</li>
  <li>automated deployments</li>
  <li>public website, support email, privacy policy</li>
  <li>app store publishing</li>
</ul>

<p>My OpenSats grant proposal included two projects, first Horcrux and then a Nostr group communication app. My rough timeline was to work on Horcrux for 4 months and the Nostr group app for 8 months. I plan to extend my work on Horcrux to at least 5 months to finish the above features and get a full release done. I will be interleaving work for the Nostr groups app at the same time, in fact I have already been putting some hours into it.</p>

<h1 id="project-timeline">Project Timeline</h1>

<p>Below is a summary of my work with links to relevant commits and PRs, grouped into phases.</p>

<ul>
  <li>Startup (2 weeks, Sept 7-20)
    <ul>
      <li>User interviews</li>
      <li>name, design, branding research</li>
    </ul>
  </li>
  <li>Initial backup &amp; restore functionality (3 weeks, Sept 21-Oct 11)
    <ul>
      <li>Create a vault</li>
      <li>Add stewards</li>
      <li>Backup vault</li>
      <li>Restore vault</li>
      <li>Major PRs:
        <ul>
          <li><a href="https://github.com/mplorentz/horcrux/commit/c6c5be576515ea8f853655b76271ea1ce21039bc">Add Nostr key generation and secure storage</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/commit/541c3e19ff032c912311f45de7c821fbec973b58">Add encryption and persistence of lockboxes</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/commit/a0faad766e7d9769db8d293cf889c47ffe18828f">Add tests and helpers for KeyService and LockboxService</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/6">Add backup of shares to relays</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/7">Basic lockbox recovery</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Invitation links, UI/UX pass, refactoring (7 weeks, Oct 12-Nov 29)
    <ul>
      <li>Added invitation links that can be shared with stewards to add them to a vault</li>
      <li>UI pass on all screens to improve intuitiveness and functionality</li>
      <li>Full refactor service layer, adopted Riverpod state management</li>
      <li>Automatic relay management</li>
      <li>Basic onboarding screens</li>
      <li>Set up development relay</li>
      <li>Initial deployment to Testflight</li>
      <li>Major PRs:
        <ul>
          <li><a href="https://github.com/mplorentz/horcrux/pull/14">004-invitation-links</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/15">Scan-relays-automatically</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/19">Add names to vault owners and stewards</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/20">Add Instructions field for stewards</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/23">Initial testflight deployment</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/22">Design Refresh</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/27">Add basic onboarding screen</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/28">Add vault explainer screen before lockbox creation</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/34">UI Cleanup</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/9">Add Screenshot / Golden Tests</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Better onboarding, Practice Recovery, Self-stewardship (4 weeks, Nov 30-Dec 20)
    <ul>
      <li>Added separate onboarding flows for vault owners and stewards.</li>
      <li>Added tutorial for backing up Nostr key during onboarding.</li>
      <li>Added ability for vault owners to “practice” recovery (to test system without decrypting real vault data)</li>
      <li>Added ability for vault owners to hold a key to their own vault</li>
      <li>Reworked app colors and fonts</li>
      <li>Rebranded app from Keydex to Horcrux</li>
      <li>Major PRs:
        <ul>
          <li><a href="https://github.com/mplorentz/horcrux/pull/35">New theme</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/36">Onboarding Flow Redesign: User-Choice Account Management</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/47">Add account management screen with logout functionality</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/53">Practice Recovery</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/57">Fastlane: iOS and Android beta deployment automation</a></li>
          <li><a href="https://github.com/mplorentz/horcrux/pull/52">feat: Implement owner self-shard feature (006-owner-shard)</a></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[I’m almost 4 months in to building Horcrux, an open source app for backing up sensitive data to friends and family. The work is generously funded by OpenSats.org and since I’ve been working on my quarterly report for them I thought I would share a public progress update too. So even though this was written with a grant committee in mind, here is what I’ve been up to for the last 3 months:]]></summary></entry><entry><title type="html">SpoilerFree.gg Launch Retro</title><link href="http://mattlorentz.com/2025/05/27/spoiler-free-gg-retro.html" rel="alternate" type="text/html" title="SpoilerFree.gg Launch Retro" /><published>2025-05-27T00:00:00+00:00</published><updated>2025-05-27T00:00:00+00:00</updated><id>http://mattlorentz.com/2025/05/27/spoiler-free-gg-retro</id><content type="html" xml:base="http://mattlorentz.com/2025/05/27/spoiler-free-gg-retro.html"><![CDATA[<p>For the first time in my career I’m taking a shot at solopreneurship: building and launching my own software in an attempt to support myself financially. My goal is to launch six product experiments in six months.</p>

<p>I recently ran my first experiment: a website for following professional Counter-Strike 2 tournaments without the spoilers found on other sites, <a href="https://www.spoilerfree.gg/">SpoilerFree.gg</a>. I learned a lot and had a great time building it! I’m sharing my rough notes in case it’s helpful or interesting, but mostly to generate discussion with friends or anyone who is interested! So please if you have advice, comments, or questions find me on social media.</p>

<h2 id="summary">Summary</h2>

<p>I ran this experiment over 3 weeks, with the weeks roughly divided into: exploration and user research, building, and launch. Overall I had about 1000 people visit the site, the vast majority of which were from Reddit ads that I bought. I only had 1 person click the painted door experiment I put up for a pro subscription service. I also have 1 user (a different person) who signed up for an account and has been using the site for several days, but doesn’t seem interested in the pro version.</p>

<p>So overall something like a 0.01%-0.04% conversion rate, my success criteria was 5%, which was maybe too high, but in any case I didn’t get a strong signal that this was solving a pain people want to pay to solve.</p>

<p>The biggest takeaways for me:</p>
<ul>
  <li>I should look for problems that people are already spending significant money or time to work around.</li>
  <li>I should budget more money for user interviews at the outset, and also after launch.</li>
</ul>

<p>Below are some of my rough notes on how the 3 weeks played out:</p>

<h1 id="week-1---research">Week 1 - Research</h1>

<p>Market research, Figma prototypes, and user interviews</p>

<ul>
  <li>2 expert interviews with folks who had built similar sites
    <ul>
      <li>1 expert who had a similar site with a lot of users, but the site was free (they made the most money off associated Youtube videos). I should not have ignored the fact that users didn’t pay. Although I could make decent ad money if I could grow my site to their size.</li>
      <li>the other expert also hadn’t made a lot of money or gotten as much traffic, but did share their source code(!) with me.</li>
    </ul>
  </li>
  <li>Prototyping
    <ul>
      <li>I took the advice from <a href="https://pca.st/episode/b1dccb11-1356-4949-9eb9-39e1a533e9cd">Michael Margolis on this podcast</a> and sketched out 3 mockups using <a href="https://uxpilot.ai/?ref=matthew">UXPilot</a> and Figma and used these to generate discussion in my user interviews.</li>
    </ul>
  </li>
  <li>2 user interviews
    <ul>
      <li>1 was not a bullseye customer. This was a failure in my screener survey. I need to get even more specific without being leading!</li>
      <li>1 was a bullseye customer and organically mentioned spoilers as a problem, but didn’t have strong alternate solution. The fact that they didn’t spend significant time or money working around the problem is a signal I missed.</li>
    </ul>
  </li>
  <li>Legal research
    <ul>
      <li>The main problem I had was matches being spoiled by the length of the match on youtube. There were a lot of other, smaller problems related to spoilers but this was the problem I wanted to solve for myself and it felt like the solution didn’t exist. But research made me realize my solution (a custom player with the scrubber hidden) might violate the Youtube ToS. This led me towards minimizing this solution in the build, which weakened my value proposition.</li>
    </ul>
  </li>
</ul>

<h1 id="week-2---build">Week 2 - Build</h1>

<ul>
  <li>This part went super well. Was able to build really quickly with next.js and AI.</li>
  <li>Started with 3 1-shot prototypes (claude code (winner), v0, something else), picked my favorite and jumped into Cursor.</li>
  <li>Using <a href="https://github.com/eastlondoner/cursor-tools">vibe-tools</a> to make plans for large features with gemini worked really well. Then I’d have Claude implement the plan one step at a time and check its work after each step.</li>
  <li>Updating cursor rules as I went</li>
  <li>I’m hosting the site on the free plans of Vercel, Railway, and Supabase. All three are new to me but seem fine.</li>
</ul>

<h1 id="week-3---launch">Week 3 - Launch</h1>

<ul>
  <li>I’ve never run an ad campaign but it was pretty easy to get started on Reddit.</li>
  <li>Got just over 1000 eyeballs on the site for ~$100</li>
  <li>Had some trouble figuring out why people weren’t sticking around based on analytics alone. Wanted to do more user interviews, but the cost seems high for something that I think I stopped believing in.</li>
</ul>

<h1 id="conclusion">Conclusion</h1>

<p>Overall I’m pretty happy with how things went. I enjoyed it a lot and learned a lot. I really believed this could be successful, and maybe it could be if I put more effort into it, but for now I’m moving on to the next thing.</p>]]></content><author><name></name></author><category term="solopreneur" /><category term="startup" /><summary type="html"><![CDATA[For the first time in my career I’m taking a shot at solopreneurship: building and launching my own software in an attempt to support myself financially. My goal is to launch six product experiments in six months.]]></summary></entry><entry><title type="html">Nostr v SSB</title><link href="http://mattlorentz.com/2023/01/18/nostr-v-ssb.html" rel="alternate" type="text/html" title="Nostr v SSB" /><published>2023-01-18T00:00:00+00:00</published><updated>2023-01-18T00:00:00+00:00</updated><id>http://mattlorentz.com/2023/01/18/nostr-v-ssb</id><content type="html" xml:base="http://mattlorentz.com/2023/01/18/nostr-v-ssb.html"><![CDATA[<p><em>This is part of a document I wrote up while researching Nostr on behalf of the company I work for, <a href="https://planetary.social">Planetary</a>. I’m sharing it here because several people outside have asked to see it. These are my opnions after spending 5 years in the Secure Scuttlebutt community and 1 week in the Nostr community, so there are certainly some generalizations on the Nostr side that are based on first impressions and bias and may not be reflective of every part of the ecosystem. It’s also worth mentioning that Nostr is very young and could change significantly. Indeed it will have to if it continues to grow.</em></p>

<h1 id="summary">Summary</h1>

<p>Nostr is “The simplest open protocol that is able to create a censorship-resistant global ‘social’ network once and for all.” Nostr is very young and the protocol is still in its infancy. It’s unclear whether its simplicity is naive or elegant, whether it can scale to millions of users both in technical performance and preventing spam and abuse. Nevertheless the protocol is easy to work with and has a vibrant community quickly growing around it.</p>

<p>The key difference at a protocol level is that SSB posts are signed and published to an ordered append-only log, while Nostr posts are just signed and sent to to relay servers. There are many other differences most of them hinge on this fact.</p>

<p>The main <strong>advantages</strong> it has over Scuttlebutt are:</p>

<ul>
  <li>Onboarding is quick and easy.</li>
  <li>The protocol already supports editing, deleting, and ephemeral posts.</li>
  <li>You can use the same account with multiple devices.</li>
  <li>It is much easier to understand and implement.</li>
  <li>It has more active users, momentum, apps, and tools.</li>
</ul>

<p>The main <strong>disadvantages</strong> it has vs. Scuttlebutt are:</p>

<ul>
  <li>There are not yet any good systems to prevent abuse on public relays. There is no way to block or hide abusive accounts or posts in most apps, there is no standard way to report abusive accounts to relay owners, there are no blocklists being shared by relay owners, etc.</li>
  <li>There is not yet any good solution to preventing spam on the network. The leading idea so far is adding a proof-of-work cost to publish a message, which is isn’t a great solution imo.</li>
  <li>Nostr messages are unordered. This is what gives the protocol its simplicity and power, but it creates some side effects:
    <ul>
      <li>You can never know if you have all the messages from a given account, even your own.</li>
      <li>You can’t efficiently sync messages between relays (yet). This results in awkward flows where users may not be sure where their data is or how to move it.</li>
      <li>It may not be obvious when a relay is omitting some content on purpose.</li>
      <li>Faking the timestamp on a message is much easier.</li>
    </ul>
  </li>
</ul>

<p>Here are some other <strong>contrasts</strong> that don’t fall clearly into advantage/disadvantage:</p>

<table>
  <tr>
   <td><strong>SSB</strong>
   </td>
   <td><strong>Nostr</strong>
   </td>
  </tr>
  <tr>
   <td>Local discourse
   </td>
   <td>Global discourse
   </td>
  </tr>
  <tr>
   <td>Freedom of listening first
   </td>
   <td>Freedom of speech first
   </td>
  </tr>
  <tr>
   <td>Solarpunk, anti-capitalist vibes
   </td>
   <td>crypto vibes
   </td>
  </tr>
  <tr>
   <td>Slow rate of protocol change
   </td>
   <td>High rate of protocol change
   </td>
  </tr>
  <tr>
   <td>Poor docs + specs
   </td>
   <td>Good docs + specs
   </td>
  </tr>
  <tr>
   <td>Founder inactive
   </td>
   <td>Founder active
   </td>
  </tr>
  <tr>
   <td>Emphasis on relationships + governance to solve problems
   </td>
   <td>Emphasis on technology to solve problems
   </td>
  </tr>
</table>

<h1 id="technical-feature-comparison">Technical Feature Comparison</h1>

<table>
  <tr>
   <td><strong>Feature</strong>
   </td>
   <td><strong>SSB</strong>
   </td>
   <td><strong>Nostr</strong>
   </td>
  </tr>
  <tr>
   <td>Self-authenticating data
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Identity portability
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Trustless servers
   </td>
   <td>X
   </td>
   <td>
   </td>
  </tr>
  <tr>
   <td>Multi-device identities
   </td>
   <td>
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Key rotation
   </td>
   <td>
   </td>
   <td>
   </td>
  </tr>
  <tr>
   <td>Key delegation
   </td>
   <td>
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Edit/Deleting Content
   </td>
   <td>
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Peer to Peer Replication
   </td>
   <td>X
   </td>
   <td>
   </td>
  </tr>
  <tr>
   <td>Binary Data
   </td>
   <td>X
   </td>
   <td>
   </td>
  </tr>
  <tr>
   <td>Peer content moderation
   </td>
   <td>X
   </td>
   <td>
   </td>
  </tr>
  <tr>
   <td>Aliases for identities
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Retweets/reposts
   </td>
   <td>
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Impossible to fork feed
   </td>
   <td>
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Easy to add new message types
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Hashtags
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Ephemeral Messages
   </td>
   <td>
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Published social graph
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Private direct messages
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Private groups
   </td>
   <td>
   </td>
   <td>
   </td>
  </tr>
  <tr>
   <td>Public groups
   </td>
   <td>
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Emoji reactions
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Content warnings
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Web viewers
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>User interaction required for relays
   </td>
   <td>X
   </td>
   <td>X
   </td>
  </tr>
  <tr>
   <td>Works offline
   </td>
   <td>X
   </td>
   <td>
   </td>
  </tr>
</table>]]></content><author><name></name></author><category term="social" /><category term="decentralized" /><category term="nostr" /><category term="ssb" /><summary type="html"><![CDATA[This is part of a document I wrote up while researching Nostr on behalf of the company I work for, Planetary. I’m sharing it here because several people outside have asked to see it. These are my opnions after spending 5 years in the Secure Scuttlebutt community and 1 week in the Nostr community, so there are certainly some generalizations on the Nostr side that are based on first impressions and bias and may not be reflective of every part of the ecosystem. It’s also worth mentioning that Nostr is very young and could change significantly. Indeed it will have to if it continues to grow.]]></summary></entry><entry><title type="html">Reinventing Organizations Book Report</title><link href="http://mattlorentz.com/2022/07/23/reinventing-organizations-book-report.html" rel="alternate" type="text/html" title="Reinventing Organizations Book Report" /><published>2022-07-23T00:00:00+00:00</published><updated>2022-07-23T00:00:00+00:00</updated><id>http://mattlorentz.com/2022/07/23/reinventing-organizations-book-report</id><content type="html" xml:base="http://mattlorentz.com/2022/07/23/reinventing-organizations-book-report.html"><![CDATA[<p><em>This is a cross post from my Secure Scuttlebutt account. Some links won’t work because they are cypherlinks intended to be viewed on SSB.</em></p>

<p>I’ve been wanting to write down some more thoughts about the book <a href="https://www.reinventingorganizations.com">Reinventing Organizations</a> which I finished several months ago, but I’m just getting around to doing it now. Huge thanks to <a href="@6H9x/fq6Iq+NWs05WSzMToYuBQ02f2BMzwnhTtxr/ck=.ed25519">@jeukku</a> for the <a href="%kNHIFfYhSYEgjpqhxP550/1Ohmck4IuQ+8SVEqGeyLY=.sha256">recommendation</a>, I’m so glad I picked this one up!</p>

<p>Reinventing Organizations was a real eye opener for me, and it completely convinced me of the premise: that companies of self-managing employees can exist at all sizes, in various industries, and can outperform traditionally-managed organizations.</p>

<p>I have never worked for a cooperative or other type of organization where ultimate authority and ownership come from the workers, not a CEO or board of directors. My desire when I asked <a href="%kNHIFfYhSYEgjpqhxP550/1Ohmck4IuQ+8SVEqGeyLY=.sha256">this question</a> was to learn more about them and hear real stories about how they solve the tough problems. Hiring, firing, compensation, budgets. How can large groups of people manage themselves in situations where people disagree and compromise  is not effective?</p>

<p>The answer lies in a few simple principles. (These aren’t directly from the book, these are my own takeaways).</p>

<ol>
  <li>People will generally work hard, and work towards the higher purposes of the organization when they feel responsible for its future and empowered to effect change. This is the foundation of self-management. Traditional organizations are stuck in industrial era mindsets in their views of workers: that workers are mostly lazy, dishonest, unintelligent, and must not be trusted. But viewing workers this way is a self-fulfilling prophecy.</li>
  <li>The goal is not to eliminate all power hierarchies. The goal is to move away from having a <em>single</em> org-chart style hierarchy. Instead, create many hierarchies with different people at the top of each, and be flexible in rearranging them as circumstances evolve. People take on well-defined roles and changing one’s list of active roles is done much more frequently than changing a job title or org chart in a traditional organization.</li>
  <li>The advice protocol. The advice protocol says “any person can make any decision after seeking advice from 1) everyone who will be meaningfully affected, and 2) people with expertise in the matter. Advice received must be taken into consideration.” This radically empowers people to solve problems without getting bogged down trying to focus on unanimous approval. The advice protocol is sacred and violating it is one of the worst offenses you can commit in a self-managing organization.</li>
  <li>Peer to peer conflict resolution is essential and every effort must be taken to ensure that it stays effective. This involves: robust training in conflict-resolution for all members, creating a culture of psychological safety, supporting processes like standing meetings for processing tension, peer reviews, check-in and check-out processes at meetings, etc.</li>
</ol>

<p>The whole first part of the book was a strange broad-stroke history of the world, which I found reductive and not well-supported. I don’t think the author’s goal was so much to make an argument with historical backing as to tell stories about different types of organizational worldviews to draw on throughout the rest of the book. If you find it off-putting just power through or skip it and read the summary paragraphs at the end.</p>

<p>I highly recommend the book to anyone interested in healthier ways of working. I have found myself using some of the concepts and processes from the book in my day-to-day work at Planetary, even though we aren’t a self-managed organization (although management processes are very lightweight and informal). There is a <a href="https://reinventingorganizationswiki.com/en/">wiki</a> for the book that I found helpful and drew on to write this. For anyone looking to start or transition to a self-managing organization there is also <a href="https://www.holacracy.org">Holacracy</a>, a company that provides training, consulting, and example processes and documents that can be adopted.</p>]]></content><author><name></name></author><category term="book-report" /><category term="organization" /><category term="cooperatives" /><summary type="html"><![CDATA[This is a cross post from my Secure Scuttlebutt account. Some links won’t work because they are cypherlinks intended to be viewed on SSB.]]></summary></entry><entry><title type="html">Scheduling Flow</title><link href="http://mattlorentz.com/2021/12/18/scheduling-flow.html" rel="alternate" type="text/html" title="Scheduling Flow" /><published>2021-12-18T00:00:00+00:00</published><updated>2021-12-18T00:00:00+00:00</updated><id>http://mattlorentz.com/2021/12/18/scheduling-flow</id><content type="html" xml:base="http://mattlorentz.com/2021/12/18/scheduling-flow.html"><![CDATA[<p>Flow state is an incredibly productive and rewarding place to find yourself. I think all programmers know the conditions required to find flow: a challenging problem, no distractions, and plenty of mental energy. I have always tried to create these conditions in my work day, but it wasn’t until recently that I listened to an <a href="https://open.spotify.com/episode/72ejCLl57bquFBfEAjZEXU?si=v5rnTdLfS4-r1tdjZLtDxw">episode of the Huberman Lab Podcast</a> and considered <em>scheduling</em> flow into my day. Andrew Huberman talks about his daily routine and it inspired me to try to be more intentional about getting into a flow state every day.</p>

<h2 id="my-routine">My Routine</h2>

<p>My current routine includes a scheduled 90 minute “work bout” in the morning, and sometimes another in the afternoon. The morning bout is scheduled to coincide with the part of my circadian rhythm when it is easiest for my brain to focus.</p>

<p>I track the 90 minutes as three <a href="https://en.wikipedia.org/wiki/Pomodoro_Technique">pomodoro</a> sessions during which I mute almost all notifications.</p>

<p>Despite having a lot of tools and software to control notifications, getting everything into the state I wanted took more effort than I thought. I want to share my setup in case its useful to others.</p>

<h2 id="goals">Goals</h2>

<p>In order to get into this habit I wanted to be able to put my computer into “distraction-free” mode as easily as possible. My requirements were:</p>

<ul>
  <li>Launch distraction free mode via a single command or keyboard shortcut.</li>
  <li>Only be interrupted for emergencies.</li>
  <li>Communicate the fact that I’m doing focused work to coworkers and family.</li>
</ul>

<h2 id="implementation">Implementation</h2>

<ul>
  <li>I start off my 90 minute work session using <a href="https://www.alfredapp.com/">Alfred</a>. I type “pomo” into the launch bar which runs a <a href="http://mattlorentz.com/assets/Pomodoro.alfredworkflow">custom workflow</a> I made.</li>
  <li>The custom workflow runs some AppleScript that starts my Pomodoro timer. I use the <a href="https://flowapp.info/">Flow</a> timer app because it’s free and has AppleScript support.</li>
  <li>The AppleScript also sets my Slack status to “🎧 focused” and puts Slack into Do Not Disturb mode. This lets my coworkers know that I’m doing focused work and may not see their message right away. Slack gives them the option to punch through Do Not Disturb if their message is truly urgent. Slack doesn’t support AppleScript, but fortunately there is a good tool for it on <a href="https://github.com/samknight/slack_applescript">Microsoft Github</a>.</li>
  <li>Finally, the Alfred workflow sets my macOS/iOS Focus Mode. Focus Modes are a new feature in iOS 15/macOS 12 and it was this feature that actually gave me the motivation to set up this whole system. I have a custom Focus called “Coding” that allows notifications from Xcode, my calendar, and my wife. The ability to allow notifications from certain <em>people</em> rather than certain <em>applications</em> through is an awesome feature that I didn’t know I wanted until I had it. Unfortunately even macOS doesn’t support AppleScript anymore, at least when it comes to Focus mode 😢. So to turn my Coding Focus on automatically the Alfred workflow runs a bash script that runs a simple Shortcut I created in Apple’s Shortcuts app. The shortcut uses the “Set Focus” action.</li>
  <li>At this point I engage in 25 minutes of focused work - generally writing code. I try to minimize context-switching during this time to keep my focus. I find that staring at the compiler progress bar is better than switching to Slack, social media, etc.</li>
  <li>After 25 minutes are up, I take a 5 minute break to stand up, stretch, and check Slack.</li>
  <li>After 3 pomodoro sessions I run <a href="http://mattlorentz.com/assets/Unfocus.alfredworkflow">another Alfred workflow</a> I created that clears my Slack status and Focus.</li>
</ul>

<p>I wish it was more straightforward to set this up, but I have been getting a lot of work done this way. I hope if you are a knowledge worker who doesn’t already schedule “flow” into your work day maybe this has started the gears turning for you.</p>]]></content><author><name></name></author><category term="productivity" /><summary type="html"><![CDATA[Flow state is an incredibly productive and rewarding place to find yourself. I think all programmers know the conditions required to find flow: a challenging problem, no distractions, and plenty of mental energy. I have always tried to create these conditions in my work day, but it wasn’t until recently that I listened to an episode of the Huberman Lab Podcast and considered scheduling flow into my day. Andrew Huberman talks about his daily routine and it inspired me to try to be more intentional about getting into a flow state every day.]]></summary></entry><entry><title type="html">121559 0500</title><link href="http://mattlorentz.com/2019/11/05/121559-0500.html" rel="alternate" type="text/html" title="121559 0500" /><published>2019-11-05T17:15:59+00:00</published><updated>2019-11-05T17:15:59+00:00</updated><id>http://mattlorentz.com/2019/11/05/121559-0500</id><content type="html" xml:base="http://mattlorentz.com/2019/11/05/121559-0500.html"><![CDATA[<p>Just used <a href="https://www.vote411.org">Vote411</a> again to choose who I’ll be voting for today. Such a great tool!</p>]]></content><author><name></name></author><category term="micro" /><summary type="html"><![CDATA[Just used Vote411 again to choose who I’ll be voting for today. Such a great tool!]]></summary></entry><entry><title type="html">Xplode - A script to reset your Xcodes</title><link href="http://mattlorentz.com/2019/04/12/announcing-xplode.html" rel="alternate" type="text/html" title="Xplode - A script to reset your Xcodes" /><published>2019-04-12T00:00:00+00:00</published><updated>2019-04-12T00:00:00+00:00</updated><id>http://mattlorentz.com/2019/04/12/announcing-xplode</id><content type="html" xml:base="http://mattlorentz.com/2019/04/12/announcing-xplode.html"><![CDATA[<p>Every iOS developer has been there. A cryptic compilation error, a segmentation fault in the compiler, failure to connect to the simulator. How do you fix it? First you try compiling again. Then you clean the build folder. Rebuild again. Delete derived data? Maybe that will help. Nope. You search StackOverflow and something in the back of your mind asks if the walled garden is a sanctuary or a prison. There it is - you just needed to erase your simulator and force quit Xcode. Now  you can get back to writing code.</p>

<p>Is Xcode actually significantly buggier than other IDEs? I don’t know. But I know I’ve spent way too much time on Xcode issues that were solved by some variation of <em>turning it off and on again</em>.</p>

<h2 id="xplode">Xplode</h2>

<p>Xplode is a bash script that turns the things off and back on again. It  takes about 10 seconds to run on my machine, and has saved me hours of debugging time over the past few months. To be specific, Xplode 1.0 will:</p>

<ul>
  <li>Clean the Build Folder</li>
  <li>Quit Xcode</li>
  <li>Delete Derived Data</li>
  <li>Reset all simulators</li>
  <li>Reopen Xcode</li>
</ul>

<p>To install:</p>
<ol>
  <li><code class="language-plaintext highlighter-rouge">brew tap mplorentz/tap https://gitlab.com/mplorentz/tap</code></li>
  <li><code class="language-plaintext highlighter-rouge">brew install xplode</code></li>
</ol>

<p>To use:</p>
<ol>
  <li>Run <code class="language-plaintext highlighter-rouge">xplode</code> in your project’s directory.</li>
</ol>

<h2 id="why">Why?</h2>

<p>I have always been frustrated with Xcode’s cryptic and sometimes random errors. But on my latest project I found myself spending several hours a week debugging problems that turned out to be Xcode’s fault. More than once I have lost a full working day only to find out that Derived Data was to blame. My co-workers were having a similar experience.</p>

<p>My current client has several Swift frameworks that install one another via CocoaPods. Some of them have Objective-C dependencies and they aren’t always using the same versions of Swift and Xcode. I think this has been the perfect storm to bring out all the weird corner cases in the Xcode toolchain. After making one too many jokes about throwing my computer out the window I decided to take matters into my own hands.</p>

<p>The name “Xplode” (which I think came from my friend <a href="http://jtbrown.org">Josh</a>, thanks Josh) is leftover from the original design which was supposed to physically blow up your computer and order a new one from Apple, checking out your git repo and rebuilding your project when the new machine arrived. This version probably would have still saved some developers time and money, but was deemed impractical for other reasons. The second prototype used AppleScript to fill your screen with animated GIFs of explosions and people destroying computers while it ran through the steps to restart Xcode in the background. The AppleScript necessary to tile an arbitrary set of GIFs onscreen dwarfed the code that actually turned things off an back on again. Ultimately macOS Mojave’s permission dialogs killed that version too. Thus the current Bash version was born. It isn’t as much fun but gets the job done.</p>

<p>You can find the source code, open issues, and contribute at <a href="http://xplode.computer">xplode.computer</a>.</p>]]></content><author><name></name></author><category term="xcode" /><category term="swift" /><category term="release" /><summary type="html"><![CDATA[Every iOS developer has been there. A cryptic compilation error, a segmentation fault in the compiler, failure to connect to the simulator. How do you fix it? First you try compiling again. Then you clean the build folder. Rebuild again. Delete derived data? Maybe that will help. Nope. You search StackOverflow and something in the back of your mind asks if the walled garden is a sanctuary or a prison. There it is - you just needed to erase your simulator and force quit Xcode. Now you can get back to writing code.]]></summary></entry><entry><title type="html">Getting Rid Of Google - 2019 Edition</title><link href="http://mattlorentz.com/2019/03/02/130000-0500.html" rel="alternate" type="text/html" title="Getting Rid Of Google - 2019 Edition" /><published>2019-03-02T00:00:00+00:00</published><updated>2019-03-02T00:00:00+00:00</updated><id>http://mattlorentz.com/2019/03/02/130000-0500</id><content type="html" xml:base="http://mattlorentz.com/2019/03/02/130000-0500.html"><![CDATA[<h1 id="getting-rid-of-google---2019-edition">Getting Rid of Google - 2019 Edition</h1>

<p>Back in 2013 Google held all the cards in my digital life. They had all my emails, web searches, phone calls, texts, directions to every new place I went, calendar events, most of the documents I worked on, and many of the websites I visited.</p>

<p>It’s now 2019. Google still rules a large swath of the internet. But they have much less power over my online experience and they are making much less money from me.</p>

<p>I feel morally obligated to be part of the current privacy crusade. In 2013 I decided to make a commitment to cut Google out of my life. I was inspired by the Snowden revelations and <a href="https://web.archive.org/web/20150824230043/http://decentralizer.com/">Steven Frank’s project</a> to take back his own personal data from cloud services. But at the time it seemed like an impossible task. Some services had easy alternatives, but others had nothing of similar quality or price.</p>

<p>In this post I want to review all the Google services I was using then and see what I have replaced them with today. I also want to evaluate who owns my data today and what, if any, further actions I should be taking to protect my privacy.</p>

<h2 id="gmail">Gmail</h2>

<p>Getting off Gmail is hard and easy at the same time. There are hundreds of decent mail providers out there, and picking a good one is not hard - if you are willing to fork over a few dollars a month. This was a hard commitment to make when I was in college, but I don’t regret it.</p>

<p>I switched to the privacy conscious and non-US based <a href="https://kolabnow.com">KolabNow</a> (RIP <a href="https://en.wikipedia.org/wiki/Lavabit">Lavabit</a>). I also changed my email address to use my own domain name, which gives me an address that will last a lifetime and allows me to switch hosts whenever I want.</p>

<p>Some of my friends and relatives still use my old address, so I have to keep it around. That and most email providers want a backup email for account recovery. So the old Gmail address sticks around, but there is a very low volume of mail coming through. Of course <a href="https://mako.cc/copyrighteous/google-has-most-of-my-email-because-it-has-all-of-yours">Google still has most of my emails</a>, but I’m doing as much as I can to fight it.</p>

<ul>
  <li>TODO: Consider deleting the Gmail account altogether and paying for (or self-hosting?) a second email for account recovery purposes.</li>
  <li>Replaced with: KolabNow</li>
  <li>Data visible to: KolabNow</li>
</ul>

<h2 id="gchat">GChat</h2>

<p>Back in 2010 instant messages were still a very important medium for me. Now if I need to chat with someone I usually end up using iMessage/SMS for personal conversations and Slack for work. iMessage is <em>supposedly</em> end-to-end encrypted, but SMSs aren’t very private at all. I’ve used several other types of chat software over the years like IRC, <a href="https://www.signal.org">Signal</a>, <a href="https://matrix.org/blog/home/">Matrix</a>, <a href="https://keybase.io">Keybase</a>, etc., but the problem with picking a chat platform is that popularity is usually the deciding factor.</p>

<ul>
  <li>TODO: I should use Signal more.</li>
  <li>Replaced with: iMessage, SMS, Slack</li>
  <li>Data visible to: Verizon/everyone on SS7, Slack, maybe Apple</li>
</ul>

<h2 id="google-search">Google Search</h2>

<p>There’s a reason Google is a verb, and that reason is Search. I use <a href="https://duckduckgo.com">Duck Duck Go</a> as the default search engine on all my devices these days, but for many queries I have to use the <code class="language-plaintext highlighter-rouge">!g</code> command to forward my question to Google. Duck Duck Go just doesn’t understand what I am asking for, especially when I’m searching for programming questions.</p>

<p>Maybe there are search engines that give Google’s results but do more to obfuscate my identity. Or maybe there are better websites than Duck Duck Go. I haven’t looked. I should.</p>

<ul>
  <li>TODO: Investigate other search engines.</li>
  <li>Replaced with: Duck Duck Go</li>
  <li>Data visible to: Duck Duck Go, Google</li>
</ul>

<h2 id="google-voice">Google Voice</h2>

<p>Google Voice had one killer feature for me: the ability to send and receive SMS messages from my laptop. iMessage gained this feature in 2014 which made it easy to get rid of. I’ve already discussed iMessage and Signal above.</p>

<ul>
  <li>Replaced with: SMS, iMessage</li>
  <li>Data visible to: Verizon/Everyone on SS7, maybe Apple</li>
</ul>

<h2 id="google-maps">Google Maps</h2>

<p>Google Maps was one of the hardest products to replace in 2013. MapQuest had fallen behind and Apple Maps and <a href="https://www.openstreetmap.org">OpenStreetMap</a> hadn’t taken off yet.</p>

<p>These days I use Apple Maps. Exchanging Google for Apple is a small win but not ideal. The only privacy-respecting alternative I know of is OpenStreetMap, which I have tried very hard to use. But it just doesn’t cut it. Given a phone, a navigation app, and the name of a destination I often can’t get directions with OpenStreetMap in under a minute. Trying to convert a destination’s name to a longitude/latitude is really hard and not always possible.</p>

<ul>
  <li>TODO: I will try OpenStreetMap again in the future, and maybe try some of the closed-source navigation apps I have spurned so far.</li>
  <li>Replaced with: Apple Maps</li>
  <li>Data visible to: Apple</li>
</ul>

<h2 id="google-plus">Google Plus</h2>

<p>Just kidding. Nobody used Google Plus.</p>

<h2 id="google-calendar">Google Calendar</h2>

<p>Today I use iCloud to sync my calendars between devices. I think  KolabNow, who already hosts my email, hosts calendars as well but I’ve never tried it. I should. Or maybe I should self-host.</p>

<ul>
  <li>TODO: Switch calendar/contact hosting to KolabNow or my own server.</li>
  <li>Replaced with: iCloud Calendar</li>
  <li>Data visible to: maybe Apple</li>
</ul>

<h2 id="google-docs">Google Docs</h2>

<p>Google Docs was the only document editor with really good concurrent editing support in 2010. Today that’s not the case and without a school assigning group projects I don’t have nearly as much need for it. When I do I usually use <a href="http://hack.md/cgi-sys/defaultwebpage.cgi">hack.md</a> or <a href="https://etherpad.org">Etherpad</a>. I tried to self-host hack.md but I couldn’t figure out the administration part of it. Although both are open-source I should still host one of them myself.</p>

<ul>
  <li>TODO: Self-host a real-time document editor.</li>
  <li>Replaced with: hack.md, Etherpad</li>
  <li>Data visible to: hack.md, Etherpad host</li>
</ul>

<h2 id="google-reader">Google Reader</h2>

<p>RSS used to be my “social media” where I got my news, followed friends, and learned more about what I’m interested in. But as Twitter, Facebook, and other networks grew I stopped using RSS as much. When Google Reader shut down it wasn’t a big deal for me. Today I use <a href="https://www.newsblur.com">NewsBlur</a> which is hosted by someone else but is open source. I’m pretty happy with it. I may try to self-host it someday.</p>

<ul>
  <li>Replaced with: NewsBlur</li>
  <li>Data visible to: NewsBlur</li>
</ul>

<h2 id="google-ads">Google Ads</h2>

<p>I don’t usually think of myself as a “user” of Google Ads when I see them. But Google Ads are the reason all of these other services exist. I use an ad blocker because of the state of online tracking today. I know that denying Google and other sites revenue while I continue to use their services is unfair. But being tracked by ads these days happens across websites, whether you are using the companies services or not. This tracking is done without permission and without many users knowledge, and it is unethical and dangerous. So I use <a href="https://github.com/gorhill/uBlock/">uBlock Origin</a> on desktop and <a href="https://www.purify-app.com">Purify</a> on iOS. I’m also planning to set up a <a href="https://pi-hole.net">Pi-hole</a> at home when I get a chance.</p>

<ul>
  <li>Replaced with: Nothing</li>
  <li>Data visible to: No one</li>
</ul>

<h2 id="youtube">YouTube</h2>

<p>YouTube has a stranglehold on the online video world and it is where I consume most video content today. <a href="https://joinpeertube.org/en/">PeerTube</a> looks promising but doesn’t have the content that I want to watch. Unlike most of the other Google services I have gotten rid of there is no alternative way to consume the same content. Maybe the best I can do right now is to donate a couple bucks a month to PeerTube.</p>

<ul>
  <li>TODO: Donate to PeerTube</li>
  <li>Replaced with: N/A</li>
  <li>Data visible to: Google</li>
</ul>]]></content><author><name></name></author><category term="decentralized" /><category term="google" /><summary type="html"><![CDATA[Getting Rid of Google - 2019 Edition]]></summary></entry><entry><title type="html">20190226164537-0500</title><link href="http://mattlorentz.com/2019/02/26/164537-0500.html" rel="alternate" type="text/html" title="20190226164537-0500" /><published>2019-02-26T21:45:37+00:00</published><updated>2019-02-26T21:45:37+00:00</updated><id>http://mattlorentz.com/2019/02/26/164537-0500</id><content type="html" xml:base="http://mattlorentz.com/2019/02/26/164537-0500.html"><![CDATA[<p>Haven’t been using my Twitter account at all recently so I deleted it today. It served a good purpose but I’m on to smaller and better networks now.</p>]]></content><author><name></name></author><category term="micro" /><summary type="html"><![CDATA[Haven’t been using my Twitter account at all recently so I deleted it today. It served a good purpose but I’m on to smaller and better networks now.]]></summary></entry></feed>