Paul Sonnentag
01/16/2022, 7:29 PMIvan Reese
I know this because I currently don’t use any tool I’ve created for myself.A reason that the people who can program often don't feel the need to program is that many of their software needs have already been met by the mountain of past work from people similar to them — programmers. But people who can't currently program will have needs they face in their work that are less likely to have been met by software, because "people similar to them" are also presumably not able to program. But that's just a quibble with this one supporting argument. I still agree with the conclusions you draw.
Nick Smith
01/16/2022, 10:57 PMIf we gave everyone the ability to program overnight, very little would change. People still couldn’t quickly build tools to solve problems.I strongly disagree with this assertion, assuming I'm interpreting it correctly. I think we can make it practical for end users with technical aptitude to make apps.
My working hypothesis was that programming is too complicated. If we made it more accessible, everyone could create precisely the tools they need to solve their problems.What do you mean by "make it more accessible"? There are many ways you could interpret that goal. Oftentimes when people say this, they mean making programming easier to learn. Other times, they mean making the programming community more friendly and diverse. Personally, I'm focused on re-inventing the very foundations of programming to make it simpler.
Nick Smith
01/16/2022, 11:06 PMKartik Agaram
Kartik Agaram
qemu-system-i386 -m 2G -hda mu-browser-20210815.img -hdb foc-data-20210814.img
(You don't have to trust me since Qemu is a well-trusted project and my code is perfectly sandboxed inside Qemu. Running a program within Qemu is more secure than browsing to a website in a web browser.)
• Wait 2 minutes for the ~60MB of archives to get loaded into RAM.
• Press /
to search and then type in exactly Is there any hope
and hit enter. (There's no keyword search and search is case-sensitive at the moment.)
• Press enter on the post by Roben Kleene that is highlighted. It won't look like much has happened, the highlight will just disappear. But you're in a new page now, having jumped from the search screen to a thread view. Press up arrow to browse comments of this thread (arranged in reverse chronological order). Other shortcuts appear in the menu at the bottom. I particularly commend to your attention my own comments in this thread 🙂
• For the second thread, search for opinionated overflow thread
. Again, hit enter on the highlighted post to jump to its thread view.
• Oh, bonus third thread. Search for old blog posts
for my list of programs I've written for myself. It's a comment on a third thread which is also relevant.
Apologies in advance for the crappy UX, but I have high hopes that these image files -- with every byte lovingly hand-crafted all the way up from machine code -- will continue to be browseable in 50 years time. (You'd just need to get your hands on a 2070-era x86 emulator.) I'd also love to jam with anyone interested in improving the search or anything else.
Needless to say, both @Mariano Guerra's history browser and mine are examples of programs we've written for ourselves. They're kinda idiosyncratic, and we often work around their limitations rather than fix them. But they've both allowed us to treat this group's history as part of our exo-brain. I consider them great examples of the sorts of programs people would benefit from (without learning machine code) if they learned programming.Kartik Agaram
Tom Larkworthy
01/17/2022, 10:31 AMPaul Sonnentag
01/17/2022, 7:33 PMI strongly disagree with this assertion, assuming I’m interpreting it correctly. I think we can make it practical for end users with technical aptitude to make apps.I should have been more clear. I think it is possible to provide end-users with an environment that allows them to build custom tools. I was trying to argue that the main problem isn’t that people cannot program because it’s too hard. The main problem I see is that most of our programming environments are made for building professional software that will be used by thousands to millions of users. I think programming should be easier, but first I want to focus on a better shape for software that enables casual remixes and recombination of tools. Boxer [1] is a good example for such an environment. @Kartik Agaram Thanks for linking back to previous conversations. I think the future of coding history tool is a great example of the kind of tools I’m talking about. In my dream world, something like this wouldn’t require writing any code at all, and you could just take apart the slack interface to create a custom view. [1] https://boxer-project.github.io/
Kartik Agaram
Paul Sonnentag
01/17/2022, 8:47 PMKartik Agaram
The main problem I see is that most of our programming environments are made for building professional software that will be used by thousands to millions of users.1000% agreed! However, I believe your metaphor of "A glue language to recombine the components" [like Legos] is fundamentally ill-posed. We programmers have a long history of over-estimating how composable software is. I believe that no matter what components you come up with, anybody putting them together will still have to reason about a wide variety of cases, scenarios, error conditions. That is to me the essence of programming, and it takes some minimum effort to learn no matter how easy it is to compose the final program out of primitives. Given that fundamental uncomposability, I think you'll always have disagreements within the community. People and subgroups who can navigate disagreements are more empowered than people and subgroups who can't. And so you'll never be able to stop thinking about how the components are implemented.
Tom Larkworthy
01/18/2022, 6:18 AMKonrad Hinsen
01/18/2022, 8:13 AMTom Larkworthy
01/18/2022, 9:29 AMif the stuff I need to glue together is not in Observable, it won't work for me.But Observablehq consumes ES6 modules, and emits ES6 modules. It has standard connector and can directly depend on NPM hosted code. The code is vanilla javascript. You can flip on your DevTools and debug it. You can use javascript's dynamic imports to load ES6 code from any URL on the internet. So it couldn't be more composable and compatible with of one of the largest software ecosystems on the planet.
my language is the entire universeJavascript call APIs, which is where cross language composability lives.
the first thing we need is languages and runtimes designed for being one among many.This is what REST HTTP/gRPC is for, we have that at the network layer. I maybe don't understand your points properly but I don't think Observable is a "my way of the highway" approach that I have seen many other tools do (Darklang, ELM), its vanilla Javascript (and SQL, TEX, Markdown and HTML). Maybe the fact you are forced a certain IDE is a problem but I think hosting on the browser is actually a huge win for accessibility (no installation).
Konrad Hinsen
01/18/2022, 10:42 AMObservablehq consumes ES6 modulesFine, but what if the components I need are in Python, or R? Not a made-up example, that's my daily work environment. I'd love to be able to use Observablehq, but none of the ingredients I need (pretty specialized stuff for molecular simulations) exist in the JS ecosystem. For the same reason, I can't use Clerk (the recently published notebook for Clojure), which looks neat as well.
Konrad Hinsen
01/18/2022, 10:46 AM| the first thing we need is languages and runtimes designed for being one among many.
This is what REST HTTP/gRPC is for, we have that at the network layer.If everyone agreed on using HTTP-based component interfaces, that might perhaps work. I have some doubts, however. The popular approach of "Let's start on HTTP server on some random-looking port number, hoping that it's free" doesn't scale. And configuring all port numbers by hand to avoid conflicts doesn't scale either.
Tom Larkworthy
01/18/2022, 12:40 PMAnd configuring all port numbers by hand to avoid conflicts doesn't scale either.this is what docker-compose solves. It gives you a way of wiring a bunch of different binaries written differently together . It's not a great solution but its best we have at the moment. I do think cross language composability is more or less solved at the network layer, we have pretty good standards for networks.
hvrosen
01/18/2022, 1:33 PMNick Smith
01/18/2022, 10:45 PMKonrad Hinsen
01/19/2022, 7:57 AMBut this is not the fault of the javascript ecosystemLack of communication is never the fault of any (potential) participant. It's the shared attitude of everyone. JavaScript is just like Python, R, Java, etc.: there is a wall around the ecosystem, and most of the computing world is outside of it. Which means that you have to choose the most suitable walled ecosystem for your projects, and live without the good stuff from the others. Note that "success" (meaning adoption) is not really a good criterion. Software is everywhere, each application has different needs. Being good in a large niche is no better than being good in a small one.