10 interesting stories served every morning and every evening.

A recent experience with ChatGPT 5.5 Pro

gowers.wordpress.com

We are all hav­ing to keep re­vis­ing up­wards our as­sess­ments of the math­e­mat­i­cal ca­pa­bil­i­ties of large lan­guage mod­els. I have just made a fairly large re­vi­sion as a re­sult of ChatGPT 5.5 Pro, to which I am for­tu­nate to have been given ac­cess, pro­duc­ing a piece of PhD-level re­search in an hour or so, with no se­ri­ous math­e­mat­i­cal in­put from me.

The back­ground is that, as has been widely re­ported, LLMs are now ca­pa­ble of solv­ing re­search-level prob­lems, and have man­aged to solve sev­eral of the Erdős prob­lems listed on Thomas Bloom’s won­der­ful web­site. Initially it was pos­si­ble to laugh this off: many of the solutions” con­sisted in the LLM notic­ing that the prob­lem had an an­swer sit­ting there in the lit­er­a­ture al­ready, or could be very eas­ily de­duced from known re­sults. But lit­tle by lit­tle the laugh­ter has be­come qui­eter. The mes­sage I am get­ting from what other math­e­mati­cians more in­volved in this en­ter­prise have been say­ing is that LLMs have got to the point where if a prob­lem has an easy ar­gu­ment that for one rea­son or an­other hu­man math­e­mati­cians have missed (that rea­son some­times, but not al­ways, be­ing that the prob­lem has not re­ceived all that much at­ten­tion), then there is a good chance that the LLMs will spot it. Conversely, for prob­lems where one’s ini­tial re­ac­tion is to be im­pressed that an LLM has come up with a clever ar­gu­ment, it of­ten turns out on closer in­spec­tion that there are prece­dents for those ar­gu­ments, so it is still just about pos­si­ble to com­fort one­self that LLMs are merely putting to­gether ex­ist­ing knowl­edge rather than hav­ing truly orig­i­nal ideas. How much of a com­fort that is I will not dis­cuss here, other than to note that quite a lot of per­fectly good hu­man math­e­mat­ics con­sists in putting to­gether ex­ist­ing knowl­edge and proof tech­niques.

I de­cided to try some­thing a lit­tle bit dif­fer­ent. At least in com­bi­na­torics, there are quite a lot of pa­pers that in­ves­ti­gate some rel­a­tively new com­bi­na­to­r­ial pa­ra­me­ter that leads nat­u­rally to sev­eral ques­tions. Because of the sheer num­ber of ques­tions one can ask, the au­thors of such pa­pers will not nec­es­sar­ily have the time to spend a week or two think­ing about each one, so there is a de­cent prob­a­bil­ity that at least some of them will not be all that hard. This makes such pa­pers very valu­able as sources of prob­lems for math­e­mati­cians who are do­ing re­search for the first time and who will be hugely en­cour­aged by solv­ing a prob­lem that was of­fi­cially open. Or rather, it used to make them valu­able in that way, but it looks as though the bar has just been raised. It is no longer enough that some­body asks a prob­lem: it needs to be hard enough for an LLM not to be able to solve it.

In any case, a lit­tle over a week ago I de­cided to see how ChatGPT 5.5 Pro would fare with a se­lec­tion of prob­lems asked by Mel Nathanson in a pa­per en­ti­tled Diversity, Equity and Inclusion for Problems in Additive Number Theory. Nathanson has a re­mark­able record of be­ing in­ter­ested in prob­lems and the­o­rems that have later be­come ex­tremely fash­ion­able, which has led him to write a se­ries of ex­tremely well timed and there­fore highly in­flu­en­tial text­books. In this pa­per, he ar­gues for the in­ter­est of sev­eral other prob­lems, some of which I will now briefly de­scribe.

If is a set of in­te­gers, then its sum­set is de­fined to be . For a pos­i­tive in­te­ger , the –fold sum­set, de­noted , is de­fined to be . Nathanson is in­ter­ested in the pos­si­ble sizes of given the size of . To that end one can de­fine a set to be the set of all such that there ex­ists a set with and .

An ob­vi­ous first ques­tion to ask is sim­ply What is ?” When , the an­swer is the set of all in­te­gers be­tween and . It is an easy ex­er­cise to show that if , then , so this re­sult is say­ing that all sizes in be­tween can be re­al­ized. However, it is not true in gen­eral that can take every size be­tween its min­i­mum and max­i­mum pos­si­bil­i­ties, and we do not cur­rently have a com­plete de­scrip­tion of .

Another nat­ural ques­tion one can ask, and this is where ChatGPT came in, is how large a di­am­e­ter you need if you want a set with and hav­ing pre­scribed sizes. (Of course, the size of must be­long to .) Nathanson showed that for every there is a sub­set of with and , and asked whether the bound could be im­proved. ChatGPT 5.5 Pro thought for 17 min­utes and 5 sec­onds be­fore pro­vid­ing a con­struc­tion that yielded a qua­dratic up­per bound, which is clearly best pos­si­ble. It wrote up its ar­gu­ment in a slightly ram­bling LLM-ish style, so I asked if it could write the ar­gu­ment up as a LaTeX file in the style of a typ­i­cal math­e­mat­i­cal preprint. After two min­utes and 23 sec­onds it gave me that, af­ter which I spent some time con­vinc­ing my­self that the ar­gu­ment was cor­rect.

The ba­sic idea be­hind both Nathanson’s ar­gu­ment and ChatGPT’s was that in or­der to ob­tain a set of a given size with a sum­set of a given size, it is use­ful to build it out of a Sidon set, which means a set with sum­set of max­i­mal size (that is not quite the usual de­f­i­n­i­tion but it is the sim­plest to use in this dis­cus­sion), and an arith­metic pro­gres­sion. Also, for a bit of fine tun­ing one can take an ad­di­tional point near the arith­metic pro­gres­sion. Then if one plays around with the var­i­ous pa­ra­me­ters, one finds that one can ob­tain sets of all the sizes one wants. Nathanson does­n’t ex­press his ar­gu­ment this way (it is Theorem 5 of this pa­per), in­stead giv­ing an in­duc­tive ar­gu­ment, but I think, with­out hav­ing checked too care­fully, that if one un­rav­els his ar­gu­ment, one finds that ef­fec­tively that is what he ends up with, and the Sidon set in ques­tion con­sists of pow­ers of 2. ChatGPT ob­tained its im­prove­ment by sim­ply us­ing a more ef­fi­cient Sidon set — it is well known that one can find Sidon sets of qua­dratic di­am­e­ter. (One might ask why Nathanson did­n’t do that in the first place: I think it is be­cause the ob­vi­ous idea of us­ing a more ef­fi­cient Sidon set be­comes ob­vi­ous only af­ter one has re­described his in­duc­tive con­struc­tion. Is that what ChatGPT did? It is very hard to say.)

Next, I asked ChatGPT to see whether it could do the same for a closely re­lated ques­tion, where in­stead of look­ing at the size of the sum­set, one looks at the size of the re­stricted sum­set, which is de­fined to be . Unsurprisingly, it was able to do that with no trou­ble at all. I got it to write both re­sults up in a sin­gle note, to avoid a cer­tain amount of du­pli­ca­tion. If you are cu­ri­ous, you can see the note here.

I then asked what it could do for gen­eral . I was much less op­ti­mistic that it would man­age to do any­thing in­ter­est­ing, be­cause the proof for makes fun­da­men­tal use of the fact (due to Erdős and Szemerédi) that we know ex­actly which sizes we need to cre­ate. If we don’t know what the set is, then it seems that we are forced to start with a hy­po­thet­i­cal set with and and build out of it a set of small di­am­e­ter with the same prop­erty. As it hap­pens, I still don’t know how to get round that dif­fi­culty (I’m men­tion­ing that just to demon­strate that my math­e­mat­i­cal in­put was zero, and I did­n’t even do any­thing clever with the prompts), but Nathanson men­tioned in his pa­per a re­mark­able pa­per of Isaac Rajagopal, a stu­dent at MIT, who must have got round the dif­fi­culty some­how, be­cause he had man­aged to prove an ex­po­nen­tial de­pen­dence of on for each fixed .

I’ll leave the pre­vi­ous para­graph there, but Isaac has sub­se­quently ex­plained to me that that is­n’t re­ally the dif­fi­culty. His ar­gu­ment gives a com­plete de­scrip­tion of when is suf­fi­ciently large, and if one wants to prove a poly­no­mial de­pen­dence for fixed , then as­sum­ing that is suf­fi­ciently large is clearly per­mit­ted. The real dif­fi­culty is that con­struct­ing the sets with given sum­set sizes was sig­nif­i­cantly more com­pli­cated, and nec­es­sar­ily so be­cause the de­gree of the poly­no­mial grows with , and one there­fore needs more and more pa­ra­me­ters to de­fine the sets.

In any case, the task faced by ChatGPT was not to solve the prob­lem from scratch, but to see whether it was pos­si­ble to tighten up Isaac Rajagopal’s ar­gu­ment. Here’s what hap­pened.

After 16 min­utes and 41 sec­onds, it came back with an ar­gu­ment that claimed to have im­proved the up­per bound from ex­po­nen­tial in to ex­po­nen­tial in for any .

I asked it to write that in preprint form too, which took it a fur­ther 47 min­utes and 39 sec­onds.

That preprint would have been hard for me to read, as that would have meant care­fully read­ing Rajagopal’s pa­per first, but I sent it to Nathanson, who for­warded it to Rajagopal, who said he thought it looked cor­rect.

Both ChatGPT and Rajagopal spec­u­lated a lit­tle on what might need to be done to push things fur­ther and get a poly­no­mial bound, so I got greedy and asked ChatGPT to give that a go.

After 13 min­utes and 33 sec­onds it told me it felt op­ti­mistic about the ex­is­tence of such an ar­gu­ment but there were a cou­ple of tech­ni­cal state­ments that needed check­ing.

I asked it to check them.

After 9 min­utes and 12 sec­onds it got back to me with the check hav­ing been done, so I asked for this too to be writ­ten in preprint form.

After 31 min­utes and 40 sec­onds the preprint” was ready. Here it is.

Isaac Rajagopal looked at it and de­clared it to be al­most cer­tainly cor­rect. It was clear that he meant this not just at a line-by-line level but at the level of ideas.

Isaac made some very in­ter­est­ing re­marks about the na­ture of what the ad­di­tional ideas were that ChatGPT con­tributed. Since, as I have al­ready said, my math­e­mat­i­cal in­put was zero, I in­vited him to write a guest sec­tion to this post. Just be­fore we get to that, I want to raise a ques­tion (that will un­doubt­edly have been raised by oth­ers as well), which is sim­ple: what should we do with this kind of con­tent? Had the re­sult been pro­duced by a hu­man math­e­mati­cian, it would def­i­nitely have been pub­lish­able, so I think it would be wrong to de­scribe it as AI slop. On the other hand, it seems point­less even to think about putting it in a jour­nal, since it can be made freely avail­able, and no­body needs credit” for it (except that Isaac de­serves plenty of credit for cre­at­ing the frame­work on which ChatGPT could build). I un­der­stand that arXiv has a pol­icy against ac­cept­ing AI-written con­tent, which makes good sense to me. So maybe there should be a dif­fer­ent repos­i­tory where AI-produced re­sults can live. But var­i­ous de­ci­sions would need to be made about how it was or­ga­nized. I my­self think that one would prob­a­bly want to have some kind of mod­er­a­tion process, so that re­sults would be in­cluded only if a hu­man math­e­mati­cian was pre­pared to cer­tify that they were cor­rect — or, bet­ter still, that they had been for­mal­ized by a proof as­sis­tant — and per­haps also that they an­swered a ques­tion that had been asked in a hu­man-writ­ten pa­per. On the other hand, I would­n’t want a mod­er­a­tion process that cre­ated vast amounts of work (unless the work was it­self done by AI, but there are ob­vi­ous dan­gers in go­ing down that route). Anyway, un­til these ques­tions are an­swered, this re­sult is avail­able from the link above, and per­haps, now that LLMs are so good at lit­er­a­ture search, that will be enough to make it find­able by any­one who wants to know whether Nathanson’s prob­lem has been solved.

