• 162 Posts
  • 1.42K Comments
Joined 3 years ago
cake
Cake day: July 2nd, 2023

help-circle


  • In Anglo-American common law, if a party has previously argued a position in one of their own cases, and later argues a different position in a subsequent case that they’ve a party to, then the doctrine of equitable estoppel would foreclose on certain claims from that party. As usual, the devil is in the details.

    Firstly, they must be a party to both the prior and prospective case. A motorist that is injured in a multi-vehicle pile-up cannot assert different facts when suing each of the participants in the crash. However, an advocacy group that files a petition on behalf of another is, by definition, not the party that is bringing suit. Nor is anyone that offers an amicus (ie “friend of the court”) brief that advises the court on how a case ought to be decided.

    Secondly, the exact things which are foreclosed will depend. The most common benefit available under equitable estoppel is the loss of a presumption of good faith. So if party A is a corporation and claimed in an earlier employer/employee case that their CEO’s crass, sex-pest behavior was a result of substance abuse (in an attempt at a medical defense or a defense about temporary inability to perceive the situation), then that assertion – irrespective of whether it actually won them that earlier lawsuit – could be used against them in a later case litigated by the shareholders. If the company is sued for the CEO not conveying accurate business info, the defense that their CEO acted in good faith is not going to carry water, if the events coincided in time.

    As you can see, the exact remedy that equitable estoppel provides isn’t exactly clear-cut in every instance. But the goal is to prevent the same litigant from abusing the judicial system. One cannot come into court on Monday claiming the sky is blue when it’s convenient for them, then claim on Wednesday that the sky is not blue when it’s inconvenient for them. Two-face assertions are not allowed.

    To be clear, these must be actual assertions. Sometimes a civil case can be won merely by the likely possibility that someone else is at fault, making it impossible to determine fault. And so no assertion may be needed as a defense. If a pedestrian is struck and injured by a hit-and-run motorist driving a red car, and five red cars are identified later, any of those motorists can correctly state that there were four other such cars in the area. Pointing out facts unfavorable to the plaintiff is exactly what the defense is supposed to do. But if a motorist actually says “I didn’t injure her”, then that’s an assertion. And judicial estoppel means they may not later claim, for some reason in a later case, that they did do it.


  • In a nutshell, the network effect. At an individual level, if someone wants to leave GitHub, they absolutely can. But unless they’re a repo owner or a BDFL, the project(s) they were working on would still be on GitHub. And that means they can’t access the GitHub PR process for development, or open tickets for new issues, or any other number of interactions, except for maybe pulling code from the repo.

    On the flip side, at a project level, if the project owners agree that it’s time to leave GitHub, they absolutely can. And while they could convince the primary developers to also leave with them, the occasional contributors might still be left behind on GitHub. Moving away from GitHub could potentially cut the number of contributors down by a lot. And what’s guaranteed is that the project will have to retool for the new space they move to. And if it’s self-hosted, that’s even more work to do, all of which is kinda a distraction from whatever the project was meant to do.

    The network effect is the result of the sum being more useful than its parts. When the telephone was invented, a single telephone on its own is entirely useless, because nobody else has one to use. But with ten telephone, one person has the potential to call any of 9 other people. With 10,000 telephones, that’s over 9000 people they could call, or those people calling them. At a million phones, the telephone is well entrenched into common usage. Even when more and more people despise making phone calls, the telephone is still around, having changed forms since the 1980s into the modern smartphone.

    Why? Because networks are also stable: if a few thousand people give up their smartphones per year, the utility of the telephone is not substantially changed for the grand majority of telephone users. The threshold to break the network effect varies, but I hazard a guess that if 1/3 of telephone users gave up their numbers, then the telephone’s demise would be underway. Especially in the face of modern replacements.

    I would regard GitHub as having a network effect, in the same way that Twitter should have collapsed but hasn’t. Too many local governments are invested into it as their sole social media presence, and in doing so, also force their citizens to also subscribe to Twitter. GitHub is not a monopoly in the sense that anti-trust laws would apply. But they are a monopoly in that they own the platform, and thus own the network.

    But there’s an upside: communities of people are also networks. Depending on how cohesive the contributors to a particular GitHub repo are, enough people can make the move away and would sway the unwilling to also move with them. This is no different than convincing family members to move to Signal, for example. Yes, it’s hard. But communities look out for their common interests. And if AI slop is affecting a community, then even though they didn’t want to deal with it, they have to make a choice.

    Be the community member you want to see. Advocate for change in your network of people, however big or small. Without critical mass, a community will only splinter when acting unilaterally.


  • Predominantly in Texas, Buc-ees is nominally a chain of gasoline stations but they’re known for the stores attached to the station, selling all manner of kitsch but also fast food. Ok, they’re also known for having 100+ pumps at each location. But that’s important because it means they’ve always been located at the periphery of city boundaries, on huge lots, usually on the highways into or out of town.

    When the gasoline business dries up, Buc-ees still has other business interests to keep them going in the road travel market, and they have real estate along major corridors that could be redeveloped. One option is to invite businesses that occupy motorist’s time while parked charging their electric cars, like wayside attractions (besides Buc-ees itself, obviously). Another would be to fully entrench themselves: develop a hotel so that visiting business people always stop at the Buc-ees before leaving.

    So while neighborhood fuel stations would see a slow demise, Buc-ees can turn their fuel locations into new cash cows. This is why diversification is so important.


  • Whole sections of the country that are zoned for suburban single family housing would not exist as they are today. Not because they’d be illegal or anything, but they’d be incredibly unpopular if most people didn’t own a car, which is needed to basically get to or from a suburban neighborhood.

    I understand the question to be something like: what happens if a majority of people are absolutely dead-set unwilling/unable to own a private automobile. And I think the immediate answer is that suburban neighborhoods cease to exist, at least at the current density levels. Either a neighborhood must densify so that transit options make sense, or they must aim to become rural living. This also means that things like suburban schools either turn into walkable urban schools, or into small one-room rural schools.

    I don’t actually think rural living will go away, because the fact is that the grand majority of people – USA and abroad – do not prefer rural living. The 18th, 19th, 20th, and 21st Century trends are that people tend towards urban areas, where services and jobs exist. That said, there will always be people that want to live in the hills on 20 acres, and therefore need an automobile. And it’s certainly sounds appealing to some, myself included. But that has never been the majority, so if a majority of people refuse owning an automobile, they will also mostly refuse rural and suburban living.

    There is no plausible situation where over 50% of people willingly decide to: 1) not own a car, and 2) live in a suburb or rural area. This is from the fact that all other modes of transport into a suburb or rural area are either: 1) nonexistent (eg metro rail), or 2) ludicrously expensive (eg Lyft, or transit with 15% fairbox recovery) if the cost was borne by the people living there (as opposed to being subsidized heavily by other taxpayers… Ahem, America).

    Edit: some more thoughts: standalone strip malls would also change character, because the smaller ones that aren’t on a rail or bus corridor would be undesirable commercial real estate. If they still exist, they’ll likely be integrated into housing, so as to become the #1 most convenient option for people living there. Captive audience, indeed.

    But larger strip malls and shopping centers actually might florish: they usually have enough stores and services that transit already makes sense. Indeed, shopping malls are actually really good transit center locations. But instead of giant parking lots, there would be housing, because why not? People who reject cars have every reason to live next to, or on top of, a mall: fully pedestrianized, air conditioned, lots of stores and dining options. Some places even put schools and post offices in their shopping malls. I would also expect that dwelling soundproofing to get better, because the paper-thin walls of American homes and apartments are awful.

    In this way, malls are no different than casinos, cruise ships, and downtowns: a small island of paradise to visit, and is distinct from home. Malls will still exist after cars, the same way that Las Vegas exists in the middle of a desert: it is a big enough anchor that draws people.






  • In the early 1900s, horses were the original “mobile emissions” source of pollution, causing great consternation to anyone that happened to be in their wake at the wrong time. Yes, we have troughs that catch horse poo now, but still doesn’t perfectly mitigate the problem specific to horses.

    And then there’s the issue of horses on surfaces: on dirt, their weight cause erosion. On pavement, they can injure their hooves, plus the sound of horseshoes at full gallop on asphalt must be deafening.

    (I promise this isn’t a subtoot about automobile environmental impacts)

    As an aside, in wilderness in America, where there is the most protection for the environment and anything mechanized (like bicycles) are prohibited, it is a bizarre historical exception that horse riding is permitted, in spite of the obvious degradation caused by trampling over everything. Wilderness is meant to be a nature-first place, but somehow it’s actually horseriders-first, then nature.


  • Having spent much of my software engineering career training and mentoring interns, new-hires, and transfers from other departments, and having toiled with some of their truly inexplicable questions that reveal shaky technical foundations, I can understand why so-called AI would be appealing: inexhaustible, while commanding the full battery of information stores that I could throw at it.

    And yet, the reason I don’t use AI is precisely because those very interns, new-hires, and transfers invariably become first-class engineers that I have no problem referring to as my equals. It is my observation that I’ve become better at training these folks up with every passing year, and that means that if I were to instead spend my time using AI, I would lose out on even more talented soon-to-be colleagues.

    I have only so much time of my mortal coil remaining, and if the dichotomy is between utilizing inordinate energy, memory, and compute for AI, or sharing my knowledge and skills to even just 2 people per year for the rest of my career, I’ll happily choose the latter. In both circumstances, I will never own the product of their labor, and I don’t really care to. What matters to me is that value is being created, and I know there is value in bringing up new software engineers into this field. Whereas the value of AI pales in comparison, if it’s even a positive value at all.

    If nothing else, the advent of AI has caused me to redouble my efforts, to level-up more engineers to the best of my ability. It is a human legacy that I can contribute to, and I intend to.


  • Did ATT specifically say that their modem will factory resets due to loss of power? Because that’s genuinely unbelievable as a design feature for domestic-grade equipment. More reasonable would be that the modem will reboot when it encounters a brown-out condition, where the AC voltage briefly dips too low for the circuitry to continue operating.

    A power strip with just an MOV circuit would only help if the problem was a brief spike in voltage. A power conditioner would only help if it’s the shape of the AC voltage that needs to be cleaned up. That is to say, no dips or spikes, but rather the sinusoidal shape is messy due to other devices in the building.

    A UPS (which almost always includes an MOV circuit and power conditioner) would switch to battery power whenever there’s a problem with the AC voltage, so any momentary issues will be addressed. This switchover tends to happen within 2 cycles of the 60 Hz AC frequency, and that’s generally good enough most home appliances. I’m guessing the modem has a switch-mode power supply, so even a cheap UPS with square/stepped wave output will work.




  • Fair, though I personally don’t let my ISP indirectly dictate what I do with my LAN. If I didn’t already have a v6-enabled WAN, I would still manage my LAN using IPv6 private range addresses. There are too many benefits to me, like having VMs and containers be first-class citizens on my LAN, rather than sitting behind yet another layer of NAT. That lets me avoid port forwarding at the border of my home Kubernetes cluster (or formerly, my Docker Swarm), and it means my DNS names correctly resolve to a valid IP address that’s usable anywhere on my network (because no NAT when inside the LAN).

    I will admit that NAT64 is kinda a drag to access v4-only resources like GitHub, but that’s only necessary because they’ve not lit up support for v6 (despite other parts of their site supporting v6).

    This is my idea of being future-ready: when the future comes, I’m already there.


  • The approach isn’t invalid, but seeing as you already have the framework set up to deny all and log for IPv4, the same could be done with IPv6.

    That is to say, your router advertises an IPv6 gateway to the global internet, but you then reject it because your VPN doesn’t support v6 (sadly). I specifically say reject, rather than drop, because you want that ICMP Unreachable (administratively prohibited) message to get returned to any app trying to use v6. That way, Happy Eyeballs will gracefully and quickly fall back to v6. Unless your containers have some exceptionally weird routing rules, v6 connections will only be attempted once, and will always use the route advertised. So if your router denies this attempt, your containers won’t try again in a way that could leak. v6 leaks are more likely when there isn’t even a route advertised.

    This makes your apps able to use v6, for that day when your VPN supports it, and so it’s just a question of when the network itself can be upgraded. IMO, apps should always try for v6 first and the network (if it can’t support it) will affirmatively reply that it can’t, and then apps will gracefully fall back.

    This also benefits you by logging all attempted v6 traffic, to know how much of your stuff is actually v6-capable. And more data is always nice to have.





  • Once again, shame on the editor for distorting what the author wrote, using a clickbait headline when the article can stand on its own. No, there is no “inconvenient truth” in the article, but rather a sober discussion of the fluid colloquial definitions of “moped” and “scooter”, as a result of technological change being much faster than the written language can adapt, all while legal language remains as tight (and impenetrable) as it’s ever been.

    On that latter point, I will rehash what I wrote earlier:

    In California, the largest motorcycle market in the USA, this would be regulated as a moped (CVC Section 406), since it is electric, has a motor less than 3 kW (4 HP in old money), and a top speed of less than 30 MPH (48 kph).

    Riders wouldn’t need an M1 motorcycle license, but instead an M2 moped license would suffice. An M1 license allows riding anything that needs an M2 license, such as this moped. The process for an M2 is classroom instruction, and then a brief practical exam. There is no annual registration for mopeds, but there is a one-time plate fee, to obtain a plate from the DMV. There is no insurance requirement for mopeds.

    A moped can be ridden in either traffic lanes and bike lanes (but not shoulders, which only bicycles are permitted to use). Whereas bicycles are obligated to use a bike lane when present (with a few obvious exceptions), a moped is not forced to use a bike lane. When riding in a traffic lane, a moped must keep to the right-most lane if slower than all other traffic.

    This is all to say, California explicitly allows certain non-pedal, electric two-wheelers to be mopeds. But also the original, pedal, combustion two-wheelers are also mopeds. Rather than quibbling on definitions, this state would rather people go out riding.


  • Having skimmed through the paper, the lack of coordination between 802.11, L2 switching, and L3 routing is indeed alarming. But I think this one takes the cake:

    In the RADIUS protocol, the client is the AP and the server is the remote authentication server, and they pre-share a passphrase. This passphrase is used to encrypt and authenticate RADIUS packet fields, such as to encrypt PMK in transit and derive the Message Authenticator, a hash for integrity-protection. We verified that an attacker, having intercepted the first RADIUS packet sent from the enterprise AP, can brute-force the Message Authenticator and learn the AP passphrase.

    If only the first packet between the AP and real RADIUS server is necessary to bypass the encryption between those two and compute the message authentication hash, then the encryption is hideously broken. That is to say, the encryption is not protecting anything and that alone sets a false expectation, even when the first packet can’t be intercepted.

    That aaid, the manner of this interception of uplink-bound traffic is really sad: what sort of routing config would allow going downstream for the RADIUS serve? Something would have to be deeply wrong with how the control plane is configured, but I do concede that there are plausible networks that do this.