←2016-04-03 2016-04-04 2016-04-05→ ↑2016 ↑all
00:03:03 -!- tromp has quit (Ping timeout: 276 seconds).
00:07:46 <hppavilion[1]> Taneb: I may have asked this before, but what strategies are used when generating brainfuck code?
00:08:42 <Taneb> hppavilion[1], you need to keep in mind your data structure is a tape, and the only loop you have is a fairly simple while loop
00:08:53 <hppavilion[1]> Taneb: OK.
00:09:12 <Taneb> Design your data structure carefully and don't be afraid to change it if it isn't working
00:10:03 <hppavilion[1]> Taneb: For a compiled-to-brainfuck language, would data markup be useful?
00:10:20 <Taneb> I don't know, that's not something I have any experience with
00:10:20 <hppavilion[1]> Basically, a way to tell it to set certain cells to values before initialization?
00:10:27 <hppavilion[1]> Taneb: Fair enough
00:13:46 <rdococ> what about a looped tape?
00:14:03 <hppavilion[1]> rdococ: Been there, done that
00:14:07 <hppavilion[1]> rdococ: You use a deque
00:14:10 <hppavilion[1]> > and < are roll
00:14:11 <lambdabot> Not in scope: ‘are’
00:14:11 <lambdabot> Perhaps you meant one of these:
00:14:11 <lambdabot> ‘arr’ (imported from Control.Arrow),
00:14:18 <hppavilion[1]> ' pushes a new 0
00:14:35 <hppavilion[1]> rdococ: Seems like it would trivially reduce to BF, but it's actually very different
00:14:38 <rdococ> so you can add and remove stuff in tapes?
00:14:44 <hppavilion[1]> rdococ: Yes?
00:14:53 <rdococ> I mean increment or decrement the value
00:14:58 <hppavilion[1]> rdococ: Yes
00:15:03 -!- lleu has quit (Read error: Connection reset by peer).
00:15:10 <hppavilion[1]> rdococ: + pops a value and pushes its successor, - does the same with predecessor
00:15:14 <hppavilion[1]> [ and ] are the same
00:15:14 <rdococ> what if the program was looped?
00:15:14 <j-bot> hppavilion[1]: and ] are the same
00:15:38 <hppavilion[1]> , and . are the same (usually, though you may want to make them different)
00:15:39 <rdococ> like what we were discussing about a prolog processor
00:15:48 <hppavilion[1]> rdococ: Looped program? Like Fueue?
00:16:55 <hppavilion[1]> rdococ: Or like this language I made which's name has slipped my mind?
00:18:23 <rdococ> prolog processor?
00:18:30 <boily> speaking of fueue, where's mroman now?
00:18:33 <hppavilion[1]> rdococ: Yeah, prolog processor.
00:18:38 <hppavilion[1]> boily: Good question
00:18:48 <hppavilion[1]> rdococ: You're the one who brought it up
00:19:21 <hppavilion[1]> rdococ: Do you want to design a FORTH-like language?
00:20:59 <rdococ> hmm
00:21:12 <hppavilion[1]> rdococ: Called FITH
00:21:14 <boily> @ask mroman hello? hello? hello?
00:21:14 <lambdabot> Consider it noted.
00:21:53 -!- atrapado has quit (Quit: Leaving).
00:21:58 <rdococ> there's one called FIFTH
00:22:04 <rdococ> it's esoteric
00:23:41 <hppavilion[1]> rdococ: FITH would not be. Well, not completely.
00:24:07 <hppavilion[1]> rdococ: It'd be eso- by virtue of being a FORTH, and would have optional esoteric features, but it would also be quite straightforward
00:24:27 <hppavilion[1]> In theory, it'd be suitable for a wide range of applications, from hobbyist OS dev to systems programming to space flight
00:24:33 <rdococ> k
00:24:49 <rdococ> interesting
00:24:59 <rdococ> so it'd be stack based
00:25:24 <ais523> I recently came across a language called 8th, which is apparently a commercial FORTH with big ambitions
00:25:30 <ais523> it's unclear whether anyone actually uses it
00:26:03 -!- Sprocklem has quit (Ping timeout: 240 seconds).
00:27:28 <rdococ> and it would do stuff like maths and input
00:27:52 -!- Sprocklem has joined.
00:27:56 <b_jonas> ais523: is it trying to add some safeguards to detect stuff early (possibly at compile time), like unpaired push/pop on the main stack or wrong types?
00:28:12 <ais523> b_jonas: I don't know the details
00:28:30 <ais523> nothing in the tutorial looked different from actual Forth except that it appeared to have a type system, and I suspect one that isn't checked at any point
00:28:35 <b_jonas> hmm, that reminds me,
00:28:35 <ais523> you just have to write the types correctly
00:28:55 <b_jonas> I should add that language that tries to pretend it's forth-like to the esowiki because it probably counts as an esolang
00:29:04 <b_jonas> I'll add a todo-entry
00:29:52 <HackEgo> [wiki] [[User:B jonas]] https://esolangs.org/w/index.php?diff=46743&oldid=46727 * B jonas * (+143)
00:32:19 <rdococ> hmmm
00:32:26 <rdococ> 2d stack?
00:33:03 -!- p34k has quit.
00:34:10 <rdococ> hmm
00:35:13 <rdococ> add 2 mult 3 2
00:36:22 <hppavilion[1]> rdococ: 2D stack? How does that work?
00:36:59 <rdococ> not infinity 1d stacks
00:37:07 <rdococ> diagonals?
00:37:13 <rdococ> you could have horizontal stack
00:37:16 <hppavilion[1]> rdococ: But a 2D stack. Explain?
00:37:17 <rdococ> or vertical stack
00:37:28 <hppavilion[1]> Oh, I think I see
00:37:29 <rdococ> hmm
00:37:37 <hppavilion[1]> You can pop from multiple places
00:37:50 <hppavilion[1]> rdococ: But how do you tell it where to pop from?
00:37:57 <hppavilion[1]> rdococ: Also, the analogy breaks down a bit in 2D
00:38:06 <hppavilion[1]> rdococ: Because it matters what direction the stack grows in
00:38:06 <rdococ> but then you could change a stack's direction and make it a snake
00:38:13 <rdococ> hmm
00:38:22 <hppavilion[1]> rdococ: I'd prefer to just use a good old deque
00:38:27 <rdococ> true
00:38:36 <rdococ> what about a branching stack?
00:38:50 <hppavilion[1]> `google spaghetti stack
00:38:58 <rdococ> add (mult 3 2) (div 2 3) would branch into two branches
00:39:02 <rdococ> mult branch and div branch
00:39:07 <hppavilion[1]> @google spaghetti stack
00:39:08 <lambdabot> https://en.wikipedia.org/wiki/Parent_pointer_tree
00:39:16 <rdococ> but it sounds less esoteric and more useful
00:39:20 <hppavilion[1]> rdococ: That's not how FORTH works
00:39:28 <rdococ> ik
00:39:31 <hppavilion[1]> rdococ: This is meant to be useful while preserving roots in esotericness
00:39:33 <HackEgo> Failed to connect to socket 2. \ \ Looking up \ Making HTTP connection to \ Sending HTTP request. \ HTTP request sent; waiting for response. \ Alert!: Unexpected network read error; connection aborted. \ Can't Access `http://google.com/search?q=%73%70%61%67%68%65%74%74%69%20%73%74%61%63%6b' \ Alert!: Unable to access
00:39:38 <zzo38> Are there any Magic: the Gathering cards which create new state-based actions?
00:39:42 <hppavilion[1]> rdococ: FORTH would be 2 3 +, not + 2 3
00:40:00 <hppavilion[1]> And FORTH is better because of that
00:40:19 <hppavilion[1]> Because you can do things other than arithmetic, which still works in prefix, but is much more confusing
00:40:40 <hppavilion[1]> rdococ: So the instructions I'm already thinking of are:
00:40:42 <rdococ> pls give me an example
00:40:57 <hppavilion[1]> rdococ: $ or DROP makes sense in postfix, but not as much in prefix
00:41:04 <rdococ> drop?
00:41:12 <hppavilion[1]> rdococ: POP a value and throw it away
00:41:24 <rdococ> example pls
00:41:38 <hppavilion[1]> rdococ: 2 3 4 $ + is equal to 2 3 +
00:42:05 <hppavilion[1]> Because the 4 gets DROPed
00:42:09 <rdococ> oh
00:42:16 <hppavilion[1]> It seems useless, but it doesn't have to be a scalar like 4
00:42:29 <hppavilion[1]> It could be an expression with side-effects
00:42:36 <boily> int-e: int-ello. I seem to have begun binging QC. welp.
00:42:37 <rdococ> oh, okay
00:42:40 <rdococ> interesting
00:42:43 <hppavilion[1]> 2 3 "press any key to continue" . , $ +
00:42:54 <hppavilion[1]> That will add 2 and 3, but not until you approve of it
00:43:02 <rdococ> wow
00:43:03 <rdococ> cool
00:43:05 <rdococ> that's
00:43:06 <rdococ> wow
00:43:14 <hppavilion[1]> rdococ: Want me to make a full list of instructions?
00:43:16 <rdococ> never thought of it that way
00:43:20 <hppavilion[1]> rdococ: Just the basic ones
00:43:29 <rdococ> so it drops ,?
00:43:32 <rdococ> what's , do?
00:43:33 <hppavilion[1]> rdococ: Yes
00:43:36 <hppavilion[1]> rdococ: , is GETCH
00:43:40 <rdococ> GETCH?
00:43:55 <hppavilion[1]> rdococ: , gets a single character of input (a single keypress) and PUSHes its ord() onto the stack
00:44:12 <hppavilion[1]> rdococ: So , $ is a GETCH that doesn't change the stack
00:44:26 <rdococ> cool
00:44:28 <rdococ> sounds good
00:44:40 <hppavilion[1]> rdococ: But $ only drops one value; if it's an instruction that creates two new values (e.g. , ,), you need two $s
00:44:43 <rdococ> so . pops and outputs the string?
00:44:55 <rdococ> that was pushed before it
00:45:15 <rdococ> so is FORTH all like this, or does it have other things?
00:45:39 -!- XorSwap has joined.
00:47:29 <hppavilion[1]> rdococ: Yes, pretty much all stacks
00:47:29 <rdococ> hmm by the looks of it, it's all in that stack based no--hey, what about brainstack? stack based brainfuck!
00:47:38 <hppavilion[1]> rdococ: That's been done.
00:47:41 <hppavilion[1]> rdococ: Repeatedly.
00:47:42 <rdococ> wow
00:47:44 <rdococ> yeah
00:47:46 <hppavilion[1]> rdococ: Please do not make a new one.
00:47:47 <rdococ> didn't sound so good
00:48:04 <rdococ> I have not made a single bf derivative in my time here
00:48:18 <rdococ> mine are not that esoteric
00:48:41 <\oren\> my brainfuck interpreter uses a stack
00:48:47 <rdococ> wow, really?
00:48:54 <boily> \oren\: eh?
00:49:03 <rdococ> what other paradigms are there?
00:49:13 <\oren\> http://www.orenwatson.be/bfim.htm
00:51:52 <rdococ> hmm
00:51:53 <rdococ> so
00:51:58 <boily> holy syntax highlighting batman! those are some saturated colours!
00:52:05 <rdococ> a stack based language which is a more esoteric version of forth
00:52:16 <rdococ> yeah, ow my eyes
00:52:23 <rdococ> infact, rip them
00:52:24 <boily> also, you use tabs. tabs are evil. four spaces!
00:52:31 <rdococ> tabs!
00:52:34 <rdococ> tabs!
00:52:46 <boily> SPACES!
00:52:54 <rdococ> tabs are sometimes 4 spaces, sometimes 8!
00:52:58 <hppavilion[1]> boily: Tabs are configurable-width
00:53:04 <rdococ> I prefer 4. 8 looks like someone stretched it into spaghetti
00:53:15 <boily> four. spaces. 0x20. four of 'em.
00:53:18 <rdococ> and 2 looks like msl aaaaaaaaaaaaaah
00:53:28 <rdococ>
00:53:31 <hppavilion[1]> boily: You can tell it how wide you want your tabs to be in spaces. So tabs allow better personal preferences
00:53:52 <rdococ> Iwillusetabsfromnowontoannoyboily
00:53:58 <rdococ> yay!
00:54:04 <rdococ> justkidding
00:54:17 <boily> and then you're going to tell me that braces go alone on their own lines.
00:54:19 <rdococ> I'mnotthatevil
00:54:22 <boily> HERETICS Y'ALL!
00:54:32 <rdococ> braces don't need to exist
00:54:37 <rdococ> lua doesn't have them
00:54:43 <rdococ> and they're filthy
00:54:45 <rdococ> dirty
00:54:47 <rdococ> unholy
00:56:53 <hppavilion[1]> Of course, I don't really care whether tabs or spaces are used; just do whatever your dev environment spits out when you hit newline
00:58:15 <zzo38> When I push newline it results in newline!
00:58:25 <rdococ> really?wow
00:58:37 <rdococ> he means
00:58:37 <rdococ> this
00:58:44 <hppavilion[1]> ais523: How would one typecheck an imperative stack-based language? Row polymorphism doesn't seem like it would help unless the language is functional.
00:59:00 <rdococ> functional FORTH?
00:59:09 <hppavilion[1]> rdococ: That will be a feature, but not the core of the langauge
00:59:32 <zzo38> (However, I generally use two spaces for indent, and put the brace on the same line as if/function/while/whatever.)
00:59:52 -!- tromp has joined.
00:59:58 -!- tromp has quit (Remote host closed the connection).
01:00:15 <hppavilion[1]> boily: I will accept your "four spaces" theology if you're willing to use ​as your space
01:00:15 -!- tromp has joined.
01:00:29 <boily> hppavilion[1]: you seem to have accidentaly a word.
01:00:34 <hppavilion[1]> boily: I did not
01:00:37 <hppavilion[1]> boily: `unidecode
01:01:33 <hppavilion[1]> `unidecode use ​as
01:01:46 <rdococ> hppavilion[1]: declarative FORTH
01:01:58 <hppavilion[1]> rdococ: That's kind of pointless
01:02:14 <rdococ> it is?
01:02:25 <hppavilion[1]> rdococ: FORTH is good because it's fast and works well with the low-level system, which does /not/ go well declarative languages
01:02:34 <rdococ> declarative prologassembly?
01:02:51 <hppavilion[1]> rdococ: Granted, if you can make a schema for a low-level language that works well on bare metal, I will concede
01:03:20 <rdococ> basically, the prolog processor would take data, then apply all the substitution rules in a loop
01:03:34 <hppavilion[1]> rdococ: It has to work well on arbitrary, typical processors
01:03:41 <rdococ> oh
01:03:42 <hppavilion[1]> rdococ: Like an intel
01:03:53 <zzo38> I think Forth is probably good for including in ROM BIOS (some old computers include BASIC), and can also be used as the built-in programming environment of a system that doesn't otherwise have one it can work good too
01:04:02 <rdococ> you mean a language, not the processor we were gonna design
01:04:14 <hppavilion[1]> rdococ: Yes
01:04:22 <hppavilion[1]> rdococ: We can still design a processor.
01:04:47 <rdococ> hmm
01:05:04 <rdococ> declarative languages still have some form of order to them, just not top to bottom
01:05:07 <hppavilion[1]> rdococ: But if you can find a way to (abstractly) make a declarative language that works well on bare metal, I will concede and help you design implement the rest of it
01:05:10 <rdococ> e.g. church numerals
01:05:11 <hppavilion[1]> rdococ: Correct
01:05:26 <rdococ> hmm
01:05:29 <hppavilion[1]> rdococ: Church encoding is best to avoid in actual computing
01:05:51 <hppavilion[1]> rdococ: Practically speaking, using church encoding is horribly inefficient. It's much better to just let the language access the actual computer.
01:05:53 <rdococ> hppavilion[1]: church numerals would be really slow, wouldn't support fractions
01:06:02 <hppavilion[1]> rdococ: Church encoding can support fractions
01:06:10 <rdococ> it can, but it'd still be slow
01:07:21 <rdococ> hmm
01:07:23 <hppavilion[1]> (λxyz.zxy)(λsx.s(s(x)))(λsx.s(s(s(x))))
01:07:26 <rdococ> well,
01:07:33 <hppavilion[1]> rdococ: Look into x86 to start
01:07:53 <rdococ> every instruction is bound to have a side effect when it's machine code
01:08:10 <rdococ> I has x64
01:08:16 <hppavilion[1]> rdococ: https://en.wikipedia.org/wiki/X86#Basic_properties_of_the_architecture
01:08:23 <rdococ> but I will look
01:08:26 <hppavilion[1]> rdococ: x64 is still x86
01:08:33 <hppavilion[1]> rdococ: I think. It's confusing
01:08:46 <hppavilion[1]> x64 is the 64-bit variant of x86, which is 32-bit (originally 16-bit)
01:08:52 <hppavilion[1]> I think
01:10:05 <rdococ> k
01:10:11 -!- tromp has quit (Remote host closed the connection).
01:10:42 <rdococ> CISC
01:11:29 <hppavilion[1]> rdococ: You are correct that at ASM levels, all instructions tend to have side effects. This is why you should start with a robust framework for allowing side effects in your BMDL (bare-metal declarative language. Feel free to rename it now)
01:11:58 <hppavilion[1]> I would recommend naming it after a bird of prey for now, or a mythical creature
01:11:58 <rdococ> k
01:12:03 <rdococ> Pheonix
01:12:08 <hppavilion[1]> You can always rename it later
01:12:12 <rdococ> both bird and mythical
01:12:17 <hppavilion[1]> rdococ: I was seeing if you would choose that xD
01:12:21 <rdococ> and melts metal
01:12:27 <hppavilion[1]> rdococ: Oooh, that's good
01:12:31 <hppavilion[1]> I didn't think of that
01:12:35 <rdococ> xd
01:12:56 <rdococ> hmm
01:13:16 <hppavilion[1]> rdococ: So what kind of language do you want this to be? Most declarative languages are functional, logical, or functional-logic (which is the one I know the least about, despite being literally just functional+logic)
01:13:23 <hppavilion[1]> But you can also base it off other systems
01:13:36 <rdococ> hmm
01:13:56 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
01:14:22 <rdococ> well, stringal?
01:14:24 <hppavilion[1]> rdococ: You might want to choose to do something marginally declarative to start, like using FSMs for CF
01:14:36 <hppavilion[1]> rdococ: Like Thue?
01:14:39 <rdococ> yeah
01:14:40 <rdococ> thue
01:14:46 <rdococ> hmm
01:14:49 <hppavilion[1]> rdococ: That's going to be a MASSIVE pain to pull off, as most low-level architectures don't do strings very well
01:15:01 <rdococ> well, apply that string substitution idea
01:15:07 <rdococ> to memory
01:15:17 <hppavilion[1]> rdococ: Consider that a string will almost always change length when substituted
01:15:25 <hppavilion[1]> rdococ: That'll be pretty inefficient
01:15:31 <rdococ> true
01:15:33 <rdococ> hmm
01:16:37 <rdococ> so it has to be easily convertible into machine code, and yet a non-imperative flow
01:17:00 <hppavilion[1]> rdococ: I would just choose Logic or Functional. Functional is better understood by most people (including me), so I'd stick with that.
01:17:45 <rdococ> which one would be easier to pull off in a low level language?
01:18:05 <hppavilion[1]> rdococ: Probably functional, TBH
01:18:48 <rdococ> "functional programming uses functions while logic programming uses predicates. A predicate is not a function; it does not have a return value. Depending on the value of it's arguments it may be true or false; if some values are undefined it will try to find the values that would make the predicate true."
01:18:54 <rdococ> that makes sense
01:19:00 <rdococ> I guess functional is the way to go then
01:19:12 <hppavilion[1]> rdococ: Yep
01:22:20 <hppavilion[1]> rdococ: I seem to have forgotten, what are we trying to do? xD
01:22:34 <hppavilion[1]> rdococ: We're making a bare-metal declarative language, aren't we
01:23:20 <rdococ> yes
01:23:57 -!- idris-bot has quit (Ping timeout: 248 seconds).
01:24:15 <rdococ> all of the memory in a Pheonix program would be local to their "functions"
01:24:19 <rdococ> nah
01:24:25 <hppavilion[1]> rdococ: That probably won't work well.
01:24:34 <rdococ> or
01:24:37 <hppavilion[1]> rdococ: So we want this to be the kind of thing you might write an OS with?
01:24:40 <rdococ> all memory is cleared when you enter a goto?
01:24:54 <hppavilion[1]> rdococ: Functional languages generally don't /have/ gotos
01:24:57 <Taneb> For any graph does there exist a topology in which it is planar?
01:25:08 <hppavilion[1]> rdococ: They have call/cc sometimes, but that's as close as it gets
01:25:27 <Taneb> hppavilion[1], counterpoint: http://hackage.haskell.org/package/GotoT-transformers-
01:25:29 <rdococ> hppavilion[1]: but they have functions which don't fit a low level language, so goto is the closest we'll get
01:25:41 <hppavilion[1]> rdococ: OK
01:25:51 <hppavilion[1]> rdococ: Do we want the language to directly manipulate memory?
01:26:11 <hppavilion[1]> rdococ: Like, with support for MOV and such?
01:26:14 <hppavilion[1]> rdococ: e.g. should it be like a declarative ASM, or more like a declarative C?
01:26:52 <rdococ> ASM definitely
01:26:54 <rdococ> hmm
01:27:23 <hppavilion[1]> rdococ: OK
01:27:25 <rdococ> should we define "declarative" as a different kind of control flow, or as no side effects?
01:27:28 <hppavilion[1]> rdococ: That means no type system
01:27:33 <rdococ> fine by me
01:27:35 <hppavilion[1]> rdococ: Functional is no side effects
01:27:47 <hppavilion[1]> rdococ: Declarative is control flow, usually
01:27:50 <rdococ> that's bound to be impossible if we want to keep it low level
01:27:56 <hppavilion[1]> rdococ: "Declarative" is really just "not imperative"
01:28:02 <rdococ> we could do declarative with side effects
01:28:04 <hppavilion[1]> rdococ: Well, Haskell has "no side effects"
01:28:09 <hppavilion[1]> rdococ: In a way
01:28:12 <rdococ> haskell is functional
01:28:20 <hppavilion[1]> rdococ: Yes.
01:28:46 <hppavilion[1]> rdococ: It's not "No side effects" so much as "side effects are done in a way that makes it fit certain properties"
01:29:16 <rdococ> okay
01:29:18 <rdococ> so
01:29:43 <rdococ> basically, Pheonix would be an ASM-like language with a declarative control flow.
01:29:56 <rdococ> instead of going top to bottom with gotos and a loop
01:31:09 <rdococ> hmm
01:31:55 <rdococ> the way I see it, functional is just no memory
01:32:09 <hppavilion[1]> rdococ: Perhaps it should have FSM-like nodes?
01:32:15 <rdococ> perhaps
01:32:25 <hppavilion[1]> And nodes can do one of two things
01:32:29 <hppavilion[1]> (1) Activate other nodes
01:32:32 <rdococ> what would a node look like? one line? or like a subroutine but different
01:32:48 <hppavilion[1]> (2) Return to their caller
01:32:55 <rdococ> k
01:33:04 <hppavilion[1]> Along with various functionalized ASM instructions
01:33:25 <rdococ> they'd be able to return values to their caller, right?
01:34:05 -!- Frooxius has quit (Read error: Connection reset by peer).
01:34:43 <hppavilion[1]> rdococ: Of course.
01:34:48 <rdococ> right
01:35:01 <boily> hppavilion[1]: Zucchini.
01:35:07 <hppavilion[1]> rdococ: But they'd only be able to return 64-bit integers
01:35:16 <hppavilion[1]> boily: No, that's more neural network than FSA
01:35:20 <rdococ> so f(g(3, h())) would activate node f, which would activate g, which would activate h, which would return...
01:35:22 <hppavilion[1]> boily: Node activation is more like calling
01:35:26 <hppavilion[1]> boily: I misspoke
01:35:32 <rdococ> like my example?
01:35:40 <rdococ> but of course it would be ASMized
01:36:11 <rdococ> nodes would have access to some operations, like addition
01:36:59 <hppavilion[1]> rdococ: Yep
01:37:00 <rdococ> hmm
01:37:12 <hppavilion[1]> rdococ: Yes, but they are limited to side effect-reduced instructions
01:37:19 <rdococ> and they wouldn't have as much side effects
01:37:29 <hppavilion[1]> rdococ: So things like MOV are handled by the compiler, rather than by the programmer
01:37:42 <rdococ> even though it's an ASM like language
01:37:57 -!- jaboja has joined.
01:38:00 -!- tromp has joined.
01:38:06 <rdococ> it hardly sounds like assembly :/
01:38:33 <rdococ> also, i/o is important
01:39:43 <hppavilion[1]> rdococ: Yes, I/O would be handled by special nodes I think
01:40:37 <rdococ> so this is like little ASM programs that activate other little program nodes or return to their caller
01:40:51 <rdococ> wait, can a node activate other nodes and return at the same time?
01:41:03 <rdococ> or return after activating other nodes
01:41:17 <hppavilion[1]> rdococ: (a) It is like that (b) It can't activate other nodes while returning
01:41:26 <hppavilion[1]> rdococ: But it can activate then return
01:41:33 <hppavilion[1]> rdococ: "Activate" was poor word choice on my part
01:41:37 <hppavilion[1]> It's more like calling
01:41:39 <rdococ> yes
01:41:40 <rdococ> calling
01:41:44 <rdococ> that's how I imagined it
01:41:46 <hppavilion[1]> rdococ: Let's translate http://wiki.osdev.org/Bare_bones into a mockup in this language
01:42:28 <rdococ> what about output?
01:42:32 <hppavilion[1]> rdococ: Do you know of any online collaborative compilers?
01:42:46 <rdococ> output is usually where most functional languages can't avoid side effects
01:42:49 <hppavilion[1]> rdococ: You call a special node with desired output
01:43:01 <hppavilion[1]> rdococ: Input is where the issues lie; output is just fine
01:43:29 <rdococ> I guess the only "memory" this would have is which node is activated
01:43:33 <rdococ> running*
01:43:50 <hppavilion[1]> rdococ: So to print "A", you'd do something like `out(65)' with
01:43:56 <hppavilion[1]> s/ with//
01:44:05 <hppavilion[1]> rdococ: Correct
01:44:13 <rdococ> one issue is that if you need to use input for more than one thing - like 3 + (x - (5 + 2x))
01:44:29 <hppavilion[1]> rdococ: Everything memorial is dealt with by the compiler
01:44:32 * boily is singing mrs. robinson ♪
01:44:48 <hppavilion[1]> rdococ: That's a good observation
01:44:50 <rdococ> but how would you tell the compiler that we need a previous input?
01:45:11 <hppavilion[1]> rdococ: I would have something like a "one-shot input function"
01:45:17 <rdococ> one-shot?
01:45:26 <hppavilion[1]> rdococ: It gets input the first time it's called, and on all subsequent calls it returns that value
01:45:50 <rdococ> uh
01:45:52 <rdococ> maybe
01:45:58 <rdococ> but then how do you get another input?
01:46:05 <rdococ> would you be able to call things with values?
01:46:18 <rdococ> e.g. pass arguments like f(3, g(2))
01:46:54 <hppavilion[1]> rdococ: http://collabedit.com/7k7sj
01:46:55 <rdococ> hmm
01:47:39 <rdococ> that editor is terrible, I can't even chat properly
01:47:53 <rdococ> just remembered titanpad
01:48:07 <hppavilion[1]> rdococ: Ooh, linky?
01:48:22 <rdococ> titanpad.com
01:48:38 <rdococ> no sign up, instantly start typing
01:48:42 <hppavilion[1]> rdococ: Should I create the doc or you?
01:48:54 <hppavilion[1]> https://titanpad.com/VGxMnOzLl4
01:49:02 <rdococ> https://titanpad.com/fHMbT3YH5G
01:49:08 <rdococ> ah, let's use yours
01:52:48 -!- Frooxius has joined.
01:52:54 -!- Frooxius has quit (Remote host closed the connection).
01:58:16 -!- Sgeo has joined.
02:07:08 -!- Frooxius has joined.
02:08:26 <rdococ> connection keeps cutting off
02:08:29 <rdococ> to titanpad
02:08:51 <hppavilion[1]> rdococ: Ah
02:08:59 <hppavilion[1]> rdococ: I'll make a custom doceditor later
02:19:37 -!- XorSwap has quit (Quit: Leaving).
02:30:57 <zzo38> The documentation of new version of SmileBASIC does not mention any QR codes, but it does seem it may be possible to store a program on a tape.
02:31:40 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
02:32:53 -!- boily has quit (Quit: MERCHANDISE CHICKEN).
02:34:37 -!- iconmaster has quit (Ping timeout: 268 seconds).
02:35:40 -!- hppavilion[1] has joined.
02:38:26 <hppavilion[1]> rdococ: I'm back
02:38:52 <rdococ> hi
02:38:58 -!- bb010g has quit (Quit: Connection closed for inactivity).
02:42:49 -!- tromp has quit (Remote host closed the connection).
02:44:15 -!- rdococ has quit (Read error: Connection reset by peer).
02:54:18 <\oren\> https://www.youtube.com/watch?v=s0mXCnzisV4
02:55:49 <hppavilion[1]> \oren\: ...huh?
02:56:57 <\oren\> shāyú!
02:57:25 <hppavilion[1]> Hm...
02:58:02 -!- Reece` has quit (Quit: Leaving).
02:59:08 <hppavilion[1]> \oren\: I'm designing an IL/Processor and trying to figure out what I'm missing...
03:07:40 -!- tromp has joined.
03:09:04 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
03:11:49 -!- me2 has quit (Read error: Connection reset by peer).
03:13:01 -!- me2 has joined.
03:13:40 <zzo38> What do you have so far?
03:17:40 -!- hppavilion[1] has joined.
03:26:08 <zzo38> What do you have so far?
03:28:46 <hppavilion[1]> Hm...
03:28:50 <hppavilion[1]> zzo38: Me?
03:29:34 <hppavilion[1]> I kind of want to adapt the processor into a full emulated computer...
03:29:36 <zzo38> Yes
03:31:29 <hppavilion[1]> zzo38: For the processor, I have registers, a memory model, and a collection of instructions
03:31:46 <hppavilion[1]> Register manipulation
03:31:51 <hppavilion[1]> Arithmetic
03:31:52 <hppavilion[1]> Logic
03:32:01 <hppavilion[1]> Left shift
03:32:09 <hppavilion[1]> JMP/JZ/JNZ
03:32:18 <hppavilion[1]> CJMP
03:32:27 <hppavilion[1]> Relations
03:32:32 <hppavilion[1]> And load-store
03:33:09 <zzo38> Does it use any special registers?
03:34:11 <hppavilion[1]> zzo38: Special registers as in things like an accumulator?
03:34:29 <hppavilion[1]> If so, yes. ACC, IMP, EXP
03:34:43 <hppavilion[1]> And in processor mode, CDE and ARG
03:34:46 <zzo38> What do those registers do?
03:34:56 <shachaf> hi zzo38
03:34:58 <hppavilion[1]> zzo38: ACC is where all arithmetic operations are done
03:35:04 <shachaf> Do you like the Mill CPU?
03:35:08 <hppavilion[1]> IMP and EXP are for loads and stores respectively
03:35:32 <hppavilion[1]> And CDE and ARG are for syscalls or whatever. For messing with BIOS or something.
03:35:59 <zzo38> I don't know what is Mill CPU?
03:36:37 <hppavilion[1]> I'm considering writing a custom BIOS for it, too
03:37:00 <zzo38> I found some information of Mill CPU on Wikipedia
03:40:09 <shachaf> zzo38: You can find some more information at millcomputing.com
03:40:35 <shachaf> zzo38: It's a CPU architecture with all sorts of exciting features. You should watch the talks on the website, if you do video.
03:41:43 <zzo38> I like some of the ideas
03:50:59 <\oren\> `u8tbl 0x0363 0x036f
03:51:16 <shachaf> zzo38: Which ideas?
03:51:19 <HackEgo> ​ͣͤͥͦͧͨͩͪͫͬͭͮͯ
03:52:52 <\oren\> `` u8tbl 0x0363 0x036f | sed s/../ &/g
03:52:55 <HackEgo> sed: -e expression #1, char 5: unterminated `s' command \ /hackenv/bin/`: line 4: /g: No such file or directory
03:53:03 <\oren\> `` u8tbl 0x0363 0x036f | sed 's/../ &/g'
03:53:05 <HackEgo> ​ ͣͤ ͥͦ ͧͨ ͩͪ ͫͬ ͭͮͯ
03:53:12 <\oren\> `` u8tbl 0x0363 0x036f | sed 's/./ &/g'
03:53:15 <HackEgo> ​ ͣ ͤ ͥ ͦ ͧ ͨ ͩ ͪ ͫ ͬ ͭ ͮ ͯ
03:56:11 <\oren\> `u8tbl 0x10900 0x10915
03:56:12 <HackEgo> ​𐤀𐤁𐤂𐤃𐤄𐤅𐤆𐤇𐤈𐤉𐤊𐤋𐤌𐤍𐤎𐤏 \ 𐤐𐤑𐤒𐤓𐤔𐤕
03:56:19 <\oren\> rrgh
03:57:23 <\oren\> why won't my phoenician show up
03:57:49 <\oren\> `` u8tbl 0x10900 0x10915
03:57:50 <HackEgo> ​𐤀𐤁𐤂𐤃𐤄𐤅𐤆𐤇𐤈𐤉𐤊𐤋𐤌𐤍𐤎𐤏 \ 𐤐𐤑𐤒𐤓𐤔𐤕
03:58:45 <\oren\> `` u8tbl 0x1d434 0x1d467
03:58:47 <HackEgo> ​𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿 \ 𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍𝑎𝑏 \ 𝑐𝑑𝑒𝑓𝑔𝑕𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟 \ 𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧
03:58:58 <\oren\> italic does fine
03:59:06 <ais523> huh, my client can render all of those apart from the lowercase h
03:59:21 <ais523> what a weird omission
03:59:30 <\oren\> the h is a noncharacter
04:00:12 <\oren\> it is filled by the ℎ in letterlike symbols
04:02:44 <\oren\> `u8tbl 0x2d00 0x2d25
04:02:48 <HackEgo> ​ⴀⴁⴂⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏ \ ⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟ \ ⴠⴡⴢⴣⴤⴥ
04:04:01 <\oren\> `u8tbl 0x10c7 0x10c7
04:04:03 <HackEgo> ​Ⴧ
04:05:16 <\oren\> `u8tbl 0x10cd 0x10cd
04:05:18 <HackEgo> ​Ⴭ
04:06:08 <\oren\> `u8tbl 0x10fa 0x10ff
04:06:09 <HackEgo> ​ჺ჻ჼჽჾჿ
04:07:55 <\oren\> `u8tbl 0x2d27
04:07:56 <HackEgo> ​/hackenv/bin/u8tbl: line 1: 293 Segmentation fault u8tbl.exe $@
04:08:01 <\oren\> `u8tbl 0x2d27 0x2d27
04:08:02 <HackEgo> ​ⴧ
04:08:35 <\oren\> `u8tbl 0x2d2d 0x2d2d
04:08:36 <HackEgo> ​ⴭ
04:09:21 <\oren\> `u8tbl 0x0528 0x052f
04:09:22 <HackEgo> ​ԨԩԪԫԬԭԮԯ
04:09:59 <hppavilion[1]> \oren\: ooh, segfault.
04:10:05 <hppavilion[1]> \oren\: Don't be a dick to computers
04:10:28 <\oren\> `u8tbl 0x26e8 0x26eb
04:10:30 <HackEgo> ​⛨⛩⛪⛫
04:12:19 <\oren\> `u8tbl 0x37f 0x37f
04:12:20 <HackEgo> ​Ϳ
04:12:34 <\oren\> rrgh glitched
04:12:53 <\oren\> ok so some characters need fixing...
04:14:54 <hppavilion[1]> Hm...
04:14:58 <hppavilion[1]> How should my processor work?
04:15:14 <hppavilion[1]> It has the necessary instructions already
04:23:44 <\oren\> oh I see why phoenician doesnt work!
04:23:59 <\oren\> it's rtl!
04:25:25 <hppavilion[1]> \oren\: Fail!
04:25:33 <hppavilion[1]> :)
04:27:20 <\oren\> and irssi desn't know that it exists
04:28:16 <\oren\> whatever, i added 𐤀𐤁𐤂𐤃𐤄𐤅𐤆𐤇𐤈𐤉𐤊𐤋𐤌𐤍𐤎𐤏𐤐𐤑𐤒𐤓𐤔𐤕 to the font demo anyway
04:28:53 <\oren\> `unidecode 𐤀𐤁𐤂𐤃
04:29:55 <\oren\> `botsnack
04:30:00 <HackEgo> ​>:-D
04:30:23 <\oren\> Hackygo knows phoenician
04:34:07 -!- Hurqalya has joined.
04:34:42 -!- Hurqalya has left.
04:34:47 <hppavilion[1]> (hit him (between (get-attr him eyes)))
04:35:04 <hppavilion[1]> (assert (not (has-attr me self-esteem)))
04:36:03 <hppavilion[1]> (with (both (* 1000 lie) good-disguise) (hit him (between (get-attr him eyes))))
04:36:14 <hppavilion[1]> s/both/all
04:36:21 <hppavilion[1]> s/all/all\//
04:48:51 -!- Hurqalya has joined.
04:57:12 -!- bb010g has joined.
05:03:16 -!- tromp has quit (Remote host closed the connection).
05:06:52 -!- Hurqalya has quit (Ping timeout: 260 seconds).
05:07:11 -!- Hurqalya has joined.
05:09:45 <hppavilion[1]> YES! MY HEX GENERATOR WORKS!
05:15:14 <hppavilion[1]> (Not to be confused with a hex editor)
05:21:35 -!- ais523 has quit.
05:21:46 -!- Hurqalya has quit (Remote host closed the connection).
05:22:04 -!- Hurqalya has joined.
05:28:49 <hppavilion[1]> YES!
05:28:51 <hppavilion[1]> IT WORKS!
05:28:54 <hppavilion[1]> THE PROCESSOR WORKS!
05:29:04 * hppavilion[1] dances
05:30:15 <hppavilion[1]> I THINK!
05:30:26 <hppavilion[1]> Memory is saved in a .mem file
05:30:30 <hppavilion[1]> As bytes
05:31:06 <hppavilion[1]> In the process, I invented a simple program that allows me to generate memory files with a simple hex-based syntax
05:33:15 -!- jaboja has quit (Ping timeout: 246 seconds).
05:33:26 -!- Hurqalya has left.
05:46:09 -!- jaboja has joined.
05:47:11 -!- Kaynato has quit (Ping timeout: 244 seconds).
05:49:47 * hppavilion[1] rings the esobell
05:51:03 <zgrep> The esobell shakes a bit, then sends out three notes of silence.
06:09:15 <hppavilion[1]> zgrep: I have my processor working
06:09:27 <hppavilion[1]> I've only implemented MOV, SWP, and NOP so far, but it's getting there
06:09:51 <zgrep> But those instructions are far too normal. :P
06:09:59 <hppavilion[1]> zgrep: I'm not at the eso part yet
06:10:06 <zgrep> They're already too normal. :P
06:10:13 <hppavilion[1]> zgrep: Also, this is more a target platform than an esolang
06:10:25 <zgrep> People don't want to be able to *use* things, not really. :P
06:10:32 <hppavilion[1]> zgrep: I'm planning to write an esos for it
06:17:11 <hppavilion[1]> zgrep: One of my goals is to make a low-level functional language that compiles to it, thus allowing me to make the OS partially in something like Haskell
06:22:47 -!- lambda-11235 has quit (Quit: Bye).
06:24:19 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
06:33:35 -!- hppavilion[1] has joined.
06:53:27 -!- tromp has joined.
06:57:55 -!- tromp has quit (Ping timeout: 248 seconds).
06:58:33 -!- jaboja has quit (Ping timeout: 240 seconds).
07:15:38 -!- jaboja has joined.
07:54:57 -!- tromp has joined.
07:58:56 -!- tromp has quit (Ping timeout: 244 seconds).
08:03:25 -!- jaboja has quit (Ping timeout: 248 seconds).
08:36:53 -!- deltab has quit (Ping timeout: 250 seconds).
08:37:13 -!- heroux has quit (Ping timeout: 268 seconds).
08:38:28 -!- heroux has joined.
08:38:40 -!- deltab has joined.
08:39:29 -!- me2 has quit (Ping timeout: 250 seconds).
08:39:29 -!- pdxleif has quit (Ping timeout: 250 seconds).
08:41:39 -!- fractal has quit (Ping timeout: 250 seconds).
08:44:47 -!- me2 has joined.
08:45:29 -!- pdxleif has joined.
08:55:26 <zzo38> An alternative XML representation for RDF could be made up in order to make it easier to use with XSLT, since the standard RDF/XML isn't suitable for this purpose.
09:03:56 <zzo38> (There otherwise probably isn't much point in using XML)
09:04:54 -!- jaboja has joined.
09:05:18 -!- tromp_ has joined.
09:09:52 -!- tromp_ has quit (Ping timeout: 252 seconds).
09:25:16 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
09:31:28 -!- fractal has joined.
09:40:07 -!- mychal has joined.
09:44:14 -!- oerjan has joined.
09:45:24 <oerjan> still no glogbot :(
09:48:52 -!- AnotherTest has joined.
09:49:04 <int-e> clog is there though
09:49:25 <int-e> (good *yawn* morning)
09:49:43 <oerjan> yes, but it's so much less readable to my eyes
09:51:20 <shachaf> you can postprocess the logs hth
09:51:36 <shachaf> i think postprocessing is just called processing
09:51:48 <oerjan> i am, in vim
09:52:17 <shachaf> whoa whoa whoa
09:52:25 <shachaf> does glog stand for gregor log
09:52:40 <oerjan> :%s/\(.\{85\}\) /\1^M /
09:52:52 <oerjan> just do that enough times, and i get wrapping
09:53:06 <oerjan> shachaf: quite possible
09:53:43 <oerjan> *i do
09:55:32 -!- J_Arcane has quit (Ping timeout: 268 seconds).
10:08:59 <zzo38> You can use the "fmt" program to implement word wrapping
10:10:45 <oerjan> this is in windows.
10:15:26 <oerjan> also, i don't see fmt supporting my need to have the continuation lines be indented more
10:15:49 <oerjan> (otherwise it's even more unreadable than unformatted)
10:26:06 <oerjan> `le/rn spaghetti stack/A spaghetti stack is the most edible data structure.
10:26:46 <HackEgo> Learned «spaghetti stack»
10:27:19 <shachaf> A spaghetti stack is what a Haskell programmer would call a linked list, right?
10:27:27 <oerjan> i dunno
10:28:20 <oerjan> seems so.
10:29:00 -!- AnotherTest has quit (Ping timeout: 246 seconds).
10:32:55 -!- Elronnd has quit (Quit: Let's jump!).
10:34:08 -!- Elronnd has joined.
10:41:14 <oerjan> @tell rdococ It's spelled "Phoenix" hth
10:41:14 <lambdabot> Consider it noted.
10:43:24 <oerjan> <Taneb> For any graph does there exist a topology in which it is planar? <-- wat. "planar" means in the plane, no other topology allowed hth
10:44:26 <oerjan> @tell Taneb Not every graph can be embedded in the plane. Every (finite) graph can be embedded in R^3.
10:44:26 <lambdabot> Consider it noted.
10:50:26 -!- jaboja has quit (Remote host closed the connection).
11:04:00 -!- mychal has quit (Quit: Leaving).
11:05:57 -!- hipsterslapfight has joined.
11:24:29 -!- boily has joined.
11:25:08 <oerjan> hobbily
11:27:34 -!- jaboja has joined.
11:30:29 <int-e> oerjan: oooh, does it still work when the graph has the same cardinality as R? (assuming the axiom of choice... I suppose it does but it's a bit tricky to argue about it.
11:30:32 <int-e> )
11:30:40 <boily> bon matørjan.
11:31:48 <oerjan> int-e: hm i vaguely think i saw a trick where you use two planes and straight lines between them
11:32:09 <oerjan> and with a bit of care the lines never cross outside the planes
11:32:27 <oerjan> (one plane for edges and one for nodes, i guess)
11:32:49 <oerjan> might not even need AoC
11:32:51 <int-e> oh, I realize I was hoping to use straight lines for the edges
11:34:39 <oerjan> hm you just need a line for the nodes, maybe.
11:35:40 <oerjan> then an edge from not x to node y consists of a line from (0,0,x) to (x,y,0) and a line from (x,y,0) to (0,0,y). or something like that.
11:35:44 <oerjan> *node
11:35:53 <oerjan> *line segment
11:41:11 <oerjan> int-e: oh. don't about a single straight line per edge.
11:41:20 <oerjan> *don't know
11:43:25 <oerjan> https://en.wikipedia.org/wiki/Graph_embedding#Embeddings_of_graphs_into_higher-dimensional_spaces has a method.
11:43:29 <int-e> ah, you can just put the nodes on the curve (x,x^2,x^3).
11:43:47 <oerjan> int-e: ooh
11:46:18 <int-e> damn what is this kind of matrix called again... [1,x,x^2;1,y,y^2;1,z,z^2]
11:47:08 <oerjan> rings a bell.
11:47:26 <int-e> https://en.wikipedia.org/wiki/Vandermonde_matrix
11:47:42 <int-e> (found it via polynomial interpolation)
11:48:20 <int-e> anyway, the 4-D case shows that no 4 distinct points of (x,x^2,x^3) lie in a plane... this generalizes to arbitrary dimensions.
11:49:51 <oerjan> that doesn't quite imply no intersections.
11:49:56 <int-e> (hmm, there's some projective geometry element in there. nice.)
11:50:29 <oerjan> or wait, does it
11:50:53 <oerjan> bah of course it does.
11:52:15 <int-e> in projective coordinates, (x^3,x^2,x,1), (y^3,y^2,y,1), (z^3,z^2,z,1), (t^3,t^2,t,1) lie in the same plane if they are linearly dependent... but the determinant is (x-y)(x-z)(x-t)(y-z)(y-t)(z-t), which is only 0 if two of the points are the same.
11:52:29 <int-e> (modulo sign of the determinant... I didn't check that)
11:53:01 <oerjan> mhm
11:53:20 <b_jonas> I just had the stupidest idea for an M:tG card ever.
11:53:37 <zzo38> I have written some program dealing with farbfeld and one thing is that the command "ff-gradient 100 100 r FF0000 DDDDDD 0000FF | ff-paeth e | ff-bright a 1 | ffpng > /var/www/img_19/example1.png" results in this picture: http://zzo38computer.org/img_19/example1.png
11:53:43 <zzo38> b_jonas: What idea is it?
11:56:41 <b_jonas> It's a split card. Slough | G | Sorcery | You may put a Swamp from your hand onto the battlefield tapped. || Slough | G | Sorcery | Tap target Snake. It doesn't untap during its controller's next untap step.
11:58:47 <zzo38> I would think that each half should have a different name?
11:59:02 <zzo38> (Although a similar effect could also be made as a modal spell)
12:01:03 <b_jonas> zzo38: yes, that's part of why it's stupid. Runed Halo needs you to be able to name half of a split card.
12:03:33 <b_jonas> I guess a modal spell could work. So that would be. Slough | G | Sorcery | Choose one. / - You may put a Swamp from your hand onto the battlefield tapped. / - Tap target Snake. It doesn't untap during its controller's next untap step.
12:06:25 <zzo38> Runed Halo would still work though even if both half have the same name; it give you protection from both (although your card does not target, damage, or become attached to players; also it seem to me that half of split card are supposed to have two different names anyways)
12:06:42 <b_jonas> zzo38: how does Conjurer's Ban work?
12:07:47 <b_jonas> zzo38: or Pithing Needle ... although an activated ability would hardly fit on half of a split card
12:09:04 <zzo38> While on the stack it only has one name; in all other zones the split card has two names, is I think how it is working.
12:11:44 <b_jonas> Hmm, actually, looking at existing split cards, I think you could fit a sorcery ability and an activated channel or forecast or cycling ability on a split card. Channel would be a bad match for other reasons, but forecast or cycling could go into a fuse bar.
12:12:14 <b_jonas> Although that would require a two line high fuse bar.
12:12:16 <b_jonas> Hmm.
12:12:35 <b_jonas> Well, forecast would. Cycle would fit in one line.
12:12:44 <b_jonas> s/Cycle/cycling
12:12:56 <zzo38> (So if it is a permanent card (although no existing split cards are), then regardless of which half is cast, it is both while in play.)
12:13:26 <b_jonas> Um, permanent cards don't get to be split cards, they get to be primal clay instead, which is even more confusing.
12:14:16 <b_jonas> Just like split cards and morph cards and flip cards and double-sided cards, primal clay cards have their *copiable* characteristics changing.
12:14:41 <b_jonas> And it's not just one very old card (Primal Clay), they printed another one recently
12:15:14 <b_jonas> Molten Sentry
12:15:18 <b_jonas> ok, not very recent
12:15:24 <b_jonas> in Ravnica
12:16:05 <b_jonas> Oh, and they reprinted the actual Primal Clay in M13
12:16:27 <b_jonas> Making it a split card or flip card would have been less confusing.
12:17:05 <b_jonas> No wait, Primal Clay has three modes. Then you're screwed anyway, it can't be represented as a split or flip card.
12:21:00 <zzo38> Primal Clay function in battlefield
12:26:20 -!- boily has quit (Quit: SERIF CHICKEN).
12:35:51 <b_jonas> zzo38: yep.
12:36:00 <b_jonas> zzo38: and split cards on the stack.
12:37:09 <b_jonas> but they basically do the same thing: multiple sets of characteristics, one of which is active in that zone.
12:37:37 <b_jonas> flip and transform and morph also do that, only those change within that battlefield without becoming a new object (but possibly gaining a new timestamp)
12:46:20 <Taneb> @messages-load
12:46:20 <lambdabot> oerjan said 2h 1m 54s ago: Not every graph can be embedded in the plane. Every (finite) graph can be embedded in R^3.
12:46:40 <Taneb> oerjan, yeah, I think I was asking the wrong question
12:46:42 <oerjan> Taneb: see discussion above
12:47:47 <oerjan> Taneb: i can think of one alternative interpretation, although that one's also pretty trivial (make tubes)
12:48:02 <Taneb> I think that was what I meant
12:49:49 <oerjan> you can put some graphs on the torus that aren't planar, was that what you were thinking of?
12:50:08 <oerjan> but if you just glue more tubes on, you can embed any graph.
12:53:44 <oerjan> eek is xkcd having one of those big explorable ones again
12:57:23 <oerjan> am i suppose to watch the plants grow, or what.
12:57:26 <oerjan> *+d
12:59:03 * int-e finally reads oerjan's link on graph embedding and learns about the "moment curve" name.
13:03:14 <oerjan> oh. i'd somehow missed that it listed the same thing you did.
13:03:15 -!- lleu has joined.
13:05:53 <oerjan> (the answer to the plant question is apparently yes.)
13:07:08 -!- tromp_ has joined.
13:09:07 <oerjan> oh something faster growing
13:09:09 <fizzie> On my phone there was just a tree (or something; forgot already) repeatedly flipping (horizontally); on this workstation there's nothing.
13:09:14 <b_jonas> oerjan: is taht still the april fools one?
13:09:32 <oerjan> b_jonas: i have no idea. but there are plants growing.
13:09:45 <oerjan> up to three trees now, one pretty large
13:10:17 <oerjan> i never saw anything other than excuses for being broken
13:10:22 <oerjan> for april fools
13:10:44 <oerjan> fizzie: it starts very slowly. also you should add more lights.
13:11:02 * oerjan went to explainxkcd, although that's about all it said.
13:11:24 -!- tromp_ has quit (Ping timeout: 246 seconds).
13:11:47 <oerjan> (and they never mentioned anything about april fool)
13:12:09 <oerjan> you can also adjust direction and color.
13:12:51 <oerjan> i don't see any flipping btw, just general waving in the wind
13:13:00 <oerjan> (and sudden spurts of growth)
13:13:48 <oerjan> sometimes _really_ sudden. the entire trunks seem to happen instantly
13:16:34 -!- Reece` has joined.
13:22:36 <oerjan> wait what, it seems to have reset while i was browsing elsewhere.
13:22:51 * oerjan closes
13:44:04 <fizzie> oerjan: By "nothing", I mean the top navigation bar is immediately adjacent to the bottom navigation bar.
13:45:43 <fizzie> The flipping seems to have been a "loading" screen that got stuck; on my phone it now shows up briefly, before showing what I think is what you're talking about. (At least there's a bit of ground and a lamp.)
13:45:52 <fizzie> (On the desktop there's still nothing.)
13:46:19 <oerjan> ic
13:47:10 <oerjan> getting the readers to watch grass grow certainly seems like an april fools joke.
13:47:36 <fizzie> Better than watching paint dry.
13:47:39 -!- Sgeo has quit (Read error: Connection reset by peer).
13:47:40 <oerjan> especially when it's buggy.
13:48:47 <zgrep> fizzie: Depends on the paint.
13:54:02 -!- tromp_ has joined.
13:55:00 -!- AnotherTest has joined.
14:08:23 -!- J_Arcane has joined.
14:23:16 -!- I has joined.
14:23:39 -!- I has changed nick to Guest81305.
14:26:14 -!- oerjan has quit (Quit: Later).
14:26:35 <int-e> hmm, my garden is growing aninmals. a man, a turtle, a doe?
14:26:44 <b_jonas> int-e: yep
14:26:52 -!- tromp_ has quit (Remote host closed the connection).
14:55:41 -!- lleu has quit (Quit: That's what she said).
14:57:13 -!- p34k has joined.
14:59:17 -!- rdococ has joined.
15:02:39 -!- AnotherTest has quit (Ping timeout: 276 seconds).
15:02:57 -!- AnotherTest has joined.
15:12:09 -!- lambda-11235 has joined.
15:17:53 -!- spiette has joined.
15:21:07 -!- jaboja has quit (Ping timeout: 260 seconds).
15:21:45 -!- Kaynato has joined.
15:27:34 -!- tromp_ has joined.
15:32:00 -!- tromp_ has quit (Ping timeout: 250 seconds).
15:38:58 -!- Phantom_Hoover has joined.
15:47:55 -!- lleu has joined.
16:23:43 -!- Kaynato has quit (Ping timeout: 244 seconds).
16:31:25 -!- Phantom_Hoover has quit (Quit: Page closed).
16:36:56 -!- Kaynato has joined.
16:48:57 <lynn> `? continuous chess
16:49:25 <HackEgo> continuous chess? ¯\(°​_o)/¯
16:49:40 <lynn> Where are the rules for that? It was so good
16:54:22 <rdococ> esochess
16:55:14 <lynn> `? chess
16:55:21 <HackEgo> Chess is a complex boardgame, where players exchange unclear royal steaks until they decide which of them has lost. The game is recorded through the Gringmuth Moving Pineapple Notation.
16:56:50 <rdococ> ???
17:14:58 -!- Kaynato has quit (Ping timeout: 252 seconds).
17:16:25 -!- earendel has joined.
17:21:00 -!- gniourf has quit (Quit: Leaving).
17:26:54 -!- Kaynato has joined.
17:30:50 -!- XorSwap has joined.
17:45:02 <int-e> It's a good wisdom, a nice mix of facts and fiction.
17:45:23 <b_jonas> `wisdom
17:45:44 <HackEgo> agdq/AGDQ is Awesome Games Done Quick, an annual video games speedrunning event for charity ever winter, see http://gamesdonequick.com and https://gamesdonequick.com/tracker/events/
17:45:51 <b_jonas> `wisdom
17:45:54 <HackEgo> catamorphism/A catamorphism is when you recurse too greedily and too deep.
17:46:09 <int-e> http://codu.org/logs/_esoteric/2013-08-27.txt has some more information about chess
18:25:22 -!- XorSwap has quit (Ping timeout: 252 seconds).
18:28:17 -!- tromp_ has joined.
18:31:55 -!- ais523 has joined.
18:32:53 -!- tromp_ has quit (Ping timeout: 244 seconds).
18:34:10 -!- Kaynato has quit (Ping timeout: 252 seconds).
18:38:09 -!- hppavilion[1] has joined.
18:39:41 <hppavilion[1]> rdococ: Hi
18:40:21 -!- XorSwap has joined.
18:41:38 <rdococ> hppavilion[1]: hi
18:41:50 <hppavilion[1]> rdococ: I've been implementing Gryphon
18:42:01 <hppavilion[1]> rdococ: You load os.mem and it starts executing from location 0xF0000
18:42:34 <hppavilion[1]> (os.mem is a binary file holding the bytes of non-volatile memory for Gryphon)
18:42:41 <hppavilion[1]> (You write the OS at 0xF0000 to make things work)
18:43:11 <rdococ> ok
18:43:36 <hppavilion[1]> rdococ: There's no assembly yet though
18:43:45 <rdococ> hmm
18:43:52 <hppavilion[1]> rdococ: And no memory protection, though that might be a thing the OS does (I'm not sure how that works)
18:44:02 <hppavilion[1]> So you can write self-modifying code if you're feeling diabolical
18:44:40 <rdococ> good idea
18:44:44 -!- XorSwap has quit (Ping timeout: 244 seconds).
18:44:57 <hppavilion[1]> rdococ: No, that's a bad idea. A bad, bad idea
18:45:13 <rdococ> an esoteric idea?
18:45:16 <hppavilion[1]> rdococ: I'm still trying to figure out how IO is accomplished. I can't take advantage of anything the host OS has, so I'm thinking pixel drawing
18:45:26 <hppavilion[1]> rdococ: No, it's been done before, and it's objectively evil
18:45:43 <rdococ> objectively?
18:45:52 <rdococ> how is self modifying code objectively evil?
18:47:15 * rdococ is confuse
18:47:31 <hppavilion[1]> rdococ: Because you can't read it before compiling without deep thought
18:48:08 <hppavilion[1]> rdococ: If the code changes at runtime, then (A) You can't be sure if what you're reading is everything and (B) Compilation becomes a LOT more difficult, because things might change that you weren't expecting
18:48:21 <rdococ> true
18:51:03 -!- Kaynato has joined.
19:03:00 <zzo38> Self-modifying code is OK, although it depend on the instruction set and programming language in use; in some cases it is bad or impossible. However in many cases it can probably be avoided (especially should be if the program is stored in ROM)
19:03:50 -!- Kaynato has quit (Ping timeout: 244 seconds).
19:11:30 <b_jonas> zzo38: or when the cpu is modern enough that modifying instructions will cause lots of cache and instruction decoding penalties, and/or require a jump or even special insn cache flush instructions to make sure the cpu notices, or when the computer is multi-tasked so the same mapped executable is ran by multiple processes or threads running concurrently.
19:12:34 <b_jonas> The 6502 required self-modifying code, but at that time you didn't have reasons to avoid it. Now we do have very good reasons to avoid self-modifying code, but luckily the x86 doesn't require you to use it.
19:12:40 <zzo38> In the first case, I consider that to be a bad design. In the last case, the executable should have a flag somewhere to indicate if it needs to be mapped separately or not.
19:13:18 <b_jonas> zzo38: they do have a flag. they tell that the executable section is mapped read-only.
19:14:19 <zzo38> OK, so, normally it should map read-only and shareable, then.
19:15:25 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
19:18:40 <b_jonas> zzo38: there's probably a shareable flag too, not only access control flags
19:19:01 <b_jonas> that's how mmap works, I don't know how ELF works with executables and dynamic libraries
19:31:41 -!- Kaynato has joined.
19:48:34 -!- hppavilion[1] has joined.
20:06:42 -!- Phantom_Hoover has joined.
20:10:32 -!- Kaynato has quit (Ping timeout: 244 seconds).
20:17:18 <zzo38> Currently the wide banks of UTCE are all Japanese, although possibly one or two wide banks could be allocated for astrology if there is room.
20:23:41 -!- Kaynato has joined.
20:24:25 <zzo38> (Maybe you have a better idea though)
20:25:40 -!- Caesura has joined.
20:29:07 -!- Kaynato has quit (Ping timeout: 252 seconds).
20:29:46 -!- tromp_ has joined.
20:30:28 -!- lambda-11235 has quit (Quit: Bye).
20:33:44 -!- impomatic has joined.
20:33:58 <impomatic> Hi :-)
20:34:24 -!- tromp_ has quit (Ping timeout: 268 seconds).
20:35:05 -!- zzo38 has quit (Remote host closed the connection).
20:45:51 -!- atrapado has joined.
20:49:21 <hppavilion[1]> impomatic: Hi!
20:49:27 <hppavilion[1]> rdococ: Here's a project I started a while ago
20:49:38 * hppavilion[1] waits for rdococ to confirm that they are present
20:54:24 -!- oerjan has joined.
20:56:09 <oerjan> `? agdq
20:56:23 <HackEgo> AGDQ is Awesome Games Done Quick, an annual video games speedrunning event for charity ever winter, see http://gamesdonequick.com and https://gamesdonequick.com/tracker/events/
20:56:46 <oerjan> `` sed -i 's/ever/every/' wisdom/agdq
20:57:05 <HackEgo> No output.
21:01:28 -!- Lord_of_Life has quit (Excess Flood).
21:03:41 -!- Lord_of_Life has joined.
21:03:43 <oerjan> the moderators at the yafgc forum aren't the most prompt at deleting spam. although they do get to it eventually.
21:07:37 -!- Caesura has quit (Ping timeout: 252 seconds).
21:10:39 <rdococ> hppavilion[1]
21:10:43 <rdococ> I am not present. I am rdococ.
21:13:12 <rdococ> hppavilion[1]
21:19:10 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
21:19:13 <rdococ> ...
21:19:35 -!- hppavilion[1] has joined.
21:21:21 <rdococ> hppavilion[1]
21:21:24 <rdococ> I am rdococ, not present
21:22:30 <hppavilion[1]> rdococ: I saw
21:23:15 <hppavilion[1]> rdococ: I'm making a language called Archae, which is an anti-tarpit with no documentation.
21:23:31 <hppavilion[1]> rdococ: You can access it only via the internet, and the goal is to figure out how it works
21:23:55 <hppavilion[1]> rdococ: Would you like to help me design it
21:23:56 <hppavilion[1]> ?
21:25:17 <hppavilion[1]> (Are there dual combinators? Like k = λxy.x, so ʞ = ʞx.xy
21:25:28 <rdococ> hmm
21:25:36 <rdococ> an anti-tarpet?
21:25:38 <rdococ> tarpit*
21:26:11 <hppavilion[1]> rdococ: http://esolangs.org/wiki/Uniquode
21:26:18 <hppavilion[1]> rdococ: That's an example of an anti-tarpit
21:26:53 <rdococ> hnn
21:27:22 <shachaf> how about duel combinators
21:27:34 <shachaf> core war for lambda calculus
21:27:35 <hppavilion[1]> (It doesn't make much sense for k, as where does the y come from for ʞ, but for s it makes a bit more sense- ~Sxz(yz) = xyz)
21:27:40 <hppavilion[1]> shachaf: Oooh, sounds fun
21:27:55 <rdococ> combinatoral logic?
21:29:25 <hppavilion[1]> rdococ: You mean Combinatory logic?
21:29:37 <hppavilion[1]> rdococ: You do get PMs, don't you?
21:30:32 <rdococ> yes
21:30:35 <rdococ> I see your PM
21:30:38 <rdococ> but it doesn't make a sound
21:30:40 <hppavilion[1]> rdococ: OK, because you didn't respond
21:30:43 <hppavilion[1]> Oh
21:30:43 <rdococ> unless it mentions my name
21:30:59 <hppavilion[1]> rdococ: So answer? Do you want to help design Archae?
21:31:25 <hppavilion[1]> rdococ: We can design it on a normal temp channel so that it will alert you
21:32:34 <rdococ> maybe
21:32:39 <rdococ> nah, just use my name
21:34:29 <rdococ> hmm
21:34:32 <rdococ> so an anti-tarpit
21:34:57 <rdococ> so should it be easy to code or hard to code?
21:35:33 <int-e> it should overwhelm you with possibilities so it's impossible to know where to begin
21:35:58 <rdococ> okay
21:36:07 <rdococ> so take Lua, make a billion massive libraries, done
21:36:16 <rdococ> or virtually any other language
21:36:27 <hppavilion[1]> rdococ: No, it's like Uniquode
21:36:39 <hppavilion[1]> rdococ: It's a character-by-character thing
21:36:45 <rdococ> hm
21:36:46 <rdococ> okay
21:36:52 <rdococ> so how many characters can we use?
21:37:29 <hppavilion[1]> rdococ: Any unicode character is up for grabs, though we should avoid CJK
21:37:36 <hppavilion[1]> rdococ: Basically, the Unicode that is relevant to English speakers
21:37:56 <rdococ> ...
21:37:57 <rdococ> idk
21:38:00 <hppavilion[1]> rdococ: Most english speakers can't tell the difference between CJK characters at a glance, so we won't be using much of those
21:38:32 <hppavilion[1]> rdococ: We'll just do it a block at a time
21:38:53 <hppavilion[1]> rdococ: I think we should use a temp channel so that it won't be spoiled for anyone else on this channel
21:39:04 <rdococ> k
21:39:06 <hppavilion[1]> rdococ: /join ##zodiac
21:39:13 <hppavilion[1]> (That's a channel I own but rarely use)
21:40:16 <Taneb> How do you handle the feeling of hopelessness when the easiest bit of a module you have an exam for in 11 days seems so hard
21:40:35 <shachaf> Taneb: is it a d-module?
21:40:38 <rdococ> by saying your dog ate it
21:40:51 <Taneb> I'm afraid it's a linear optimization and game theory module
21:41:21 <shachaf> differential operators are linear
21:41:26 <shachaf> so it's basically the same thing
21:41:36 <shachaf> well, usually linear
21:42:13 <b_jonas> what's a "d-module"?
21:42:20 <Taneb> `? d-module
21:42:33 <HackEgo> D-modules are just modules over the ring of differential operators. Taneb invented them.
21:42:56 <shachaf> Taneb: what sort of things are linear optimization and game theory about
21:43:10 <Taneb> Game theory, and also linear optimization
21:43:37 <shachaf> i don't know much about those topics
21:43:40 <shachaf> what parts are hard
21:44:47 <oerjan> linear optimization isn't hard, it's very simplex
21:46:28 <Taneb> Unfortunately, the bit I'm struggling with is the background of what non-linear optimization looks like
21:46:35 <Taneb> With lagrangian mutlipliers and what have you
21:52:40 -!- Caesura has joined.
21:55:03 -!- ais523 has quit.
22:10:19 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
22:11:05 -!- hppavilion[1] has joined.
22:14:13 -!- shikhin has changed nick to korv.
22:14:26 -!- korv has changed nick to shikhin.
22:15:49 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
22:15:58 -!- iconmaster has joined.
22:21:24 -!- idris-bot has joined.
22:29:44 -!- J_Arcane_ has joined.
22:31:02 -!- J_Arcane has quit (Ping timeout: 244 seconds).
22:31:09 -!- J_Arcane_ has changed nick to J_Arcane.
22:36:40 <int-e> I just LOVE helpful error messages. "libdvdread: Can't open /dev/dvd for reading" ... well, turns out it was trying /dev/rdvd ... thanks!
22:38:01 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
22:41:12 -!- Guest81305 has quit (Quit: This computer has gone to sleep).
22:42:45 <rdococ> what
22:42:49 <rdococ> how did it get them mixed up
22:53:54 -!- boily has joined.
23:02:55 -!- oerjan has quit (Quit: Nite).
23:03:57 -!- ais523 has joined.
23:05:45 -!- atrapado has quit (Quit: Leaving).
23:10:19 <boily> `wisdom
23:10:32 <HackEgo> mips/MIPS Is Popular in Schools.
23:11:17 <shachaf> `wisdom
23:11:21 <HackEgo> category-helpdesk/category-helpdesk is a helpdesk with identity and composition. This channel isn't it.
23:11:37 <shachaf> `` culprits wisdom/category-helpdesk
23:11:47 <HackEgo> int-e ais523 oerjan elliott Bike FreeFull boily
23:12:02 <rdococ> pm functionality isn't working?
23:17:25 <boily> I created that one?
23:17:31 <boily> rdochelloc. pm?
23:17:37 <boily> hellochef.
23:18:14 -!- Sgeo has joined.
23:32:20 <rdococ> rdhelloc
23:40:25 <boily> rdhelloc it'll be from now, it is.
23:43:15 <boily> fungot: have you ever porthelloed someone?
23:43:16 <fungot> boily: mr president, commissioner, i would like to refer to mrs wallis' point regarding quite a lot of european industries happy. i regard this as being a provisional situation and a step backwards in terms of social security systems or, properly speaking, pension schemes. i share the honourable members are perfectly aware, that will continue to be strong with the weak and weak with the strong, which enables us to achieve a bet
23:45:58 -!- hppavilion[1] has joined.
23:46:19 <hppavilion[1]> Here's something I started thinking of that's probably been done before
23:46:23 -!- tromp_ has joined.
23:46:28 <hppavilion[1]> Hedwig's Little Theory of Reduction Machines
23:46:45 <hppavilion[1]> Reduction is the process of turning something into something simpler
23:47:28 <boily> Hedwig?
23:47:32 <hppavilion[1]> An automaton is said to be more complex than another automaton under a system if evaluating the the former produces the latter, but reducing the latter never produces the former
23:47:37 <hppavilion[1]> boily: Hedwig Notta.
23:47:45 <hppavilion[1]> boily: It's the alias I'm sticking with
23:49:02 -!- spiette has quit (Quit: :qa!).
23:49:03 <hppavilion[1]> Reduction Machines is just a fancy way of saying "this generalization of cellular automata I'm making up"
23:49:07 <hppavilion[1]> boily: Does this sound like something you've heard of?
23:49:41 <hppavilion[1]> The generalization defines things like static neighborhoods vs. static-individualized neighborhoods vs. dynamic neighborhoods
23:49:46 <boily> vaguely like lambda calculus' eta reduction, but otherwise nope. my mind's a 0x20.
23:49:58 <hppavilion[1]> boily: That does sound right
23:50:49 <hppavilion[1]> A reduction machine is cellular if its neighborhood is static or static-individualized. Dynamic-neighborhood automata cannot be cellular.
23:51:06 -!- tromp_ has quit (Ping timeout: 276 seconds).
23:52:40 <hppavilion[1]> (A machine has a static neighborhood if all of its states have the same neighborhood that remains constant at all points in time, a static-individualized neighborhood if the states have different neighborhoods, but they all remain constant, and a dynamic neighborhood if part of a reduction step involves changing the neighborhood of the current cell)
23:53:20 <hppavilion[1]> So Conway's Game of Life where each individual cell is a node on a graph and that node can connect to other nodes if certain conditions arise has a dynamic neighborhood
23:54:10 <hppavilion[1]> boily: It's probably related to eta reduction by virtue of being Turing-complete. Also, it was originally inspired by a functional programming language I was designing, so...
23:55:22 -!- p34k has quit.
←2016-04-03 2016-04-04 2016-04-05→ ↑2016 ↑all