Isaac’s eval­u­a­tion of what ChatGPT achieved

With just a few prompts, ChatGPT was able to im­prove the up­per bound on (which I will de­fine very soon) from ex­po­nen­tial in to poly­no­mial in . While its first im­prove­ment of the bound, from ex­po­nen­tial in to ex­po­nen­tial in , was a rou­tine mod­i­fi­ca­tion of my work, the im­prove­ment to poly­no­mial in is quite im­pres­sive. To do this, ChatGPT came up with an idea which is orig­i­nal and clever. It is the sort of idea I would be very proud to come up with af­ter a week or two of pon­der­ing, and it took ChatGPT less than an hour to find and prove, us­ing sim­i­lar meth­ods to those in my own proof. My goal is to ex­plain that idea, in a man­ner that will be di­gestible to my friends who are com­puter sci­ence ma­jors as well as my math ma­jor friends.

The prob­lem of bound­ing is closely re­lated to a prob­lem I worked on at the Duluth REU (Research Experience for Undergrads) pro­gram, of de­ter­min­ing . In par­tic­u­lar, is the set of pos­si­ble -fold sum­set sizes , where can be cho­sen to be any set of in­te­gers. is the min­i­mal such that we can achieve all of the val­ues of us­ing -element sets . I spent last sum­mer ex­plic­itly char­ac­ter­iz­ing the set for large , by con­struct­ing sets such that achieves all sizes which I could not rule out as im­pos­si­ble. So, can be up­per-bounded by op­ti­miz­ing my con­struc­tions.

I con­structed these sets by com­bin­ing smaller com­po­nent sets which are sim­pler to an­a­lyze. Some of these com­po­nents are the geo­met­ric se­ries

for var­i­ous val­ues of and . Unfortunately, the el­e­ments of and are ex­po­nen­tially large in terms of . So, I asked ChatGPT (through Tim) whether there ex­ist sets of el­e­ments which have sim­i­lar sum­set sizes to these geo­met­ric se­ries, but con­tain only num­bers of poly­no­mial size in : I had no idea if this was pos­si­ble, or how to be­gin con­struct­ing such sets. ChatGPT came back with an an­swer, con­struct­ing sets and which be­have like half a geo­met­ric se­ries squeezed into a poly­no­mial in­ter­val,” which is coun­ter­in­tu­itive. Before I dis­cuss the con­struc­tion of and , I will ex­plain the im­por­tant prop­er­ties of the sum­set sizes of and which they recre­ate.

For , a set is called a set if the only so­lu­tions to

with in are the trivial” so­lu­tions, by which I mean that one side of the equa­tion is a re­order­ing of the other side. If is a set of size , then el­e­ments of cor­re­spond ex­actly to choices of el­e­ments of , with rep­e­ti­tion al­lowed. Using stars and bars,” one can see that and this is the max­i­mum pos­si­ble value of among sets of size . So, an­other de­f­i­n­i­tion is that is a set if . Sidon sets, which Tim dis­cussed, are ex­actly sets.

To make things more con­crete, let us as­sume that in (1). Then, is a set, but it is not a set be­cause of the re­la­tions

for any choice of in . In par­tic­u­lar, , as these re­la­tions are the only ones pre­vent­ing from be­ing a set. lacks the re­la­tions in (2) be­cause is not in . So, is a set, but it is not a set be­cause of the re­la­tions

for any choices of in . This gives re­la­tions, and one can check that . To sum­ma­rize, we have seen that

(a) is a set.

(b) is a lin­ear func­tion of .

(c) is a set.

(d) is a qua­dratic func­tion of .

ChatGPT was able to find sets and of el­e­ments which sat­isfy (a)-(d), but whose el­e­ments all have poly­no­mial size in . The con­struc­tion of and uses -dissociated sets, which are sets where the only so­lu­tions to

with and in are the trivial” so­lu­tions, i.e. and one side of the equa­tion is a re­order­ing of the other side. For , it is pos­si­ble to con­struct an -dissociated set , where is ap­prox­i­mately , and in par­tic­u­lar poly­no­mial in . Constructions of such a us­ing fi­nite fields date back to Singer (1938) and Bose–Chowla (1963) and are de­scribed in Appendix 1. Define

and

In hind­sight, I have good in­tu­ition for the con­struc­tion of and . All of the re­la­tions in (2) and (3) are formed by com­bin­ing one or two re­la­tions of the form . There are ap­prox­i­mately re­la­tions of the form in and , and ap­prox­i­mately such re­la­tions in and . There are few other low-or­der re­la­tions in and , and sim­i­larly in and be­cause is -dissociated. So, and man­age to con­tain half as many -relations as their geo­met­ric se­ries coun­ter­parts, while also con­tain­ing few low-or­der re­la­tions.

We now see why (a)-(d) hold with and re­placed by and , re­spec­tively. For con­crete­ness, we as­sume that and , so con­tains no non­triv­ial re­la­tions as in (4) with . Then, is a set, but it is not a set be­cause of the re­la­tions

for any choice of in . If we let , we can check that is lin­ear in . In par­tic­u­lar, (a) and (b) hold with re­placed by , and the lin­ear func­tion re­placed by . We can also see that is a set, but it is not a set be­cause of the re­la­tions

for any in . If we let , we can check that is qua­dratic in . In a sim­i­lar man­ner, (c) and (d) hold with re­placed by , and the qua­dratic func­tion re­placed by .

Even though I can mo­ti­vate it in ret­ro­spect, ChatGPT’s idea to use -dissociated sets to con­trol re­la­tions of or­der at most feels quite in­ge­nious. As far as I can tell, this idea is com­pletely orig­i­nal.

ChatGPT’s proof that its con­struc­tion pro­duces the de­sired val­ues of is very sim­i­lar to my proof that the sets which I con­struct achieve all pos­si­ble val­ues of , af­ter re­plac­ing and by and , re­spec­tively. Properties (a)-(d) cap­ture many of the im­por­tant prop­er­ties of and (or and ) which are used in this proof. The fi­nal con­struc­tions in­volve com­bin­ing the sets and (or and in my pa­per) for each value of be­tween and with an­other set which is the union of an arith­metic pro­gres­sion and a point. Intuitively, and (or and ) have large sum­sets, while arith­metic pro­gres­sions have small sum­sets, so it is plau­si­ble that one could get sets which achieve all the medium-sized sum­sets by com­bin­ing them. However, the proof of this is quite in­volved, and it oc­cu­pies Section 4 of my pa­per and the en­tirety of the ChatGPT preprint. In Appendix 2, I work out the de­tails of the ChatGPT con­struc­tion to show that for suf­fi­ciently large,

For com­par­i­son, it is easy to see that is at least on the or­der of , and it is un­known what the real value is. In Appendix 3, I give de­tails of the cor­re­spon­dence be­tween my pa­per and the ChatGPT preprint, which will be help­ful for those who want to read ei­ther.

Finally, I want to ex­press my deep grat­i­tude to Tim for al­low­ing me to con­tribute to this blog. I am still stunned by the co­in­ci­dence that the prob­lem he chose to put into ChatGPT 5.5 Pro led him to my pa­per on the arXiv.

Tim on what this means for math­e­mat­i­cal re­search

I would judge the level of the re­sult that ChatGPT found in un­der two hours to be that of a per­fectly rea­son­able chap­ter in a com­bi­na­torics PhD. It would­n’t be con­sid­ered an amaz­ing re­sult, since it leant very heav­ily on Isaac’s ideas, but it was def­i­nitely a non-triv­ial ex­ten­sion of those ideas, and for a PhD stu­dent to find that ex­ten­sion it would be nec­es­sary to in­vest quite a bit of time di­gest­ing Isaac’s pa­per, look­ing for places where it might not be op­ti­mal, fa­mil­iar­iz­ing one­self with var­i­ous al­ge­braic tech­niques that he used, and so on.

It seems to me that train­ing be­gin­ning PhD stu­dents to do re­search, which has al­ways been hard (unless one is lucky enough, as I have of­ten been, to have a stu­dent who just seems to get it and there­fore does­n’t need in any sense to be trained), has just got harder, since one ob­vi­ous way to help some­body get started is to give them a prob­lem that looks as though it might be a rel­a­tively gen­tle one. If LLMs are at the point where they can solve gentle prob­lems”, then that is no longer an op­tion. The lower bound for con­tribut­ing to math­e­mat­ics will now be to prove some­thing that LLMs can’t prove, rather than sim­ply to prove some­thing that no­body has proved up to now and that at least some­body finds in­ter­est­ing.

I would qual­ify that state­ment in two ways though. First, there is the ob­vi­ous point that a be­gin­ning PhD stu­dent has the op­tion of us­ing LLMs. So the task is po­ten­tially eas­ier than prov­ing some­thing that LLMs can’t prove: it is prov­ing some­thing in col­lab­o­ra­tion with LLMs that LLMs can­not man­age on their own. I have done quite a lot of such col­lab­o­ra­tion re­cently and found that LLMs have made use­ful con­tri­bu­tions with­out (yet) hav­ing game-chang­ing ideas.

A sec­ond point is that I don’t know how much of what I have said gen­er­al­izes to other ar­eas of math­e­mat­ics. Combinatorics tends to be quite fo­cused on prob­lems: you start with a ques­tion and you rea­son back from the ques­tion or if you rea­son for­wards you do so very much with the ques­tion in mind. In other ar­eas there can be much more of an em­pha­sis on for­wards rea­son­ing: you start with a cir­cle of ideas and see where it leads. To do it suc­cess­fully, you need to have some way of dis­crim­i­nat­ing be­tween in­ter­est­ing ob­ser­va­tions and un­in­ter­est­ing ones, and it is­n’t ob­vi­ous to me what LLMs would be like at that.

Of course, every­thing I am say­ing con­cerns LLMs as they are right now. But they are de­vel­op­ing so fast that it seems al­most cer­tain that my com­ments will go out of date in a mat­ter of months. It is also al­most cer­tain that these de­vel­op­ments will have a pro­foundly dis­rup­tive ef­fect on how we go about math­e­mat­i­cal re­search, and es­pe­cially on how we in­tro­duce new­com­ers to it. Somebody start­ing a PhD next aca­d­e­mic year will be fin­ish­ing it in 2029 at the ear­li­est, and my guess is that by then what it means to un­der­take re­search in math­e­mat­ics will have changed out of all recog­ni­tion.

