wahern
That doesn't track. Apple iPhones are a major user of MPTCP and they report the majority of requests supporting MPTCP, IIRC 70+%.
It's an extension to TCP that, similar to QUIC, allows you to use multiple address/port pairs to transmit data over a single logical stream. Both client/initiator and server/listener have to opt into the extension. This might need to be enabled explicitly by the application[1], which Go apparently does for you, or judging from other posts may be enabled by default systemwide, depending on your platform.
AFAIU, a major user of MPTCP is Apple and the iPhone, and the ubiquity of iPhone clients motivated implementation in and deployment on Linux servers.
[1] https://docs.kernel.org/networking/mptcp.html#sockets-api
Notwithstanding that they were examples of extra-legal discrimination (in the sense of not being direct legal prohibitions), racial covenants and red lining also didn't just effect black Americans, though nationwide they were disproportionately impacted. I only point that out because most people would say it was incongruous to claim Jews or Polish or Asians were legally prohibited from owning land in many areas.
I think it's an important distinction because there are vestiges of redlining that persist today. First time homeowner mortgage subsidies, the first major stepping stone for building wealth for most people, effectively exclude many kinds of multiunit housing, such as condos and, IIRC until recently, attached housing like duplexes. This disproportionately impacts prospective urban black homeowners, and quite deliberately. Likewise, IIUC prefabbed homes or similar are excluded, which disproportionately impacts poor rural whites and blacks alike. There are legitimate concerns behind those restrictions, such as developer and rental fraud, just as nominally there were legitimate concerns behind redlining, namely sustainability of property valuations. Though in all these cases it's obvious the reason they persist(ed) as-is is for largely discriminatory reasons, as the legitimate substance of the concerns could be addressed. At the same time, we wouldn't say they legally prohibit ownership; if you're wealthy enough they're no impediment at all, just like redlining and covenants were no impediment if you were wealthy enough (racial covenants could be overcome by just buying up all the adjacent property so there was no other property owner to enforce the covenant; the government couldn't by itself enforce such covenants, only adjoining property owner "beneficiaries").
Perhaps counterintuitively, black letter property law was one of the legal areas most resilient to both racial and sex discrimination. The 1800s saw some regression, but that didn't last long, often because courts themselves couldn't tolerate the illogic. People criticize it, but property is indeed sacrosanct to American legal and political culture, and it was very difficult to carve out exceptions that permitted blacks and women to be excluded without threatening the underlying principles of the system that secured owners' rights. That's why prejudiced treatment tended to come in the form of private, regulatory, or extra-legal discrimination, which arguably persists today in the form of restrictive zoning and related development policies which not coincidentally are impediments to free & clear property ownership, just enough to be tolerable to the well-off while disproportionately impacting the real targets.
int foo(int (*bar)[10])
In particular, sizeof(*bar) and (in C2y) countof(*bar) will do the correct thing. But you need to dereference bar almost every to use it properly, and unfortunately sizeof(bar) instead of sizeof(*bar) will compile cleanly, though countof(bar) is guaranteed to fail.The dilemma is C's array to pointer decaying semantics. C2y will try to roll that back somewhat (a[i] will no longer be identical to i[a] via the a[i] == a + i == i + a transitive relation), but there's only so much you can do in that regard, especially for array passing, without new syntax or silently breaking alot of valid, proper, carefully written C code. There's too much that can fall through the cracks by relying on non-standard compiler heuristics to substitute for proper typing.
[1] Strictly speaking a VLA can only be created as automatic storage objects, but a VMT can type dynamically allocated (malloc'd) memory. But the syntax looks like a pointer to a VLA because it originates from the need to pass actual VLAs as parameters.
IIRC, one of the problems there is how to generalize it to, e.g., struct members. (Maybe you can speak to that.) The approach adopted by C99[1], being based on dependent typing, was I think better conceptually. But despite dependent typing being awesome, it manifestly was and still remains a tough sell to compiler implementors, so VLAs/VMTs have languished in C and have yet to be fully developed. I think I'd agree C would have been better off with the approach you suggest. Adoption likely would have been quicker, and it could have been implemented in full almost immediately.[2] The consolation prize is that hopefully C will soon see some progression on the VMT front, specifically the proposals under discussion on the committee for forward-referencing in function parameter VMTs and VMT struct array members. The final piece of that puzzle would be addressing the scary syntax for VLA passing, which feels error prone (C2y countof operator semantics help a little bit).
[1] Tom MacDonald, Variable Length Arrays, December 1989, http://jclt.iecc.com/Jct13.pdf#page=67
[2] Ironically GCC already had nascent VLA support, which may have helped nudge the C99 committee toward that instead of adopting Ritchie's approach. But the fat pointer approach has a more obvious and straight-forward implementation.
Ironically C is the only language in that list with a dependent type. It's not _Generic, of course, but variable-length arrays (VLAs), which neither C++, Rust, nor Zig have.
Go does a great job of making these impose minimal cost, both technically and cognitively, on typical platforms, from server (including many "embedded" server environments) to desktop to smartphone. That's why it has such a sophisticated yet largely transparent user space threading layer. But it's very difficult and usually impractical for Go to target extremely resource constrained environments without exposing and crippling it's core abstractions. Some people are willing to contort Go to fit that space, but perhaps that's because their vision of what makes Go, Go, differs from the creators' and core maintainers' understanding of Go.
Doing so can prevent regulatory capture and shelter enforcement from the vicissitudes of politics. It also doesn't require maintaining a government workforce. OTOH, you have to be careful what you ask for. Unless a law is very narrowly tailored then ubiquitous enforcement can have it's own problems, e.g. CEQA.
Same thing applies to mental arithmetic. There are techniques for doing this. IIRC, ironically there's a famous case of someone who claimed to have memorized some hundreds of thousands digits of Pi but was suspected of using mental arithmetic techniques when reciting them.
Still, your point stands. People do embellish these kinds of stories based on stereotypes. It's certainly possible, but any particular anecdote may still be suspect.
EDIT: The radio show was Science Friday, October 15th episode, "Why do politicians talk like that?", https://www.wnycstudios.org/podcasts/science-friday/articles...
Is it impractical to never send a message through Google? Probably, depending on the circles you communicate in. But that's not the same thing as saying it's impractical to avoid Google for most of your messages, and certainly not the same as saying you can't avoid GMail for anything.
At least until the recent tough-on-crime regression almost everybody agreed the system is too harsh. Even conservatives were on board with lighter sentencing. But unsurprisingly that broad public support didn't persist for long because the structural incentives of the system push it toward greater dysfunction. Without structural changes lighter sentencing alone just makes it more profitable for criminals to roll the dice. The complexity of the system evolved with the harsher sentencing, but can't change back as easily as sentencing policies, so we fall back to the old equilibrium that slowly gets worse along every dimension--fairness, cost, deterrence, etc.
Part of that is the de facto extension of a right to jury trials for misdemeanor offenses in almost every American jurisdiction. If the defendant can force a jury trial for a misdemeanor, which is in fact quite costly for prosecutors, then the response is to raise the stakes with felony charges. Legislatures are aware of this dynamic and oblige prosecutors with more offenses and more punitive maximum penalties.
Countries like the UK and France don't have jury trials for minor offenses. (They're not as common for major offenses, either, but that's a different matter.) Sentences tend to be much shorter and it's a major reason their incarceration rate is so much lower.
I'm not against jury trials. For one thing it'd be better if juries were more local. 100+ years ago in major US cities it was more common for trials to take place within or closer to each neighborhood. Juries were often composed of people from the neighborhood. The consolidation of courts and trials in mega courthouses broke this community link; people from outside a neighborhood are systematically more harsh than they would be if judging their actual neighbors. Not because of favoritism, but because it's easier for them to appreciate the repercussions of an overly punitive system (broken families, destroyed career prospects, etc).
If you want community involvement in even minor crimes, misdemeanor jury trials can still be streamlined. You could do something similar to some European countries where a few lay judges sit alongside the professional judge, or something that used to be more common in the US where a single jury hears multiple cases each day (still a thing for indictments). But such trials would still have to dispense with alot of the procedural rigor to keep things moving along at a rapid clip.
Japan is just quiet about it. Sony is no aberration.
IOW, I can't explain in real-time how I'm working things out. I have to work them out to completion first, quietly, or at least have a good idea about what the full path looks, end-to-end, in detail and only after the fact could I ever hope to explain my thinking. Asking me to explain my thinking while I'm thinking is easily the most stressful and impossible task anyone could ask of me. I'd rather you break my fingers as part of the interview process.
I understand as an interviewer that makes for quite a dilemma. And I suppose if you find this approach reasonable then you may not like working closely with someone like me (though if you're just a manager, then it's a bias to be aware of).
Similarly, practices like pair coding just don't work for me. I'm not not a team player. I like and benefit from design and ad hoc technical discussions, just don't ask me to sit down and write code with someone else, or even with someone looking over my shoulder. All parties involved, including myself, will just end up pulling their hair out. Though I do work best with people who think similar to me. We instinctively know when and how to set our boundaries and expectations.
To interview someone like me it's probably best to focus on having the interviewee identify waypoints (both abstract and concrete) to confirm they have the experience and understanding to navigate difficult problems. Just don't ask them to actually navigate on the spot. If you want to see how they ultimately connect the dots in practice, look at code they've already written. Unlike in most other fields, software developers often have a corpus of work that is easy to share and often already published.
EDIT: [1] I originally used celibacy. But celibacy and continence are distinct. Celibacy implies continence, because only only married couples are permitted to have sex, but even married couples can be continent. Therein lies the confusion about the origins of modern-day Roman Catholic clerical celibacy and its relation to early clerical practices, including practices of the apostles.
Before the collapse of Google Books, when for a brief, glorious moment Google came closest to achieving the dream of making accessible all the world's knowledge, I could much more easily trace back historical "facts" to a single popular book in whatever field, but then keep going back through older material and often find contradictory accounts and narratives.
History is messy. There's of course what actually happened, but almost immediately narratives start to branch. Then at some point, years, decades, or maybe centuries later, narratives converge back to a single "truth", typically based upon a single, popular author's gloss. There can be some subsequent divergence and reconvergence, but that first convergence really seems to be nearly as defining if not more defining than the actual event(s).
It's not necessarily a black or white approach. In theory as-of-right is supposed to be the rule everywhere as Due Process guarantees mean government can't act capriciously. And there's actually pre-existing SCOTUS precedent regarding how zoning plans are supposed to be applied, and how community input processes aren't supposed to allow mobs to subvert the rule of law with a de facto but informal veto power. In practice, non-as-of-right municipalities and states basically have zoning rules and approval processes that are fuzzy and ambiguous, effectively granting regulators significant interpretive leeway and discretion.
Federal and often state courts are extremely reticent to jump into the fray and defend the rule of law. In fact, there's SCOTUS procedural jurisprudence designed to make it difficult to "make a federal case" out of zoning disputes. NIMBY battles are just too politically fraught and courts are afraid of falling into the bottomless tar pits of adjudicating public grievance, which is what politicians are supposed to be for.
California is especially bad for multiple reasons. First is CEQA, which allows literally anyone in the state to erect legal hurdles to any project (modulo some very recent carve outs). Second is home-rule principles enshrined in the state constitution, which makes it difficult for Sacramento to force municipalities to behave a certain way or even abide many mandatory state regulations--the state often has to rely on indirect means, such as contingent funding, to cajole cities. Third is California Supreme Court procedural principles that demand state courts entertain law suits in a way that allows interlopers to drag out court cases, e.g. CEQA cases, for long periods of time.
I think the chatter about corruption in Ukraine is partly a function of the fact that it's democratizing. People don't really talk much about corruption in corrupt countries, not as much as they do in less corrupt countries. Everybody knows it's there; it's a given. But without transparency and a steady flow of concrete data and admitted examples, there's not much to talk about. You just assume such-and-such was a corrupt deal. Only when a country is capable of combating corruption do you see robust, public debates about it, as you see in Ukraine.
[1] https://www.nytimes.com/2026/09/06/world/europe/ukraine-war-...
I lost any enthusiasm for XML after my experience with WDDX and XML-RPC, but as a foundation for HTML it was the best thing going. And maybe still is, given the absence of cross-toolchain contenders? Ditto for XSLT, at least if disregarding the choice to make the syntax homoiconic. In fact I circled back to XSLT long after it was clear it was a dead end. A good tool is a good tool, and the fact it remains so despite the wanton neglect only proves it.
For the younger readers: this used to be a not uncommon thing in the POTS era, "lines crossed". And it was indeed annoying, especially if it persisted after hanging up and calling again.
Barycentric Coordinate Time: https://en.wikipedia.org/wiki/Barycentric_Coordinate_Time