Jekyll2026-02-28T16:22:15+00:00https://sneak.berlin/feed.xmlJeffrey PaulThe personal website of Jeffrey Paul. Megalopolis2026-02-27T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20260227/megalopolis<p>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.</p> <p>The density in Bangkok is on par with any place I’ve ever been, Tokyo included. The breadth of activities in Bangkok far surpasses any other place I’ve ever been. I’m not euphemistically talking about the infamous sex work (I get my kicks <em>above the waistline</em>, sunshine), but the relative freedom here compared with places of equivalent density that I’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.</p> <p>I can see why people come and live here.</p> <p>It’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’s around $7 all in.</p> <p>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’s as good as any place I’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.</p> <p>Thai people (or cooks, at least) seem to resemble Americans in the sense that they’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 “cheese”) on everything, even things it probably shouldn’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.</p> <p>This is definitely the most westernized place I’ve ever been in Asia, and it’s a gigantic city at that. I’m staying in a neighborhood called Phrom Phong, which has three of the largest and most well-appointed shopping centers that I’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.</p> <p>I’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’t give a fuck. They’ve simply got everything here. There are tons of Japanese immigrants, and so there’s tons of really good Japanese restaurants.</p> <p>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’ve ever seen, and eat Chicago’s finest Garrett Caramel Corn. (IYKYK - Chicago mix all the way.)</p> <p>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, <em>optimistic</em>. A coffee here, a dinner there, and suddenly you’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’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.</p> <p>I’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’ve played have blinds of 100/200 baht (~$3/$6). The level of income inequality here is breathtaking.</p> <p>I’ve heard of such insane disparities in places like New Delhi, and of course in China, but in China, you don’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’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.</p> <p>In most other places in the world where you’d see a construction site of 20–30 people, you’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’t think I’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.</p> <p>I can’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.</p> <p>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’t help but feel that it’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.</p> <p>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’t know any other place in the world like this.</p> <p>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’t know all of them — I haven’t been able to come up with an authoritative heuristic. It’s not just the so-called <a href="https://en.wikipedia.org/wiki/Primate_city">primate cities</a>, although Bangkok is indeed a primate city. I don’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 “poor country” (and it is, indeed, a poor country) made me assume that Bangkok was going to be shabby. That was a mistake.</p> <p>I should have come here years ago. Visit it if you can.</p>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.Build / Buy / Bot2025-12-24T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20251224/build-buy-bot<p>In the old days when you ran your startup, you had to focus on your core objectives very closely in the early days. You <a href="https://mattrickard.com/innovation-tokens">had a limited number of innovation tokens</a>, 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).</p> <p>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, <a href="https://www.blocknative.com/blog/ethereum-transaction-notification-webhooks">webhook gateways</a>, etc. They’re not hard to build, they’re just time-consuming, and adjacent to your startup’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.</p> <p>A lot of SaaS startups’ 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.</p> <p>That’s all out the window now with SOTA AI models. <a href="https://fly.io/blog/youre-all-nuts/">Disparage “vibe coding” all you like, it’s here and it works and it’s going to change the world.</a></p> <p>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’re toast.</p> <p>Competent engineers can now crank out a prototype supporting api/service (unrelated to their startup’s <em>raison d’être</em>) 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’s a startup, and it’ll probably be good enough, and close enough in perf to your free/startup tier that they’ll do that instead of paying you $49/month.</p> <p>Furthermore, they’ll probably open source it, because it is unrelated to their profit model; remember, we’re talking about tangential supporting services here. If they don’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 “open core” startups will thankfully be toast.</p> <p>The barrier to entry for starting a useful SaaS before was that you could actually ship working software faster than most. That’s gone now.</p> <p>I expect:</p> <ul> <li>many small orgs/startups choosing “build” much more often than “buy”</li> <li>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</li> <li>boring/basic CRUD b2b SaaSes to die even faster than they already are</li> <li>a slight shift back toward b2c due to the decreased cost of platform-specific mobile client development</li> <li>tons of SaaSes being replaced by f/oss projects <ul> <li>…many of which will sadly be <a href="/20250720/minio-are-assholes/">fake open source</a></li> </ul> </li> <li>“open core” 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 “community edition”, or simply forked, as the cost of reviewing PRs and merging in upstream changes drops dramatically</li> <li>increased frequency of new working and useful f/oss projects, because scratching an itch becomes <em>so much easier and faster</em> <ul> <li>I even have <a href="https://git.eeqj.de/sneak/routewatch">a</a> <a href="https://git.eeqj.de/sneak/mfer">few</a> <a href="https://git.eeqj.de/sneak/ipapi">of</a> <a href="https://git.eeqj.de/sneak/vaultik">my</a> <a href="https://git.eeqj.de/sneak/secret">own</a>. I imagine many others are tagging 1.0.0 of little side projects that have been pending for years.</li> </ul> </li> </ul>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).Show Candidates Your Cap Table.2025-08-01T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20250801/show-candidates-your-cap-table<p>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.</p> <p>The generally accepted wisdom is that you should treat equity like a lottery ticket. It’s nice to have, but it probably won’t be worth anything. This isn’t bad advice, but when you buy a lottery ticket, you know the exact number the jackpot represents.</p> <p>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’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’t even taking into account any liquidation preferences.</p> <p>Most employee option grants vest over time, typically with a one-year cliff and a four-year schedule. This means you won’t have access to most of your options until you’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.</p> <p>It makes a hard problem even harder when trying to estimate what one’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.</p> <p>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.</p> <p>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.</p> <p>The current practice of most startup founders is to treat their cap table as somewhat of a secret. I’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’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.</p> <p>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’t skip the facts of the matter.</p> <p>Founders should care a lot about this. Withholding critical cap table details from the people you’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’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 “100,000 options” 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’t exist. Equity without numbers isn’t a good faith negotiation, it’s just theater.</p> <p>The recent shift toward extending the post-employment vested option exercise window from 90 days to 10 years (<a href="https://a16z.com/recommendations-for-startup-employee-option-plans/">spearheaded by a16z in 2016</a>) is a big step in the right direction, and a good signal that at least some VCs and founders are actually willing to question “this is how we’ve always done things” when the status quo is plainly unfair to early employees, but there are more traditions yet that we should retire. If you’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.</p> <p>There’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’t applied to honest discussions about the salary. The situation is ultimately ridiculous. You want serious people? Have serious conversations.</p> <p>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’s usually not the founders’ money that’s on the line if the company fails, but the VCs’. 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.</p> <p><small> As always, you are invited to <a href="https://bbs.sneak.berlin/t/show-candidates-your-cap-table/1117">discuss this post on the BBS</a> (signup required). </small></p>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.Minio Are Assholes2025-07-20T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20250720/minio-are-assholes<p>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 <a href="/20250720/the-agpl-is-nonfree/">the AGPL being a nonfree license</a>).</p> <p>The version <code class="language-plaintext highlighter-rouge">RELEASE.2025‑04‑22T22‑12‑26Z</code> includes an administration GUI. The following version does not. It’s of course still available in their paid fork. <a href="https://github.com/minio/minio/discussions/21316">People are not happy.</a></p> <p>They <a href="https://github.com/minio/object-browser/pull/3509">explicitly hobbled their “open source” version</a> to coerce people who don’t want to use their arcane CLI (which is called <code class="language-plaintext highlighter-rouge">mc</code> so conveniently name-conflicts with the <code class="language-plaintext highlighter-rouge">mc</code> cli utility that many people have installed) to do simple admin tasks.</p> <p>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.</p> <p>Now, Minio have claimed in that thread they’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 <em>working code</em> would have to fork the repository and merge all of the future changes. Or, of course, simply pay Minio, which is what I’m sure they’d prefer.</p> <p>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 “free software”, or “libre software”) is not just a license, it’s an ideology.</p> <p>Open core is not open source, regardless of what license they use. It’s what I’ve taken to calling “open source cosplay”.</p> <p>If a project is asking you to assign them copyright in a CLA (GNU notwithstanding), they’re probably doing so to dual license their code. People who believe in software freedoms don’t dual license their code. People who believe in software freedoms don’t release software, any software, under nonfree licenses, such as “Enterprise Editions”.</p> <p>Open core is bullshit.</p> <p>Other major offenders:</p> <ul> <li>Microsoft’s VS Code (all of the good features are in packages that aren’t free software and aren’t allowed to be modified or redistributed)</li> <li>Google’s Android (doesn’t work without Play Services, and they’re not even pretending anymore, as future versions won’t even cosplay being open)</li> <li>Docker (the commonly used Docker Desktop isn’t even source available, it’s entirely proprietary)</li> <li>Redis (switched to RSAL (nonfree), SSPL (nonfree), and <a href="/20250720/the-agpl-is-nonfree/">AGPL (nonfree)</a>)</li> <li>Mattermost</li> </ul> <p>Stop using these tools.</p> <p>Before I’m accused of doing the standard open-source-user-entitlement thing, I want to be clear that I’m very much not asking for free software. I’m asking for these companies that are materially benefitting from marketing themselves using the term “open source” to walk the walk. You simply don’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 “community edition” because you’re anticompetitive and know you can’t compete with free-as-in-beer. If you want to make proprietary software, <strong>do so</strong>, but stop pretending to be involved in the free software community by using terms like “community” or “project” or “open source” when we all know you’re not.</p> <p>Mongo (switched to SSPL) and Hashicorp (switched to BSL) and ElasticSearch (SSPL) all did so and, critically, <strong>stopped pretending to be open source</strong>. 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’t know any better.)</p> <p>Most projects didn’t take this path, and still call themselves open source when they clearly don’t respect software freedoms at all.</p> <p>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.</p>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).The AGPL License Is Nonfree2025-07-20T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20250720/the-agpl-is-nonfree<p>I frequently assert that the <a href="https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License">Affero GNU Public License (AGPL)</a> 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.</p> <p>It’s very obviously not. Don’t believe the hype. Let’s review:</p> <p><a href="https://www.gnu.org/licenses/agpl-3.0.html#license-text">Here’s the actual text of the AGPL.</a></p> <p>(The part you want is section 13, “Remote Network Interaction”.)</p> <p><a href="https://en.wikipedia.org/wiki/The_Free_Software_Definition">The four freedoms, the fundamental conceptual basis of software freedom, as originally defined and espoused by the Free Software Foundation</a>:</p> <ul> <li> <p>Freedom 0: The freedom to run the program as you wish, for any purpose.</p> </li> <li> <p>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.</p> </li> <li> <p>Freedom 2: The freedom to redistribute copies so you can help others.</p> </li> <li> <p>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.</p> </li> </ul> <p>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.</p> <p>They call this the “Application Service Provider” (ASP) loophole, and they really don’t like it, because capitalists leverage software that they so graciously <em>gave away as a gift</em> to, you know, make money. Many other businesses that use the term “open source” for street cred (such as MongoDB and now famously Hashicorp and previously Redis) also don’t like it, because they are engaging in open source cosplay as marketing for their business and don’t actually give a shit about software freedom.</p> <p>The problem is, Freedoms 2 and 3 are negative rights - they are freedoms to have the <em>option</em> 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.</p> <p><small>(Of course, licenses like the GPL can create obligations to distribute source code - but only if you are actually distributing software first, but that’s not comparable, because <em>software</em> and <em>services</em> simply are not the same thing, despite the common usage of the term “SaaS”. There’s a fundamental and material difference between me handing you a calculator and me telling you that the answer to 2+2 is 4.)</small></p> <p>They see this as bad, because they think you should be <em>forced</em> to publish your modifications to the software you use internally, even if you don’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’s compelled speech).</p> <p>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 (<em>not strictly true</em>, more on this later), if you make it available to users as a network service. The problem is, you can’t actually do this in a software license. A software license deals in permissions, not obligations. You can’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 “end user license agreement” (EULA), because it has more than just a copyright license in it. EULAs are <strong>very</strong> distinct from software licenses (though they frequently include a software license within them).</p> <p>Free software is and has always been against EULAs, because of freedom 0.</p> <p>They’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 <em>service</em> you provide over a network to your customers also provides them with the modified <em>software source code</em> to that same service).</p> <p>It’s a EULA pretending to be a copyright license.</p> <p>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).</p> <p>It restricts how you may use and modify the software to prevent uses that the FSF doesn’t like. The FSF is, at the core, being dishonest about this because they are trying to scam people into believing that it isn’t a EULA, because “everyone knows” that EULAs are violations of freedoms 0 and 1.</p> <p>It’s not just me saying this. <a href="https://en.wikipedia.org/wiki/Hector_Martin_(hacker)">Hector Martin (@marcan)</a>, founder and former lead dev of the Asahi Linux project (Linux on M-series Macbooks), <a href="https://news.ycombinator.com/item?id=30495647">wrote the following</a>:</p> <blockquote> <p>I really wish the FSF would stop pushing this nonsensical license and misleading everyone into thinking it does things it doesn’t. Their PR around it absolutely does not reflect the actual wording and consequences of the license. It’s deceptive and harmful to the free software ecosystem.</p> </blockquote> <p>Now, let’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.</p> <p>As a consequence of this I suspect it’s unenforceable in practice. (To date, it has never been adjudicated at trial.) I’m not a lawyer, and this is not legal advice.</p> <p>To wit, AGPL Section 13, “Remote Network Interaction”:</p> <blockquote> <p>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.</p> </blockquote> <p>This was obviously written with webapps in mind; they’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.</p> <p>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’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’s a ludicrous proposition, and the logical basis for such a requirement is fundamentally damaged. Software isn’t services and services aren’t software.</p> <p>But, let’s skip that for a moment. Let’s say you’re a developer and you clone an AGPL repo, and run the server locally. You’re all good, the in-app link still points to the source code. Then you make a change and “npm run” 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’s no way to do that - your version only exists on your laptop, which isn’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’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’re violating the license again as the network service is running but the source code is not available to any users thereof.</p> <p>This is a fundamental problem with the AGPL. It’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)?</p> <p>The AGPL sucks in every way you look at it. It’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 <a href="https://en.wikipedia.org/wiki/List_of_software_under_the_GNU_AGPL">many many others</a> to get all of the public credibility of being an open source project, without actually being free software, or respecting software freedoms.</p> <p>Credit where credit is due: I’ve harbored these feelings for a long time, but it wasn’t until <a href="https://news.ycombinator.com/item?id=30044019">marcan really laid it out specifically</a> that I was able to crystallize these thoughts into a fully formed opinion.</p> <h1 id="finally">Finally</h1> <p>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 <em>least popular</em> open source licenses).</p> <p>The problem is, it’s simply not reasonable. It only got amplified because people were using modified free software to <em>make gobs of money</em>, 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 “contributed back” to them, because “big rich corporation” and “little guy”.</p> <p>Gifts <em>absolutely do not work like that</em>. 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 “give back”. Amazon taking Redis and modifying it and selling it as a service doesn’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.</p> <p>When you give free gifts to the whole world, you are <em>also</em> 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 <em>value</em> of free software to the world. Freedom 0 is fucking important.</p> <p>Famously, Douglas Crockford used the MIT license with a custom modification when releasing <a href="https://en.wikipedia.org/wiki/JSLint">JSLint</a>:</p> <blockquote> <p>The Software shall be used for Good, not Evil.</p> </blockquote> <p>This was a little bit of a joke, but notoriously rendered the license nonfree, as such a restriction plainly violates freedom 0.</p> <p><strong>We explicitly have the right to use free software to do Evil.</strong> (“Evil” in the eyes of the licensor, of course.)</p> <p>I support this wholeheartedly. It is analogous to supporting free speech for those who say things you don’t like.</p> <p>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).</p> <p>The FSF and others now see Freedom 0 as a “loophole” that needs to be closed, that their gifts should come with strings attached if you’re going to use them to run a service to make money. This is a fundamentally broken and toxic view of software freedoms. “Use it for anything, but not like that” renders your position fundamentally unserious.</p> <p>There’s a common trope of calling open source software users “entitled” 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.</p> <p>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’re modifying it to make money. If you want a EULA on your software, stop giving it away as free software, duh. You don’t get it both ways.</p>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.Subject Lines and File Names: You’re doing it wrong.2025-04-30T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20250430/subject-lines<p>I got an alert today for a meeting I have 24 hours from now.</p> <p>The person who named this just typed some words into the box, the first ones that came to mind. Don’t be that guy: take 10 seconds to think about what this field is going to be used for and why.</p> <p>The assumptions built in to a title such as “Project kickoff call”:</p> <ul> <li> <p>I know which project it’s supposed to be (I don’t)</p> </li> <li> <p>I know what “kickoff” implies in terms of agenda (I don’t)</p> </li> <li> <p>I remember who’s going to be on the call (I don’t)</p> </li> </ul> <p>Be specific when you name things!</p> <p>If it’s a 1-on-1, name <em>both</em> parties in the title. You know who you are, I don’t.</p> <p>Include an agenda in the description if it’s something that is safe to be sent via email.</p> <p>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. <code class="language-plaintext highlighter-rouge">2025-04-30.Project.Dragonfly.Agenda.md</code>. 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’s a day or a year or a decade old?), and a date in the filename serves the purpose.</p>I got an alert today for a meeting I have 24 hours from now.Readme Howto2024-12-24T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20241224/readme-howtoThe United States Virgin Islands: Notes2024-12-24T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20241224/usvi<p>I just visited the <a href="https://en.wikipedia.org/wiki/Lesser_Antilles">Lesser Antilles</a> for the first time, specifically the island of St. Thomas in the <a href="https://en.wikipedia.org/wiki/United_States_Virgin_Islands">US Virgin Islands</a>, during the first week of December 2024.</p> <p>I’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.</p> <ul> <li> <p>For historical reasons, they drive on the left, despite being part of the United States.</p> </li> <li> <p>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.</p> </li> <li> <p>Like China, everyone drives with their high beams on 100% of the time at night without regard for other drivers.</p> </li> <li> <p>Despite being a pretty significant distance from the equator, they’re far enough south and thermally buffered by ocean that the water temperature even in December doesn’t dip under 70F. It’s full bore suntan-and-swimming weather even at the dead “coldest” part of the year.</p> </li> <li> <p>The electric grid is expensive, and trash. I understand it’s the same in Puerto Rico. All of the big resorts have HUGE generators.</p> </li> <li> <p>The roads are in the worst shape of anywhere I’ve ever been. Steep terrain, and foot-deep potholes suggest that vehicles don’t last very long there.</p> </li> <li> <p>Gasoline and diesel are very expensive at retail.</p> </li> <li> <p>There’s a big lack of fine dining; the island seems to be more geared toward discount vacationers and those arriving on cruise ships.</p> </li> <li> <p>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’t use Amazon at all while you are there. Larger packages can’t be ordered from Amazon as they simply won’t ship them to those ZIP codes, period.</p> </li> <li> <p>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’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.</p> </li> <li> <p>There are insanely strict <a href="https://en.wikipedia.org/wiki/Gun_laws_in_the_United_States_Virgin_Islands">firearms laws in the USVI</a>. 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.</p> </li> <li> <p>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.</p> </li> <li> <p>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’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.)</p> </li> <li> <p>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.</p> </li> <li> <p>The weather, while a bit humid for my Mojave-adapted preferences, is completely fantastic.</p> </li> <li> <p>There are very nice beaches and very nice swimming, something I have not often experienced on coastlines of Big Ocean. I’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.</p> </li> <li> <p>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 <em>tons</em> of boats around, from star-destroyer-sized mega cruise ships (multiple per day), to the superyachts of billionaires (I saw “Kaos”, the yacht of the Walmart heiress, among others), to little family fulltime sailboats. It’s as active a port as I’ve ever seen.</p> </li> <li> <p>Like a lot of small tourist islands, the airport is filthy, cramped, over-crowded and under-air conditioned. (Unrelated: I observed that <code class="language-plaintext highlighter-rouge">JTR</code> fixed this about theirs within the last few years.)</p> </li> </ul> <h1 id="discussion">Discussion</h1> <p>This, as all posts on this blog, can be discussed on <a href="https://bbs.sneak.berlin">the BBS</a>.</p>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.My 2024 Code Styleguide2024-06-10T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20240610/code-styleguide<p>I have documented and published, for the first time, <a href="https://git.eeqj.de/sneak/styleguide">my personal code style guide</a>. 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.</p> <p>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’t even notice them anymore.</p> <p>It is my hope that it is useful and instructive to less experienced programmers. I will do my best to amend it.</p> <p>It can be found at: <a href="https://git.eeqj.de/sneak/styleguide">https://git.eeqj.de/sneak/styleguide</a>.</p> <p>Feedback is welcome. I can, as always, be reached at <a href="mailto:[email protected]">[email protected]</a>.</p> <p>The <a href="https://bbs.sneak.berlin/t/my-2024-code-styleguide/950">comment thread for this post</a> can be found on <a href="https://bbs.sneak.berlin">the BBS</a>.</p>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.Apple OSes Are Insecure By Design To Aid Surveillance2023-10-05T00:00:00+00:002026-02-28T16:21:54+00:00https://sneak.berlin/20231005/apple-operating-system-surveillance<p>I have a theory that I believe is supported by enough evidence for you to believe it, as well.</p> <p>Mind you, this is <em>definitionally</em> a conspiracy theory; please don’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.</p> <p>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.</p> <p>This is supported by timelines and context, which will be provided.</p> <p>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.</p> <p>TSS checks happen on update. OCSP checks happen, among other times, on app launch.</p> <p>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 <a href="/20201112/your-computer-isnt-yours/">when I made a stink about it</a>, 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 <a href="https://support.apple.com/en-us/HT202491">edited the webpage to remove this promise</a>. 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.</p> <p>Not only can you not disable it, they’re still not happening over encrypted (<code class="language-plaintext highlighter-rouge">https:</code>) connections. This is straightforward to fix, but it hasn’t happened.</p> <p>Apple’s webpage says:</p> <blockquote> <p>We have never combined data from these checks with information about Apple users or their devices.</p> </blockquote> <blockquote> <p>We do not use data from these checks to learn what individual users are using on their devices.</p> </blockquote> <blockquote> <p>These security checks have never included the user’s Apple ID or the identity of their device. To further protect privacy, we don’t log IP addresses associated with Developer ID certificate checks, and we make sure that any collected IP addresses are removed from logs.</p> </blockquote> <p>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 <em>lot</em> 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 <em>your</em> apps is probably pretty close to uniquely identifying you.</p> <p>The OCSP checks (“Gatekeeper”, in Apple’s terminology) are not the big deal, however.</p> <p>When you update a modern mac, it needs something called a boot “ticket” for the new OS. This ticket is cryptographically signed by Apple, and is unique to your specific <code class="language-plaintext highlighter-rouge">Mx</code> Apple Silicon CPU/SoC (or your specific T1/T2 security chip, if you are using an Intel mac).</p> <p>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’s ECID) that never, ever change. It’s done on every major OS update, and, you guessed it, <em>it’s done totally unencrypted</em>. 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.)</p> <p><img src="/s/img/202310/2023-10-05-plaintext-tss.jpg" class="img-rounded img-responsive" /></p> <p><small>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.</small></p> <p>I <a href="/20220409/apple-is-still-tracking-you-without-consent/">screamed loudly about this in April 2022</a> and ended my post with “Continued transmission of plaintext identifiers will be assumed as malicious intent. Fix it.”</p> <p>It was not fixed. Not in the next release, not in the next major version.</p> <p>It’s <em>still</em> 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 <em>seven years</em>, ever since the introduction of the first T1 chip in the original Touch Bar MBP.</p> <p><img src="/s/img/202310/2023-10-05-apple-analytics-nonconsensual.jpg" class="img-rounded img-responsive" /></p> <p><small>First, during the update, Apple’s updater has to send your activity data back to the mothership even when analytics transmission is explicitly disabled. (This is why <code class="language-plaintext highlighter-rouge">xp.apple.com</code> is in so many hosts file privacy blocklists.)</small></p> <p><img src="/s/img/202310/2023-10-05-ls-tss-plaintext.jpg" class="img-rounded img-responsive" /></p> <p><small>Then the updater can get to the important work of leaking your plaintext ECID across the whole internet.</small></p> <p>I would be likely to give Apple the benefit of the doubt here, if not for two very important mitigating factors:</p> <ol> <li> <p>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 (<a href="https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity/">App Transport Security</a>). But for some reason for seven years and counting they didn’t mandate this for their own OS updates.</p> </li> <li> <p><a href="https://www.reuters.com/article/us-apple-fbi-icloud-exclusive/exclusive-apple-dropped-plan-for-encrypting-backups-after-fbi-complained-sources-idUSKBN1ZK1CT">Apple has a documented history of preserving cryptographic backdoors to aid US government surveillance.</a></p> </li> </ol> <p>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 “Advanced Data Protection” by Apple) for iCloud and thus iCloud Backup. That’s also not valid, and I’ll explain why.</p> <p>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.</p> <p>Second, iCloud E2EE is woefully incomplete. When you iMessage with someone, they have iCloud Backup on by default, and <a href="https://support.apple.com/en-us/HT202303">non-E2EE by default</a>, which means that approximately <em>all</em> of your iMessages (including all image and document attachments) will <em>still</em> be readable by Apple and the FBI because they are backed up <em>twice</em>: once from each end of the conversation. Unless you <em>and ALSO everyone you iMessage with</em> 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.</p> <p>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, <a href="https://support.apple.com/en-us/HT202303">the file metadata is not E2EE, and the metadata includes the FILENAME and also a unique hash of the <em>unencrypted</em> file content</a>. 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 <em>another person</em> 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.</p> <p>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 “E2EE” 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.</p> <p>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’re a group, and by extension the US and Chinese governments can, too.</p> <p>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?</p> <h2 id="update-2024-03-11">Update 2024-03-11</h2> <p>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 <code class="language-plaintext highlighter-rouge">gs.apple.com</code>. I assume it finally happened due to this webpage.</p> <h2 id="privacy-thats-apple">“Privacy, that’s Apple.”</h2> <p>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’s false-sense-of-security E2EE system.</p> <p>Note that this was always possible before, too. But it’s still possible, even under the current E2EE system. So far, it’s farce.</p> <h2 id="why-bother">Why Bother?</h2> <p>What exactly is the point of rolling out this E2EE feature if:</p> <ul> <li>you’re not going to prompt to migrate people to it</li> <li>you still enable authoritarian repressive surveillance of your users even when it’s turned on, because its design sucks</li> <li>you still leak the social graph of the users based on the path and time of spread of unique files</li> </ul> <p>Apple <em>has</em> 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’s two biggest markets).</p> <p>(Please don’t write me about how the iCloud plaintext content hashes are to support deduplication. Apple already did in <a href="https://support.apple.com/en-us/HT202303">HT202303</a>. That’s not the point, and it’s irrelevant. Also please don’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’s called <a href="/20181022/sneaks-law/">sneak’s law</a> and I wrote it. It’s irrelevant to the topic today.)</p> <p>Apple says in HT202303 that they are “committed to ensuring more data, including this kind of metadata, is end-to-end encrypted when Advanced Data Protection is enabled”. Maybe if they hadn’t dragged their feet for the FBI years ago then privacy would actually be baked into this product by now.</p> <p>Note well: You can’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’s activity in the form of iCloud metadata. A ton of the functionality of Apple devices is missing if you don’t submit to the ability to be surveilled.</p> <h2 id="wrapping-up">Wrapping Up</h2> <p>iCloud is a privacy nightmare. iMessage is <em>not</em> end to end encrypted due to <em>both</em> 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’s ineffective because the other end still has it off.</p> <p>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.</p> <p>On many app first launches (not every launch), you transmit plaintext identifiers leaking what developer’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.)</p> <p>Furthermore, Apple knows all of these things, and has opted to do nothing meaningful to mitigate the threats.</p> <p>I think that macOS has too many <em>plaintext</em> network privacy leaks, for far too long (in the context of everything else I’ve enumerated here) for this to be carelessness, coincidence, or deprioritization.</p> <h2 id="finally">Finally</h2> <p>Please take the time to go to Berlin, and <a href="https://www.stasimuseum.de/en/enindex.htm">visit the Stasi museum</a>, if you think my <a href="https://en.wikipedia.org/wiki/COINTELPRO">warnings about the potential for abuse by the FBI</a> when they are not constrained by the need for probable cause or search warrants are overblown.</p> <p>This is the same FBI that <a href="https://en.wikipedia.org/wiki/FBI%E2%80%93King_suicide_letter">wrote Martin Luther King Jr. anonymous letters telling him to kill himself</a>.</p> <p>Presently, the US government is accessing the full content of around seventy thousand(<em>!</em>) Apple accounts per year (as of 2022) <em>without a search warrant</em>, per <a href="https://www.apple.com/legal/transparency/">Apple’s own transparency report</a>. The numbers are much higher when you include warrants issued with probable cause.</p> <p>My concern is not so much that Apple is the threat, as Apple is not in the business of oppression or <a href="https://en.wikipedia.org/wiki/Julian_Assange">imprisoning journalists</a>, but the governments that can meaningfully compel Apple: the United States, and the People’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.</p> <p>A society that is under constant and total suspicionless police surveillance is a society that is, given enough time, actually doomed.</p> <p>Apple is complicit in building this society currently, and it poses an existential threat to freedom worldwide if it is not rectified.</p> <p><small> Finally, if you still don’t believe that Apple would be game to play ball in such a manner, <a href="https://tidbits.com/2020/08/17/the-case-of-the-top-secret-ipod/">read this</a>. There isn’t much wiggle room for large corporations to refuse the direct demands of the military in the USA, there’s simply too much asymmetry in terms of organizational goals. Corporations are ultimately extremely fragile and far too vulnerable to the state’s will.</small></p> <h2 id="footnote">Footnote</h2> <p>I’m experimenting with blogging more quickly and with less time spent editing. Please provide feedback on this or any other post <a href="https://bbs.sneak.berlin">on the BBS</a> or via email.</p>I have a theory that I believe is supported by enough evidence for you to believe it, as well.