I some­times get emails from peo­ple who are in­ter­ested in do­ing math­e­mat­i­cal re­search but are not sure whether that makes sense any more as an as­pi­ra­tion. I have a view on that ques­tion, but it may very well change in re­sponse to fur­ther de­vel­op­ments. That view is that there is still a great deal of value in strug­gling with a math­e­mat­ics prob­lem, but that the era where you could en­joy the thrill of hav­ing your name for­ever as­so­ci­ated with a par­tic­u­lar the­o­rem or de­f­i­n­i­tion may well be close to its end. So if your aim in do­ing math­e­mat­ics is to achieve some kind of im­mor­tal­ity, so to speak, then you should un­der­stand that that won’t nec­es­sar­ily be pos­si­ble for much longer — not just for you, but for any­body. Here’s a thought ex­per­i­ment: sup­pose that a math­e­mati­cian solved a ma­jor prob­lem by hav­ing a long ex­change with an LLM in which the math­e­mati­cian played a use­ful guid­ing role but the LLM did all the tech­ni­cal work and had the main ideas. Would we re­gard that as a ma­jor achieve­ment of the math­e­mati­cian? I don’t think we would.

So what is the point of strug­gling with a dif­fi­cult math­e­mat­ics prob­lem? One an­swer is that it can be very sat­is­fy­ing to solve a prob­lem even if the an­swer is al­ready known, but I don’t think that is a suf­fi­cient rea­son to spend sev­eral years of your life on this pe­cu­liar ac­tiv­ity. A bet­ter an­swer is that by solv­ing hard prob­lems you get an in­sight into the prob­lem-solv­ing process it­self, at least in your area of ex­per­tise, in a way that you sim­ply don’t if all you do is read other peo­ple’s so­lu­tions. One con­se­quence of this is that peo­ple who have them­selves solved dif­fi­cult prob­lems are likely to be sig­nif­i­cantly bet­ter at us­ing solv­ing prob­lems with the help of AI, just as very good coders are bet­ter at vibe cod­ing than not such good coders, or peo­ple who have a solid grasp of how to do ba­sic arith­metic are likely to be more skilled at us­ing cal­cu­la­tors (and es­pe­cially at notic­ing when an an­swer feels off). Mathematics is a highly trans­fer­able skill, and that ap­plies to re­search-level math­e­mat­ics as well. By do­ing re­search in math­e­mat­ics, you may not get the same re­wards as your equiv­a­lents a gen­er­a­tion ago, but there is a good chance that you will be equip­ping your­self very well for the world we are about to ex­pe­ri­ence.

Appendix 1 (Isaac)

We will con­struct an -dissociated set , where is ap­prox­i­mately . This con­struc­tion is a very mi­nor mod­i­fi­ca­tion of Bose–Chowla (1963)’s con­struc­tion of a set, which I learned about from this pa­per. For what­ever rea­son, the GPT preprint (Lemma 3.1) uses a dif­fer­ent, less ef­fi­cient con­struc­tion us­ing mo­ment curves.

Let be a prime, let , let be the fi­nite field with el­e­ments and fix a gen­er­a­tor of , so that is equal to . Define a set of el­e­ments

Then, each el­e­ment cor­re­sponds to a unique value of , by tak­ing . Now an ad­di­tive re­la­tion of the form in (4) with can be re­framed by tak­ing pow­ers of as

As is a de­gree- ex­ten­sion of and is a gen­er­a­tor of as an -extension, this means that does not sat­isfy any nonzero poly­no­mi­als in of de­gree . So, both sides of (6) are iden­ti­cal as poly­no­mi­als in and thus the ad­di­tive re­la­tion in (4) is triv­ial. So, is -dissociated, and of course one can prune a few el­e­ments to re­duce to size .

Appendix 2 (Isaac)

Fix con­stants such that (in my pa­per I ar­bi­trar­ily chose ). Let the two sets in (5) be called and . Let de­note the set of in­te­gers sat­is­fy­ing . Similarly to my pa­per, the con­struc­tions of such that achieves the de­sired sizes will com­bine sets of the fol­low­ing four types:

One rea­son that this con­struc­tion needs to be com­pli­cated is that we need to cre­ate at least many sets. To do this, we vary pa­ra­me­ters and in the do­main and pa­ra­me­ters and in the do­main . We can choose to be slightly big­ger than , and then the above con­struc­tion gives us dif­fer­ent sets where can be made ar­bi­trar­ily small. So, if we were to re­move any of the above pa­ra­me­ters from the con­struc­tion, and not change the oth­ers, this con­struc­tion would no longer cre­ate many sets. In com­par­i­son, Nathanson’s con­struc­tion when only needs to cre­ate sets. He does this by com­bin­ing a Sidon set, an arith­metic pro­gres­sion, and one ex­tra value, and vary­ing the size of the arith­metic pro­gres­sion and the ex­tra value in ranges of size .

We want to com­bine sets , which are given by , for the val­ues of , for the val­ues of , and a set. By Appendix 1, for all , there ex­ists a -dissociated set of di­am­e­ter . By the con­struc­tions of and , we can take each , where . Let have ba­sis vec­tors . To com­bine , we can de­fine as

Similarly to my Lemma 4.9, this con­struc­tion en­sures that the gen­er­at­ing func­tion prod­uct holds, which is the iden­tity that both my pa­per and the GPT preprint use (see ei­ther pa­per for a de­f­i­n­i­tion of these gen­er­at­ing func­tions). By (the stan­dard) Lemma 2.3 of the GPT preprint, is Freiman-isomorphic of or­der to a sub­set of . Therefore, for suf­fi­ciently large (the whole con­struc­tion re­lies on this for the same rea­sons as in my pa­per),

Appendix 3 (Isaac)

In Section 4.2 of my pa­per, I use a dif­fer­ent, sim­pler con­struc­tion to con­struct sets achiev­ing the val­ues in which have , for some small . These sets are sub­sets of , mean­ing that all el­e­ments have poly­no­mial size in . This is ob­served in Section 5 of the GPT preprint.

Section 4.3 of my pa­per car­ries out the con­struc­tion which com­bines many com­po­nents in­clud­ing and . This cor­re­sponds to Sections 2, 3, 4, and 6 of the GPT preprint. This sec­tion has a lot of mov­ing parts; I give an out­line in Section 4.3.1.

In Section 4.3.2, I de­scribe how the dif­fer­ent com­po­nents will be com­bined, us­ing a con­struc­tion which I call the dis­joint union, and in­tro­duce gen­er­at­ing func­tions as a book­keep­ing tool to keep track of the sum­set sizes of a set . This cor­re­sponds to Section 2 and Section 4 of the GPT preprint.

In Section 4.3.3, I com­pute the gen­er­at­ing func­tion of each of the com­po­nent sets, in­clud­ing (Lemma 4.15) and (Lemma 4.17). This cor­re­sponds to Section 3 and Section 6.1 of the GPT preprint. In par­tic­u­lar, is com­puted in Lemma 3.3 and is com­puted in Lemma 3.4. Once these gen­er­at­ing func­tions have been com­puted, the re­main­der of the proof is al­most iden­ti­cal in my pa­per and in the GPT preprint.

In Section 4.3.4, I put all the pieces to­gether to show that as we range over the sets which I have con­structed, the val­ues of will as­sume all of the el­e­ments of . The key idea is to show that the set of all val­ues of forms an in­ter­val, and con­tains num­bers both smaller than and equal to .

Tags: ai, math­e­mat­ics

This en­try was posted on May 8, 2026 at 4:40 pm and is filed un­der Computing, Straight maths. You can fol­low any re­sponses to this en­try through the RSS 2.0 feed. You can leave a re­sponse, or track­back from your own site.

Internet Archive Switzerland: Expanding a Global Mission to Preserve Knowledge

blog.archive.org

Thirty years ago, Brewster Kahle founded the Internet Archive with an am­bi­tious goal: Universal Access to All Knowledge. Today, that mis­sion con­tin­ues to grow with an ex­cit­ing new chap­ter: the launch of the Internet Archive Switzerland, a non-profit foun­da­tion based in St. Gallen.

The Internet Archive Switzerland, on­line at https://​in­ter­netarchive.ch/, is a newly-formed Swiss non-profit foun­da­tion that will op­er­ate in­de­pen­dently within its na­tional con­text. Its ef­forts will ini­tially fo­cus on pre­serv­ing en­dan­gered archives from around the world and col­lect­ing the gen­er­a­tive AI wave that is cur­rently upon us all. With a UNESCO con­fer­ence planned for November 2026 in Paris, Internet Archive Switzerland is tak­ing a con­crete step to ex­plore how en­dan­gered archives can be pro­tected.

In par­al­lel, the Swiss foun­da­tion is work­ing in part­ner­ship with the School of Computer Science at the University of St. Gallen, on the Gen AI Archive pro­ject led by Prof. Dr. Damian Borth. Together, they aim to be­gin archiv­ing AI mod­els, which is an emerg­ing fron­tier for preser­va­tion.

The choice of St. Gallen is no co­in­ci­dence. With a thou­sand-year tra­di­tion of archiv­ing and schol­ar­ship, the city of­fers a fit­ting home for this next phase of dig­i­tal preser­va­tion. Its strong aca­d­e­mic en­vi­ron­ment—in­clud­ing col­lab­o­ra­tion with the University of St. Gallen—makes it an ideal place to es­tab­lish a 21st cen­tury mem­ory or­ga­ni­za­tion.

St. Gallen is a very suit­able place to take the preser­va­tion of our uni­ver­sal knowl­edge a step fur­ther. Stability and in­no­va­tion go hand in hand here and are em­bed­ded in a deep un­der­stand­ing of the im­por­tance of cul­tural her­itage,” said Roman Griesfelder, the ex­ec­u­tive di­rec­tor of Internet Archive Switzerland.

Internet Archive Switzerland joins a grow­ing group of mis­sion-aligned or­ga­ni­za­tions, along­side Internet Archive, Internet Archive Canada, and Internet Archive Europe. Together, these in­de­pen­dent li­braries strengthen a shared vi­sion: build­ing a dis­trib­uted, re­silient dig­i­tal li­brary for the world.

Contact Internet Archive SwitzerlandRoman Griesfelder, ex­ec­u­tive di­rec­to­rof­fice@in­ter­netarchive.ch

Internet Archive Switzerland

internetarchive.ch

Welcome

Welcome toIn­t­er­net Archive Switzerland.

Universal Access to ALL Knowledge.

Internet Archive Switzerland is an in­de­pen­dent Swiss foun­da­tion, which is op­er­at­ing as an non-profit or­gan­i­sa­tion based in Sankt Gallen. Our pri­mary goal is: Universal Access to All Knowledge.

Together with like-minded part­ners we col­lect and pre­serve dig­i­tal in­for­ma­tion for learn­ing and re­search. Our ob­jec­tive is to en­sure peo­ple can find any kind of help­ful dig­i­tal ma­te­ri­als, to­day and in the fu­ture.

Although at first glance one might think that the dig­i­tal con­tent avail­able on the in­ter­net is in­ex­haustible and end­lessly grow­ing, it is also ev­i­dent that dig­i­tal in­for­ma­tion is ac­tu­ally short-lived.

We are fac­ing con­stant changes in file for­mats, sud­den fail­ure of stor­age me­dia, rapid dele­tion processes (accidental or de­lib­er­ate) and an in­creas­ing ten­dency of hid­ing knowl­edge be­hind pay­walls. All of this jeop­ar­dises easy ac­cess to in­for­ma­tion, learn­ing and the shap­ing of opin­ions on the ba­sis of facts.

