zlacker

Stop Writing Dead Programs

submitted by aidenn+(OP) on 2022-10-20 02:39:24 | 181 points 60 comments
[view article] [source] [links] [go to bottom]
replies(17): >>Aloha+o8 >>donqui+Ub >>kragen+Wf >>vishnu+un >>peterk+Yo >>spion+hD >>chrism+rG >>murerm+uG >>the-sm+lH >>athrow+uO >>agentu+qQ >>phtriv+OQ >>otikik+S51 >>jrvare+ba1 >>thomas+tb1 >>dang+7R1 >>lamont+D62
1. Aloha+o8[view] [source] 2022-10-20 04:15:01
>>aidenn+(OP)
Wasn't this just on here like two days ago?

Yes it was, mods merged the text link with the video link.

https://news.ycombinator.com/item?id=33251799

replies(2): >>yazzku+Y8 >>aidenn+Ib
◧◩
2. yazzku+Y8[view] [source] [discussion] 2022-10-20 04:22:43
>>Aloha+o8
It's too good to not up-vote twice though.
replies(1): >>fergie+0n
◧◩
3. aidenn+Ib[view] [source] [discussion] 2022-10-20 04:55:12
>>Aloha+o8
Thanks, I searched if it was posted and didn't find it
4. donqui+Ub[view] [source] 2022-10-20 04:57:34
>>aidenn+(OP)
I watched the video when this was last submitted and he makes some interesting points with many of which I disagree.

Images as illustrations in the code:

Yeah, sure, it would be nice to have the Vitruvian Man in the code, but it's also nice to be able to re-open your text file in 5 years, when development on the IDE has stopped and it no longer runs on current operating systems. Also, animations would be hugely distracting.

Code cells:

With jupyter and spyder I have been bitten by lingering obsolete state from re-running cells or code blocks various time. I find the program much easier to debug if it runs on a clean slate and builds all the state from scratch. If building state takes long, I try to cache, save it to disk, and go from there.

Nonetheless, an interesting perspective.

replies(5): >>nequo+ud >>tinus_+lB >>blep_+lC >>the-sm+DF >>throw1+qN1
◧◩
5. nequo+ud[view] [source] [discussion] 2022-10-20 05:14:24
>>donqui+Ub
> Yeah, sure, it would be nice to have the Vitruvian Man in the code, but it's also nice to be able to re-open your text file in 5 years

I imagine this as an Emacs package that recognizes tree-like code patterns (like what he showed in the video) and replaces those patterns inline when you toggle it. Your code is still the same plaintext. But your editor can display chunks of it as graphs.

Emacs does this already in latex-mode and org-mode for math formulas.[1] It shouldn't be a stretch to do this for other types of code, too.

[1] See this example in markdown-mode: https://external-preview.redd.it/ETo2U5C7vh5o4482sMcnYbkZ6Lx...

replies(1): >>joeman+lE2
6. kragen+Wf[view] [source] 2022-10-20 05:42:12
>>aidenn+(OP)
I'm glad to see this talk transcript is back on the front page where it belongs! The previous post, which unfortunately got castrated into a video link, is https://news.ycombinator.com/item?id=33251799; my comments are at https://news.ycombinator.com/item?id=33256626.
replies(2): >>notRob+zk >>rob74+os
◧◩
7. notRob+zk[view] [source] [discussion] 2022-10-20 06:33:10
>>kragen+Wf
Fixed link 1: https://news.ycombinator.com/item?id=33251799
replies(1): >>kragen+y01
◧◩◪
8. fergie+0n[view] [source] [discussion] 2022-10-20 07:01:48
>>yazzku+Y8
We weren't all here two days ago- please upvote anything that is new for you not only stuff that is new for the entire readership of HN.
9. vishnu+un[view] [source] 2022-10-20 07:09:15
>>aidenn+(OP)
While you are here

Stop Drawing Dead Fish by Bret Victor

https://www.youtube.com/watch?v=ZfytHvgHybA

replies(1): >>compre+Fn
◧◩
10. compre+Fn[view] [source] [discussion] 2022-10-20 07:10:57
>>vishnu+un
Also https://news.ycombinator.com/item?id=14460013 https://www.emilydamstra.com/please-enough-dead-butterflies/
11. peterk+Yo[view] [source] 2022-10-20 07:26:31
>>aidenn+(OP)
Since the talk was already posted yesterday, here's another great related video that is well worth watching: Dan Ingalls demonstrating Smalltalk 76 on a restored Xerox Alto.

