<brixen>
whitequark: the basic thing I want is to be able to bootstrap a system in repeatable stages, 1. a bit of shell to start, enough to build a limited VM, 2. the VM can read some insns, 3. the insns implement a bigger parser, 4. another layer can execute more insns, and up
<brixen>
whitequark: thanks, I'll check out the paper
<whitequark>
dunno, the OCaml approach of dragging a bytecode implementation of the compiler + a minimal VM seems ok to me
<whitequark>
what you propose is marginally more elegant for a ton more work
<brixen>
doesn't actually seem like much work
<brixen>
it's the SpaceX reusable rocket approach vs the disposable booster approach
<brixen>
except you don't have to land the thing with rockets :p
<ELLIOTTCABLE>
brixen: eli5?
<ELLIOTTCABLE>
bciam
<brixen>
ELLIOTTCABLE: is that a dialect of English? :p
<brixen>
we need a /glossary built-in :)
<whitequark>
explain like he is five
<whitequark>
because he is
<brixen>
lol
<purr>
lol.
<brixen>
purrrrrrrrr
<brixen>
ELLIOTTCABLE: do you mean the bootstrapping part or something else?
<whitequark>
brixen: i'm actually wondering about all the VM instruction fixation
<ELLIOTTCABLE>
-learn glossary = ask whitequark
<purr>
ELLIOTTCABLE: Learned `glossary`.
<whitequark>
why not describe languages using successively higher-level IRs?
<ELLIOTTCABLE>
brixen: oh, just everything you two just exchanged about bootstrapping went way over my head
<jfhbrook>
whitequark: after a while you just get sick of turtles?
<brixen>
ELLIOTTCABLE: ah, ok, we'll dig in at some point
<whitequark>
jfhbrook: make turtle soup then
<brixen>
ELLIOTTCABLE: basically, people usually bootstrap systems by building a "throw-away" compiler
<brixen>
then they are self-hosting, and re-bootstrapping either 1. requires going back to bit-rot code, or 2. building new code
<brixen>
ELLIOTTCABLE: this is like using disposable booster rockets to get to space, and I want re-usable ones
<whitequark>
except building simple compilers for bootstrapping is 1) easy 2) cheap
<whitequark>
so the analogy doesn't hold in the slightest
<brixen>
whitequark: two assumptions that I see in ISA design that are flawed: 1. "insns" mean a homogenous and "small" granularity, 2. all are (ideally) irreducible
<brixen>
whitequark: so, the instruction set becomes an implementation detail
<brixen>
instead, I want to look at the instruction set as the protocol for describing computation to the mechanism computing
<brixen>
I want that protocol to be "implementation independent"
<brixen>
whitequark: bootstrapping Ruby was neither easy nor cheap
<brixen>
also, when we build bit-rotting throw-away bootstrapping stages, we don't enable people to build up in a layered fashion
<brixen>
eg, show me languages on the JVM or on JS that share significant portions of their build tools or even concepts
<whitequark>
mhm
<brixen>
mare than anything, I want people to experiment with languages in the deepest way
<brixen>
and the thing that prohibits that is cost
<brixen>
the cost of writing compilers and parsers and VMs has fallen dramatically in the past 15-ish years
<brixen>
but we are still building new languages like we did in the 50s
<whitequark>
i don't really get why an instruction stream is the right abstraction to build on top of
<brixen>
and that sucks because that's a whole lot of waste, which means a whole lot of resources that could be directed at solving problems, wasted
<brixen>
whitequark: I'm not absolutely convinced, but it's the best idea I have right now
<whitequark>
have you seen the IR that Guile uses?
<brixen>
ie, there's a bunch of stuff that's not reducible unless you start abstracting beyond the point of utility
<brixen>
what's the intel instruction that's Turing complete? MOV?
<brixen>
like, we could have a computer with 1 instruction, why are you building all these instructions lololololol
<purr>
lolllll
<whitequark>
mov, yes
<whitequark>
there are actually commercial products built around a subleq machine
<whitequark>
so i wouldn't completely discard that :p
<brixen>
heh
<brixen>
whitequark: there's this idea that Dave Snowden talks about "exaptation is more valuable than adaptation"
eligrey_ has joined #elliottcable
<brixen>
that concept is what explains this more clearly to me these days
<brixen>
this == the constant effort people make to reduce things beyond the point of utility
eligrey has quit [Ping timeout: 250 seconds]
<brixen>
DRY it, "simplify" it, etc. and we end up with stupid levels of complexity that stifle any innovation
<brixen>
like, I've wasted 10 hrs this week easily on freakin openssl
<brixen>
all I *desperately* want is the ability to rewrite that damn thing out of *any* system I have to touch at 1000x less cost than it took to write it in the first place
<brixen>
the way we are building systems, we will never have that ability
<brixen>
I need write a post on this: the existence of some thing, even if it is terrible, will effectively prevent a much, much better thing from every being built
<brixen>
s/every/ever/
<whitequark>
"worse is better"
<brixen>
unless you build the system to make replacement one of the least costly things
<brixen>
it's even worse than "worse is better"
<whitequark>
i don't believe you will solve human inertia with software tools
<brixen>
I don't think I'm trying to
<brixen>
I'm trying to solve that people have to build the Panama canal to get water across the street to the other building
<brixen>
alas, out of time for today
<ELLIOTTCABLE>
brixen: you're gone? damn, my timing is bad
<ELLIOTTCABLE>
I was on the road, and *just* unfolded myself at Subway to eat and chat you up.
<ELLIOTTCABLE>
shoulda just stayed where I was earlier until you left :P
<ELLIOTTCABLE>
whitequark: hi!
eligrey has joined #elliottcable
eligrey_ has quit [Ping timeout: 256 seconds]
<ELLIOTTCABLE>
ugh andy wingo
<ELLIOTTCABLE>
I have such a giant programmer crush on him
<ELLIOTTCABLE>
I think he finds me consummately annoying lol
<ELLIOTTCABLE>
I followed him around for several JSconfs in a row (gkatsev can attest to this), and I'm pretty sure he got vee sick of me
<jfhbrook>
hahahaha
<jfhbrook>
I remember that guy, I'm not really familiar with his work I just remember the nametag because what a name
eligrey has quit [Ping timeout: 260 seconds]
eligrey has joined #elliottcable
eligrey has quit [Ping timeout: 276 seconds]
alexgordon has joined #elliottcable
<alexgordon>
whitequark: your shit is down (!)
LucIenn has quit [Quit: Connection closed for inactivity]
<ELLIOTTCABLE>
“That's a pithy sentence that deserves some unpacking. If you're already comfortable with what it means, you can skip a couple sections.”
<ELLIOTTCABLE>
“Still here? Cool, me too.”
<ELLIOTTCABLE>
lol I love him
<purr>
lololololol
<ELLIOTTCABLE>
jfhbrook: hahaha
<ELLIOTTCABLE>
jfhbrook: he's the genius behind like *all* of GNU Guile's performance optimizations
<jfhbrook>
oh no shit?
<jfhbrook>
somebody bothered to performance optimize guile?
<ELLIOTTCABLE>
and more importantly, to me, he's not some academic releasing shit into a journal and going to tenure-track,
<ELLIOTTCABLE>
he *blogs* about literally *all* of it
<jfhbrook>
that's cool
<ELLIOTTCABLE>
like it's all very dense and not really something I've had an easy time jumping into, but he's like Matt Might or something: he's always seemed to try *really hard* to disseminate the things he's discovering and learning to the rest of the world, and not just through an open-source project with some cryptic commit messages and a bunch of code behind them
<ELLIOTTCABLE>
like with well-written, and sure-difficult-to-grok but nonetheless clear *prose*.
<ELLIOTTCABLE>
like dive into this: it's pretty readable so far
<creationix>
yeah, it just has a few "autocorrects" like lambda -> λ
<ljharb>
nice
<ljharb>
altho my computer has that too so i wouldn't have noticed :-p
<creationix>
so this language I'm designing is for system administrators writing scripts in a browser UI I control
<ljharb>
but people will read them outside the UI?
<creationix>
not unless my language gets popular outside this system I'm making
<ljharb>
ah
<creationix>
they won't publish to github, I'll have an internal npm-like thing with a UI I control
<ljharb>
interesting
<creationix>
but it would be cool if it did catch on. I'll make sure to make the vm itself standalone technically
<creationix>
I'm seriously considering ending the python-style vs c-style block debate by storing binary AST on disk and having an editor flag to show in either format
<creationix>
saving parses code back to asy
<creationix>
*ast
<creationix>
this wouldn't work if people were publishing to github because the binary source files can't be diffed using text-based diffing tools
<creationix>
and github's diff tools aren't extensible
<creationix>
(though the problem is git itself, github just shells out to git or calls a git library for most stuff)
<creationix>
but with command-line git I could register a custom diff tool I think
<ljharb>
CST > AST
<ljharb>
ie, preserve whitespacing and comments (assuming your lang allows them)
<ljharb>
but yes, do do that.
<creationix>
sure
<creationix>
I will preserve some whitespace and all comments
<creationix>
(meaning 5 blank lines will shrink down to 1)
<creationix>
preserve the semantics of the whitespace, not the actual characters since they might not translate between styles
<ljharb>
hm
<ljharb>
ok
<creationix>
this is basically a huge research project to see what I can do in a controlled environment with very smart tools. if it proves to help, I'll then do the work of getting people to adopt the tools/techniques in the general population
<creationix>
I have hundreds of technical users who aren't really programmers that will be writing these scripts (system admins and support people mostly)
<ljharb>
perhaps you could consider a non-textual editor
<ljharb>
sorella has lots of feels on that subject
<creationix>
not sure I want that controlled, I did a lot of that with my teach-kids-to-code experiments
<ljharb>
gotcha
<creationix>
hmm, I may be over thinking this. I can just make a better bash
<creationix>
if I add significant newlines (meaning they are statement terminators) it opens up a whole new world of clean syntax
<creationix>
or require semicolons (or something) for terminators
<creationix>
but again, that can all be in the different styles and not the core structure
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
alexgordon has joined #elliottcable
rarik has quit [Remote host closed the connection]
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
gq has quit [Read error: Connection reset by peer]
gq has joined #elliottcable
eligrey has quit [Quit: Leaving]
alexgordon has joined #elliottcable
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
alexgordon has joined #elliottcable
alexgordon has quit [Client Quit]
Rurik has joined #elliottcable
alexgordon has joined #elliottcable
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
alexgordon has joined #elliottcable
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
alexgordon has joined #elliottcable
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
alexgordon has joined #elliottcable
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Hrorek has joined #elliottcable
Rurik has quit [Ping timeout: 260 seconds]
alexgordon has joined #elliottcable
<ELLIOTTCABLE>
11:13 PM <+ljharb> and ruby has the mistake of requiring them in those situations but not usually.
<ELLIOTTCABLE>
would not call a mistake
<ELLIOTTCABLE>
would call an *excellent* choice
<ELLIOTTCABLE>
is ... quite possibly my *favourite* single thing about ruby, slash the single thing I will miss most when I finally transition away from CoffeeScript
<ELLIOTTCABLE>
11:19 PM <+ljharb> ie, let them type something shorter, but leave behind in the code something longer but more explicit and unambiguous
<ELLIOTTCABLE>
there's something super, super insightful buried in there.
<ELLIOTTCABLE>
11:37 PM <+ljharb> sorella has lots of feels on that subject
<ELLIOTTCABLE>
really?
<ELLIOTTCABLE>
how have we never talked about it ,wtf
Sorella has joined #elliottcable
<ELLIOTTCABLE>
11:37 PM <+ljharb> perhaps you could consider a non-textual editor
<ELLIOTTCABLE>
11:37 PM <+ljharb> sorella has lots of feels on that subject
<ELLIOTTCABLE>
Sorella: also hi, long time no see :P