All of this has led us to launch two ini­tia­tives in the foun­da­tion’s early stages: We are part­ner­ing with the University of St. Gallen to build the Gen Artificial Intelligence (AI) Archive, pre­serv­ing to­day’s AI mod­els for fu­ture gen­er­a­tions. And through our Endangered Archives ini­tia­tive, we in­vite global part­ners to ex­plore ways of res­cu­ing vul­ner­a­ble col­lec­tions from con­flict, dis­as­ter, and sup­pres­sion be­fore they are lost.

Projects

What we are WORKING on.

Project 01 · Research

Gen AI Archive

Artificial Intelligence, Generative AI, and Large Language Models (LLMs) are fun­da­men­tally re­shap­ing how hu­man­ity cre­ates and shares knowl­edge. To doc­u­ment this evo­lu­tion, the University of St. Gallen and Internet Archive Switzerland part­ner in pre­serv­ing to­day’s most pro­found mod­els for fu­ture gen­er­a­tions in the Gen AI Archive.

Project 02 · Preservation

Endangered Archives

Cultural her­itage and his­tor­i­cal records world­wide face ever grow­ing threats from con­flict, in­sta­bil­ity, and nat­ural dis­as­ters. To pre­vent the loss of this col­lec­tive mem­ory, Internet Archive Switzerland seeks to es­tab­lish an ini­tia­tive called Endangered Archives. In co­op­er­a­tion with UNESCO and other well es­tab­lished or­gan­i­sa­tions we aim to res­cue vul­ner­a­ble ma­te­ri­als by pro­vid­ing a se­cure dig­i­tal haven.

About

The foun­da­tion.

Organization

An in­de­pen­dent non profit foun­da­tion in St. Gallen, Switzerland. Mission-aligned with the Internet Archive, Internet Archive Canada and Internet Archive Europe, and a com­mon goal: Universal Access to All Knowledge.

Our char­ter states (excerpt): The pur­pose of the Foundation is to ad­vance the preser­va­tion and uni­ver­sal ac­ces­si­bil­ity of all knowl­edge as in­spired by the United Nations Universal Declaration of Human Rights (Articles 19, 26, and 27) and the United Nations’s Sustainable Development Goal 4, which strives to en­sure in­clu­sive and eq­ui­table qual­ity ed­u­ca­tion and pro­mote life­long learn­ing op­por­tu­ni­ties for all.

Board & Advisers

Executive Director

Roman Griesfelder

Internet Archive Switzerland is led by Roman Griesfelder as Executive Director. Roman is an Austrian cit­i­zen and has been liv­ing in Switzerland since 1998. The so­ci­ol­o­gist and busi­ness ad­min­is­tra­tor has been work­ing for many years in se­nior roles as pro­ject man­ager and man­age­ment con­sul­tant, among other things, be­fore hold­ing lead­ing po­si­tions at cul­tural in­sti­tu­tions in Switzerland. His wide-rang­ing in­ter­ests con­verge at the points where so­cial, cul­tural and tech­no­log­i­cal de­vel­op­ments in­ter­sect and af­fect the lives of many peo­ple, or even just a few in­di­vid­u­als.

Location

St. Gallen.

47.4245° N · 9.3767° E

St. Gallen is no stranger to the idea that pre­serv­ing the record is a form of civic re­spon­si­bil­ity. Its archival tra­di­tion stretches back over a thou­sand years — a fit­ting sym­bolic home for this new chap­ter of the Internet Archive.

The ex­is­tence of the Abbey Archives proves that, with con­vic­tion and per­se­ver­ance, it is pos­si­ble to pre­serve the foun­da­tions of our knowl­edge about so­ci­ety. This con­vic­tion mo­ti­vates the Internet Archive Switzerland to em­bark boldly on its mis­sion and to pur­sue it un­wa­ver­ingly.

We are also de­lighted to be part­ner­ing with the University of St. Gallen to es­tab­lish the world’s first com­pre­hen­sive AI archive.

Blog

Latest NEWS.

May 5, 2026 • 5 min­utes of read­ing

Internet Archive Switzerland Launches in St. GallenA Thousand Years of Memory, and a New Chapter

On May 5th, 2026, Internet Archive Switzerland cel­e­brates its launch at the ex­hi­bi­tion hall of the Abbey Archives of St. Gallen, one of the old­est con­tin­u­ously ac­tive archives in the world. We are grate­ful to Peter Erhart and the Abbey Archives of St. Gallen for host­ing us: two in­sti­tu­tions, one a mil­len­nium old and one…

Read more: Internet Archive Switzerland Launches in St. Gallen

May 5, 2026 • 5 min­utes of read­ing

Internet Archive Switzerland Launches in St. Gallen

A Thousand Years of Memory, and a New Chapter

On May 5th, 2026, Internet Archive Switzerland cel­e­brates its launch at the ex­hi­bi­tion hall of the Abbey Archives of St. Gallen, one of the old­est con­tin­u­ously ac­tive archives in the world. We are grate­ful to Peter Erhart and the Abbey Archives of St. Gallen for host­ing us: two in­sti­tu­tions, one a mil­len­nium old and one…

OpenAI's WebRTC Problem - Media over QUIC

moq.dev

pub­lished 5/6/2026

OpenAI posted a tech­ni­cal blog a few days ago. This blog post trig­gered me more than it should have. I urge to slap my meaty fin­gers on the key­board.

You should NOT copy OpenAI.

I don’t think you should use WebRTC for voice AI. WebRTC is the prob­lem.

Me

Like 6 years ago I wrote a WebRTC SFU at Twitch. Originally we used Pion (Go) just like OpenAI, but forked af­ter bench­mark­ing re­vealed that it was too slow. I ended up rewrit­ing every pro­to­col, be­cause of course I did!

Just a year ago, I was at Discord and I rewrote the WebRTC SFU in Rust. Because of course I did! You’re prob­a­bly notic­ing a trend.

Fun Fact: WebRTC con­sists of ~45 RFCs dat­ing back to the early 2000s. And some de-facto stan­dards that are tech­ni­cally drafts (ex. TWCC, REMB). Not a fun fact when you have to im­ple­ment them all.

You should con­sider me a Certified WebRTC Expert. Which is why I never, never want to use WebRTC again.

Product Fit

I’m go­ing to cheat a lit­tle bit and start with the hot takes be­fore they get cold. Don’t worry, we’ll get right back to talk­ing about the OpenAI blog post and load bal­anc­ing, I promise.

WebRTC is a poor fit for Voice AI.

But that seems counter-in­tu­itive? WebRTC is for con­fer­enc­ing, and that in­volves speak­ing? And ro­bots can speak, right?

WebRTC is too ag­gres­sive

Let’s say I pull up my OpenAI app on my phone. I say hi to Scarlett Johansson Sky and then I ut­ter:

should I walk or drive to the car wash?

should I walk or drive to the car wash?

WebRTC is de­signed to de­grade and drop my prompt dur­ing poor net­work con­di­tions.

wtf my dude

WebRTC ag­gres­sively drops au­dio pack­ets to keep la­tency low. If you’ve ever heard dis­torted au­dio on a con­fer­ence call, that’s WebRTC bay­bee. The idea is that con­fer­ence calls de­pend on rapid back-and-forth, so paus­ing to wait for au­dio is un­ac­cept­able.

…but as a user, I would much rather wait an ex­tra 200ms for my slow/​ex­pen­sive prompt to be ac­cu­rate. After all, I’m pay­ing good money to boil the ocean, and a garbage prompt means a garbage re­sponse. It’s not like LLMs are par­tic­u­larly re­spon­sive any­way.

But I’m not al­lowed to wait. It’s im­pos­si­ble to even re­trans­mit a WebRTC au­dio packet within a browser; we tried at Discord. The im­ple­men­ta­tion is hard-coded for real-time la­tency or else.

UPDATE: Some WebRTC folks are claim­ing this is a skill is­sue. It might be pos­si­ble to en­able au­dio NACKs, but we could­n’t fig­ure out the cor­rect SDP mung­ing. Either way, the WebRTC jit­ter buffer is ag­gres­sively small.

And yes, Voice AI agents will even­tu­ally get the la­tency down to the con­ver­sa­tional range. But re­duc­ing la­tency has trade-offs. I’m not even sure that pur­posely de­grad­ing au­dio prompts will ever be worth it.

TTS is faster than real-time

You speak into the mi­cro­phone, it gets sent to one of OpenAI’s bil­lion servers, and then a GPU pre­tends to talk to you via text-to-speech. Neato.

Let’s say it takes 2s of GPUs to gen­er­ate 8s of au­dio. In an ideal world, we would stream the au­dio as it’s be­ing gen­er­ated (over 2s) and the client would start play­ing it back (over 8s). That way, if there’s a net­work blip, some au­dio is buffered lo­cally. The user might not even no­tice the net­work blip.

But nope, WebRTC has no buffer­ing and ren­ders based on ar­rival time. Like se­ri­ously, time­stamps are just sug­ges­tions. It’s even more an­noy­ing when video en­ters the pic­ture.

To com­pen­sate for this, OpenAI has to make sure pack­ets ar­rive ex­actly when they should be ren­dered. They need to add a sleep in front of every au­dio packet be­fore send­ing it. But if there’s net­work con­ges­tion, oops we lost that au­dio packet and it’ll never be re­trans­mit­ted.

OpenAI is lit­er­ally in­tro­duc­ing ar­ti­fi­cial la­tency, and then ag­gres­sively drop­ping pack­ets to keep la­tency low”. It’s the equiv­a­lent of screen shar­ing a YouTube video in­stead of buffer­ing it. The qual­ity will be de­graded.

Fun fact: WebRTC ac­tu­ally adds la­tency. It’s not much, but WebRTC has a dy­namic jit­ter buffer that can be sized any­where from 20ms to 200ms (for au­dio). This is meant to smooth out net­work jit­ter, but none of this is needed if you trans­fer faster than real-time.

Ports Ports Ports

Okay but let’s talk about the tech­ni­cal meat of the OpenAI ar­ti­cle. We’re no longer on a boat, but let’s talk about ports.

When you host a TCP server, you open a port (ex. 443 for HTTPS) and lis­ten for in­com­ing con­nec­tions. The TCP client will ran­domly se­lect an ephemeral port to use, and the con­nec­tion is iden­ti­fied by the source/​des­ti­na­tion IP/ports. For ex­am­ple, a con­nec­tion might be iden­ti­fied as 123.45.67.89:54321 -> 192.168.1.2:443.

But there’s a mi­nor prob­lem… client ad­dresses can change. When your phone switches from WiFi to cel­lu­lar, oops your IP changes. NATs can also ar­bi­trar­ily change your source IP/port be­cause of course they can.

Whenever this hap­pens, bye bye con­nec­tion, it’s time to dial a new one. And that means an ex­pen­sive TCP + TLS hand­shake which takes at least 2 – 3 RTTs. The users def­i­nitely no­tice the net­work hic­cup when you’re live stream­ing.

WebRTC tried to solve this is­sue but made things worse. Seriously.

A WebRTC im­ple­men­ta­tion is sup­posed to al­lo­cate an ephemeral port for each con­nec­tion. That way, a WebRTC ses­sion can iden­ti­fied by the des­ti­na­tion IP/port only; the source is ir­rel­e­vant. If the source IP/port changes, oh hey that’s still Bob be­cause the des­ti­na­tion port is the same.

But as OpenAI cor­rob­o­rates, this causes is­sues at scale be­cause…

Servers only have a lim­ited num­ber of ports avail­able.

Firewalls love to block ephemeral ports.

