<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><generator uri="https://gohugo.io/">Hugo</generator><link href="https://sneak.berlin/feed.xml" rel="self" type="application/atom+xml"/><link href="https://sneak.berlin/" rel="alternate" type="text/html"/><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/feed.xml</id><title type="html">Jeffrey Paul</title><subtitle>The personal website of Jeffrey Paul.</subtitle><author><name>Jeffrey Paul</name></author><entry><title type="html">Megalopolis</title><link href="https://sneak.berlin/20260227/megalopolis/" rel="alternate" type="text/html" title="Megalopolis"/><published>2026-02-27T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20260227/megalopolis</id><content type="html" xml:base="https://sneak.berlin/20260227/megalopolis/">&lt;p&gt;I&amp;rsquo;ve been in Bangkok the last two weeks, and three times in the last six months.
The city is incredible. It&amp;rsquo;s well over 10 million people, approaching that of
Istanbul, which is the largest city in all of Europe. After a certain threshold
size, you get to a point where anything humans do on Earth happens here. Every
instrument that exists is played, every language that is spoken is spoken, every
cuisine that is cooked is cooked. Everything happens here.&lt;/p&gt;
&lt;p&gt;The density in Bangkok is on par with any place I&amp;rsquo;ve ever been, Tokyo included.
The breadth of activities in Bangkok far surpasses any other place I&amp;rsquo;ve ever
been. I&amp;rsquo;m not euphemistically talking about the infamous sex work (I get my
kicks &lt;em&gt;above the waistline&lt;/em&gt;, sunshine), but the relative freedom here compared
with places of equivalent density that I&amp;rsquo;ve visited, such as Tokyo or Beijing or
London. The general practical permissiveness of this city was a surprise to me,
given just how tightly controlled most cities of this type are, and how
conservative and authoritarian I know Thailand to be.&lt;/p&gt;
&lt;p&gt;I can see why people come and live here.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s incredibly convenient to exist in such a place. Last night, I had Georgian
food delivered an hour before midnight, cooked and brought to my hotel in less
than 40 minutes. I believe the entire (priority direct) delivery fee was around
100 baht
(~$3), maybe less. I always tip the delivery drivers another 100 baht
(~$3),
which is the maximum the tip selector UI gives me. That&amp;rsquo;s around $7 all in.&lt;/p&gt;
&lt;p&gt;The climate in Bangkok lends itself exceptionally well to plants. Plant matter
here is bordering on too cheap to meter. The quality of fruits and vegetables is
off the charts—it&amp;rsquo;s as good as any place I&amp;rsquo;ve ever been, the Mediterranean
included. Greek salads actually work here. Pasta sauces made well in the Italian
style are indistinguishable from those made on the Mediterranean coast.&lt;/p&gt;
&lt;p&gt;Thai people (or cooks, at least) seem to resemble Americans in the sense that
they&amp;rsquo;re more than willing to deep fry anything or cover it in cheese or put way
too much refined sugar into a dish or a drink. Almost all the drinks that I get
here are way sweeter than I would expect them to be, and there seems to be a
trend of putting cream cheese (simply called &amp;ldquo;cheese&amp;rdquo;) on everything, even
things it probably shouldn&amp;rsquo;t go on. This matches my palate exactly as a
Midwestern American fat kid, but is somewhat surprising in a city this large and
cosmopolitan.&lt;/p&gt;
&lt;p&gt;This is definitely the most westernized place I&amp;rsquo;ve ever been in Asia, and it&amp;rsquo;s a
gigantic city at that. I&amp;rsquo;m staying in a neighborhood called Phrom Phong, which
has three of the largest and most well-appointed shopping centers that I&amp;rsquo;ve ever
seen. One has a dentist and a nail salon and an indoor trampoline place inside
of it. There are three of them all within a five-minute walk of each other. The
food choices are mind-bending in their quantity.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve never seen this diversity of food available in such a small area in my
entire life. Parts of Tokyo approximate it, but Japanese people seem to be
somewhat more fixated on specific types of cuisine—French pastries, for example.
Bangkok doesn&amp;rsquo;t give a fuck. They&amp;rsquo;ve simply got everything here. There are tons
of Japanese immigrants, and so there&amp;rsquo;s tons of really good Japanese restaurants.&lt;/p&gt;
&lt;p&gt;In one building, you can get a tooth descaling, see a movie in IMAX, buy a Coach
handbag or a new iPhone, eat incredibly good authentic Italian food, buy an
array of macarons that would rival any place I&amp;rsquo;ve ever seen, and eat Chicago&amp;rsquo;s
finest Garrett Caramel Corn. (IYKYK - Chicago mix all the way.)&lt;/p&gt;
&lt;p&gt;In most cities of this echelon, you find yourself coping under the cast of a
sort of economic damage-over-time spell. A few days in Paris or Hong Kong and
you realize that your budget for your ten-day trip was, well, &lt;em&gt;optimistic&lt;/em&gt;. A
coffee here, a dinner there, and suddenly you&amp;rsquo;re in the red in a day. No such
background preoccupations loom here, as even in the glittering center nothing
exceeds manageable prices (for westerners, anyway—Thai people tell me Bangkok&amp;rsquo;s
ridiculously expensive). The nonstop construction of luxury condos everywhere
threatens to imminently alter this upwards, just like Beijing and Shanghai and
Seoul before it.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve played now in two underground poker games here that were run better than
most legitimate casinos. The games here also run a little bit larger than I was
expecting—about twice the size that I normally play in Las Vegas, which is
surprising considering that the average daily labor income here is somewhere in
the $15-$20 USD equivalent range. The cash games that I&amp;rsquo;ve played have blinds of
100/200 baht (~$3/$6). The level of income inequality here is breathtaking.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve heard of such insane disparities in places like New Delhi, and of course in
China, but in China, you don&amp;rsquo;t really seem to have it so much in one city. The
Chinese government keeps huge masses of people from moving into places like
Beijing or Shanghai. There&amp;rsquo;s a long waiting list, and I believe a lottery system
for people who want to move to Beijing. The Thai government, as far as I
understand, does not have any such restrictions, and anyone who wants can come
(or move) to the city.&lt;/p&gt;
&lt;p&gt;In most other places in the world where you&amp;rsquo;d see a construction site of 20–30
people, you&amp;rsquo;d have 10 of them working and a few standing around per worker. In
Thailand, you see 50 people on the project all working their ass off covered in
sweat. I don&amp;rsquo;t think I&amp;rsquo;ve ever seen a place with a work ethic as incredible as
Thailand. This is not to disparage the salarymen of Japan or the 996ers in the
Pearl River Delta, but the amount of labor that gets done in this city simply
astounds me.&lt;/p&gt;
&lt;p&gt;I can&amp;rsquo;t recommend it enough. The humidity is famously oppressive, but if you can
get past that, the weather is always perfect. I was swimming in a rooftop pool
on Christmas day here—it was somewhere around 80°F. That trip I actually came
here from my winter home, Las Vegas, specifically because the weather is better.
I think Berlin was under a nice dusting of snow.&lt;/p&gt;
&lt;p&gt;I think it would be dangerously easy to move here and get caught up in life
here, given the leverage of the huge disparity between western incomes and far
east prices. Life here is phenomenally easy and exceptionally high quality. I
see why so many Westerners move here. I can&amp;rsquo;t help but feel that it&amp;rsquo;s all built
on the backs of a tremendous and invisible underclass, slaving away for pennies
an hour to support the tip of the iceberg that appears in pristine retail
towers.&lt;/p&gt;
&lt;p&gt;The sheer extent of this place, though, is staggering. Just walking around, you
can go from an exposed sewer in a back alley to a gleaming retail outlet of a
global brand, sparkling and spotless, in 100 seconds of walking. I don&amp;rsquo;t know
any other place in the world like this.&lt;/p&gt;
&lt;p&gt;My favorite places in the world are the A-list world cities: Paris, London, Hong
Kong, Tokyo, New York, Los Angeles, Moscow, Istanbul, Seoul. I don&amp;rsquo;t know all of
them — I haven&amp;rsquo;t been able to come up with an authoritative heuristic. It&amp;rsquo;s not
just the so-called &lt;a href="https://en.wikipedia.org/wiki/Primate_city"&gt;primate cities&lt;/a&gt;,
although Bangkok is indeed a primate city. I don&amp;rsquo;t know why Bangkok escaped my
notice for so long, given my true appreciation for A-list cities. Perhaps the
stigma of Thailand being a &amp;ldquo;poor country&amp;rdquo; (and it is, indeed, a poor country)
made me assume that Bangkok was going to be shabby. That was a mistake.&lt;/p&gt;
&lt;p&gt;I should have come here years ago. Visit it if you can.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">I’ve been in Bangkok the last two weeks, and three times in the last six months. The city is incredible. It’s well over 10 million people, approaching that of Istanbul, which is the largest city in all of Europe. After a certain threshold size, you get to a point where anything humans do on Earth happens here. Every instrument that exists is played, every language that is spoken is spoken, every cuisine that is cooked is cooked. Everything happens here.</summary></entry><entry><title type="html">Build / Buy / Bot</title><link href="https://sneak.berlin/20251224/build-buy-bot/" rel="alternate" type="text/html" title="Build / Buy / Bot"/><published>2025-12-24T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20251224/build-buy-bot</id><content type="html" xml:base="https://sneak.berlin/20251224/build-buy-bot/">&lt;p&gt;In the old days when you ran your startup, you had to focus on your core
objectives very closely in the early days. You
&lt;a href="https://mattrickard.com/innovation-tokens"&gt;had a limited number of innovation tokens&lt;/a&gt;,
and beyond that you had to focus on your core product exclusively. No
sysadminning (Heroku/Lambda), no hard drives (S3), no databases (RDS), no CDN
(Cloudflare), no geth (Infura).&lt;/p&gt;
&lt;p&gt;As a result, there are many SaaS startups that offer relatively straightforward
services: things like APIs, API caching/aggregation/translation layers,
industry-specific CRUD apps, image or video transcoding and resizing, analytics,
&lt;a href="https://www.blocknative.com/blog/ethereum-transaction-notification-webhooks"&gt;webhook gateways&lt;/a&gt;,
etc. They&amp;rsquo;re not hard to build, they&amp;rsquo;re just time-consuming, and adjacent to
your startup&amp;rsquo;s core mission. You can pay them some small usage-based fee now,
and if you get larger, you can build a replacement or renegotiate or change
vendors.&lt;/p&gt;
&lt;p&gt;A lot of SaaS startups&amp;rsquo; secret sauce was simply having faster devs than their
customers and perhaps on-call sysadmins, not some specific insight or unique
knowledge about the problem space they are solving.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all out the window now with SOTA AI models.
&lt;a href="https://fly.io/blog/youre-all-nuts/"&gt;Disparage &amp;ldquo;vibe coding&amp;rdquo; all you like, it&amp;rsquo;s here and it works and it&amp;rsquo;s going to change the world.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The build/buy equation just got an anvil dropped on one side of the seesaw, and
your stupid SaaS startup idea is pulling a Wile E. Coyote midair at 30,000 feet.
If all of the edge you had was that you could build it faster than your
customers, you&amp;rsquo;re toast.&lt;/p&gt;
&lt;p&gt;Competent engineers can now crank out a prototype supporting api/service
(unrelated to their startup&amp;rsquo;s &lt;em&gt;raison d&amp;rsquo;être&lt;/em&gt;) in a day or two, something that
used to take a few people a month. Will it be as good and featureful and
polished? No. Will it be as reliable? No, but serverless exists and bugfixes and
test coverage will take minutes now instead of hours. It&amp;rsquo;s a startup, and it&amp;rsquo;ll
probably be good enough, and close enough in perf to your free/startup tier that
they&amp;rsquo;ll do that instead of paying you $49/month.&lt;/p&gt;
&lt;p&gt;Furthermore, they&amp;rsquo;ll probably open source it, because it is unrelated to their
profit model; remember, we&amp;rsquo;re talking about tangential supporting services here.
If they don&amp;rsquo;t, someone else scratching that itch will. People will add features
to it to make it more broadly useful on an as-needed basis. Bullshit &amp;ldquo;open core&amp;rdquo;
startups will thankfully be toast.&lt;/p&gt;
&lt;p&gt;The barrier to entry for starting a useful SaaS before was that you could
actually ship working software faster than most. That&amp;rsquo;s gone now.&lt;/p&gt;
&lt;p&gt;I expect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;many small orgs/startups choosing &amp;ldquo;build&amp;rdquo; much more often than &amp;ldquo;buy&amp;rdquo;&lt;/li&gt;
&lt;li&gt;large orgs assigning small teams to build internal replacements for
medium-to-large SaaS products that they are paying a vendor big recurring
dollars for, because of the force multipliers that are LLMs&lt;/li&gt;
&lt;li&gt;boring/basic CRUD b2b SaaSes to die even faster than they already are&lt;/li&gt;
&lt;li&gt;a slight shift back toward b2c due to the decreased cost of platform-specific
mobile client development&lt;/li&gt;
&lt;li&gt;tons of SaaSes being replaced by f/oss projects
&lt;ul&gt;
&lt;li&gt;&amp;hellip;many of which will sadly be
&lt;a href="/20250720/minio-are-assholes/"&gt;fake open source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;open core&amp;rdquo; projects to have their data retention/SSO/2FA enterprise carrot
nonfree plugins/libraries to be either replaced by vibe coded f/oss
replacements that slot in easily to the &amp;ldquo;community edition&amp;rdquo;, or simply forked,
as the cost of reviewing PRs and merging in upstream changes drops
dramatically&lt;/li&gt;
&lt;li&gt;increased frequency of new working and useful f/oss projects, because
scratching an itch becomes &lt;em&gt;so much easier and faster&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;I even have &lt;a href="https://git.eeqj.de/sneak/routewatch"&gt;a&lt;/a&gt;
&lt;a href="https://git.eeqj.de/sneak/mfer"&gt;few&lt;/a&gt;
&lt;a href="https://git.eeqj.de/sneak/ipapi"&gt;of&lt;/a&gt;
&lt;a href="https://git.eeqj.de/sneak/vaultik"&gt;my&lt;/a&gt;
&lt;a href="https://git.eeqj.de/sneak/secret"&gt;own&lt;/a&gt;. I imagine many others are tagging
1.0.0 of little side projects that have been pending for years.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">In the old days when you ran your startup, you had to focus on your core objectives very closely in the early days. You had a limited number of innovation tokens, and beyond that you had to focus on your core product exclusively. No sysadminning (Heroku/Lambda), no hard drives (S3), no databases (RDS), no CDN (Cloudflare), no geth (Infura).</summary></entry><entry><title type="html">Show Candidates Your Cap Table.</title><link href="https://sneak.berlin/20250801/show-candidates-your-cap-table/" rel="alternate" type="text/html" title="Show Candidates Your Cap Table."/><published>2025-08-01T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20250801/show-candidates-your-cap-table</id><content type="html" xml:base="https://sneak.berlin/20250801/show-candidates-your-cap-table/">&lt;p&gt;It&amp;rsquo;s hard enough trying to decide if you should take a job with an early-stage
startup. There&amp;rsquo;s so much uncertainty: the product, your reputation, salary (as
always), and, of course, equity.&lt;/p&gt;
&lt;p&gt;The generally accepted wisdom is that you should treat equity like a lottery
ticket. It&amp;rsquo;s nice to have, but it probably won&amp;rsquo;t be worth anything. This isn&amp;rsquo;t
bad advice, but when you buy a lottery ticket, you know the exact number the
jackpot represents.&lt;/p&gt;
&lt;p&gt;Most employee equity grants (which almost always take the form of stock options)
typically only specify the number of options being granted to the employee and
the associated strike price (and a vesting schedule). They can&amp;rsquo;t indicate what
percentage of the company at a potential exit those options represent without
also providing the number of total shares outstanding and a rough estimate of
future dilution as the company raises more money. Even with those figures, it is
not possible to assess the potential value of an options grant without
additional key inputs—most critically, the post-money valuation of the most
recent financing round. This isn&amp;rsquo;t even taking into account any liquidation
preferences.&lt;/p&gt;
&lt;p&gt;Most employee option grants vest over time, typically with a one-year cliff and
a four-year schedule. This means you won&amp;rsquo;t have access to most of your options
until you&amp;rsquo;ve worked at the company for several years. Depending on the stage of
the company, that timeframe may encompass one or more additional financing
rounds before it would be reasonable to exercise the portion of your options
that are vested, let alone participate in any kind of secondary market.
Additional dilution affecting all equity holders (including founders) is almost
certain as further funding rounds occur. This adds even more uncertainty to your
calculations, driven by variables both beyond your control and presently
unknowable with any precision.&lt;/p&gt;
&lt;p&gt;It makes a hard problem even harder when trying to estimate what one&amp;rsquo;s options
might be worth in the happy path of a successful company and liquidity event.
There are already many unknowns around the product, the company, future staffing
decisions that will determine success or failure, the market for employee equity
in private companies (naturally the VC market ebbs and flows as money becomes
cheaper or more expensive), future required funding rounds, and salary, which is
often subject to wide negotiation in early-stage companies.&lt;/p&gt;
&lt;p&gt;When attempting to estimate the expected value of options, a candidate has to
juggle the probabilistic distributions of several different variables. Even if
you regard it as a lottery ticket, you want to calculate the approximate value
at the two poles: zero, and the value in a successful exit. Only then can you
get into the even messier work of calculating EV based on your actual opinion of
success probability.&lt;/p&gt;
&lt;p&gt;This is difficult enough without the founders withholding the most important
part of the calculation: the denominator. Without any understanding of how many
shares might be outstanding when your options mature, it transforms an extremely
difficult task into a literally impossible one.&lt;/p&gt;
&lt;p&gt;The current practice of most startup founders is to treat their cap table as
somewhat of a secret. I&amp;rsquo;ve often encountered pushback when asking founders for
access to it. But the cap table (or at least the critical figures: total shares
outstanding, fully diluted share count, option pool size, and the post-money
valuation of the most recent funding round or two) should be available to all
employees who hold or may be granted equity. These figures establish the basis
for understanding how much of the company your grant represents, what price
investors recently paid, and what kind of outcomes are required for your equity
to be worth anything. It is as critical to understanding your total compensation
as your salary offer. They are also relevant during employment, as it&amp;rsquo;s not
uncommon for employees to negotiate for more options paired with a reset
multi-year vesting schedule, this being a normal occurrence during tough times
between rounds to retain employees who might be beginning to update their
resume.&lt;/p&gt;
&lt;p&gt;A clearly defined subset of those figures should always be shared with potential
hires alongside any discussion of equity grants included in an offer. This is
not the practice today, and it well should be. Make them sign a limited NDA to
receive the offer if you must due to backend contractual obligations, but don&amp;rsquo;t
skip the facts of the matter.&lt;/p&gt;
&lt;p&gt;Founders should care a lot about this. Withholding critical cap table details
from the people you&amp;rsquo;re asking to take a significant personal and professional
risk on your company feels like a thinly veiled attempt at distracting
candidates from the real meat of the deal. It doesn&amp;rsquo;t read as inexperience,
instead, to those of us who know math, it reads as subterfuge. It repels
high-agency, detail-oriented talent, precisely the kind of professionals who ask
hard questions and tend to hold the line under pressure, i.e. the motherfuckers
you really want. Worse, it misrepresents the economic reality of the offer.
Founders typically frame equity as a meaningful part of the total compensation
package. This framing implies value, and in many cases is used to justify a
below-market cash salary. A grant of &amp;ldquo;100,000 options&amp;rdquo; can sound impressive. But
100,000 options in a 10-million-share company with a
$20M post-money valuation
(implying potentially $200k in value) is an order of
magnitude more than in a 100-million-share cap table with an identical
$20M valuation (implying $20k). Omitting the denominator, strike
price-to-preferred price delta, and liquidation preferences allows founders to
imply upside that simply doesn&amp;rsquo;t exist. Equity without numbers isn&amp;rsquo;t a good
faith negotiation, it&amp;rsquo;s just theater.&lt;/p&gt;
&lt;p&gt;The recent shift toward extending the post-employment vested option exercise
window from 90 days to 10 years
(&lt;a href="https://a16z.com/recommendations-for-startup-employee-option-plans/"&gt;spearheaded by a16z in 2016&lt;/a&gt;)
is a big step in the right direction, and a good signal that at least some VCs
and founders are actually willing to question &amp;ldquo;this is how we&amp;rsquo;ve always done
things&amp;rdquo; when the status quo is plainly unfair to early employees, but there are
more traditions yet that we should retire. If you&amp;rsquo;re asking people to work
nights and weekends making a last-ditch attempt to lift off before the runway
ends, you owe them more than vague promises and hand-waving: you owe them the
numbers.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s an implicit pressure on candidates to not push harder for such figures,
as if wanting the actual details about their compensation package means they
might not sufficiently believe in the vision or presumed success. Somehow,
inconsistently, this implied perception of skepticism isn&amp;rsquo;t applied to honest
discussions about the salary. The situation is ultimately ridiculous. You want
serious people? Have serious conversations.&lt;/p&gt;
&lt;p&gt;Indeed, founders take on significant risk when they start a company. However,
early-stage employees do as well, and the risk to them is primarily the same
risk as it is to the founders: many years of their prime working life. After
all, it&amp;rsquo;s usually not the founders&amp;rsquo; money that&amp;rsquo;s on the line if the company
fails, but the VCs&amp;rsquo;. In this regard, employees and founders have drastically
different reward structures balanced against approximately the same amount of
personal risk. This imbalance is not unfair, as it correctly rewards initiative,
vision, and a near-pathological amount of gumption. These are exceptionally rare
and valuable things that should always be hugely incentivized. It is, however, a
little bit patronizing to further skew this already asymmetrical relationship
against the potential or current employee while they are undertaking one of the
potentially largest financial decisions of their life. While the compensation
may remain asymmetrical, the access to information should not be so.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;As always, you are invited to
&lt;a href="https://bbs.sneak.berlin/t/show-candidates-your-cap-table/1117"&gt;discuss this post on the BBS&lt;/a&gt;
(signup required). &lt;/small&gt;&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">It’s hard enough trying to decide if you should take a job with an early-stage startup. There’s so much uncertainty: the product, your reputation, salary (as always), and, of course, equity.</summary></entry><entry><title type="html">Minio Are Assholes</title><link href="https://sneak.berlin/20250720/minio-are-assholes/" rel="alternate" type="text/html" title="Minio Are Assholes"/><published>2025-07-20T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20250720/minio-are-assholes</id><content type="html" xml:base="https://sneak.berlin/20250720/minio-are-assholes/">&lt;p&gt;I use the fake open source project Minio to store data. It&amp;rsquo;s an AGPL-licensed
S3-compatible server, marketed under the term &amp;ldquo;open source&amp;rdquo; for marketing/street
cred (despite
&lt;a href="/20250720/the-agpl-is-nonfree/"&gt;the AGPL being a nonfree license&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The version &lt;code&gt;RELEASE.2025‑04‑22T22‑12‑26Z&lt;/code&gt; includes an administration GUI. The
following version does not. It&amp;rsquo;s of course still available in their paid fork.
&lt;a href="https://github.com/minio/minio/discussions/21316"&gt;People are not happy.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They
&lt;a href="https://github.com/minio/object-browser/pull/3509"&gt;explicitly hobbled their &amp;ldquo;open source&amp;rdquo; version&lt;/a&gt;
to coerce people who don&amp;rsquo;t want to use their arcane CLI (which is called &lt;code&gt;mc&lt;/code&gt; so
conveniently name-conflicts with the &lt;code&gt;mc&lt;/code&gt; cli utility that many people have
installed) to do simple admin tasks.&lt;/p&gt;
&lt;p&gt;This sort of shitty behavior from wannabe open source maintainers is user
hostile and should be called out regularly. The spirit of open source is so that
improvements can be made by anyone and benefit everybody.&lt;/p&gt;
&lt;p&gt;Now, Minio have claimed in that thread they&amp;rsquo;d welcome community contributions to
maintain this, and they might even be telling the truth, but they locked the
thread after someone expressed disappointment at them vandalizing a working
feature in the upstream repository. Anyone who wants to continue to use this
&lt;em&gt;working code&lt;/em&gt; would have to fork the repository and merge all of the future
changes. Or, of course, simply pay Minio, which is what I&amp;rsquo;m sure they&amp;rsquo;d prefer.&lt;/p&gt;
&lt;p&gt;Many other fake open source projects, however, straight up refuse to merge
community implementations of SSO or audit logging because they have a
proprietary product alongside that has those features paywalled. I believe a
project, at that point, regardless of licensing, should not be called open
source. Open source (of course more accurately called &amp;ldquo;free software&amp;rdquo;, or &amp;ldquo;libre
software&amp;rdquo;) is not just a license, it&amp;rsquo;s an ideology.&lt;/p&gt;
&lt;p&gt;Open core is not open source, regardless of what license they use. It&amp;rsquo;s what
I&amp;rsquo;ve taken to calling &amp;ldquo;open source cosplay&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;If a project is asking you to assign them copyright in a CLA (GNU
notwithstanding), they&amp;rsquo;re probably doing so to dual license their code. People
who believe in software freedoms don&amp;rsquo;t dual license their code. People who
believe in software freedoms don&amp;rsquo;t release software, any software, under nonfree
licenses, such as &amp;ldquo;Enterprise Editions&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Open core is bullshit.&lt;/p&gt;
&lt;p&gt;Other major offenders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft&amp;rsquo;s VS Code (all of the good features are in packages that aren&amp;rsquo;t free
software and aren&amp;rsquo;t allowed to be modified or redistributed)&lt;/li&gt;
&lt;li&gt;Google&amp;rsquo;s Android (doesn&amp;rsquo;t work without Play Services, and they&amp;rsquo;re not even
pretending anymore, as future versions won&amp;rsquo;t even cosplay being open)&lt;/li&gt;
&lt;li&gt;Docker (the commonly used Docker Desktop isn&amp;rsquo;t even source available, it&amp;rsquo;s
entirely proprietary)&lt;/li&gt;
&lt;li&gt;Redis (switched to RSAL (nonfree), SSPL (nonfree), and
&lt;a href="/20250720/the-agpl-is-nonfree/"&gt;AGPL (nonfree)&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Mattermost&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Stop using these tools.&lt;/p&gt;
&lt;p&gt;Before I&amp;rsquo;m accused of doing the standard open-source-user-entitlement thing, I
want to be clear that I&amp;rsquo;m very much not asking for free software. I&amp;rsquo;m asking for
these companies that are materially benefitting from marketing themselves using
the term &amp;ldquo;open source&amp;rdquo; to walk the walk. You simply don&amp;rsquo;t believe in software
freedoms if you gate features behind a paywall, or if you (predictably) refuse
to merge those same community-implemented features into the &amp;ldquo;community edition&amp;rdquo;
because you&amp;rsquo;re anticompetitive and know you can&amp;rsquo;t compete with free-as-in-beer.
If you want to make proprietary software, &lt;strong&gt;do so&lt;/strong&gt;, but stop pretending to be
involved in the free software community by using terms like &amp;ldquo;community&amp;rdquo; or
&amp;ldquo;project&amp;rdquo; or &amp;ldquo;open source&amp;rdquo; when we all know you&amp;rsquo;re not.&lt;/p&gt;
&lt;p&gt;Mongo (switched to SSPL) and Hashicorp (switched to BSL) and ElasticSearch
(SSPL) all did so and, critically, &lt;strong&gt;stopped pretending to be open source&lt;/strong&gt;. The
community forked Redis (Valkey) and Terraform (OpenTofu) when the upstreams did
this. (Anyone smart enough to fork and maintain a project like this is smart
enough to know MongoDB is and has always been shit only that is used by fools
who don&amp;rsquo;t know any better.)&lt;/p&gt;
&lt;p&gt;Most projects didn&amp;rsquo;t take this path, and still call themselves open source when
they clearly don&amp;rsquo;t respect software freedoms at all.&lt;/p&gt;
&lt;p&gt;This is dishonest and greedy. Stop pretending to be open source projects when
you restrict software freedoms. Admit to yourselves and the world what your
ideals and values actually are. You plainly do not believe in the freedom for
others to use source code that you have written and published for any purpose
they can think up.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">I use the fake open source project Minio to store data. It’s an AGPL-licensed S3-compatible server, marketed under the term “open source” for marketing/street cred (despite the AGPL being a nonfree license).</summary></entry><entry><title type="html">The AGPL License Is Nonfree</title><link href="https://sneak.berlin/20250720/the-agpl-is-nonfree/" rel="alternate" type="text/html" title="The AGPL License Is Nonfree"/><published>2025-07-20T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20250720/the-agpl-is-nonfree</id><content type="html" xml:base="https://sneak.berlin/20250720/the-agpl-is-nonfree/">&lt;p&gt;I frequently assert that the
&lt;a href="https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License"&gt;Affero GNU Public License (AGPL)&lt;/a&gt;
is a nonfree license. People always seem surprised that I say this, or say I&amp;rsquo;m
wrong, because the anticapitalist zealots at the Free Software Foundation have
endorsed it and have got other organizations to certify it as free software.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s very obviously not. Don&amp;rsquo;t believe the hype. Let&amp;rsquo;s review:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.gnu.org/licenses/agpl-3.0.html#license-text"&gt;Here&amp;rsquo;s the actual text of the AGPL.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(The part you want is section 13, &amp;ldquo;Remote Network Interaction&amp;rdquo;.)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/The_Free_Software_Definition"&gt;The four freedoms, the fundamental conceptual basis of software freedom, as originally defined and espoused by the Free Software Foundation&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Freedom 0: The freedom to run the program as you wish, for any purpose.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Freedom 1: The freedom to study how the program works, and change it to make
it do what you wish. Access to the source code is a precondition for this.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Freedom 2: The freedom to redistribute copies so you can help others.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Freedom 3: The freedom to distribute copies of your modified versions to
others. By doing this you can give the whole community a chance to benefit
from your changes. Access to the source code is a precondition for this.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The FSF and many others regard an important consequence of freedom 0 as a bug.
That consequence being that you can take publicly available free software, make
modifications to it, and run it privately in service of your business.&lt;/p&gt;
&lt;p&gt;They call this the &amp;ldquo;Application Service Provider&amp;rdquo; (ASP) loophole, and they
really don&amp;rsquo;t like it, because capitalists leverage software that they so
graciously &lt;em&gt;gave away as a gift&lt;/em&gt; to, you know, make money. Many other businesses
that use the term &amp;ldquo;open source&amp;rdquo; for street cred (such as MongoDB and now
famously Hashicorp and previously Redis) also don&amp;rsquo;t like it, because they are
engaging in open source cosplay as marketing for their business and don&amp;rsquo;t
actually give a shit about software freedom.&lt;/p&gt;
&lt;p&gt;The problem is, Freedoms 2 and 3 are negative rights - they are freedoms to have
the &lt;em&gt;option&lt;/em&gt; to redistribute without interference from the copyright holder, not
an obligation to do so. Using free software, even modified free software
(freedom 1), to run a business is a clearly protected activity under freedom 0.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;(Of course, licenses like the GPL can create obligations to distribute
source code - but only if you are actually distributing software first, but
that&amp;rsquo;s not comparable, because &lt;em&gt;software&lt;/em&gt; and &lt;em&gt;services&lt;/em&gt; simply are not the same
thing, despite the common usage of the term &amp;ldquo;SaaS&amp;rdquo;. There&amp;rsquo;s a fundamental and
material difference between me handing you a calculator and me telling you that
the answer to 2+2 is 4.)&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;They see this as bad, because they think you should be &lt;em&gt;forced&lt;/em&gt; to publish your
modifications to the software you use internally, even if you don&amp;rsquo;t want to.
This is, among other things, a major violation of your personal privacy (this is
actually the main reason that I personally hate the AGPL - it&amp;rsquo;s compelled
speech).&lt;/p&gt;
&lt;p&gt;The AGPL is a license that attempts to force you to publish your modifications
to the software you use internally, by requiring you to publish the source code
of the software you run on a server (&lt;em&gt;not strictly true&lt;/em&gt;, more on this later),
if you make it available to users as a network service. The problem is, you
can&amp;rsquo;t actually do this in a software license. A software license deals in
permissions, not obligations. You can&amp;rsquo;t force people to do things with a
software license, you can only grant them permission to do things. The AGPL is a
license that grants you permission to run the software, but only if you agree to
use that same software, in process, to publish your modifications to the
software you run on a server. This is not a software license, but what is
commonly referred to as an &amp;ldquo;end user license agreement&amp;rdquo; (EULA), because it has
more than just a copyright license in it. EULAs are &lt;strong&gt;very&lt;/strong&gt; distinct from
software licenses (though they frequently include a software license within
them).&lt;/p&gt;
&lt;p&gt;Free software is and has always been against EULAs, because of freedom 0.&lt;/p&gt;
&lt;p&gt;They&amp;rsquo;re trying now to square the circle, because freedom 0 is fundamentally
incompatible with forcing people to use software a certain way (that is, to make
it a requirement that the &lt;em&gt;service&lt;/em&gt; you provide over a network to your customers
also provides them with the modified &lt;em&gt;software source code&lt;/em&gt; to that same
service).&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a EULA pretending to be a copyright license.&lt;/p&gt;
&lt;p&gt;The AGPL is a nonfree license, because it violates freedom 0 by restricting the
purposes for which you can use the software (such as keeping its own source code
private). It violates freedom 1 as well, by restricting the set of modifications
you can make to the software (such as removing the anti-privacy misfeature the
AGPL requires that the software furnish its own source code to users over the
network).&lt;/p&gt;
&lt;p&gt;It restricts how you may use and modify the software to prevent uses that the
FSF doesn&amp;rsquo;t like. The FSF is, at the core, being dishonest about this because
they are trying to scam people into believing that it isn&amp;rsquo;t a EULA, because
&amp;ldquo;everyone knows&amp;rdquo; that EULAs are violations of freedoms 0 and 1.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not just me saying this.
&lt;a href="https://en.wikipedia.org/wiki/Hector_Martin_(hacker)"&gt;Hector Martin (@marcan)&lt;/a&gt;,
founder and former lead dev of the Asahi Linux project (Linux on M-series
Macbooks), &lt;a href="https://news.ycombinator.com/item?id=30495647"&gt;wrote the following&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I really wish the FSF would stop pushing this nonsensical license and
misleading everyone into thinking it does things it doesn&amp;rsquo;t. Their PR around
it absolutely does not reflect the actual wording and consequences of the
license. It&amp;rsquo;s deceptive and harmful to the free software ecosystem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, let&amp;rsquo;s get to the actual nitty gritty: the AGPL as written is impossible to
actually comply with in normal everyday use, and I would venture to say that
every single developer working on AGPL software is violating the license every
single time they touch it.&lt;/p&gt;
&lt;p&gt;As a consequence of this I suspect it&amp;rsquo;s unenforceable in practice. (To date, it
has never been adjudicated at trial.) I&amp;rsquo;m not a lawyer, and this is not legal
advice.&lt;/p&gt;
&lt;p&gt;To wit, AGPL Section 13, &amp;ldquo;Remote Network Interaction&amp;rdquo;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users interacting
with it remotely through a computer network (if your version supports such
interaction) an opportunity to receive the Corresponding Source of your
version by providing access to the Corresponding Source from a network server
at no charge, through some standard or customary means of facilitating copying
of software. This Corresponding Source shall include the Corresponding Source
for any work covered by version 3 of the GNU General Public License that is
incorporated pursuant to the following paragraph.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was obviously written with webapps in mind; they&amp;rsquo;re trying to compel people
who run such software to link to a download of the source code used to provide
the service. There are several problems with this, both conceptual and
practical.&lt;/p&gt;
&lt;p&gt;Conceptually, this exists to allow end users to download the source and do
something meaningful with it, such as modify it further for their own purposes.
Let&amp;rsquo;s look at the biggest and most used SaaS in the world for an example. If I
gave you the complete source code to Google, would that allow you to do
something meaningful with it, such as run your own search engine with your local
modifications? It&amp;rsquo;s a ludicrous proposition, and the logical basis for such a
requirement is fundamentally damaged. Software isn&amp;rsquo;t services and services
aren&amp;rsquo;t software.&lt;/p&gt;
&lt;p&gt;But, let&amp;rsquo;s skip that for a moment. Let&amp;rsquo;s say you&amp;rsquo;re a developer and you clone an
AGPL repo, and run the server locally. You&amp;rsquo;re all good, the in-app link still
points to the source code. Then you make a change and &amp;ldquo;npm run&amp;rdquo; to try it out,
but now the link in the app points to the original version upstream, not your
version running on your local computer. License violation! So you update the
link to point to your modified copy. Oops, there&amp;rsquo;s no way to do that - your
version only exists on your laptop, which isn&amp;rsquo;t running a webserver or is behind
NAT; no URL to your modified copy exists to link to. So you push your code up to
a public git repo, and change the link to point to that. Now you&amp;rsquo;re in
compliance again, but only for a moment. The first moment you make a change, and
re-run the server (without committing and pushing your change to the remote
public repository first), you&amp;rsquo;re violating the license again as the network
service is running but the source code is not available to any users thereof.&lt;/p&gt;
&lt;p&gt;This is a fundamental problem with the AGPL. It&amp;rsquo;s impossible to use AGPL
software in a normal development process that is compliant with the license
terms. The only way you could do it, I think, is to embed the complete source
code of the program into the binary itself, and serve it directly from there.
This works for webservers, but what about, say, a database server, that has no
way of serving arbitrary files to end users? Or must we include a listening HTTP
port in every AGPL program? What about that pesky freedom 1 that allows us to
modify the program in any way we see fit (such as removing an unnecessary web
server component)?&lt;/p&gt;
&lt;p&gt;The AGPL sucks in every way you look at it. It&amp;rsquo;s damaging to the free software
movement, because it undermines the credibility of the FSF and enables
charlatans like Minio, Matrix/Element, Proxmox, Bitwarden, Anki, Mastodon,
Mattermost, and
&lt;a href="https://en.wikipedia.org/wiki/List_of_software_under_the_GNU_AGPL"&gt;many many others&lt;/a&gt;
to get all of the public credibility of being an open source project, without
actually being free software, or respecting software freedoms.&lt;/p&gt;
&lt;p&gt;Credit where credit is due: I&amp;rsquo;ve harbored these feelings for a long time, but it
wasn&amp;rsquo;t until
&lt;a href="https://news.ycombinator.com/item?id=30044019"&gt;marcan really laid it out specifically&lt;/a&gt;
that I was able to crystallize these thoughts into a fully formed opinion.&lt;/p&gt;
&lt;h1 id="finally"&gt;Finally&lt;/h1&gt;
&lt;p&gt;The core issue here is that people now seem to believe that releasing software
under free software licenses morally obligates the recipients to release their
modifications in turn (which is more readily encapsulated in the viral copyleft
provisions of the original GPL, tellingly one of the &lt;em&gt;least popular&lt;/em&gt; open source
licenses).&lt;/p&gt;
&lt;p&gt;The problem is, it&amp;rsquo;s simply not reasonable. It only got amplified because people
were using modified free software to &lt;em&gt;make gobs of money&lt;/em&gt;, to which the original
authors then felt entitled. They believed that because they spent time, effort,
and money making software, that the changes that others made should
correspondingly be &amp;ldquo;contributed back&amp;rdquo; to them, because &amp;ldquo;big rich corporation&amp;rdquo;
and &amp;ldquo;little guy&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Gifts &lt;em&gt;absolutely do not work like that&lt;/em&gt;. To release free software is to give a
gift to the world, freely. It is not a transaction, and it does not confer any
requirement on the recipients of those gifts to &amp;ldquo;give back&amp;rdquo;. Amazon taking Redis
and modifying it and selling it as a service doesn&amp;rsquo;t cost the original authors a
single thing or harm them in any way, and the idea that they are entitled to
anything in return is simply a delusion.&lt;/p&gt;
&lt;p&gt;When you give free gifts to the whole world, you are &lt;em&gt;also&lt;/em&gt; inseparably and
simultaneously giving free gifts to the rich and powerful. You are giving gifts
to people who will use your software to do harm, to violate the privacy of their
users, to make money off of your work, and to otherwise personally enrich
themselves in any way they can possibly imagine. This is the &lt;em&gt;value&lt;/em&gt; of free
software to the world. Freedom 0 is fucking important.&lt;/p&gt;
&lt;p&gt;Famously, Douglas Crockford used the MIT license with a custom modification when
releasing &lt;a href="https://en.wikipedia.org/wiki/JSLint"&gt;JSLint&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Software shall be used for Good, not Evil.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was a little bit of a joke, but notoriously rendered the license nonfree,
as such a restriction plainly violates freedom 0.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We explicitly have the right to use free software to do Evil.&lt;/strong&gt; (&amp;ldquo;Evil&amp;rdquo; in the
eyes of the licensor, of course.)&lt;/p&gt;
&lt;p&gt;I support this wholeheartedly. It is analogous to supporting free speech for
those who say things you don&amp;rsquo;t like.&lt;/p&gt;
&lt;p&gt;Other nonfree license examples that restrict use are the Hippocratic License
(prohibitions against violating human rights, war, surveillance, etc), Peace
Public License (no military or law enforcement use), and the Do No Harm License
(prohibitions against use for war and weapons and fossil fuels).&lt;/p&gt;
&lt;p&gt;The FSF and others now see Freedom 0 as a &amp;ldquo;loophole&amp;rdquo; that needs to be closed,
that their gifts should come with strings attached if you&amp;rsquo;re going to use them
to run a service to make money. This is a fundamentally broken and toxic view of
software freedoms. &amp;ldquo;Use it for anything, but not like that&amp;rdquo; renders your
position fundamentally unserious.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a common trope of calling open source software users &amp;ldquo;entitled&amp;rdquo; because
they file snippy bug reports, or demand features, and otherwise act ungrateful
for the gifts that they receive. This is a valid criticism of the community.&lt;/p&gt;
&lt;p&gt;The problem is that open source developers are acting even more entitled with
their embrace of the AGPL: entitled to violate the privacy of their users who
use their (freely given!) source code because they&amp;rsquo;re modifying it to make
money. If you want a EULA on your software, stop giving it away as free
software, duh. You don&amp;rsquo;t get it both ways.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">I frequently assert that the Affero GNU Public License (AGPL) is a nonfree license. People always seem surprised that I say this, or say I’m wrong, because the anticapitalist zealots at the Free Software Foundation have endorsed it and have got other organizations to certify it as free software.</summary></entry><entry><title type="html">Subject Lines and File Names: You're doing it wrong.</title><link href="https://sneak.berlin/20250430/subject-lines/" rel="alternate" type="text/html" title="Subject Lines and File Names: You're doing it wrong."/><published>2025-04-30T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20250430/subject-lines</id><content type="html" xml:base="https://sneak.berlin/20250430/subject-lines/">&lt;p&gt;I got an alert today for a meeting I have 24 hours from now.&lt;/p&gt;
&lt;p&gt;The person who named this just typed some words into the box, the first ones
that came to mind. Don&amp;rsquo;t be that guy: take 10 seconds to think about what this
field is going to be used for and why.&lt;/p&gt;
&lt;p&gt;The assumptions built in to a title such as &amp;ldquo;Project kickoff call&amp;rdquo;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I know which project it&amp;rsquo;s supposed to be (I don&amp;rsquo;t)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I know what &amp;ldquo;kickoff&amp;rdquo; implies in terms of agenda (I don&amp;rsquo;t)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I remember who&amp;rsquo;s going to be on the call (I don&amp;rsquo;t)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be specific when you name things!&lt;/p&gt;
&lt;p&gt;If it&amp;rsquo;s a 1-on-1, name &lt;em&gt;both&lt;/em&gt; parties in the title. You know who you are, I
don&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Include an agenda in the description if it&amp;rsquo;s something that is safe to be sent
via email.&lt;/p&gt;
&lt;p&gt;For file names, it might be a good idea to include the date the file was
authored in the format YYYY-MM-DD at the beginning of the file, e.g.
&lt;code&gt;2025-04-30.Project.Dragonfly.Agenda.md&lt;/code&gt;. This way, it will sort chronologically
in a directory listing. Documents should always, always, always have a date on
them (otherwise, how does a reader know if it&amp;rsquo;s a day or a year or a decade
old?), and a date in the filename serves the purpose.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">I got an alert today for a meeting I have 24 hours from now.</summary></entry><entry><title type="html">README HOWTO</title><link href="https://sneak.berlin/20241224/readme-howto/" rel="alternate" type="text/html" title="README HOWTO"/><published>2024-12-24T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20241224/readme-howto</id><content type="html" xml:base="https://sneak.berlin/20241224/readme-howto/">&lt;p&gt;As a certified &lt;a href="https://news.ycombinator.com"&gt;Hacker News&lt;/a&gt; addict (like Slashdot
before it), I see a lot of open source projects get publicly announced.&lt;/p&gt;
&lt;p&gt;The default entrypoint for information about your open source project is of
course the &lt;code&gt;README&lt;/code&gt; file. Code forges usually render it directly onto your
repo&amp;rsquo;s main page, so it serves as sort of a secondary, mostly-text-only static
webpage for your project.&lt;/p&gt;
&lt;p&gt;Most of them that I see are startlingly bad because they are missing key data
points about the project. Assuming knowledge about things in your reader that
they don&amp;rsquo;t have displays a jarring lack of empathy. You&amp;rsquo;re really close to your
project; most visitors to your &lt;code&gt;README&lt;/code&gt; are being exposed to it for the first
time and have &lt;em&gt;zero context whatsoever&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an honest attempt at an all-inclusive list of dos and don&amp;rsquo;ts for your
&lt;code&gt;README&lt;/code&gt;. If I&amp;rsquo;ve missed any (or you&amp;rsquo;re mad about the ones I included and have
something to useful to say other than &amp;ldquo;I&amp;rsquo;m mad&amp;rdquo;),
&lt;a href="mailto:sneak@sneak.berlin"&gt;email me: sneak@sneak.berlin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Note that I break some of the rules in this &lt;code&gt;HOWTO&lt;/code&gt;. This is a &lt;code&gt;HOWTO&lt;/code&gt;
and not a &lt;code&gt;README&lt;/code&gt;, and the intended audience of a &lt;code&gt;README&lt;/code&gt; is the general
public, and the intended audience of this &lt;code&gt;HOWTO&lt;/code&gt; is &lt;code&gt;README&lt;/code&gt; authors.
Additionally, these are guidelines, and your &lt;code&gt;README&lt;/code&gt; isn&amp;rsquo;t going to be graded
or judged. It&amp;rsquo;s not the end of the world if you don&amp;rsquo;t follow this document to
the letter. &lt;/small&gt;&lt;/p&gt;
&lt;h1 id="do"&gt;Do&lt;/h1&gt;
&lt;h2 id="above-the-fold"&gt;Above The Fold&lt;/h2&gt;
&lt;p&gt;This is the stuff that should appear in the first ten or fifteen lines (as hard
wrapped to no more than 80-100 cols) of your &lt;code&gt;README&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Do include a short and complete description of the functionality and purpose
of the software &lt;em&gt;as the first line in the readme&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g.
&lt;code&gt;make is a command line tool for running builds based on a rules-based Makefile&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do hyperlink the first word (the name of your package) to its official
website, &lt;em&gt;even if it is the same repo page on which the &lt;code&gt;README&lt;/code&gt; appears&lt;/em&gt;.
This is because people might be cloning the repo and viewing the &lt;code&gt;README&lt;/code&gt; in
other contexts, or offline.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g. &lt;code&gt;[make](https://www.gnu.org/software/make/)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include the &lt;em&gt;primary programming language name&lt;/em&gt; in the first sentence
description. Any tightly-coupled libraries (like React, for example) might
also be good to mention.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g. &lt;code&gt;written in C&lt;/code&gt; or
&lt;code&gt;written in [ES6](https://262.ecma-international.org/6.0/) and [JSX](https://facebook.github.io/jsx/) using [React](https://react.dev/)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Almost all projects forget to include this one, so don&amp;rsquo;t be that guy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include the &lt;em&gt;license name&lt;/em&gt; in the first sentence description, and link to
the license&amp;rsquo;s info page.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g.
&lt;code&gt;and released under the [GPL Version 3](https://opensource.org/license/gpl-3-0)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Almost all projects forget to include this one, and it&amp;rsquo;s mega important&lt;/li&gt;
&lt;li&gt;Yes, the code forge site may display this next to the &lt;code&gt;README&lt;/code&gt;, but the
&lt;code&gt;README&lt;/code&gt; isn&amp;rsquo;t always going to be read on the web or on that website.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include the approximate date of original release, as well as the current
version and release date. There is a huge difference between a 0.0.9 that has
been developed over the last 90 days, and a 9.7 of a project that has been
actively developed for a decade.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If that programming language isn&amp;rsquo;t one of the top five or ten, put in a
parenthetical reference that includes a 4-6 word description of the
programming language. Link it!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g.
&lt;code&gt;written in [FooBaz](https://foobaz.example) (a $DESC programming language released in $ORIGINAL_RELEASE_DATE under $LICENSE)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;e.g.
&lt;code&gt;written in [Julia](https://julialang.org) (a high-level dynamic programming language for scientific computing, first released in 2012 under the MIT license)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do mention the &lt;em&gt;name of the company&lt;/em&gt;, if this is a corporate project. Link the
first appearance of the company name to the company&amp;rsquo;s official website.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g.
&lt;code&gt;developed by [FooCorp](https://foocorp.example) as part of a commercial service offering&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do mention the &lt;em&gt;goals of the project&lt;/em&gt;. If it&amp;rsquo;s the result of a team of
university staff under a grant, that&amp;rsquo;s a very different situation than a hobby
weekend project by a lone wolf hacker scratching an itch.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g.
&lt;code&gt;to provide a simple, fast, and reliable way to manage dependencies in a large ES6 codebase&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;e.g.
&lt;code&gt;to efficiently ingest terabytes of sensor data collected from the experimental Foo reactor at the University of FooBar&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do make it clear &lt;em&gt;who you envision the end user of the software to be&lt;/em&gt;. A
command line helper app written by one person in a weekend that spits out fun
emoji and a cloud-native API gateway proxy sidecar container that requires a
working etcd cluster to start up are likely going to end up in daily use by
very different types of users (or at least users using very different
contexts).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g. &lt;code&gt;for use by developers of large, complex, multi-language projects&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;e.g. &lt;code&gt;for use by operators of large-scale Kubernetes clusters&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;e.g.
&lt;code&gt;for use by security administrators in regulated financial environments&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do make extensive use of hyperlinks; err on the side of too many if you aren&amp;rsquo;t
sure. Link everything that can be linked in the first section; company names,
library names, programming language names, license types, distributions, OSes,
dependencies, file formats, standards documents, etc. If there isn&amp;rsquo;t an
&amp;ldquo;official&amp;rdquo; site for the entity, link a Wikipedia article. Make it very easy
for people to get additional context if they want it (or to ignore it if they
don&amp;rsquo;t).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;links in markdown are in brackets with the URL in trailing parentheses:
&lt;code&gt;[Go](https://golang.org)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="below-the-fold"&gt;Below The Fold&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Do include the exact commands that one would need to copy and paste to build
the project. Ideally this is only a few lines, as you&amp;rsquo;ve included build
scripts or a Makefile or something in the repo. If you&amp;rsquo;re good, this is
literally just the command &lt;code&gt;make&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include the exact commands that one would need to copy and paste to install
the build prerequisites on the most common distros. If your build system is
&lt;em&gt;anything&lt;/em&gt; other than &lt;code&gt;make&lt;/code&gt;, that&amp;rsquo;s a dependency too and needs to be
installed. Assume this is getting pasted into a completely fresh install VM.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;e.g. &lt;code&gt;apt-get install -y libfoo-dev libbar-dev libbaz3-dev cmake&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do mention whatever versioning scheme you use, whether
&lt;a href="https://semver.org"&gt;SemVer&lt;/a&gt; or &lt;code&gt;yyyymmdd.xx&lt;/code&gt; or &lt;code&gt;yy.mm&lt;/code&gt; (like Ubuntu).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include usage/invocation examples (with corresponding output) if your
project is small or simple.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include some text-based screenshots (&lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; blocks or
triple-backticks in markdown) if applicable. Avoid graphical screenshots if
it&amp;rsquo;s just text.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include the reason your project came into existence. You don&amp;rsquo;t need a whole
brand story (unless you want to), just a sentence or two is fine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include some information (including code examples) of any specialty
programming language features or styles that your project focuses on. For
example, if you are a functional programming library, show some common
functional programming usage examples before and after your library so people
can understand why you exist.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include a top level &amp;ldquo;Getting Started&amp;rdquo; section for first-time users. This
should include a quickstart guide (possibly inline in the &lt;code&gt;README&lt;/code&gt;, or a link
to the appropriate subsection of documentation, a link to the full
documentation, and a link to the community participation section.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="participation"&gt;Participation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Do include a top level &amp;ldquo;Authors&amp;rdquo; section that lists the names (or usernames)
&lt;em&gt;and email addresses&lt;/em&gt; of the maintainers or primary authors. Link to their
personal pages/profiles if desired. Full names and websites are optional;
email addresses are not. Try to make this reasonably complete, as it
implicitly clarifies how big the management headcount of the project is.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include a top-level &amp;ldquo;Participation&amp;rdquo; section.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include an explanation of the contribution process. Do you want
contributions at all? Do you want bug reports? Do you want them via email, or
via GitHub issues? Do you accept pull requests? Can people who submit PRs
reasonably expect them to be merged? As-is or with a round of review/requested
changes? TELL US. Set expectations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do include a complete list of any contribution hard requirements. Link to code
style guidelines or linting configuration that must pass.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do be &lt;em&gt;extremely clear&lt;/em&gt; if a Contributor License Agreement (CLA) or other
legal document is required to contribute.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you do have a requisite legal document for contributions, mention in the
README if if it requires copyright assignment. A developer certificate of
origin to cover your ass is one thing; a CLA assigning ownership to the
sponsoring organization for dual-licensing as nonfree software is a horse of a
different color.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eg:
&lt;code&gt;Contributions to this project are managed by $COMPANYNAME and contributors must sign a Contributor License Agreement (CLA) and copyright assignment to be included so that $COMPANYNAME may dual-license this software.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;eg:
&lt;code&gt;Contributions to this project are managed by $COMPANYNAME and contributors must license their contributions under the same $LICENSENAME license as the project and provide a signed Developer Certificate of Origin to $COMPANYNAME to be included.&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do use your &lt;code&gt;README&lt;/code&gt; as the authoritative documentation of the complete list
of venues for collaboration. List and link every place your community
communes: bug tracker (even if on the same site), wiki, socials, subreddits,
forums, irc channels, slack groups, discords, matrix rooms, activitypub,
mailing lists, everything. Feel free to bias the list sorting to steer
participants to preferred/popular venues.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ideology"&gt;Ideology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Do make it clear what sort of community participants can expect. If you have a
Code of Conduct, link it and list it by name if it&amp;rsquo;s a standard one. If you
don&amp;rsquo;t have one, mention that too. Be transparent so that people can make
informed decisions about participation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do make it clear if the project exists primarily as a tool for a for-profit
company, such as the so-called &amp;ldquo;open core&amp;rdquo; offerring of a startup. You aren&amp;rsquo;t
the Apache Software Foundation or GNU because you used VC money to build and
release an MIT-licensed enterprise tool that gates SSO or audit features
behind a dual-licensing paywall; be clear about who and what you are so people
have context.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do make it clear if your project is one free software component of a larger
system that includes nonfree software, or vice versa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do make it clear if your project/software primarily exists to interface with a
single centralized service, and link to that service and ideally also its EULA
or TOS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do make it &lt;em&gt;abundantly clear&lt;/em&gt; if the software is going to transmit user
activity data off of the device on which it is run. Link to the associated
privacy policy, if so. (Better yet, just don&amp;rsquo;t do that, so you don&amp;rsquo;t have to
warn users in advance that you publish shady software.)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="dont"&gt;Don&amp;rsquo;t&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t assume your above-the-fold &lt;code&gt;README&lt;/code&gt; audience has ever heard of you, your
project, or your favorite new language obsession du jour.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t assume that the reader knows industry/specialty jargon. It&amp;rsquo;s ok to get
technical (or make your &lt;code&gt;README&lt;/code&gt; big) but the audience is the general
web-using public. It&amp;rsquo;s ok to get as opaque and obscure as you wish in the
primary technical documentation, but the &lt;code&gt;README&lt;/code&gt; generally isn&amp;rsquo;t that. It&amp;rsquo;s
an introduction, with pointers to more in-depth docs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t use acronyms, initialisms, or abbreviations in the document without
expanding them at least once at the first use. If it&amp;rsquo;s not onerous or
obnoxious, just use the expanded versions exclusively instead of the acronyms
or initialisms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t worry about your &lt;code&gt;README&lt;/code&gt; getting too big as long as you have good
section headings. If any sections get too big, you can always factor them out
later to other files if necessary (and replace them with a link to that other
file), but &amp;ldquo;too big&amp;rdquo; is quite big, as vertical scrolling is cheap. It&amp;rsquo;s
entirely ok for your &lt;code&gt;README&lt;/code&gt; to contain all of the primary documentation (as
well as everything else listed here) for a small project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t obfuscate email addresses; write them correctly and in full and linkify
them and make them clickable via &lt;code&gt;mailto:&lt;/code&gt; URLs. It&amp;rsquo;s totally ineffective
anyway; spammers and web crawlers know how to use regex too. The web is not
the place to fight email spam, it&amp;rsquo;s in your email and network infrastructure.
All it does is make it so legitimate users can&amp;rsquo;t one-click contact you, with
no other benefit.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t leave issues open if you don&amp;rsquo;t want bug reports.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t invite bug reports if you aren&amp;rsquo;t willing to engage with them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t auto-close bugs for &amp;ldquo;inactivity&amp;rdquo;. This is a slap in the face to the
reporters, who spent time and effort to deliver them to you. Auto-closing
their reports is the same as throwing a gift in the trash in front of the
giver.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="/20200307/the-case-against-microsoft-and-github/"&gt;Don&amp;rsquo;t host your &lt;code&gt;README&lt;/code&gt; (or your project) on GitHub&lt;/a&gt;,
which is owned by Microsoft and collaborates with operators of concentration
camps. Microsoft is still the same evil empire military-industrial complex
bullshit they were in the 90s, they&amp;rsquo;re just much richer and have better PR now
to manipulate you into liking them. They don&amp;rsquo;t believe in software freedoms,
they don&amp;rsquo;t believe in free software (despite releasing some software under
free software licenses as cosplay), and they don&amp;rsquo;t want a world in which free
software that respects user freedoms and privacy displaces proprietary
surveillanceware. (A quick look at VS Code or Windows or WSL confirms this.)
Don&amp;rsquo;t send eyeballs or traffic to their domain names or subsidiaries.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="/20200220/discord-is-not-an-acceptable-choice-for-free-software-projects/"&gt;Don&amp;rsquo;t succumb to the draw of centralized, censored, surveillance collaboration tools like Discord (or, again, GitHub) for your project.&lt;/a&gt;
These are exclusionary (try using them via Tor or without a phone number on a
VPN) and discriminate against those who need to preserve their privacy, and
you should aim to not discriminate unnecessarily against potential
participants.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="example-document"&gt;Example Document&lt;/h1&gt;
&lt;p&gt;I have updated the &lt;code&gt;README&lt;/code&gt; of my hobby project &lt;code&gt;mfer&lt;/code&gt; to reflect these
guidelines. You can view &lt;code&gt;mfer&lt;/code&gt; project&amp;rsquo;s &lt;code&gt;README&lt;/code&gt; file at:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://git.eeqj.de/sneak/mfer/src/branch/main/README.md"&gt;https://git.eeqj.de/sneak/mfer/src/branch/main/README.md&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="discussion"&gt;Discussion&lt;/h1&gt;
&lt;p&gt;This, as all posts, can be discussed on &lt;a href="https://bbs.sneak.berlin"&gt;the BBS&lt;/a&gt;.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">As a certified Hacker News addict (like Slashdot before it), I see a lot of open source projects get publicly announced.</summary></entry><entry><title type="html">The United States Virgin Islands: Notes</title><link href="https://sneak.berlin/20241224/usvi/" rel="alternate" type="text/html" title="The United States Virgin Islands: Notes"/><published>2024-12-24T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20241224/usvi</id><content type="html" xml:base="https://sneak.berlin/20241224/usvi/">&lt;p&gt;I just visited the
&lt;a href="https://en.wikipedia.org/wiki/Lesser_Antilles"&gt;Lesser Antilles&lt;/a&gt; for the first
time, specifically the island of St. Thomas in the
&lt;a href="https://en.wikipedia.org/wiki/United_States_Virgin_Islands"&gt;US Virgin Islands&lt;/a&gt;,
during the first week of December 2024.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m fairly well-traveled for an American (at least in the industrialized world),
having been to places like Russia, China, North Korea, Good Korea, et c. The
following is a list of things that I was not expecting about the USVI.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For historical reasons, they drive on the left, despite being part of the
United States.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For presumably economic and legal reasons, they use standard mainland US
vehicles, which are the same left-hand drive types used in drive-on-the-right
places. This is, of course, insane, and I suspect relatively unsafe.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Like China, everyone drives with their high beams on 100% of the time at night
without regard for other drivers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Despite being a pretty significant distance from the equator, they&amp;rsquo;re far
enough south and thermally buffered by ocean that the water temperature even
in December doesn&amp;rsquo;t dip under 70F. It&amp;rsquo;s full bore suntan-and-swimming weather
even at the dead &amp;ldquo;coldest&amp;rdquo; part of the year.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The electric grid is expensive, and trash. I understand it&amp;rsquo;s the same in
Puerto Rico. All of the big resorts have HUGE generators.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The roads are in the worst shape of anywhere I&amp;rsquo;ve ever been. Steep terrain,
and foot-deep potholes suggest that vehicles don&amp;rsquo;t last very long there.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gasoline and diesel are very expensive at retail.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There&amp;rsquo;s a big lack of fine dining; the island seems to be more geared toward
discount vacationers and those arriving on cruise ships.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A US Amazon Prime membership does not include free shipping to USVI. Shipping
charges for most items looked to be $10-20 each. Shipping estimates were over
10 days out, which means that if you visit for 7 days as I did, you can&amp;rsquo;t use
Amazon at all while you are there. Larger packages can&amp;rsquo;t be ordered from
Amazon as they simply won&amp;rsquo;t ship them to those ZIP codes, period.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phone calls to the USVI are toll calls. The rest of the continental US
effectively abolished long-distance toll charges for phone calls well over a
decade ago. I went to call a NANP (+1-NNN-XXX-XXXX) number from my Google
Voice account (which allows unlimited free calls to US numbers even with a
zero balance) and received an error that my account didn&amp;rsquo;t have enough credit
balance to make the call. I was floored. I suspect without evidence that this
anachronistic state of affairs is due to deeply-rooted telco monopoly
corruption, but I have done absolutely no research whatsoever on this matter.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There are insanely strict
&lt;a href="https://en.wikipedia.org/wiki/Gun_laws_in_the_United_States_Virgin_Islands"&gt;firearms laws in the USVI&lt;/a&gt;.
There is repeated and very insistent signage all over the arrivals area
demanding that people declare any firearms or ammunition. It feels in this
regard like visiting a foreign country.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Outside of the shiny corporate resorts, the island is a lot more rural and
poor and in disrepair than I anticipated. I understand that these days it gets
proper fucked by massive hurricanes on a very regular basis.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flying back to the mainland US (ATL) from St Thomas (STT), an ostensibly
domestic flight, one must pass through a US Customs and Border Patrol (CBP)
interrogation stop prior to the TSA security search checkpoint, same as when
entering the US from a foreign country. All passengers passing through the
departure hall are funneled into this area, regardless of destination. I
presume this is a result of the fact that CBP claims jurisdiction anywhere
within 50(?) miles of the US border, which encompasses most major cities in
the US as well as the entirety of the USVI. They asked me the usual nosy (and
optional, for a US citizen) questions. They commanded(!) me to stand for a
biometric-capturing photo, and responded punitively when I inquired if it was
optional (they said yes) and I declined: standard mainland CBP asshole
behavior, just with an island accent. (I&amp;rsquo;ve had the same kind of aggressive,
indignant, rude, and unprofessional treatment from CBP upon exercise of 5A and
6A rights before, over and over and over again for many years now. The US
supreme court, in their infinite wisdom, has decided that 4A rights do not
apply to US citizens at the US border.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Everywhere I visited seemed to be a tourist trap, though I did not very
dilligently seek any non-tourist-trap activities, areas, or excursions, as I
was there on a bog-standard beach tourist holiday.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The weather, while a bit humid for my Mojave-adapted preferences, is
completely fantastic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There are very nice beaches and very nice swimming, something I have not often
experienced on coastlines of Big Ocean. I&amp;rsquo;m told that the beaches are all
public, though the usual issue remains in such places: many are walled off so
you can only access them via secured private property, or boat.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It seems like a nice place to go diving, or sailing. The water is nice and I
got to snorkel with some sea turtles. There are &lt;em&gt;tons&lt;/em&gt; of boats around, from
star-destroyer-sized mega cruise ships (multiple per day), to the superyachts
of billionaires (I saw &amp;ldquo;Kaos&amp;rdquo;, the yacht of the Walmart heiress, among
others), to little family fulltime sailboats. It&amp;rsquo;s as active a port as I&amp;rsquo;ve
ever seen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Like a lot of small tourist islands, the airport is filthy, cramped,
over-crowded and under-air conditioned. (Unrelated: I observed that &lt;code&gt;JTR&lt;/code&gt;
fixed this about theirs within the last few years.)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="discussion"&gt;Discussion&lt;/h1&gt;
&lt;p&gt;This, as all posts on this blog, can be discussed on
&lt;a href="https://bbs.sneak.berlin"&gt;the BBS&lt;/a&gt;.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">I just visited the Lesser Antilles for the first time, specifically the island of St. Thomas in the US Virgin Islands, during the first week of December 2024.</summary></entry><entry><title type="html">My 2024 Code Styleguide</title><link href="https://sneak.berlin/20240610/code-styleguide/" rel="alternate" type="text/html" title="My 2024 Code Styleguide"/><published>2024-06-10T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20240610/code-styleguide</id><content type="html" xml:base="https://sneak.berlin/20240610/code-styleguide/">&lt;p&gt;I have documented and published, for the first time,
&lt;a href="https://git.eeqj.de/sneak/styleguide"&gt;my personal code style guide&lt;/a&gt;. It is a
living document (which is why it&amp;rsquo;s in git) that I will update periodically as I
consciously notice more of my longstanding habits and techniques. I estimate
it&amp;rsquo;s 70-80% complete (at least for Go) presently; the other languages included
are just stuff that&amp;rsquo;s off the top of my head.&lt;/p&gt;
&lt;p&gt;Half the trouble with documenting things like this for publication is that a ton
of my experience and methods are so ingrained that I don&amp;rsquo;t even notice them
anymore.&lt;/p&gt;
&lt;p&gt;It is my hope that it is useful and instructive to less experienced programmers.
I will do my best to amend it.&lt;/p&gt;
&lt;p&gt;It can be found at:
&lt;a href="https://git.eeqj.de/sneak/styleguide"&gt;https://git.eeqj.de/sneak/styleguide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Feedback is welcome. I can, as always, be reached at
&lt;a href="mailto:sneak@sneak.berlin"&gt;sneak@sneak.berlin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The
&lt;a href="https://bbs.sneak.berlin/t/my-2024-code-styleguide/950"&gt;comment thread for this post&lt;/a&gt;
can be found on &lt;a href="https://bbs.sneak.berlin"&gt;the BBS&lt;/a&gt;.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">I have documented and published, for the first time, my personal code style guide. It is a living document (which is why it’s in git) that I will update periodically as I consciously notice more of my longstanding habits and techniques. I estimate it’s 70-80% complete (at least for Go) presently; the other languages included are just stuff that’s off the top of my head.</summary></entry><entry><title type="html">Apple OSes Are Insecure By Design To Aid Surveillance</title><link href="https://sneak.berlin/20231005/apple-operating-system-surveillance/" rel="alternate" type="text/html" title="Apple OSes Are Insecure By Design To Aid Surveillance"/><published>2023-10-05T00:00:00+00:00</published><updated>2026-08-30T15:20:44+02:00</updated><id>https://sneak.berlin/20231005/apple-operating-system-surveillance</id><content type="html" xml:base="https://sneak.berlin/20231005/apple-operating-system-surveillance/">&lt;p&gt;I have a theory that I believe is supported by enough evidence for you to
believe it, as well.&lt;/p&gt;
&lt;p&gt;Mind you, this is &lt;em&gt;definitionally&lt;/em&gt; a conspiracy theory; please don&amp;rsquo;t let the
connotations of that phrase bias you, but please feel free to read this (and
everything else on the internet) as critically as you wish.&lt;/p&gt;
&lt;p&gt;I believe that Apple is preserving unencrypted server connections in their
operating systems in an effort to enable global location tracking of their
userbase by passive monitoring of major internet backbones.&lt;/p&gt;
&lt;p&gt;This is supported by timelines and context, which will be provided.&lt;/p&gt;
&lt;p&gt;Several important connections (TSS, OCSP) are made from Apple devices in
plaintext (that is, completely unencrypted). This began for historical reasons,
but has been repeatedly reported to Apple. They have not fixed it.&lt;/p&gt;
&lt;p&gt;TSS checks happen on update. OCSP checks happen, among other times, on app
launch.&lt;/p&gt;
&lt;p&gt;Apple committed in writing a few major versions (i.e. ~3 years ago) to providing
a preference setting for disabling online OCSP checks in macOS
&lt;a href="/20201112/your-computer-isnt-yours/"&gt;when I made a stink about it&lt;/a&gt;, within one
year. Not only did this not happen within a year (a rare instance of Apple
actually outright lying), but someone was kind enough to write me and tell me
that Apple has
&lt;a href="https://support.apple.com/en-us/HT202491"&gt;edited the webpage to remove this promise&lt;/a&gt;.
Presumably there are no plans to offer users ability to disable OCSP checking,
which leaks which apps are being launched on your system, when you launch them.&lt;/p&gt;
&lt;p&gt;Not only can you not disable it, they&amp;rsquo;re still not happening over encrypted
(&lt;code&gt;https:&lt;/code&gt;) connections. This is straightforward to fix, but it hasn&amp;rsquo;t happened.&lt;/p&gt;
&lt;p&gt;Apple&amp;rsquo;s webpage says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We have never combined data from these checks with information about Apple
users or their devices.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;We do not use data from these checks to learn what individual users are using
on their devices.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;These security checks have never included the user’s Apple ID or the identity
of their device. To further protect privacy, we don&amp;rsquo;t log IP addresses
associated with Developer ID certificate checks, and we make sure that any
collected IP addresses are removed from logs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The problem is that the connections are still unencrypted! Anyone in the world
who can watch the internet traffic to or from your computer, or to and from
Apple, or between your computer and Apple (this is a &lt;em&gt;lot&lt;/em&gt; of people), can make
their own logs, with all of the IP addresses and all of the launched apps. If
you use enough apps, the specific constellation of &lt;em&gt;your&lt;/em&gt; apps is probably
pretty close to uniquely identifying you.&lt;/p&gt;
&lt;p&gt;The OCSP checks (&amp;ldquo;Gatekeeper&amp;rdquo;, in Apple&amp;rsquo;s terminology) are not the big deal,
however.&lt;/p&gt;
&lt;p&gt;When you update a modern mac, it needs something called a boot &amp;ldquo;ticket&amp;rdquo; for the
new OS. This ticket is cryptographically signed by Apple, and is unique to your
specific &lt;code&gt;Mx&lt;/code&gt; Apple Silicon CPU/SoC (or your specific T1/T2 security chip, if
you are using an Intel mac).&lt;/p&gt;
&lt;p&gt;The request to Apple for this boot ticket is via an API (called TSS), and
includes specific unique identifying serial nubmers of your computer (such as
your chip&amp;rsquo;s ECID) that never, ever change. It&amp;rsquo;s done on every major OS update,
and, you guessed it, &lt;em&gt;it&amp;rsquo;s done totally unencrypted&lt;/em&gt;. Anyone watching the
backbone traffic on the internet will be able to pair ECIDs with client IP
addresses on every major macOS update. (Client IP addresses identify city-level
location. With the information available to DHS/FBI from the carriers and cable
companies, they identify a specific building and subscriber name.)&lt;/p&gt;
&lt;img src="/s/img/202310/2023-10-05-plaintext-tss.jpg" class="img-rounded img-responsive"&gt;
&lt;p&gt;&lt;small&gt;This is a pcap taken today of the OS updater included in 13.4, released
in May of this year, transmitting my ECID in plaintext.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;I
&lt;a href="/20220409/apple-is-still-tracking-you-without-consent/"&gt;screamed loudly about this in April 2022&lt;/a&gt;
and ended my post with &amp;ldquo;Continued transmission of plaintext identifiers will be
assumed as malicious intent. Fix it.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It was not fixed. Not in the next release, not in the next major version.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s &lt;em&gt;still&lt;/em&gt; not fixed in Ventura 13.x, at least as of 13.4 (May 2023). Apple
has been leaking this customer PII across the internet unencrypted for &lt;em&gt;seven
years&lt;/em&gt;, ever since the introduction of the first T1 chip in the original Touch
Bar MBP.&lt;/p&gt;
&lt;img src="/s/img/202310/2023-10-05-apple-analytics-nonconsensual.jpg" class="img-rounded img-responsive"&gt;
&lt;p&gt;&lt;small&gt;First, during the update, Apple&amp;rsquo;s updater has to send your activity data
back to the mothership even when analytics transmission is explicitly disabled.
(This is why &lt;code&gt;xp.apple.com&lt;/code&gt; is in so many hosts file privacy
blocklists.)&lt;/small&gt;&lt;/p&gt;
&lt;img src="/s/img/202310/2023-10-05-ls-tss-plaintext.jpg" class="img-rounded img-responsive"&gt;
&lt;p&gt;&lt;small&gt;Then the updater can get to the important work of leaking your plaintext
ECID across the whole internet.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;I would be likely to give Apple the benefit of the doubt here, if not for two
very important mitigating factors:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Apple does not allow plaintext server communications in apps released by
developers in the App Store. This is explicitly against the rules, and they
have tools available for app developers to use that make 100% encrypted
connections the unavoidable status quo
(&lt;a href="https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity/"&gt;App Transport Security&lt;/a&gt;).
But for some reason for seven years and counting they didn&amp;rsquo;t mandate this for
their own OS updates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.reuters.com/article/us-apple-fbi-icloud-exclusive/exclusive-apple-dropped-plan-for-encrypting-backups-after-fbi-complained-sources-idUSKBN1ZK1CT"&gt;Apple has a documented history of preserving cryptographic backdoors to aid US government surveillance.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You might argue that the latter is now invalid, given that there is now an
option to enable end to end encryption (on this page, hereinafter referred to as
E2EE, but called &amp;ldquo;Advanced Data Protection&amp;rdquo; by Apple) for iCloud and thus iCloud
Backup. That&amp;rsquo;s also not valid, and I&amp;rsquo;ll explain why.&lt;/p&gt;
&lt;p&gt;First, iCloud E2EE is opt-in. The setting is buried, and there are no prompts to
enable it, so approximately 0% of iCloud users have turned it on. It might as
well not exist.&lt;/p&gt;
&lt;p&gt;Second, iCloud E2EE is woefully incomplete. When you iMessage with someone, they
have iCloud Backup on by default, and
&lt;a href="https://support.apple.com/en-us/HT202303"&gt;non-E2EE by default&lt;/a&gt;, which means
that approximately &lt;em&gt;all&lt;/em&gt; of your iMessages (including all image and document
attachments) will &lt;em&gt;still&lt;/em&gt; be readable by Apple and the FBI because they are
backed up &lt;em&gt;twice&lt;/em&gt;: once from each end of the conversation. Unless you &lt;em&gt;and ALSO
everyone you iMessage with&lt;/em&gt; has enabled E2EE (which, today, is never, ever true)
then your iMessages are subject to surveillance by Apple and the whole of the US
government that can force them to turn them over.&lt;/p&gt;
&lt;p&gt;Furthermore, the E2EE for iCloud Photos is not designed to preserve privacy.
Even though iCloud Photos now supports E2EE for the content of the photos and
videos stored,
&lt;a href="https://support.apple.com/en-us/HT202303"&gt;the file metadata is not E2EE, and the metadata includes the FILENAME and also a unique hash of the &lt;em&gt;unencrypted&lt;/em&gt; file content&lt;/a&gt;.
This means that if you make a first-of-its-kind Winnie the Pooh meme and save it
to your camera roll (hooked up to an E2EE-enabled iCloud Photos account), then
send it via secure means (Signal, or in-person AirDrop, or whatever) to &lt;em&gt;another
person&lt;/em&gt; who has iCloud Photos enabled (also with E2EE) and they save it, Apple
can see that you both have the same file, the only two people in the world with
it.&lt;/p&gt;
&lt;p&gt;They can see who had it first. They can see who had it next, and when. They can
see where it went after that. This is with full &amp;ldquo;E2EE&amp;rdquo; turned on, and without
even using Apple messaging apps. This leaks your social graph, too, and it
provides a nice list of dissidents who all have the same file.&lt;/p&gt;
&lt;p&gt;This applies to all files in iCloud Drive, too, not just your photos. Share a
file securely within a group of people who all have E2EE enabled for their
iCloud Drive? Guess what, Apple now knows they&amp;rsquo;re a group, and by extension the
US and Chinese governments can, too.&lt;/p&gt;
&lt;p&gt;If you enabled E2EE for iCloud Drive, would you expect that Apple sysadmins can
read all of your filenames? How about the FBI without a warrant?&lt;/p&gt;
&lt;h2 id="update-2024-03-11"&gt;Update 2024-03-11&lt;/h2&gt;
&lt;p&gt;As of at least macOS 14.3.1 (and, if I recall correctly, several versions prior,
for at least a few weeks now) the update process (UpdateBrain) that obtains the
hardware-specific boot ticket signatures now uses TLS to contact &lt;code&gt;gs.apple.com&lt;/code&gt;.
I assume it finally happened due to this webpage.&lt;/p&gt;
&lt;h2 id="privacy-thats-apple"&gt;&amp;ldquo;Privacy, that&amp;rsquo;s Apple.&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Any repressive government can now go to Apple with an image file or document (or
its hash) and demand a list of every single phone number, payment card number,
full name, and last known device location of everyone in iCloud who has a copy
of the file, even if all of those people have opted in to Apple&amp;rsquo;s
false-sense-of-security E2EE system.&lt;/p&gt;
&lt;p&gt;Note that this was always possible before, too. But it&amp;rsquo;s still possible, even
under the current E2EE system. So far, it&amp;rsquo;s farce.&lt;/p&gt;
&lt;h2 id="why-bother"&gt;Why Bother?&lt;/h2&gt;
&lt;p&gt;What exactly is the point of rolling out this E2EE feature if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you&amp;rsquo;re not going to prompt to migrate people to it&lt;/li&gt;
&lt;li&gt;you still enable authoritarian repressive surveillance of your users even when
it&amp;rsquo;s turned on, because its design sucks&lt;/li&gt;
&lt;li&gt;you still leak the social graph of the users based on the path and time of
spread of unique files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apple &lt;em&gt;has&lt;/em&gt; designed and operated truly private systems before. iCloud Keychain
and Health are two bits that have been E2EE and are, as far as I can tell,
immune to surveillance orders or corrupt governments (such as those in Apple&amp;rsquo;s
two biggest markets).&lt;/p&gt;
&lt;p&gt;(Please don&amp;rsquo;t write me about how the iCloud plaintext content hashes are to
support deduplication. Apple already did in
&lt;a href="https://support.apple.com/en-us/HT202303"&gt;HT202303&lt;/a&gt;. That&amp;rsquo;s not the point, and
it&amp;rsquo;s irrelevant. Also please don&amp;rsquo;t write me about how E2EE is bad for most users
because users will lose all their keys and then lose all their photos and be
sad. It&amp;rsquo;s called &lt;a href="/20181022/sneaks-law/"&gt;sneak&amp;rsquo;s law&lt;/a&gt; and I wrote it. It&amp;rsquo;s
irrelevant to the topic today.)&lt;/p&gt;
&lt;p&gt;Apple says in HT202303 that they are &amp;ldquo;committed to ensuring more data, including
this kind of metadata, is end-to-end encrypted when Advanced Data Protection is
enabled&amp;rdquo;. Maybe if they hadn&amp;rsquo;t dragged their feet for the FBI years ago then
privacy would actually be baked into this product by now.&lt;/p&gt;
&lt;p&gt;Note well: You can&amp;rsquo;t use Homepods, Apple Pay, Handoff, or Passkeys without
opting in to iCloud; each year choosing not to use iCloud comes with a larger
list of disabled functionality on your device. I imagine the Apple Vision will
be similarly hobbled without sending Apple and the FBI a constant realtime
stream of your life&amp;rsquo;s activity in the form of iCloud metadata. A ton of the
functionality of Apple devices is missing if you don&amp;rsquo;t submit to the ability to
be surveilled.&lt;/p&gt;
&lt;h2 id="wrapping-up"&gt;Wrapping Up&lt;/h2&gt;
&lt;p&gt;iCloud is a privacy nightmare. iMessage is &lt;em&gt;not&lt;/em&gt; end to end encrypted due to
&lt;em&gt;both&lt;/em&gt; endpoints escrowing their secret keys to Apple by default in the non-E2EE
iCloud Backup. Even if you turn on E2EE on one end, it&amp;rsquo;s ineffective because the
other end still has it off.&lt;/p&gt;
&lt;p&gt;On every macOS update, you transmit plaintext TSS API requests which include
your unchanging ECID, alerting everyone on the internet backbones of your
ECID-to-IP mapping, allowing your movement to be tracked over time.&lt;/p&gt;
&lt;p&gt;On many app first launches (not every launch), you transmit plaintext
identifiers leaking what developer&amp;rsquo;s app you have launched and when (and client
IP, again). (Note that most developers only publish a single app, so this
aliases to which app you have launched.)&lt;/p&gt;
&lt;p&gt;Furthermore, Apple knows all of these things, and has opted to do nothing
meaningful to mitigate the threats.&lt;/p&gt;
&lt;p&gt;I think that macOS has too many &lt;em&gt;plaintext&lt;/em&gt; network privacy leaks, for far too
long (in the context of everything else I&amp;rsquo;ve enumerated here) for this to be
carelessness, coincidence, or deprioritization.&lt;/p&gt;
&lt;h2 id="finally"&gt;Finally&lt;/h2&gt;
&lt;p&gt;Please take the time to go to Berlin, and
&lt;a href="https://www.stasimuseum.de/en/enindex.htm"&gt;visit the Stasi museum&lt;/a&gt;, if you
think my
&lt;a href="https://en.wikipedia.org/wiki/COINTELPRO"&gt;warnings about the potential for abuse by the FBI&lt;/a&gt;
when they are not constrained by the need for probable cause or search warrants
are overblown.&lt;/p&gt;
&lt;p&gt;This is the same FBI that
&lt;a href="https://en.wikipedia.org/wiki/FBI%E2%80%93King_suicide_letter"&gt;wrote Martin Luther King Jr. anonymous letters telling him to kill himself&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Presently, the US government is accessing the full content of around seventy
thousand(&lt;em&gt;!&lt;/em&gt;) Apple accounts per year (as of 2022) &lt;em&gt;without a search warrant&lt;/em&gt;,
per
&lt;a href="https://www.apple.com/legal/transparency/"&gt;Apple&amp;rsquo;s own transparency report&lt;/a&gt;.
The numbers are much higher when you include warrants issued with probable
cause.&lt;/p&gt;
&lt;p&gt;My concern is not so much that Apple is the threat, as Apple is not in the
business of oppression or
&lt;a href="https://en.wikipedia.org/wiki/Julian_Assange"&gt;imprisoning journalists&lt;/a&gt;, but the
governments that can meaningfully compel Apple: the United States, and the
People&amp;rsquo;s Republic of China. (Google could pull out of China and lose their
customers; however approximately 100% of everything Apple sells is made in
China, by Chinese people, in factories subject exclusively to Chinese law. China
has more control over Apple presently than the USA does.) Anything Apple can
know, the CCP or USG can know.&lt;/p&gt;
&lt;p&gt;A society that is under constant and total suspicionless police surveillance is
a society that is, given enough time, actually doomed.&lt;/p&gt;
&lt;p&gt;Apple is complicit in building this society currently, and it poses an
existential threat to freedom worldwide if it is not rectified.&lt;/p&gt;
&lt;p&gt;&lt;small&gt; Finally, if you still don&amp;rsquo;t believe that Apple would be game to play
ball in such a manner,
&lt;a href="https://tidbits.com/2020/08/17/the-case-of-the-top-secret-ipod/"&gt;read this&lt;/a&gt;.
There isn&amp;rsquo;t much wiggle room for large corporations to refuse the direct demands
of the military in the USA, there&amp;rsquo;s simply too much asymmetry in terms of
organizational goals. Corporations are ultimately extremely fragile and far too
vulnerable to the state&amp;rsquo;s will.&lt;/small&gt;&lt;/p&gt;
&lt;h2 id="footnote"&gt;Footnote&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m experimenting with blogging more quickly and with less time spent editing.
Please provide feedback on this or any other post
&lt;a href="https://bbs.sneak.berlin"&gt;on the BBS&lt;/a&gt; or via email.&lt;/p&gt;</content><author><name>Jeffrey Paul</name></author><summary type="html">I have a theory that I believe is supported by enough evidence for you to believe it, as well.</summary></entry></feed>