Same story reported by Ars: https://arstechnica.com/tech-policy/2023/10/41-states-sue-me...
3,397 karma · joined July 20, 2010
Currently a graduate student at UC Santa Cruz; previously worked at Caltech's Jet Propulsion Laboratory (JPL) on mission planning+simulation software.
Blog: https://www.jonathan.com/
Twitter: https://twitter.com/Twisol
GitHub: https://github.com/Twisol
Email: twisolar <at> gmail (please don't come selling any services; otherwise, please let me know you found me via HN or something, because cold calls are confusing enough)
[ my public key: https://keybase.io/twisol; my proof: https://keybase.io/twisol/sigs/t3hJmOxbrWLW5PpKNS3nbtl1bOYx5bSTwF75FHAW6Hw ]
Same story reported by Ars: https://arstechnica.com/tech-policy/2023/10/41-states-sue-me...
[^] (well, properly, semilattices, because that's what state-based CRDTs are based on. But semilattices are "just" commutative idempontent monoids ^_^)
(Spoiler warning if you haven't played: the XC Alvis is also an AI.)
> There is nothing that has to do with monads at all in printing a string. The idea that `putStrLn "hello world"` is monadic is as absurd as saying that `[1,2,3]` is monadic.
You haven't linked any exemplar tutorials, but I feel confident in saying the ones you're referring to teach the general concept of monads, and not how to do IO with monads.
Quite a number of JavaScript developers learned how to use `andThen` with Promises/A+ back in the day, and they didn't need to learn about monads either. (In fact, when it was raised that promises are really monads, there was serious drama and outrage [1] -- an existence proof if there ever was one, that you can use something productively without understanding it as a monad.)
Likewise, nobody would claim that you need to understand monoids before you can concatenate lists. Concatenating lists is as native to lists as sequencing commands is to IO; it's just part of how those types work. The monad interface abstracts over that idea, and learning that abstraction in its full generality is, typically, what people stumble on.
[0]: https://blog.jle.im/entry/io-monad-considered-harmful.html
[1]: https://github.com/promises-aplus/promises-spec/issues/94
I don't think this is true. Security issues don't matter until they do, and consumers -- by which I mean "people" -- are notoriously bad at estimating risk for sufficiently rare outcomes.
To take a common example, insecure internet-connected baby monitors can literally give strangers video access to your home (not to mention your child, although we don't need to resort to "think of the children"). I think most consumers make purchases with the reasonable expectation that the product isn't going to violate their personal security without them knowing.
As a concrete example to the contrary, even many laypeople I know consider home assistants like Alexa to be too risky -- they don't like the idea of being overheard and monitored by some unknown "other". And that's almost literally part of the product description! When consumers are aware of these issues, they do care. The idea that they currently purchase as though they don't is confounded by a lack of awareness on the one hand, and a reasonable expectation to the contrary on the other hand.
(There's also combinations like kyu = ki + small-yu, but that also just builds on the kana you already know, and behaves pretty logically.)
RealKana is great for drilling recognition (kana -> pronunciation), and I learned the individual kana by loading one column at a time (e.g. ka/ki/ku/ke/ko). Drag-n-Drop is good for speed-testing recognition, but also for recall (pronunciation -> kana), since it's invertible: you can either choose a pronunciation and go find its kana, or choose a kana and find which pronunciation it goes to.
I'm not sure you can really "learn" these characters without drilling like this -- the symbols are arbitrary, so you have to memorize the association between glyph and reading by brute force.
[1] https://www.csus.edu/indiv/s/sheaa/projects/genki/hira_main....
(On closer inspection, you're only "paying" by creating a "free" account with them -- but paywalls look like paywalls no matter what the price is...)
> for example, numeric literals in Haskell can have several types
Technically, numeric literals in Haskell have precisely one type: `(Num a) => a`. The literal `42` is actually interpreted as the expression `fromInteger (42 :: Integer)`, where `fromInteger` is a function on the `Num` typeclass. In turn, the `Num` typeclass constraint desugars to a function taking a dictionary of functions, `NumDict a -> a`. The typeclass machinery just means GHC will infer the appropriate instance whose dictionary should be provided.
(technically technically, GHC can be even cleverer if it knows statically which dictionary will be used, avoiding using the dictionary entirely; but this desugaring to dictionaries is ground truth, semantically.)
If you assign integers from the inside out, as DB indices do, then the `x` usage in `\x -> \y -> x` passes one binder (`\y`) before landing on the correct one (`\x`), yielding `\_ -> \_ -> 1`.
If you assign integers from the outside in, as DB levels do, then the `x` usage lands on `\x` instantly, yielding `\_ -> \_ -> 0`.
De Bruijn came up with both systems, and it can be confusing to keep track of which one is which; but they are different systems.
I understood the column-first approach more as an alternative to putting all columns for an entity in one table, especially when rows often don't populate every column. From that perspective, what's being described is a strong separation of concerns; applying this to dev/prod would be a weakening of this separation, and so probably not what is desired.
IIRC, the Telnet interface is technically more fully-featured than the others, although that's probably simply because it would have come into existence first.
Whoever named this system was clearly aware of the meme. I'd like to remain subscribed to CatFACS, please!
> Yes, we have officially added an iOS version of Thunderbird to our future development roadmap. Expect more concrete news about this toward the end of 2023.
So it doesn't exist yet, but they're going to make it, and at least they've got a logo for it.
I think Manifold is extremely cool, and it does look like they're keeping up with the latest -- but the deep compiler magic it relies on really makes me nervous.
Scala and (apparently) PHP call them traits too, among many others [1] -- Rust wasn't the first here.
[1] https://en.wikipedia.org/wiki/Trait_(computer_programming)
Also, Linebeck is one of my top-three sidekicks out of any Zelda game. He really grows on you over the course of the story.
Maybe there's a difference between critical and popular reception at play here?
You're right that this inversion is rare though. I think Phantom Hourglass is a great sequel to Wind Waker, but I can't reasonably claim it's better. (And Spirit Tracks was not better than Phantom Hourglass.)