Kubernetes lul

You could prob­a­bly abuse IPv6 to work around this, but IDK I never tried. Twitch did­n’t even sup­port IPv6…

Hacks by Necessity

So most ser­vices end up ig­nor­ing the WebRTC spec­i­fi­ca­tions. Because of course they do. We mux mul­ti­ple con­nec­tions onto a sin­gle port in­stead.

At Twitch I lit­er­ally hosted my WebRTC server on UDP:443. That’s sup­posed to be the HTTPS/QUIC port, but ly­ing meant we could get past more fire­walls. Like the Amazon cor­po­rate net­work, which blocked all but ~30 ports.

Discord uses ports 50000 – 50032, one for each CPU core. As a re­sult it gets blocked on more cor­po­rate net­works. But like, if you’re on a Discord voice call on the Amazon cor­po­rate net­work, you prob­a­bly won’t be there much longer any­way.

HOWEVER, HUGE PROBLEM.

WebRTC is ac­tu­ally a bunch of stan­dards in a trench­coat, and 5 of those go over UDP di­rectly. It’s not hard to fig­ure out which pro­to­col a packet is us­ing, but we need to fig­ure out how to route each packet.

STUN: We can choose a unique ufrag and route on it.

SRTP/SRTCP: The browser chooses a ran­dom ssrc (u32)… which we can usu­ally route based on.

DTLS: Uh oh. We pray that RFC9146 gets wide­spread sup­port.

TURN: IDK I’ve never im­ple­mented it.

So OpenAI only uses STUN:

No pro­to­col ter­mi­na­tion: Relay parses only STUN head­ers/​ufrag; it uses cached state for sub­se­quent DTLS, RTP, and RTCP, keep­ing pack­ets opaque.

No pro­to­col ter­mi­na­tion: Relay parses only STUN head­ers/​ufrag; it uses cached state for sub­se­quent DTLS, RTP, and RTCP, keep­ing pack­ets opaque.

It’s a pos­i­tive way of say­ing:

We re­ally hope the user’s source IP/port never changes, be­cause we broke that func­tion­al­ity.

We re­ally hope the user’s source IP/port never changes, be­cause we broke that func­tion­al­ity.

While it’s im­pres­sive load bal­anc­ing any­thing at OpenAI scale, their cus­tom load bal­anc­ing is a hack. But a nec­es­sary hack, be­cause the core pro­to­col is at fault.

Fun fact: Browsers can ran­domly gen­er­ate the same ssrc. If there is a col­li­sion, and no source IP/port map­ping is avail­able, Discord at­tempts to de­crypt the packet with each pos­si­ble de­cryp­tion key. If the key worked, hey we iden­ti­fied the con­nec­tion!

Round Trips and U

The OpenAI blog post starts with 3 re­quire­ments, one of them is:

Fast con­nec­tion setup so a user can start speak­ing as soon as a ses­sion be­gins

Fast con­nec­tion setup so a user can start speak­ing as soon as a ses­sion be­gins

lol

It takes a min­i­mum of 8* round trips (RTT) to es­tab­lish a WebRTC con­nec­tion. While we try to run CDN edge nodes close enough to every user to min­i­mize RTT, it adds up.

Signaling server (ex. WHIP):

1 for TCP

1 for TLS 1.3

1 for HTTP

Media server:

1 for ICE (with server)

2 for DTLS 1.2

2 for SCTP

* It’s com­pli­cated to com­pute, be­cause some pro­to­cols can be pipelined to avoid 0.5 RTT. Kinda like half an A-Press.

All of this non­sense is be­cause WebRTC needs to sup­port P2P. It does­n’t mat­ter if you have a server with a sta­tic IP ad­dress, you still need to do this dance.

It’s ex­tra de­press­ing when the sig­nal­ing and me­dia server are run­ning on the same host/​process. You end up do­ing two re­dun­dant and ex­pen­sive hand­shakes. It’s like walk­ing AND dri­ving your car to the car wash.

Forking the Protocol

Fun Fact: This was orig­i­nally go­ing to be a Fun Fact, but it gets its own sec­tion now.

WebRTC prac­ti­cally en­cour­ages you to fork the pro­to­col. There’s so many lim­i­ta­tions that I’ve barely scratched the sur­face. The browser im­ple­men­ta­tion is owned by Google and tai­lor made for Google Meet, so it’s also an ex­is­ten­tial threat for con­fer­enc­ing apps.

Sad Fact: That’s why every con­fer­enc­ing app (except Google Meet) tries to shove a na­tive app down your throat. It’s the only way to avoid us­ing WebRTC.

OpenAI def­i­nitely has the debt fund­ing to do this. But I think they should also throw the baby out with the bath wa­ter. Don’t fork WebRTC, re­place it with some­thing that has browser sup­port.

Fun Fact: Discord has forked WebRTC so hard that na­tive clients only im­ple­ment a tiny frac­tion of the pro­to­col. No more SDP/ICE/STUN/TURN/DTLS/SCTP/SRTP/etc. But we still have to im­ple­ment every­thing for web clients.

But What Instead?

If not WebRTC, then what should you use for Voice AI?

Honestly, if I was work­ing at OpenAI, I’d start by stream au­dio over WebSockets. You can lever­age ex­ist­ing TCP/HTTP in­fra­struc­ture in­stead of in­vent­ing a cus­tom WebRTC load bal­ancer. It makes for a bor­ing blog post, but it’s sim­ple, works with Kubernetes, and SCALES.

I think head-of-line block­ing is a de­sir­able user ex­pe­ri­ence, not a li­a­bil­ity. But the fated day will come and drop­ping/​pri­or­i­tiz­ing some pack­ets will be nec­es­sary. Then I think OpenAI should copy MoQ and uti­lize WebTransport, be­cause…

QUIC FIXES THIS

Remember the round trip dis­cus­sion? Good times. Here’s how many RTTs it takes to es­tab­lish a QUIC con­nec­tion:

1 for QUIC+TLS

But that was an easy one. Let’s dive into the deeper de­tails of QUIC that you would­n’t know about un­less you’re a turbo QUIC nerd (it me).

Connection ID

Remember that link to RFC9146? In the DTLS sec­tion? That you did­n’t click? Good times. The idea is lit­er­ally copied from QUIC.

QUIC ditches source IP/port based rout­ing. Instead, every packet con­tains a CONNECTION_ID, which can be 0 – 20 bytes long. And most im­por­tantly for us: it’s cho­sen by the re­ceiver.

So our QUIC server gen­er­ates a unique CONNECTION_ID for each con­nec­tion. Now we can use a sin­gle port and still fig­ure out when the source IP/port changes. When it does, QUIC au­to­mat­i­cally switches to the new ad­dress in­stead of sev­er­ing the con­nec­tion like TCP.

But if your gut re­ac­tion is: how dare they! this is a waste of bytes!” These bytes are very im­por­tant, keep read­ing u nerd.

Stateless Load Balancing

I glossed over this, but OpenAI’s load bal­ancers (like most) de­pend on shared state. Even if you have a sticky packet router, load bal­ancers can still restart/​crash. Something has to store the map­ping from source IP/port -> back­end server.

They’re us­ing a Redis in­stance to store the map­ping of source IP/port to back­end server. Simple and easy, I ap­prove.

EU calls VPNs “a loophole that needs closing” in age verification push

cyberinsider.com

The European Parliamentary Research Service (EPRS) has warned that vir­tual pri­vate net­works (VPNs) are in­creas­ingly be­ing used to by­pass on­line age-ver­i­fi­ca­tion sys­tems, de­scrib­ing the trend as a loop­hole in the leg­is­la­tion that needs clos­ing.”

The warn­ing comes as gov­ern­ments across Europe and else­where con­tinue ex­pand­ing on­line child-safety rules that re­quire plat­forms to ver­ify users’ ages be­fore grant­ing ac­cess to adult or age-re­stricted con­tent.

VPNs are pri­vacy tools de­signed to en­crypt in­ter­net traf­fic and hide a user’s IP ad­dress by rout­ing con­nec­tions through re­mote servers. While widely used for le­git­i­mate pur­poses such as pro­tect­ing com­mu­ni­ca­tions, avoid­ing sur­veil­lance, and en­abling se­cure re­mote work, reg­u­la­tors are in­creas­ingly con­cerned that the same tech­nol­ogy al­lows mi­nors to cir­cum­vent re­gional age checks.

The EPRS notes that VPN us­age surged af­ter manda­tory age-ver­i­fi­ca­tion laws took ef­fect in coun­tries in­clud­ing the United Kingdom and sev­eral US states. In the UK, where on­line ser­vices are now re­quired to pre­vent chil­dren from ac­cess­ing harm­ful con­tent, VPN apps re­port­edly dom­i­nated down­load charts af­ter the law came into force.

— European Parliamentary Research Service (@EP_EPRS) May 6, 2026

The doc­u­ment ex­plic­itly frames VPNs as a reg­u­la­tory gap, stat­ing that some pol­i­cy­mak­ers and child-safety ad­vo­cates be­lieve VPN ac­cess it­self should re­quire age ver­i­fi­ca­tion. England’s Children’s Commissioner has also called for VPN ser­vices to be re­stricted to adults only.

However, forc­ing users to ver­ify their iden­tity be­fore ac­cess­ing VPN ser­vices could sig­nif­i­cantly weaken anonymity pro­tec­tions and cre­ate new risks around sur­veil­lance and data col­lec­tion. VPN providers and other pri­vacy ad­vo­cates have al­ready ex­pressed their ob­jec­tions to this ap­proach in a let­ter sent to the UK pol­i­cy­mak­ers.

Last month, re­searchers found mul­ti­ple se­cu­rity and pri­vacy flaws in the European Commission’s of­fi­cial age-ver­i­fi­ca­tion app shortly af­ter its re­lease. The app, pro­moted as a pri­vacy-pre­serv­ing tool un­der the DSA frame­work, was dis­cov­ered stor­ing sen­si­tive bio­met­ric im­ages in un­en­crypted lo­ca­tions and ex­pos­ing weak­nesses that could al­low users to by­pass ver­i­fi­ca­tion con­trols en­tirely.

The EPRS pa­per ac­knowl­edges that age ver­i­fi­ca­tion re­mains tech­ni­cally dif­fi­cult and frag­mented across the EU. Current sys­tems based on self-de­c­la­ra­tion, age es­ti­ma­tion, or iden­tity ver­i­fi­ca­tion are de­scribed as rel­a­tively easy for mi­nors to by­pass. The re­port high­lights emerg­ing ap­proaches, such as double-blind” ver­i­fi­ca­tion sys­tems used in France, where web­sites re­ceive only con­fir­ma­tion that a user meets age re­quire­ments with­out learn­ing the user’s iden­tity, while the ver­i­fi­ca­tion provider does not see which web­sites the user vis­its.

At the same time, reg­u­la­tors are be­gin­ning to ad­dress VPN use di­rectly in leg­is­la­tion. Utah re­cently be­came the first US state to en­act a law ex­plic­itly tar­get­ing VPN use in on­line age ver­i­fi­ca­tion. The state’s SB 73 de­fines a user’s lo­ca­tion based on phys­i­cal pres­ence rather than ap­par­ent IP ad­dress, even if VPNs or proxy ser­vices are used to mask it.

The EPRS sug­gests VPN providers may face in­creas­ing scrutiny as the EU re­vises cy­ber­se­cu­rity and on­line safety leg­is­la­tion, not­ing that fu­ture up­dates to the EU Cybersecurity Act could in­tro­duce child-safety re­quire­ments aimed at pre­vent­ing VPN mis­use to by­pass le­gal pro­tec­tions.