https://www.youtube.com/watch?v=uknEhXyZgsg

This is where it all started and it's truly amazing what they achieved on such limited hardware.

replies(2): >>mlajto+2v >>infini+Hc1
◧◩
12. rob74+os[view] [source] [discussion] 2022-10-20 08:06:47
>>kragen+Wf
Well, if the transcript contains stuff like:

> I'm going to ask you for some feedback at some different places, so first off – by applause – how many of you know what this is? Okay, okay, that's actually more than I expected. Now, how many of you actually used one of these? Okay, so what I can say is that I am part of the last generation of people who were forced to use punch cards at school.

...that makes me think I'm probably better off watching the video.

replies(2): >>isaacr+gu >>pmontr+QA
◧◩◪
13. isaacr+gu[view] [source] [discussion] 2022-10-20 08:29:43
>>rob74+os
The transcript with timestamps does not make for easy reading either.

Ideally, there'd be a simple text only version if the intention is for people to read as opposed to be an index for the video.

Would be interesting to see reading engagement with that change.

◧◩
14. mlajto+2v[view] [source] [discussion] 2022-10-20 08:37:50
>>peterk+Yo
I loved how he nuked the image by entering wrong code. Having a live system is awesome, but in instances like this, we should start thinking about Kay’s notion of “computers all the way down”, i.e. virtualization. So no matter how much corruption you do to a system, it should be still able to fully restore its functions without a reboot.
replies(1): >>peterk+Xx
◧◩◪
15. peterk+Xx[view] [source] [discussion] 2022-10-20 09:12:49
>>mlajto+2v
That was my favorite part :)
◧◩◪
16. pmontr+QA[view] [source] [discussion] 2022-10-20 09:46:40
>>rob74+os
But the video is 43 minutes that I don't have today and probably never. I skimmed through the transcript and I didn't find the point (which dead programs?) So I better find the time to watch the video or read the transcript or do something else, like I do for most content available as video. I prefer short to-the-point blog posts.
◧◩
17. tinus_+lB[view] [source] [discussion] 2022-10-20 09:54:25
>>donqui+Ub
If only we had some standardized and ubiquitous kind of format, a markup language that allows hyperlinks. If could have embedded pictures and interactivity!
◧◩
18. blep_+lC[view] [source] [discussion] 2022-10-20 10:08:40
>>donqui+Ub
> With jupyter and spyder I have been bitten by lingering obsolete state from re-running cells or code blocks various time. I find the program much easier to debug if it runs on a clean slate and builds all the state from scratch.

Hm, reading this just made my brain connect the reasons I don't like Jupyter with the reason I am baffled by people who like Smalltalk. An image that you can't fully restart just... doesn't seem like a pleasant development environment.

replies(2): >>codefl+YC >>trasht+4M
◧◩◪
19. codefl+YC[view] [source] [discussion] 2022-10-20 10:15:15
>>blep_+lC
Exactly. How are you supposed to code review something that lives in RAM?
replies(1): >>Jtsumm+Np1
20. spion+hD[view] [source] 2022-10-20 10:18:09
>>aidenn+(OP)
Stop trying to make Smalltalk happen, its not going to work!

I kid, but I also wish there was some understanding that once state goes bad (as it very often does during program development) you really do want to restart that program from scratch. Or at least a part of it, I guess - an Erlang process will do.

(Unless you have very good time-traveling tools for the entire program state. Which can be prohibitively expensive).

replies(1): >>aidenn+QH1
◧◩
21. the-sm+DF[view] [source] [discussion] 2022-10-20 10:46:55
>>donqui+Ub
Are you talking about this? https://youtu.be/8Ab3ArE8W3s?t=2190

It's not inserting images into the code. It's a structured editor presenting an alternative view of the code. It's just code. That's all there is to this. Man, frustrating.

22. chrism+rG[view] [source] 2022-10-20 10:55:28
>>aidenn+(OP)
> I wish they had frozen a primitive version of JS and added a marker at the beginning of scripts to switch out which language is used, much in the way #lang does in Racket.

