Indeed, this is what I use. It feels much more natural to me in the following case, where obviously our statement is not a question:
Dr Johnson kicked a large rock, and said, as his foot rebounded, “Do I refute it thus?”.
And “obviously” the full stop should go outside, because of:
Dr Johnson kicked a large rock, and said, as his foot rebounded, “Do I refute it thus?”, howling with pain.
And there’s nothing special about a question mark, so this rule should be identical if a full stop is substituted.
I will pick a rather large nit: “for example a web server definitely doesn’t halt” is true, but for this to be surprising or interesting or a problem for Turing reasons, it just means you are modelling it incorrectly. Agda solves this using corecursion, and the idea is to use a data type that represents a computation that provably never halts. Think infinite streams, defined as “an infinite stream is a pair, $S_0 = (x, S_1)$, where $S_1$ is an infinite stream”. This data type will provably keep producing values forever (it is “productive”), and that’s what you want for a web server.
I’m pretty sure it’s not schools, unless private schools somehow have a massive impact. The case rates were already dropping on July 21st, which is presumably a couple of days after The Event anyway; the summer holidays for state schools (i.e. the vast majority of children) started on the 25th.
Irrelevant nit: the archaic second-person singular of “do” is “dost”, as in “dost thou not know”. “Doth” is the third-person form, as in “the lady doth protest too much”.
For some reason I can’t find any relevant hits with Google, but I’ve heard “support vs advice” described as “sympathy or fascism” before. “I want to moan at you” vs “I want you to take over and solve my problem”.
For some years now I have had a Panasonic breadmaker, model SD-ZB2512. It takes less than five minutes in the evening, generating no mess and no washing up (if you use olive oil instead of butter, so as to avoid generating a fatty knife), and you can have hot fresh bread ready-baked as you wake up. The only downside to bread made this way is that you have to slice it. It tastes dramatically better than all but the most expensive shop-bought bread, and the ingredients store in a cupboard for literally months so it’s even highly pandemic-proof. Bread that is still hot from the breadmaker is really one of the best foods I know. The breadmaker has literally no cost to upkeep: you don’t even need to clean it, as it’s basically an oven in a pot.
(Posting this in a spirit of self-congratulation: I wrote up a spiel about what I found confusing, and then realised that I’m confused on a much more fundamental level about the nature of the various explanations and how they relate to each other, and am now going back to reread the various sources rather than writing something unhelpfully confusing about a confused confusion.)
Strong +1 to the idea; I’ll be on a different team, but I strongly encourage people to give it a try. I think Hunt 2019 was quite possibly the most fun I have ever had.
My immediate reaction is that I remember hating it very much at school when a teacher punished the entire class for the transgression of an unidentifiable person!
Nitpick: I think there’s a minor transcription error, in that “biological-esque risk” should read “biological X-risk”.
You’re thinking of “Glomarisation” (https://en.wikipedia.org/wiki/Glomarization).
See, for example, https://www.lesswrong.com/posts/xdwbX9pFEr7Pomaxv/meta-honesty-firming-up-honesty-around-its-edge-cases and https://www.lesswrong.com/posts/bP5sbhARMSKiDiq7r/consistent-glomarization-should-be-feasible.
I’m a big believer in “the types should constrain the semantics of my program so hard that there is only one possible program I could write, and it is correct”. Of course we have to sacrifice some safety for speed of programming; for many domains, being 80% sure that a feature is correct in 95% of the possible use cases is good enough to ship it. But in fact I find that I code *faster* with a type system, because it forces most of the thinking to happen at the level of the problem domain (where it’s easy to think, because it’s close to real life); and there are a number of ways one can extremely cheaply use the type system to make invalid states unrepresentable in such a way that you no longer have to test certain things (because there’s no way even to phrase a program that could be incorrect in those ways).
For a super-cheap example, if you know that a list is going to be nonempty, use a non-empty list structure to hold it. (A non-empty list can be implemented as a pair of a head and a list.) Then you can save all the time you might otherwise have spent on coding defensively against people giving you empty list inputs, as well as any time you might have spent testing against that particular corner case.
For another super-cheap example that is so totally uncontroversial that it probably sounds vacuous (but it is in fact the same idea of “represent what you know in the type system so that the language can help you”), don’t store lists of (key, value); store a dictionary instead, if you know that keys are unique. This tells you via the type system that a) keys are definitely unique, and b) various algorithms like trees or hashmaps can be used for efficiency.
I believe the world is this way because of the following two facts:
monads are very hard to get your head into;
monads are extremely simple conceptually.
This means that everyone spends a long time thinking about monads from lots of different angles, and then one day an individual just happens to grok monads while reading their fiftieth tutorial, and so they believe that this fiftieth tutorial is The One, and the particular way they were thinking about monads at the time of the epiphany is The Way. So they write yet another tutorial about how Monads Are Really Simple They’re Just Burritos, and meanwhile their only actual contribution to the Monad Exposition Problem is to have very slightly increased the number of paths which can lead an individual to comprehension.
I’m interested in your comment about “using dynamic-untyped rather than well-typed because it helps you not worry about your own intelligence”. I use well-typed languages religiously precisely for that reason: I’m not smart enough to program in an untyped language without making far too many mistakes, and the type system protects me from my idiocy.
You can buy good tomatoes (in the UK); they’re just a bit expensive. Cheap tomatoes are nasty, but nice tomatoes are widely available; I get them from a company called Isle of Wight Tomatoes, and they’re on Ocado.
I stopped taking the book seriously when I reached Walker’s suggestion that teenagers might have a sleep cycle offset from adults because “wise Mother Nature” was giving them the chance to develop independence from the tribe, in a group of their peers, and that this was an important stage in societal development of a human.
If one *must* find an evo-psych explanation for this phenomenon, surely “we need people guarding the camp at more hours of the day” is simpler and less ridiculously tenuous. (Though this still has precisely the same “I could have explained anything with this” flavour that most popular evo-psych does.)
I’ve had experiences ranging from “great” to “terrible” when pairing. It’s worked best for me when I’m paired with someone whose skills are complementary to mine. Concretely: I’m very much about rigour, type-safety, correctness; the person I have in mind here is a wizard at intuiting algorithms. The combination worked extremely well: the pairer generated algorithms, and I (at the keyboard) cast them into safe/correct forms.
However, when paired with someone who eclipses me in almost every dimension, I ended up feeling a bit bad that I was simply slowing us down; and conversely I’ve also experienced pairing with someone who I didn’t feel was adding much to the enterprise, and it felt like I was coding through treacle (because the thoughts had to flow out to another person, rather than into the compiler).
In my experience, good pairs are really good, but also quite rare. You’re looking for a certain kind of compatibility.
To answer your actual question: just try it! It’s cheap to try, and you can find out very quickly if a certain pairing is not for you. (I would certainly start the exercise by making sure both parties know that “this pair isn’t working out” is not a judgement on either party.)
I started Anki-ing everything. Previously, I’ve used Anki for very specific purposes (e.g. “learn the London Underground network” or “learn all the capitals of the world”). New decks this month, though, include “Jokes”, “Legal Systems Very Different From Ours”, “Tao Te Ching”, and “Logical Induction”. I’m pretty optimistic that “read something really worthwhile, Anki it up” is becoming a habit.
A formative experience in my attitude to magic was when I saw an excellent sleight-of-hand magician performing to my small group of friends (waiting in a line for an event). He was very convincing and great fun; but there was a moment in the middle of his series of tricks when my attention was caught by something else in the distance. When I looked back after five seconds of distraction, he was mid-trick; and I saw him matter-of-factly take a foam ball from his hand, put it into his pocket, and then open his hand to reveal no foam balls—to general astonishment. All his other tricks, before and after, I found completely convincing.
Accordingly, I grok that there’s an entire art of doing incredibly obvious things in such a way that the viewer doesn’t understand that something obvious has happened. That’s one of the main things I want to learn from magic: how to perform trivial bullshit very convincingly (e.g. by knowing how to direct the viewer’s attention).
Thanks for the tip about performing repeatedly to new groups. Now that you mention it, it’s extremely obvious, but I don’t think I’d have come up with that myself.