If you liked this ar­ti­cle, be sure to fol­low us on X/Twitter and also LinkedIn for more ex­clu­sive con­tent.

bliki: Mythical Man Month

martinfowler.com

In the early 1960s, Fred Brooks man­aged the de­vel­op­ment of IBMs System/360 com­puter sys­tems. After it was done he penned his thoughts in the book The Mythical Man-Month which be­came one of the most in­flu­en­tial books on soft­ware de­vel­op­ment af­ter its pub­li­ca­tion in 1975. Reading it in 2026, we’ll find some of it out­dated, but it also re­tains many lessons that are still rel­e­vant to­day.

The book con­tains Brooks’s law: Adding man­power to a late soft­ware pro­ject makes it later.” The is­sue here is com­mu­ni­ca­tion, as the num­ber of peo­ple grows, the num­ber of com­mu­ni­ca­tion paths be­tween those peo­ple grows ex­po­nen­tially. Unless these paths are skill­fully de­signed, then work quickly falls apart.

Perhaps my most en­dur­ing les­son from this book is the im­por­tance of con­cep­tual in­tegrity

I will con­tend that con­cep­tual in­tegrity is the most im­por­tant con­sid­er­a­tion in sys­tem de­sign. It is bet­ter to have a sys­tem omit cer­tain anom­alous fea­tures and im­prove­ments, but to re­flect one set of de­sign ideas, than to have one that con­tains many good but in­de­pen­dent and un­co­or­di­nated ideas.

I will con­tend that con­cep­tual in­tegrity is the most im­por­tant con­sid­er­a­tion in sys­tem de­sign. It is bet­ter to have a sys­tem omit cer­tain anom­alous fea­tures and im­prove­ments, but to re­flect one set of de­sign ideas, than to have one that con­tains many good but in­de­pen­dent and un­co­or­di­nated ideas.

He ar­gues that con­cep­tual in­tegrity comes from both sim­plic­ity and straight­for­ward­ness - the lat­ter be­ing how eas­ily we can com­pose el­e­ments. This point of view has been a strong in­flu­ence upon my ca­reer, the pur­suit of con­cep­tual in­tegrity un­der­pins much of my work.

The an­niver­sary edi­tion of this book is the one to get, be­cause it also in­cludes his even-more in­flu­en­tial 1986 es­say No Silver Bullet”.

LLMs Corrupt Your Documents When You Delegate

arxiv.org

GrapheneOS fixes Android VPN leak Google refused to patch

cyberinsider.com

GrapheneOS has re­leased a new up­date that fixes a re­cently dis­closed Android VPN by­pass vul­ner­a­bil­ity ca­pa­ble of leak­ing a user’s real IP ad­dress.

The leak hap­pens even when Android’s Always-On VPN and Block con­nec­tions with­out VPN pro­tec­tions were en­abled.

The is­sue, dis­closed last week by se­cu­rity re­searcher lowlevel/Yusuf,” af­fected Android 16 and stemmed from a newly in­tro­duced QUIC con­nec­tion tear­down fea­ture in Android’s net­work­ing stack. In its lat­est re­lease, GrapheneOS says it has disable[d] reg­is­terQuic­Connec­tion­Close­P­a­y­load op­ti­miza­tion to fix VPN leak,” ef­fec­tively neu­tral­iz­ing the at­tack vec­tor on sup­ported Pixel de­vices.

GrapheneOS is a pri­vacy- and se­cu­rity-fo­cused Android-based op­er­at­ing sys­tem pri­mar­ily de­vel­oped for Google Pixel de­vices. The pro­ject is widely used by pri­vacy-con­scious con­sumers, jour­nal­ists, ac­tivists, and en­ter­prise users seek­ing stronger ap­pli­ca­tion sand­box­ing, ex­ploit mit­i­ga­tions, and re­duced re­liance on Google ser­vices.

According to Yusuf’s tech­ni­cal write-up, the vul­ner­a­ble API al­lowed or­di­nary ap­pli­ca­tions with only the au­to­mat­i­cally granted INTERNET and ACCESS_NETWORK_STATE per­mis­sions to reg­is­ter ar­bi­trary UDP pay­loads with sys­tem_server.

When the ap­p’s UDP socket was later de­stroyed, Android’s priv­i­leged sys­tem_server process would trans­mit the stored pay­load di­rectly over the de­vice’s phys­i­cal net­work in­ter­face rather than through the VPN tun­nel. Because sys­tem_server op­er­ates with el­e­vated net­work­ing priv­i­leges and is ex­empt from VPN rout­ing re­stric­tions, the packet by­passed Android’s VPN lock­down pro­tec­tions en­tirely.

The re­searcher demon­strated the flaw on a Pixel 8 run­ning Android 16 with Proton VPN en­abled along­side Android’s lock­down mode. The app re­port­edly leaked the de­vice’s ac­tual pub­lic IP ad­dress to a re­mote server de­spite VPN pro­tec­tion be­ing fully en­abled.

Google in­tro­duced a fea­ture that al­lows ap­pli­ca­tions to grace­fully ter­mi­nate QUIC ses­sions when sock­ets are un­ex­pect­edly de­stroyed. However, the im­ple­men­ta­tion ac­cepted ar­bi­trary pay­loads with­out val­i­dat­ing whether they were le­git­i­mate QUIC CONNECTION_CLOSE frames and did not ver­ify whether the orig­i­nat­ing ap­pli­ca­tion was re­stricted to VPN-only traf­fic.

The re­searcher re­ported the is­sue to Android’s se­cu­rity team, which clas­si­fied it as Won’t Fix (Infeasible)” and NSBC (Not Security Bulletin Class), stat­ing that it did not meet the thresh­old for in­clu­sion in Android se­cu­rity ad­vi­sories. The re­searcher ap­pealed the de­ci­sion, ar­gu­ing that any ap­pli­ca­tion could leak iden­ti­fy­ing net­work in­for­ma­tion us­ing only stan­dard per­mis­sions, but Google main­tained its po­si­tion, au­tho­riz­ing pub­lic dis­clo­sure on April 29.

GrapheneOS re­sponded by dis­abling the un­der­ly­ing op­ti­miza­tion en­tirely in re­lease 2026050400.

Beyond the VPN leak fix, the lat­est re­lease also in­cludes the full May 2026 Android se­cu­rity patch level, mul­ti­ple hard­ened_­mal­loc im­prove­ments, Linux ker­nel up­dates across Android’s 6.1, 6.6, and 6.12 branches, and a back­ported fix for CVE-2026 – 33636 in libpng. The up­date ad­di­tion­ally ships newer Vanadium browser builds and ex­panded Dynamic Code Loading re­stric­tions.

The re­searcher noted that stock Android users could tem­porar­ily mit­i­gate the is­sue man­u­ally through ADB by dis­abling the close_quic_­con­nec­tion DeviceConfig flag. However, that workaround re­quires de­vel­oper ac­cess and may not per­sist in­def­i­nitely if Google re­moves the fea­ture flag in fu­ture up­dates.

If you liked this ar­ti­cle, be sure to fol­low us on X/Twitter and also LinkedIn for more ex­clu­sive con­tent.

The Intolerable Hypocrisy of Cyberlibertarianism

matduggan.com

I like the Internet. I am old enough to re­mem­ber the pre-In­ter­net era and de­spite the younger gen­er­a­tions pin­ing for those sim­pler days, I was there. Paper maps were ab­solutely hor­ri­ble, just you and a com­pass in your car on the side of the road in the mid­dle of the night try­ing to fig­ure out where you are and where you are go­ing. Once when dri­ving from Michigan to Florida I got so lost in the mid­dle of the night in Kentucky that I had to pull over to sleep and wait for the sun so I could fig­ure out where I was. I awoke to an old man star­ing un­blink­ingly into my car, shirt­less, breath­ing heavy enough to fog the win­dows. To say I floored that 1991 Honda Civic is an un­der­state­ment.

You would leave your house and then just dis­ap­pear. This is pre­sented as kind of ro­man­tic now, as if we were just free spir­its on the wind and could stop and re­ally watch a sun­set. In prac­tice it was mostly an an­noy­ing game of at­tempt­ing to guess where peo­ple were. You’d call their job, they had left. You’d call their house, they weren’t home yet. Presumably they were in tran­sit but you ac­tu­ally had no idea. As a child my re­sponse to peo­ple ask­ing me where my par­ents were was of­ten a shrug as I re­sumed at­tempt­ing to eat my weight in shoplifted candy or make home­made na­palm with gaso­line and sty­ro­foam. Sometimes I shud­der as a par­ent re­mem­ber­ing how young I was putting pen­nies on train tracks and hid­ing dan­ger­ously close so that we could get the cool squished penny af­ter­wards.

Cassettes are the worst way to lis­ten to mu­sic ever in­vented. Tapes squealed. Tapes slowed down for no rea­son, like they were de­pressed. Multiple times in my life I would set off on a long road trip, pop in a tape, and within fif­teen min­utes watch as it shot from the deck un­spooled like the guts from the tauntaun in Star Wars. You’d then spend forty-five min­utes at a Sunoco try­ing to wind it back in with a Bic pen know­ing in your heart you were per­form­ing CPR on a corpse. Then you’d put it back in the player out of pure stub­born­ness, and it would chew it­self again im­me­di­ately, and you’d drive the next six hours in si­lence with your own thoughts, which were not as good as Pearl Jam.

So I am, mostly, grate­ful for the bounty the in­ter­net has pro­vided. But there is some­thing wrong, deeply wrong, with what we built. The wrong­ness was there at the start. It was baked into the foun­da­tion by peo­ple who told them­selves a story about free­dom, and that story was a lie, and we are all, every one of us, pay­ing their tab.

To un­der­stand what hap­pened we need to go back to the 90s.

A Declaration of the Independence of Cyberspace

One of the first and most clas­sic ex­am­ples of the ide­ol­ogy that pow­ered and con­tin­ues to power tech is the clas­sic A Declaration of the Independence of Cyberspace” by John Perry Barlow writ­ten in 1996. You can find the full text here. I re­mem­ber think­ing it was ge­nius when I first read it. I was young enough that I also thought Snow Crash” was a se­ri­ous po­lit­i­cal doc­u­ment. Today the Declaration reads like one of those sov­er­eign cit­i­zen TikToks where some­one in traf­fic court is claim­ing diplo­matic im­mu­nity un­der mar­itime law.

It helps to know who Barlow was. Barlow was a Grateful Dead lyri­cist. He was also a Wyoming cat­tle rancher. He was also, briefly, the cam­paign man­ager for Dick Cheney’s first run for Congress. (You did not mis­read that.) He spent his later years as a fix­ture at Davos, the World Economic Forum, where the very wealthy gather each January to re­mind each other that they are in­ter­est­ing. It was at Davos, in February 1996, fu­eled by cham­pagne and griev­ance over the Telecommunications Act, that Barlow banged out the Declaration on a lap­top and emailed it to a few hun­dred friends. From there it be­came, some­how, one of the found­ing doc­u­ments of the mod­ern in­ter­net.