JavaScript has had basically this several times (though not after the extreme flexibility of Racket’s #lang).

• In the context of HTML, there was <script language="…">, with a variety of unstandardised values for the language attribute, e.g. javascript1.0, javascript1.4. I think there were also unofficial MIME types that worked too (something like <script type="text/javascript;…">), but it’s hard finding documentation for this ancient history and I haven’t tried for more than half a minute. In the end, it died for lack of utility and because in practice new versions didn’t break anything worth mentioning so it was all just the one thing under the hood.

• Strict mode <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...>, via the "use strict" statement at the start of files and functions. Also "use asm" as another pragma that opted out of most of the language for performance reasons.

• And ECMAScript Modules are to some extent a new file format, and a module’s contents are automatically in strict mode.

Suffice it to say: they can remove stuff if there is any will too. But there is not.

23. murerm+uG[view] [source] 2022-10-20 10:55:41
>>aidenn+(OP)
This is awful to read on mobile. I tried but the formatting makes it really difficult.
replies(1): >>tmtvl+vW
24. the-sm+lH[view] [source] 2022-10-20 11:04:21
>>aidenn+(OP)
Why can't our programs be dead but our tools alive? Having a static and full world view allows your tools to do a lot more. An alive and very dynamic program allows you to run fine-grained strands of control flow, a dead and static one allows you to run coarse but large amounts of strands of control flow. Let me ask more complex queries, don't give me this hand-rolled LSP crap.

Here are some things that I've done/found out manually that I want my IDE to do for me:

1. General inter-procedural analysis queries: - Does anyone pass in null? - Is X set in each path that can be taken? - Take a theory, for example numerical ranges, what can you tell me about this function? - Is this probably a hot function? - Are any of these sum type ctrs unused?

2. Show me counter-examples of things I believe about the code, don't force me to find them myself.

3. Predictable, but non-standard (not pre-rolled by IDE), refactoring. I had to grep and do an Emacs macro that went through the list of matches, one execution at a time. Why can't the IDE record my actions, show me the AST transformation that I did, and let me apply them for some qualifying criteria across the whole codebase?

4. Let me apply semantically equivalent code refactorings within a function by picking cost-based heuristics. For example, "flatten indentation levels".

5. Do coarse-grained semantic analysis for me, "are these the same on a type-level? OK, now apply this theory, still the same? Aah, I'm about to go for lunch, just run the whole analysis".

6. Let me save any thing I've done, so that I can use it in the future

Something like that, that'd be great. I have 128GB of RAM and like 64 CPU cores and I'm using my brain on this 1M+LoC codebase while they sit idle. Lazy bums, I tell ya!

replies(2): >>CraigJ+yQ >>infini+cU
◧◩◪
25. trasht+4M[view] [source] [discussion] 2022-10-20 11:45:37
>>blep_+lC
Jupyter would really benefit from having the output and state of notebooks stored to separate files. That way you could easily version the code itself in git, while putting the output and state file types in .gitignore.
26. athrow+uO[view] [source] 2022-10-20 12:02:11
>>aidenn+(OP)
We can't do reflection and visualization
27. agentu+qQ[view] [source] 2022-10-20 12:16:09
>>aidenn+(OP)
Man gesticulates wildly. Asks why computers can’t read our minds and do what we intend. How are we stuck with terminal emulators, lol.

Okay terminal emulators need to go. And there are replacements these days. Some are better than others. But dang it they just don’t seem to catch on.

I don’t value debug-ability as highly as he does. I find that once you have a program with shared mutable state and concurrent or parallel threads, debugging loses its utility. I much prefer being able to reason about my programs in a principled way than trying to figure out how my program failed by piecing things together from debugger output. I’ve also had a pretty long career and have done both and arrived at almost the opposite conclusion: both are good but I prefer correct by construction, static type systems, and proofs.

I guess that makes us necromancers? Raising and keeping dead languages moving and doing out bidding?

It would be neat to have an image-based runtime like Commmon Lisp or Pharo (SmallTalk) while the language is statically typed in a rich system like Lean that can generate optimal native machine code and GPU shaders, etc. A fast, interactive theorem prover is also a must. If I’m gonna have my cake and eat it too might as well go all in.

replies(3): >>willia+YY >>brande+bq1 >>rileyp+zA1
◧◩
28. CraigJ+yQ[view] [source] [discussion] 2022-10-20 12:17:00
>>the-sm+lH
>> Why can't our programs be dead but our tools alive?

Is that what you really want or is that a tradeoff point short of ideal that you’ve selected as acceptable?

To put it more concretely, if you could have alive programs and alive tools, would that not be the pinnacle? Well categorically yes because an alive program has every capability a dead one has, including the ability to mimic “dead” one.

The problem as we all know is it appears to be impossible to write maximally alive tooling in the presence of alive programs because there’s no way to analyse them sufficiently with the compute available to us.

And so we select a trade off.

Aiming for the tradeoff point as the ultimate solution does us all a disservice though. We should call out that it’s a trade off (and a reasonable one at that) but what we really want is alive/alive!

replies(1): >>the-sm+FO2
29. phtriv+OQ[view] [source] 2022-10-20 12:18:35
>>aidenn+(OP)
I've always been troubled with the "observability" of Erlang/otp, because everytime I had to fire up wobseever, it was because I had put my system in such an unresponsive state (infinite message loop, some single actor congestionned because of third party code, or a supervisor tree crash looping because of a typo in the name of a variable that no compiler was there to catch) that wobserver _itself_ was useless.

And for the "sequential" part of the program, I would have loved a debugger on par with what's in my browser's dev tool, but it goes against the Erlang philosophy, or something.

Still, I can't wait to try smalltalk when it becomes relevant again thirty years in the past ; and if it's strangeloop video season _again_, and since I still can't write native clojure, I guess I'll try to install sbcl _again_ and set up slime _again_ and see if I get it, this time ?

replies(1): >>tmtvl+I61
◧◩
30. infini+cU[view] [source] [discussion] 2022-10-20 12:40:28
>>the-sm+lH
In Alan Kay's recent talks where he describes the implementation of Squeak, one of the last things he demonstrates is the ability to query the system for:

  Number of total objects
  Size of objects
  Number of methods
  Avg size of method
  Etc
As a sibling comment points out, by definition a live system can do everything a dead system can and more.
replies(1): >>the-sm+bP2
◧◩
31. tmtvl+vW[view] [source] [discussion] 2022-10-20 12:49:39
>>murerm+uG
Don't worry, it's awful to read on desktop too. Thank RMS for Emacs, making reformatting the entire thing a cinch.
◧◩
32. willia+YY[view] [source] [discussion] 2022-10-20 13:00:53
>>agentu+qQ
> It would be neat to have an image-based runtime like Commmon Lisp or Pharo (SmallTalk) while the language is statically typed in a rich system like Lean that can generate optimal native machine code and GPU shaders, etc. A fast, interactive theorem prover is also a must. If I’m gonna have my cake and eat it too might as well go all in.

What is stopping you from working on this?

replies(1): >>agentu+F61
◧◩◪
33. kragen+y01[view] [source] [discussion] 2022-10-20 13:08:19
>>notRob+zk
Oh, oops, thanks.
34. otikik+S51[view] [source] 2022-10-20 13:32:01
>>aidenn+(OP)
Just an fyi for the author in case he’s around: the CSS for mobile has fumbled the lines, each last word on the script overflows to the next line.
◧◩◪
35. agentu+F61[view] [source] [discussion] 2022-10-20 13:36:17
>>willia+YY
Time and money. Get me funding enough for myself and another dev and some customers and let’s go.
replies(1): >>agentu+Mc2
◧◩
36. tmtvl+I61[view] [source] [discussion] 2022-10-20 13:36:18
>>phtriv+OQ
You may want to try Sly rather than Slime, you may prefer its UX.

Speaking of SBCL and Clojure, I have used Stumpwm and the Nyxt browser for a while and they both seem to run very well; I wonder if CLJ has any nice desktop applications that show off how it runs.

replies(1): >>phtriv+QY3
37. jrvare+ba1[view] [source] 2022-10-20 13:53:24
>>aidenn+(OP)
Worth the repost, I really wish stuff like Clojure and Pharo became mainstream/defaults. For now I have to settle with side projects every now and then.

If devs became aware of how fun and fast their workflow COULD be we'd get these features in more mainstream frameworks.

38. thomas+tb1[view] [source] 2022-10-20 13:59:34
>>aidenn+(OP)
That's about the most annoying transcript format ever
◧◩
39. infini+Hc1[view] [source] [discussion] 2022-10-20 14:05:43
>>peterk+Yo
It's interesting that from the perspective of today the Alto looks limited, but at the time it was built it was basically a look at what powerful hardware might be like in 10-15 years (so mid 80s - which was pretty close in terms of a Lisa). So the equivalent would be trying to imagine what an individual's computing power would be like in 2035, and building a system to that.

For example, about half the memory of the Alto was just used for the bitmap display, which makes the system even more remarkable for what it could achieve with an economy of code. From what I've read, they had a plan to design a new system in the mid-70s (that would again look 15 yrs into the future) but at that point they got enough pushback from Xerox that they were not able to get the funding for that.

◧◩◪◨
40. Jtsumm+Np1[view] [source] [discussion] 2022-10-20 14:54:28
>>codefl+YC
By committing the code to a git repo and having a code review like every other language out there.

I'm guessing you have never tried these things but image based Smalltalk implementations have supported VCS for decades now, literally. In Pharo this is with git using Iceberg:

https://github.com/pharo-vcs/iceberg

They even wrote a tutorial to make it easier: https://github.com/pharo-vcs/iceberg/wiki/Tutorial

It's not magic, it's not even a problem, because the problem you're imagining doesn't actually exist. So long as the user of the system has at least half a brain (and maybe less) they will be capable of distributing their code with git these days.

replies(1): >>codefl+MJ1
◧◩
41. brande+bq1[view] [source] [discussion] 2022-10-20 14:56:01
>>agentu+qQ
> Okay terminal emulators need to go. And there are replacements these days. Some are better than others.

Do you have a short list for the better of these replacements?

replies(1): >>agentu+gC1
◧◩
42. rileyp+zA1[view] [source] [discussion] 2022-10-20 15:37:44
>>agentu+qQ
Strongtalk, a typed variant of Smalltalk, had most of this 25 years ago - shame all it was used for was HotSpot. You can run it in a Windows XP VM, there’s a lot of information inside that you can’t find online. What I found really interesting was that the browser used HTML with Strongtalk embedded - living too far in the future!
◧◩◪
43. agentu+gC1[view] [source] [discussion] 2022-10-20 15:45:27
>>brande+bq1
The original windows Console application didn't emulate VT100 or character-based interfaces. It's been a while since I've looked but I think all of those APIs are deprecated now in and it has been changed to act more like a character terminal. Powershell maybe? I dunno.

On Plan9 Sam and acme... heck most programs didn't have to emulate character-based terminal emulators. They could drop into a graphical mode if they wanted to.

Amiga OS applications were similar.

One I've been using more often is built into emacs, eshell. It can quite handily use emacs functions to create windows, draw graphics, evaluate elisp I type in or interpret shell commands, pipe shell command results into buffers, etc. But it doesn't emulate VT100 consoles... if you use a program that tries to use those escape sequences to control the output device it won't work well (or at all) in eshell.

Which is why I don't think they catch on. Too many useful programs or libraries programs depend on are built around termios and VT100 escape sequences to control a character-based interface. Coming up with a standard for graphical interfaces would just add another standard to the pile. And would probably have to be VT100 compatible for people to adopt it anyway. There'd be a lot of uphill battles to fight.

update: my knowledge of Console is pretty hazy though, take with a grain of salt. Maybe someone with win32 experience remembers better than I.

◧◩
44. aidenn+QH1[view] [source] [discussion] 2022-10-20 16:08:06
>>spion+hD
I don't know about Smalltalk, but a typical Common Lisp implementation will certainly allow you to restart the program from scratch.

Mutating state in a live program shouldn't be done carelessly (any more than a schema migration on a live database), but removing it completely from the toolbox is overly restrictive, especially since that also involves removing it from the toolbox while testing and developing.

replies(1): >>Jtsumm+fN1
◧◩◪◨⬒
45. codefl+MJ1[view] [source] [discussion] 2022-10-20 16:17:00
>>Jtsumm+Np1
I’m not imagining anything, I’m arguing from logic. If the code is distributed via Git, then you have a normal programming language (with a particularly cool IDE/REPL). Which isn’t in any way a bad thing, but I hope you will agree that this is not how Smalltalk is usually advocated. You can’t have it both ways.
replies(1): >>Jtsumm+uM1
◧◩◪◨⬒⬓
46. Jtsumm+uM1[view] [source] [discussion] 2022-10-20 16:28:23
>>codefl+MJ1
> I hope you will agree that this is not how Smalltalk is usually advocated.

I will not agree, and I hope you will understand why after I give some evidence. Here's what Pharo advocates typically point people towards:

https://mooc.pharo.org/#week1 - I've linked to the week1 anchor so you can see that Iceberg makes it in pretty early. I hope you understand that despite your hopes for me I cannot agree. Sorry to crush your hopes, I hope you can forgive me.

replies(1): >>codefl+tX1
◧◩◪
47. Jtsumm+fN1[view] [source] [discussion] 2022-10-20 16:33:04
>>aidenn+QH1
Despite many people's beliefs, yes. Smalltalk can be restarted from scratch. First, the images are paired with a serialization of the source code. If you used nothing else you could restore the source in an image via that, it can also be used to produce diffs for distribution. That's not the best way, but it is a viable way.

The better way is tools like Iceberg and its various predecessors (Iceberg is nice because it works with git which has become the industry standard at this point for version control). There, you select down to the individual method what you want to commit and you can push it to other git repos on services like Github.

◧◩
48. throw1+qN1[view] [source] [discussion] 2022-10-20 16:34:09
>>donqui+Ub
Both of these problems are pretty easily overcome.

> it's also nice to be able to re-open your text file in 5 years, when development on the IDE has stopped and it no longer runs on current operating systems

Export the code to normal text, manually translate the images to ASCII or just keep them as Markdown-style links to images.

The cognitive benefit from having actual images in your code will massively outweigh the expected small one-time cost of having to perform a one-time task to migrate them a fraction of the time (and it's more likely that a particular software project will die than an editor that it's written in).

> I have been bitten by lingering obsolete state from re-running cells or code blocks

Make cells explicitly show you what state/inputs they use.

If you're not using purely functional programming languages or design patterns, then having the ability to re-use state will also massively outweigh the occasional transient issues from accidentally doing so.

The upsides of both of these techniques massively outweigh the downsides. Not to say that you have to use them, of course - there are still people trying to implement large software projects using UNIX shell scripts.

49. dang+7R1[view] [source] 2022-10-20 16:48:15
>>aidenn+(OP)
Recent and related:

Stop Writing Dead Programs [video] - https://news.ycombinator.com/item?id=33251799 - Oct 2022 (215 comments)

◧◩◪◨⬒⬓⬔
50. codefl+tX1[view] [source] [discussion] 2022-10-20 17:15:51
>>Jtsumm+uM1
> I hope you understand that despite your hopes for me I cannot agree. Sorry to crush your hopes, I hope you can forgive me.

Honestly, I don't have the slightest idea what's going on with you.

replies(1): >>Jtsumm+xb2
51. lamont+D62[view] [source] 2022-10-20 17:59:10
>>aidenn+(OP)
After spending 10 years programming at a low level in a dynamic language like Ruby I'm running as fast as I can into Rust.

I agree with him on nearly everything else, as well as how people should understand at least the big picture stuff about Erlang better (and Go would have been a much better language by embracing crash-first design and not boilerplate error checking literally everywhere).

I don't know how you get fast feedback from a highly type checked language, but fully dynamic YOLO languages certainly aren't the answer I'm looking for.

◧◩◪◨⬒⬓⬔⧯
52. Jtsumm+xb2[view] [source] [discussion] 2022-10-20 18:22:16
>>codefl+tX1
> Honestly, I don't have the slightest idea what's going on with you.

I was having fun with the word "hope" which I find to be a weird sentiment because it expresses a lack of agency or control over a situation. But you didn't lack agency or control, you had an opportunity to persuade. An opportunity to convince me of your position and to try and bring me into agreement, but you didn't use that opportunity. It would have made more sense to me to express a hope for agreement if you had at least taken the chance to provide evidence for your claim.

>> I hope you will agree that this is not how Smalltalk is usually advocated.

You offered no evidence, you just hoped (asserted a lack of control in persuading) that I would agree with a bald assertion. I offered evidence to the contrary, the Pharo MOOC, which turns up in most discussions I've seen, here and elsewhere, about Pharo in particular and Smalltalk in general. Interestingly, to me, you didn't even engage with my evidence, which is unsatisfying.

You could have responded to it. You could have provided your own counter-evidence. But you didn't.

◧◩◪◨
53. agentu+Mc2[view] [source] [discussion] 2022-10-20 18:28:13
>>agentu+F61
My dream project, if I ever win the startup lotto and come into some "mess around and find out," money, would do one better: let's not even require a graphical display or keyboard input.

My personal goal here is to be able to write my programs by synthesizing them from proofs that I write by hand. Whether that is on a special device like an eInk reader or on a whiteboard; my work carries around with me where I choose to take it. I would love a world where my physical attention isn't focused on a glowing box with graphics designed by some company in Palo Alto or Cupertino who is designing for mass audiences with profits motivating every decision (and change). Why even hard-wire ourselves to the physical legacy of terminals?

There are plenty of humans who aren't even afforded access to modern computers in manners that are convenient to them and respect their abilities and capacities! The entire design of modern computing is centred around able-bodied, able-minded "mass-market" people -- whatever that is.

It's frustrating that any other mode of computing is an after-thought, an inconvenience, and attached to these machines in order to meet people where they are. Often times the answer is simply, "Nope, sorry."

Particularly inspired by: DynamicLand, https://screenl.es etc

replies(1): >>willia+Bs2
◧◩◪◨⬒
54. willia+Bs2[view] [source] [discussion] 2022-10-20 19:44:01
>>agentu+Mc2
Thanks for introducing me to DynamicLand and Screenless!

DynamicLand reminds me of early Logo where there was a physical "turtle" robot that kids programmed to draw on paper!

◧◩◪
55. joeman+lE2[view] [source] [discussion] 2022-10-20 20:44:47
>>nequo+ud
This is already quite simple. You can have a .org buffer with SRC blocks & have their output displayed underneath (exactly like a jupyter/Pluto notebook). I’m thinking you can define a function and underneath it you can say something like “@structure myfunc” to get an image of the structure as the src-block output.
replies(1): >>nequo+M33
◧◩◪
56. the-sm+FO2[view] [source] [discussion] 2022-10-20 21:31:58
>>CraigJ+yQ
> Well categorically yes because an alive program has every capability a dead one has, including the ability to mimic “dead” one.

No, they do not. What they are lacking isn't in what they can or cannot execute, it's what we can say about them. If your PL has eval, then you don't know if foo is ever called or not, for example.

I'm not interested in talking about the currently running instance of a program, but all possible running instances of it.

replies(1): >>CraigJ+KG4
◧◩◪
57. the-sm+bP2[view] [source] [discussion] 2022-10-20 21:34:31
>>infini+cU
All of those are dynamic properties of one running system, what if I pass in a different set of starting state to it? Will it allocate more objects then? Are any of the methods unused? Well, maybe it is now, but maybe we'll redefine a method at runtime to call the previously unused method.

> As a sibling comment points out, by definition a live system can do everything a dead system can and more.

"Can do" is not the same as "we can say about", see my response to sibling.

◧◩◪◨
58. nequo+M33[view] [source] [discussion] 2022-10-20 23:07:10
>>joeman+lE2
That would be phenomenal. And even better if it works outside of org-mode!
◧◩◪
59. phtriv+QY3[view] [source] [discussion] 2022-10-21 07:41:07
>>tmtvl+I61
You're right, apparently the default slime-like mode is sly, I suppose that's what all the uncool kids use nowadays ;)

To be fair, clojure was designed with long lived servers in mind, so the "JVM takes ages to start and load the class path" tradeoff makes sense. A downside is that any GUI built in clojure will either has to jump through some AOT compilation hoops (graalvm, etc), or accept being slow as hell to boot.

This alone has been enough to dissuade me to write anything with a UI in clojure. Maybe the space has changed since last time I tried, though.

◧◩◪◨
60. CraigJ+KG4[view] [source] [discussion] 2022-10-21 14:21:57
>>the-sm+FO2
>> it's what we can say about them

It's still the same issue; consider the halting problem. There are times when we can say a call does not return in a turing complete language (the bottom type, e.g. never in TS or ! in Rust), but the reverse is not true. We cannot be sure a given call will return in a turing complete language even without eval.

You could avoid this for a definition of dead that equates with non-turing complete i suppose but that's not particularly interesting since it's not a general programming language in that case.

[go to top]