Geoffrey Litt, a researcher and designer who works on malleable software, end-user programming and AI-assisted tools.
Commenters praise his "AI HUDs, not copilots" reframing and point to his malleable software work and projects as underrated.
Yes, there is value in memorizing things, as things in our memory are easier to work with for thinking than things we have to go out, search for, access, and then get into our memory. See for example Barbara Oakley's discussion on mathematical fluency:
nautil.us/issue/40/learning/how-i-rewired-my-brain-to-become-fluent-in-math-rp
Or Feynman on the need for mathematical fluency to do physics:
> What we have to do is to learn to differentiate like we know how much is 3 and 5, or how much is 5 times 7, because that kind of work is involved so often that it’s good not to be confounded by it. When you write something down, you should be able to immediately differentiate it without even thinking about it, and without making any mistakes. You’ll find you need to do this operation all the time—not only in physics, but in all the sciences. Therefore differentiation is like the arithmetic you had to learn before you could learn algebra.
> Incidentally, the same goes for algebra: there’s a lot of algebra. We are assuming that you can do algebra in your sleep, upside down, without making a mistake. We know it isn’t true, so you should also practice algebra: write yourself a lot of expressions, practice them, and don’t make any errors.
Of course, in this particular discussion re: javascript, I think the design of the language doesn't help much here. Consider Javascript's `Date`, which the OP calls out as an API with a particularly difficult to remember set of conventions. Authors of…
From https://ohmjs.org —
Here are some awesome things people have built using Ohm:
- Shopify's theme-tools (https://github.com/Shopify/theme-tools/), used in their online code editor and the official VS code extension.
- Seymour (https://github.com/harc/seymour), a live programming environment for the classroom.
- Shadama (https://tinlizzie.org/~ohshima/shadama2/live2017/), a particle simulation language designed for high-school science.
- Slang (http://slang.kylestetz.com/), a browser-based audio programming language, and turtle.audio, a music sequencer inspired by turtle graphics programming.
- Simpletalk (https://github.com/dkrasner/Simpletalk) is an expressive, programmable authoring system inspired by Hypercard and Smalltalk. (See also the StrangeLoop talk).
- Wildcard (https://www.geoffreylitt.com/wildcard/), a browser extension that empowers anyone to modify websites to meet their own specific needs, uses Ohm for its spreadsheet formulas.
- JAMScript (https://citelab.github.io/JAMScript/) is a programming language for edge-based IoT applications.
- Bruno (https://github.com/usebruno/bruno) is an open source IDE for exploring and testing APIs.
It has also been used in a number of projects by Ink & Switch (https://inkandswitch.com), including Potluck (Dynamic documents as personal software: https://www.inkandswitch.com/potluck/), the Deja Vu project at MIT (https://sdg.csail.mit.edu/project/deja-vu/), ...
That's a great question. And I completely agree. It's become extremely common to obfuscate client code or throw together 5 NPM packages into a frontend framework to justify "rapid development".
Here are a few websites that have great UX and readable source code. For each, you can view source and understand how the page is structured, styled and made interactive:
- https://tour.gleam.run, interactive code tutorial
- https://sivers.com, ecommerce
- https://www.geoffreylitt.com, personal website
I enjoy doing this and have recreated a few projects that I liked by reading their source:
- https://sudoku-aj.netlify.app inspired by https://sudoku.com
- https://imgbar.pages.dev inspired by https://imgflip.com
- https://logo-lang.pages.dev inspired by https://www.transum.org/software/Logo
Web technologies are amazing. It's one thing to say that it's hard because you're not familiar with it and another that they are objectively bad. I disagree with the second statement.
If people want a drag and drop solution for building UIs that's great. I'm sure no-code solutions exist for that. Again, my disagreement is on the point that somehow building UIs with Python is better.
https://worrydream.com
https://macwright.com/
https://www.petemillspaugh.com/
https://www.geoffreylitt.com/
https://maggieappleton.com/
https://www.robinsloan.com/
https://thesephist.com/
https://wattenberger.com/
http://conal.net/
https://www.todepond.com/
https://devonzuegel.com/
https://nadia.xyz/
https://adamwiggins.com/
http://glench.com/
https://ncase.me/
Classic from my old Haskell professor: https://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/
http://computationalculture.net/rss
https://2019.wattenberger.com/rss
https://austinhenley.com/blog/feed.rss
https://blog.ouseful.info/feed
https://jakelazaroff.com/rss.xml
https://joshmpollock.com/feed.xml
https://lilianweng.github.io/index.xml
https://maggieappleton.com/rss.xml
https://runzhe-yang.science/feed.xml
https://thereader.mitpress.mit.edu/feed/
https://thesephist.com/index.xml
https://topos.site/blog/index.xml
https://www.geoffreylitt.com/feed.xml
If you're looking for more concrete details on what it's actually like to make things at Dynamicland, I recommend this writeup by Omar Rizwan. (from 2018, so doesn't reflect recent progress, but it's still helpful for getting a feel for the place):
https://omar.website/posts/notes-from-dynamicland-geokit/
I also wrote a short explanation of some little experiments I did there when I visited a couple years ago:
https://www.geoffreylitt.com/projects/dynamicland.html