These in­creas­ingly hos­tile and colo­nial mea­sures place us in the same po­si­tion as those pre­vi­ous lovers of free­dom and self-de­ter­mi­na­tion who had to re­ject the au­thor­i­ties of dis­tant, un­in­formed pow­ers. We must de­clare our vir­tual selves im­mune to your sov­er­eignty, even as we con­tinue to con­sent to your rule over our bod­ies. We will spread our­selves across the Planet so that no one can ar­rest our thoughts.

Many of the pil­lars of modern Internet” are here. Identity is­n’t a fixed con­cept based on gov­ern­ment ID but is a more fluid con­cept. We don’t need cen­tral­ized con­trol or re­ally any form of con­trol be­cause those things are un­nec­es­sary. It was this and the fa­mous ear­lier Cyberspace and the American Dream: A MagnaCarta for the Knowledge Age” that laid a fa­mil­iar foun­da­tion for a lot of the cul­ture we now have. [link]

The Magna Carta is also our in­tro­duc­tion to the (now fa­mil­iar) creed of catch up or get left be­hind”. The adop­tion of new tech­nol­ogy must be done at the ab­solute fastest speed pos­si­ble with no reg­u­la­tions or checks. You don’t need to worry about the con­se­quences of tech­nol­ogy be­cause these prob­lems cor­rect them­selves. If you told me the fol­low­ing was writ­ten two weeks ago by OpenAI I would have be­lieved you.

If this analy­sis is cor­rect, copy­right and patent pro­tec­tion of knowl­edge (or at least many forms of it) may no longer be un­nec­es­sary. In fact, the mar­ket­place may al­ready be cre­at­ing ve­hi­cles to com­pen­sate cre­ators of cus­tomized knowl­edge out­side the cum­ber­some copy­right/​patent process

The cum­ber­some copy­right/​patent process. Cumbersome to whom, ex­actly? This is al­ways the move. The thing your in­dus­try would pre­fer not to deal with is re­framed as an ob­so­lete bur­den. Your re­fusal to do it is re­branded as in­no­va­tion. Your in­abil­ity to imag­ine a world where you don’t get ex­actly what you want be­comes a man­i­festo.

Winner Saw It Coming

So there are dozens of these pieces and they all read the same. If you don’t reg­u­late these tech­nolo­gies hu­man­ity will only ben­e­fit. Education, health­care, in­dus­try, etc. We don’t need reg­u­la­tions be­cause the trans­for­ma­tion from the medium of pa­per to dig­i­tal has trans­formed the hu­man spirit. But one was ex­tremely sur­pris­ing to me. Langdon Winner wrote some­thing al­most prophetic back in 1997. You can read it here.

He coins the term cy­ber­lib­er­tar­i­an­ism (or at least is the first men­tion of it I could find) and then goes on to de­scribe an al­most eerily ac­cu­rate set of events.

In this per­spec­tive, the dy­namism of dig­i­tal tech­nol­ogy is our true des­tiny. There is no time to pause, re­flect or ask for more in­flu­ence in shap­ing these de­vel­op­ments. Enormous feats of quick adap­ta­tion are re­quired of all of us just to re­spond to therequire­ments the new tech­nol­ogy casts upon us each day. In the writ­ings of cy­ber­lib­er­tar­i­ans those able to rise to the chal­lenge are the cham­pi­ons of the com­ing mil­len­nium. The rest are fated to lan­guish in the dust.

Characteristic of this way of think­ing is a ten­dency to con­flatethe ac­tiv­i­ties of free­dom seek­ing in­di­vid­u­als with the op­er­a­tionsof enor­mous, profit seek­ing busi­ness firms. In the Magna Cartafor the Knowledge Age, con­cepts of rights, free­doms, ac­cess, andown­er­ship jus­ti­fied as ap­pro­pri­ate to in­di­vid­u­als are mar­shaledto sup­port the machi­na­tions of enor­mous transna­tional firms.We must rec­og­nize, the man­i­festo ar­gues, that Government does­not own cy­ber­space, the peo­ple do.” One might read this as asug­ges­tion that cy­ber­space is a com­mons in which peo­ple have­shared rights and re­spon­si­bil­i­ties. But that is def­i­nitely not wherethe writ­ers carry their rea­son­ing.What ownership by the peo­ple” means, the Magna Cartainsists, is sim­ply private own­er­ship.” And it even­tu­ally be­comesclear that the pri­vate en­ti­ties they have in mind are ac­tu­ally large,transna­tional busi­ness firms, es­pe­cially those in com­mu­ni­ca­tions.Thus, af­ter prais­ing the mar­ket com­pe­ti­tion as the path­way to abet­ter so­ci­ety, the au­thors an­nounce that some forms of compe-tition are dis­tinctly un­wel­come. In fact, the writ­ers fear that the­gov­ern­ment will reg­u­late in a way that re­quires ca­ble com­pa­niesand phone com­pa­nies to com­pete. Needed in­stead, they ar­gue,is the re­duc­tion of bar­ri­ers to col­lab­o­ra­tion of al­ready large firms,a step that will en­cour­age the cre­ation of a huge, com­mer­cial,in­ter­ac­tive mul­ti­me­dia net­work as the for­merly sep­a­rate kinds of­com­mu­ni­ca­tion merge.

What ownership by the peo­ple” means, the Magna Cartainsists, is sim­ply private own­er­ship.” And it even­tu­ally be­comesclear that the pri­vate en­ti­ties they have in mind are ac­tu­ally large,transna­tional busi­ness firms, es­pe­cially those in com­mu­ni­ca­tions.Thus, af­ter prais­ing the mar­ket com­pe­ti­tion as the path­way to abet­ter so­ci­ety, the au­thors an­nounce that some forms of compe-tition are dis­tinctly un­wel­come. In fact, the writ­ers fear that the­gov­ern­ment will reg­u­late in a way that re­quires ca­ble com­pa­niesand phone com­pa­nies to com­pete. Needed in­stead, they ar­gue,is the re­duc­tion of bar­ri­ers to col­lab­o­ra­tion of al­ready large firms,a step that will en­cour­age the cre­ation of a huge, com­mer­cial,in­ter­ac­tive mul­ti­me­dia net­work as the for­merly sep­a­rate kinds of­com­mu­ni­ca­tion merge.

In all he lays out 4 pil­lars of this ide­ol­ogy.

Technological de­ter­min­ism. The new tech­nol­ogy is go­ing to trans­form every­thing, it can­not be stopped, and your only job is to keep up. Stewart Brand’s ac­tual quote, which Winner pulls out and lets sit there like a body on dis­play, is Technology is rapidly ac­cel­er­at­ing and you have to keep up.” There’s no room to ask whether we want any of this. The wave is com­ing. Surf or drown.

It does not oc­cur to any­one in this dis­course that drown’ is a choice the wave is mak­ing, not a nat­ural law. Waves do not have in­ten­tions. Destroying your liveli­hood and leav­ing you to rot is­n’t a re­quire­ment of the nat­ural or­der as much as that would con­ve­nient.

Radical in­di­vid­u­al­ism. The point of all this tech­nol­ogy is per­sonal lib­er­a­tion. Anything that gets in the way of the in­di­vid­ual max­i­miz­ing them­selves be it gov­ern­ment, reg­u­la­tion, so­cial oblig­a­tion, your an­noy­ing neigh­bors, is an ob­sta­cle to be re­moved. Winner notes, with what I imag­ine was a very dry ex­pres­sion, that the writ­ers of the Magna Carta for the Knowledge Age” cited Ayn Rand ap­prov­ingly. In 1994. As in­tel­lec­tual ground­ing. For a doc­u­ment about com­put­ers.

There is some­thing deeply funny about a move­ment claim­ing to in­vent the fu­ture and ground­ing its case in a Russian émi­gré’s air­port nov­els about steel barons in love with their own re­flec­tions.

Free-market ab­so­lutism. Specifically the Milton Friedman, Chicago School, sup­ply-side fla­vor. The mar­ket will sort it out. Regulation is theft. Wealth is virtue. George Gilder, who co-wrote the Magna Carta, had pre­vi­ously writ­ten a book called Wealth and Poverty that helped sell Reaganomics to the masses. He then wrote Microcosm, which ar­gued that mi­cro­proces­sors plus dereg­u­lated cap­i­tal­ism would lib­er­ate hu­man­ity. He was very se­ri­ous about this.

Don’t worry, Gilder is still out there. He loves the blockchain and crypto now. He now writes about how Bitcoin will save the soul of cap­i­tal­ism, which it is some­how do­ing while also de­stroy­ing the planet. Both can be true in his cos­mol­ogy. The ide­ol­ogy is flex­i­ble like that.

A fan­tasy of com­mu­ni­tar­ian out­comes. This is the part that should make you laugh out loud. After es­tab­lish­ing that gov­ern­ment is bad, reg­u­la­tion is theft, and the in­di­vid­ual is sov­er­eign, the cy­ber­lib­er­tar­i­ans then promise that the re­sult of all this will be… rich, de­cen­tral­ized, har­mo­nious com­mu­nity life. Negroponte: It can flat­ten or­ga­ni­za­tions, glob­al­ize so­ci­ety, de­cen­tral­ize con­trol, and help har­mo­nize peo­ple.” Democracy will flour­ish. The gap be­tween rich and poor will close. The lion will lie down with the lamb, and the lamb will have a Pentium II.

We also have the ad­van­tage of hind­sight and know, with­out ques­tion, that all of these pre­dicted out­comes were wrong. Not directionally wrong’ or wrong in the de­tails.’ Wrong the way it would be wrong to pre­dict that if you set your kitchen on fire, the re­sult will be a ren­o­va­tion.

You have to hold these four ideas in your head at the same time to see the trick. The cy­ber­lib­er­tar­i­ans wanted you to be­lieve that rad­i­cal in­di­vid­u­al­ism plus dereg­u­lated cap­i­tal­ism plus in­evitable tech­nol­ogy would pro­duce com­mu­ni­tar­ian utopia. This is, on its face, in­sane. It is the eco­nomic equiv­a­lent of claim­ing that if every­one punches each other re­ally hard, even­tu­ally we’ll all be hug­ging.

But Winner’s sharpest ob­ser­va­tion, the one I keep com­ing back to, is­n’t about any of the four pil­lars in­di­vid­u­ally. It’s about the move un­der­neath them. He writes:

Characteristic of this way of think­ing is a ten­dency to con­flate the ac­tiv­i­ties of free­dom seek­ing in­di­vid­u­als with the op­er­a­tions of enor­mous, profit seek­ing busi­ness firms.”

This is the en­tire game. This is how don’t tread on me” be­comes Meta should be al­lowed to do what­ever it wants.” This is how the rights of the lone hacker work­ing in their garage be­come in­dis­tin­guish­able from the rights of a multi­na­tional with a mar­ket cap larger than most coun­tries’ GDP. The Magna Carta lit­er­ally ar­gues that the gov­ern­ment should re­duce bar­ri­ers to col­lab­o­ra­tion be­tween ca­ble com­pa­nies and phone com­pa­nies in the name of in­di­vid­ual free­dom and so­cial equal­ity. Winner caught this in 1997.

That is why ob­struct­ing such col­lab­o­ra­tion — in the cause of forc­ing a com­pe­ti­tion­be­tween the ca­ble and phone in­dus­tries — is so­cially elit­ist. To the ex­tent it pre­vents col­lab­o­ra­tion be­tween the ca­ble in­dus­try and the phone com­pa­nies, pre­sent fed­eral pol­icy ac­tu­ally thwarts the Administration’s own goals of ac­cess and em­pow­er­ment.

