Will Crichton

@wcrichton

Articulating the ineffable. Programming language theory 🤝 cognitive psychology. PhD

he/him
Joined September 2011

Tweets

You blocked @wcrichton

Are you sure you want to view these Tweets? Viewing Tweets won't unblock @wcrichton

  1. Pinned Tweet
    13 Jul 2019

    The more I read, the more it seems like everything I know about education and instruction is completely wrong.

    Show this thread
    Undo
  2. Dec 20
    Undo
  3. Dec 14

    The language's semantics are carefully designed to enable the authoring of both web elements (ie React objects that can be interactive) and strings (eg TeX, Penrose, to pass to an external component).

    Show this thread
    Undo
  4. Dec 14

    Scribble-inspired notation can be used at the top-level, but also nested inside a Javascript expression. Imagine a template string, but on steroids.

    Show this thread
    Undo
  5. Dec 14

    Next version of Nota coming soon: new syntax + web editor! Write without burden, program without limitations. Mix up your prose by adding higher-order functions.

    Show this thread
    Undo
  6. Dec 12

    Too many brands on Twitter, not enough static analysis tools

    Undo
  7. Dec 10

    trait FooExt {fn bar(&self) -> Vec<u32>} => trait FooExt { type Bar<'a>: Iterator<Item=u32> where Self: 'a; fn bar(&self) -> Self::Bar<'_>; } impl FooExt for Foo { type Bar<'a> where Self: 'a = impl Iterator<Item=u32>; fn bar(&self) -> Self::Bar<'_> { ... } }

    Show this thread
    Undo
  8. Dec 10

    The lack of `impl Trait` in Rust trait definitions is a frustrating limitation. Eg I want my trait method to return an iterator instead of a vector, but don't want to specify the iterator type. You can overcome it, but it's gross and requires two nightly features:

    Show this thread
    Undo
  9. Dec 10

    Using fold instead of for-loop is annoying. But one benefit: flip a character to unroll the state of the fold. q) ((); 0) check/ "()({)" "({" 3 q) ((); 0) check\ "()({)" ,"(" 0 "" 0 ,"(" 0 "({" 0 "({" 3

    Show this thread
    Undo
  10. Dec 5

    Setting up the Christmas tree

    Undo
  11. Retweeted
    Dec 5

    Block chains won’t bring us the *really* interesting next web. CRDTs will. Much less sexy, since they don’t involve money. Much less momentum and ecosystem around them. Most applications are in toy stages. I’ve been working with them for 2.5y now and couldn’t be more bullish.

    Show this thread
    Undo
  12. Dec 5

    Q's combinators are interesting. Especially overloading on arity: f' = map f x f' y = map f (zip x y) x f/: y = map (f x) y x f\: y = map (λ x. f x y) x f/ (unary) = fix λ g. λ y. if f y = y then y else g (f y) f/ (binary) = reduce f x f/ y = fold f x y x f\ y = scan f x y

    Show this thread
    Undo
  13. Dec 3

    Some cool properties: * A node's ancestors = backward slice (and descendants = forward). * Weakly connected components are independent computations, so they could be e.g. parallelized or trivially factored. * Any topological sort is a valid reordering of the program.

    Show this thread
    Undo
  14. Dec 2

    Graph theoreticians: let G be a 𝘥𝘦𝘤𝘪𝘥𝘶𝘰𝘶𝘴 𝘵𝘳𝘦𝘦 (maximum out-degree of 1 in the winter)

    Undo
  15. Dec 1

    Mild take: if you ever feel like learning an esoteric language with a dizzying array of symbols and vocabulary, Q is probably a better choice than Haskell.

    Show this thread
    Undo
  16. Dec 1

    I'm doing Advent of Code this year to learn Q. For bewildering one-liners, you can follow along here:

    Show this thread
    Undo
  17. Nov 29

    Also "underexplored" isn't quite right. The web is rife with templating languages, which are string-first PLs. But they all suck, except for JSX.

    Show this thread
    Undo
  18. Nov 29

    Scribble is by far the best example of this design, but I've found it hard to directly translate its concepts into JS / React. Eg sometimes you want to generate a string (say to pass to KaTeX or Penrose), sometimes you want to generate a React element.

    Show this thread
    Undo
  19. Nov 29

    Requirements: * No quotes or escapes -- strings are the default, not the exception. * Allow transition between string and code dialects with as few characters as possible, and with arbitrary nesting. * Should be easy to define non-string data structures: lists, classes, lambdas

    Show this thread
    Undo
  20. Nov 29

    String-first programming languages seem to be a really interesting and underexplored design space. I want something halfway between JSX and Scribble, but not MDX.

    Show this thread
    Undo
  21. Nov 25

    Did you know that there's a "copy" event that can disable copying, even from selected text? Did you know that getEventListeners ONLY WORKS WHEN RUN IN THE DEV TOOLS???

    Show this thread
    Undo

Loading seems to be taking a while.

Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.

    You may also like

    ·