What makes the es­say un­com­fort­able to read now is that Winner was­n’t even pre­dict­ing the fu­ture. He was just de­scrib­ing what was al­ready hap­pen­ing and not­ing where it would ob­vi­ously lead. He saw the me­dia merg­ers and asked the ques­tion no­body in the in­dus­try wanted to an­swer: what hap­pened to the pre­dicted col­lapse of large cen­tral­ized struc­tures in the age of elec­tronic me­dia? Where, ex­actly, did the de­cen­tral­iza­tion go? He saw that the cy­ber­lib­er­tar­i­ans were go­ing to de­liver the op­po­site of every­thing they promised, and that they were go­ing to keep get­ting paid to promise it any­way.

He was writ­ing be­fore Google. Before Facebook. Before the iPhone. Before YouTube. Before Twitter, Bitcoin, Uber, AirBnB, OpenAI, and the en­tire app econ­omy. Before any of the ac­tual ex­am­ples that would even­tu­ally prove him right ex­isted. He just looked at the peo­ple do­ing the talk­ing, lis­tened to what they were say­ing, and wrote down where it ended. It is not a long es­say. He did­n’t need a long es­say. The fu­ture was right there on the page, in their own words. He just had to read it back to them.

The es­say closes with a ques­tion that has, to my knowl­edge, never been se­ri­ously an­swered by the in­dus­try it was aimed at:

Are the prac­tices, re­la­tion­ships and in­sti­tu­tions af­fected by peo­ple’s in­volve­ment with net­worked com­put­ing ones we wish to fos­ter? Or are they ones we must try to mod­ify or even op­pose?”

Twenty-eight years later, the in­dus­try still treats this ques­tion as some­where be­tween naive and sedi­tious. It’s the ques­tion Barlow’s de­c­la­ra­tion was specif­i­cally de­signed to make unask­able. And it re­mains, to this day, the only ques­tion that ac­tu­ally mat­ters.

Caveat emp­tor

When you look at these early for­ma­tive writ­ings, so much of what we see now be­comes clear. The cy­ber­lib­er­tar­ian deal was al­ways the same: you’re on your own. The in­dus­try would build the in­fra­struc­ture, take the prof­its, and shove every con­se­quence, every harm, every cost, every re­spon­si­bil­ity, onto some­body else.

There is no greater ex­am­ple to me than the mod­er­a­tor. Anyone who has ever mod­er­ated a fo­rum or a sub­red­dit knows that adding the word cyber” to a space does­n’t sud­denly turn peo­ple into bet­ter hu­mans. People are still peo­ple. They flame each other, they post slurs, they doxx, they ha­rass, they spam, they post CSAM, they rad­i­cal­ize each other, they grief, they co­or­di­nate, they lie. A space with hu­mans in it re­quires gov­er­nance.

They pro­duce, with fright­en­ing reg­u­lar­ity, the ex­act be­hav­ior any kinder­garten teacher could have pre­dicted. Then they act sur­prised.

But the cy­ber­lib­er­tar­ian model re­quired pre­tend­ing it was un­fore­see­able. The plat­forms could­n’t ac­knowl­edge that they needed gov­er­nance be­cause ac­knowl­edg­ing it would mean ac­knowl­edg­ing re­spon­si­bil­ity, and ac­knowl­edg­ing re­spon­si­bil­ity would mean ac­knowl­edg­ing li­a­bil­ity, and ac­knowl­edg­ing li­a­bil­ity would mean the en­tire eco­nomic model col­lapses. So in­stead the in­dus­try in­vented a beau­ti­ful fic­tion: gov­er­nance hap­pens, but it hap­pens by magic, per­formed by vol­un­teers, for free, who we will si­mul­ta­ne­ously rely on and mock.

Reddit is run by un­paid mod­er­a­tors. Wikipedia is run by un­paid ed­i­tors. Stack Overflow was run by un­paid ex­perts and is now a ghost town. On TikTok and Twitter it is the un­know­able algorithm” that is the cause of and so­lu­tion to every prob­lem backed by capri­cious mod­er­a­tors who de­light in stop­ping free speech. Unless you don’t like it, then it’s neg­li­gence mod­er­a­tion in de­fense of your en­e­mies.

Open source is run by un­paid main­tain­ers hav­ing ner­vous break­downs. The plat­forms col­lect the rent. The peo­ple do­ing the ac­tual work of mak­ing the plat­forms liv­able get noth­ing, and when they ask for any­thing like recog­ni­tion, tools, ba­sic pro­tec­tion from ha­rass­ment, they’re told they’re power-trip­ping nerds who should touch grass.

This is also the crypto story, just with the masks off. What if we made worse money on pur­pose, money that by­passed every pro­tec­tion con­sumers had won over the pre­vi­ous cen­tury, money that could­n’t be re­versed when stolen, money that funded ran­somware at­tacks on hos­pi­tals and pump-and-dumps tar­get­ing peo­ple’s re­tire­ment ac­counts? The cy­ber­lib­er­tar­ian an­swer was: that’s free­dom. The losses were real. People killed them­selves. Hospitals had to turn away pa­tients. The ar­chi­tects be­came bil­lion­aires and bought yachts and now sit on the boards of AI com­pa­nies, where they are rein­vent­ing the same con with a new vo­cab­u­lary.

Now Winner got one thing wrong, and it’s worth paus­ing on, be­cause it’s the most in­ter­est­ing wrin­kle in all of this. What ac­tu­ally hap­pened was weirder and worse. The cy­ber­lib­er­tar­i­ans be­came the cor­po­ra­tions. They did­n’t sell out. They did­n’t be­tray their prin­ci­ples for the first of­fer of money. They sim­ply scaled un­til their prin­ci­ples be­came in­con­ve­nient, and then they stopped men­tion­ing them.

Once the plat­forms got large enough to be un­stop­pable, once they cap­tured enough of the reg­u­la­tory ap­pa­ra­tus to write their own rules, the lib­er­tar­ian rhetoric got qui­etly shelved like a col­lege poster you took down be­fore your in-laws came over. Meta no longer pre­tends it stands for free speech and seem­ingly takes de­light in putting its thumb on the scale. TikTok users have in­vented an en­tire eu­phemistic shadow lan­guage to evade au­to­mated cen­sor­ship like unalive,” le dol­lar bean,” graped” that would have made 1996 Barlow weep into his bolo tie.

Copyright and patents mat­ter when they’re Apple’s copy­right and patents. Or Googles. Or OpenAIs. Go try to make a Facebook+ web­site and see how quickly Meta is ca­pa­ble of re­spond­ing to con­tent it finds ob­jec­tion­able.

Cyberlibertarianism was the lad­der. Once they were on the roof, they kicked it away and started charg­ing ad­mis­sion to look at the view.

So the Internet is Doomed?

Remember I like the Internet. I said it in the be­gin­ning and it is still true. I love the Fediverse, I love weird Discords about small table­top RPGs I’m in. I spend hours in the Mister FPGA fo­rums. There are cor­ners that are good. But they’re mostly good be­cause they’re not big enough to be worth break­ing up.

It feels in­creas­ingly like I’m hang­ing out in the old neigh­bor­hood dive bar af­ter most of the reg­u­lars have moved away. The light­ing is the same. The bar­tender re­mem­bers your or­der. But you can hear your­self think now, and that’s mostly be­cause the room is half empty and the juke­box fi­nally died. The new clien­tele is from out of town. They are tak­ing pic­tures of the menu.

If we want to have a se­ri­ous con­ver­sa­tion about why we are in the sit­u­a­tion we’re in, it is no longer pos­si­ble to pre­tend that the bro­ken ide­ol­ogy that put us on this tra­jec­tory is still some­how com­pat­i­ble with the harsh re­al­i­ties that sur­round us. It is not clear to me if democ­racy can sur­vive a dereg­u­lated Internet. A dereg­u­lated Internet filled with LLMs that can per­fectly im­per­son­ate hu­man be­ings pow­ered by un­reg­u­lated cor­po­ra­tions with zero eth­i­cal guide­lines seems like a some­what ob­vi­ous prob­lem. Like an episode of Star Trek where you the viewer are like well clearly the Zorkians can’t keep the Killbots as pets.” It does­n’t take some gi­ant in­tel­lect to see the pretty fuck­ing ob­vi­ous prob­lem.

If we want to save the parts of the in­ter­net worth sav­ing, we have to evolve. We have to find some sort of eth­i­cal code that says: just be­cause I can do some­thing and it makes money, that is not suf­fi­cient jus­ti­fi­ca­tion to un­leash it on the world. Or, more sim­ply: just be­cause I want to do some­thing and you can­not ac­tively stop me, that does not make do­ing it a good idea. We have waited thirty years for the cy­ber­lib­er­tar­ian fu­ture to ar­rive and pro­duce the promised har­mo­nious com­mu­nity. It’s time to face the facts. It’s never com­ing. The bus left in 1996. The bus was never real.

People did not get bet­ter be­cause they went on­line. Giving every­one ac­cess to a raw, un­fil­tered pipeline of every fact and lie ever pro­duced did not turn them into bet­ter-ed­u­cated peo­ple. It broke them. It al­lowed them to choose the re­al­ity they now in­habit, like or­der­ing off a menu. If I want to be­lieve the world is flat, TikTok will gladly serve me that con­tent all day. Meta will rec­om­mend sup­port­ive groups. There will be hash­tags. There will be Discords. There will be a guy named Trent who runs a pod­cast. I will never have to face the deeply un­com­fort­able pos­si­bil­ity that I might be wrong about any­thing, ever, un­til the day I die, sur­rounded by peo­ple who agree with me about every­thing, in­clud­ing which of the other mourn­ers are se­cretly lizards.

That is the in­ter­net we built. It was not an ac­ci­dent. It was the prod­uct of a spe­cific ide­ol­ogy, writ­ten down by spe­cific peo­ple, at a spe­cific cock­tail party in Davos, in 1996. Winner watched it hap­pen and told us where it was go­ing. We did not lis­ten. There is still time, maybe, to start.

I’ve banned query strings — Chris Morgan

chrismorgan.info

🗓️ 2026 – 05-08 • Tagged /web, /opinions, /meta=only

I don’t like peo­ple adding track­ing stuff to URLs. Still less do I like peo­ple adding track­ing stuff to my URLs.

https://​chris­mor­gan.info/​no-query-strings?ref=ex­am­ple.com? Did I ask? If I wanted to know I’d look at the Referer header; and if it is­n’t there, it’s prob­a­bly for a good rea­son. You abuse your users by adding that to the link.

https://​chris­mor­gan.info/​no-query-strings?ut­m_­source=ex­am­ple&utm_&c.? Hey! That one’s even worse, UTM pa­ra­me­ters are for me to use, not you. Leave my URLs alone.

So I’ve de­cided to try a blan­ket ban for this site: no unau­tho­rised query strings.

At pre­sent I don’t use any query strings. If I ever start us­ing any query strings, I’ll al­low only known pa­ra­me­ters. (In past times I used ?t=… and ?h=… cache-bust­ing URLs for stylesheet URLs; and I de­cided I’m okay break­ing such re­quests; there should­n’t be any le­git­i­mate ones.)

Want to see what hap­pens if you add a query string? Go ahead, try it.

It’s my web­site: I can do what I want with it.

And you can do what you want with yours!

This is cur­rently im­ple­mented in my Caddyfile.

To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".

10HN is also available as an iOS App

If you visit 10HN only rarely, check out the the best articles from the past week.

Visit pancik.com for more.