←2017-07 2017-08 2017-09→ ↑2017 ↑all
00:27:41 <fizzie> `unidecode ߷
00:27:42 <HackEgo> ​[U+07F7 NKO SYMBOL GBAKURUNEN]
00:28:52 -!- https_GK1wmSU has joined.
00:31:18 -!- https_GK1wmSU has left.
00:37:52 -!- Jafet has quit (Ping timeout: 246 seconds).
00:42:18 -!- Warrigal_ has joined.
00:55:08 -!- Jafet has joined.
00:58:05 -!- Jafet has quit (Read error: Connection reset by peer).
00:59:02 -!- Jafet has joined.
01:04:13 <HackEgo> [wiki] [[Special:Log/newusers]] create * Periapsis * New user account
01:06:03 -!- Jafet has quit (Read error: Connection reset by peer).
01:07:46 -!- Jafet has joined.
01:15:02 <HackEgo> [wiki] [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=52610&oldid=52602 * Periapsis * (+247)
01:15:49 <HackEgo> [wiki] [[Joke language list]] https://esolangs.org/w/index.php?diff=52611&oldid=52437 * Periapsis * (+16) /* Brainfuck derivatives */
01:18:55 -!- z0d has quit (Remote host closed the connection).
01:22:55 -!- Jafet has quit (Read error: Connection reset by peer).
01:25:26 -!- Jafet has joined.
01:36:31 -!- Jafet has quit (Read error: Connection reset by peer).
01:37:36 -!- Jafet has joined.
01:38:08 <Sgeo> Is this language any good? https://winworldpc.com/product/actor
01:39:18 <Sgeo> "Actor is an object oriented Smalltalk-like programming language for Windows 3.1.
01:39:18 <Sgeo> Interestingly, an earlier version of Actor ran on Windows 2.1!"
01:40:33 -!- Jafet has quit (Read error: Connection reset by peer).
01:41:05 -!- Jafet has joined.
01:45:56 <HackEgo> [wiki] [[BrainGuck]] N https://esolangs.org/w/index.php?oldid=52612 * Periapsis * (+694) Created page with "BrainGuck is an esoteric language created by [[User:Periapsis]]. It was inspired by [https://esolangs.org/wiki/Brainfuck#Language_overview BrainFuck]. It adds a few extra comm..."
01:51:22 <HackEgo> [wiki] [[BrainGuck]] https://esolangs.org/w/index.php?diff=52613&oldid=52612 * Periapsis * (+0)
01:56:14 -!- Jafet has quit (Read error: Connection reset by peer).
01:57:42 -!- Jafet has joined.
02:02:42 -!- Jafet has quit (Read error: Connection reset by peer).
02:05:31 -!- Jafet has joined.
02:06:25 -!- Warrigal_ has quit (Ping timeout: 246 seconds).
02:07:27 -!- Jafet has quit (Read error: Connection reset by peer).
02:08:49 -!- Jafet has joined.
02:20:40 -!- imode has joined.
02:24:59 -!- Jafet has quit (Read error: Connection reset by peer).
02:25:46 -!- Jafet has joined.
02:30:02 -!- hppavilion[1] has joined.
02:31:00 <shachaf> `smlist 455
02:31:01 <HackEgo> smlist 455: shachaf monqy elliott mnoqy Cale
02:31:08 <Cale> ooh
02:31:40 <shachaf> Cale: you're supposed to ooh over olists
02:32:02 <shachaf> Super Mega Comics℠
02:32:10 <shachaf> Super Mega℠
02:32:20 -!- Jafet has quit (Ping timeout: 260 seconds).
02:32:26 <Cale> What is olist?
02:32:32 <shachaf> `? olist
02:32:33 <HackEgo> olist is update notification for the webcomic Order of the Stick. http://www.giantitp.com/comics/ootslatest.html
02:33:01 <Cale> ah, I haven't gotten into that one yet
02:33:21 <shachaf> It's a good time for it!
02:33:53 <shachaf> It's just you have to read past the first hundred or so before it turns into much of anything.
02:34:45 -!- Jafet has joined.
02:43:07 <shachaf> `randquote Cale
02:43:24 <HackEgo> 1116) <zzo38> I do sometimes work on Linux computer. I think it is set to en.UTF-8 by default although on my account I have changed it to the C locale, disabled Unicode translation, and loaded a CP437 font. <zzo38> This improves the operation of the system.
02:43:43 <shachaf> `randquote <Cale>
02:43:44 <HackEgo> No output.
02:43:48 <shachaf> @quote Cale
02:43:48 <lambdabot> Cale says: One can create powerful abstractions in C++ in much the same way that a woman can produce a child. It's possible, and people do it, but it takes hours of labour and is extremely painful.
02:44:13 <shachaf> Cale: Do you like the new C++ metaclasses proposal?
02:46:17 <Cale> I dunno, I kinda stopped caring about how good/shitty C++ is.
02:46:48 <Cale> It's probably better just not to touch it at all.
02:46:57 <shachaf> This new proposal is wonderfully complex.
02:47:03 <Cale> For fear that you can only make things worse
02:47:04 <shachaf> C++ is going to be so complicated.
02:47:07 <shachaf> It's great.
02:47:09 <Cale> haha
02:47:28 <shachaf> Anyway there are still not many competitor to C++
02:47:41 <shachaf> There's a lot of software that I'd probably still use C++ to write today?
02:54:22 -!- https_GK1wmSU has joined.
02:56:51 -!- https_GK1wmSU has left.
03:00:30 <shachaf> Cale: I wish I understood the reals. :-(
03:01:12 <Cale> shachaf: What would it mean to understand them?
03:01:28 <shachaf> I'm not sure!
03:01:41 <shachaf> I just think they're a much more mysterious and fundamental object than I gave them credit for in the past.
03:02:29 <shachaf> Cale: any opinions on https://www.facebook.com/slbkbs/posts/1540808232616365 twh
03:03:53 <Cale> That question makes me think to mention this quirky strategy for proving the reals are uncountable
03:04:25 <shachaf> (See also the comments, which apparently you have to click the link to see.)
03:08:35 <Cale> Let S be an arbitrary subset of [0,1] and define a two-player game as follows.
03:08:47 <Cale> The first player picks a number 0 < a_1 < 1
03:08:59 <Cale> and the second player picks a number a_1 < b_1 < 1
03:09:14 <Cale> and thereafter, the players pick numbers between the previous two selected numbers, i.e.
03:09:26 <Cale> a_(n-1) < a_n < b_(n-1)
03:09:26 <Cale> and
03:09:42 <Cale> a_n < b_n < b_(n-1)
03:09:51 -!- oerjan has joined.
03:10:18 <Cale> Since the sequence of a_n is monotone increasing and bounded, it has a limit L. The first player wins if L is in S.
03:10:52 <Cale> If S is countable, then the second player has a winning strategy: pick b_n to be s_n whenever that is a valid move, and to play a random move otherwise
03:11:11 <Cale> If s_n wasn't a valid move, then it's already outside the interval in which the limit must occur
03:11:36 <Cale> and the limit of the sequence must be strictly less than b_n, so playing s_n as b_n ensures that the limit is not s_n for any n
03:11:48 <Cale> But if S is [0,1], then the first player always wins
03:12:09 <Cale> So [0,1] is uncountable
03:12:22 <shachaf> What's s_n?
03:12:44 <Cale> Ah, S = {s_1,s_2,...} under the assumption it's countable
03:13:00 <Cale> Sorry, left that out
03:13:58 -!- doesthiswork has joined.
03:18:59 <oerjan> the first player would have a winning strategy if the _complement_ of S is countable, i think.
03:20:06 <oerjan> in pretty much the same way.
03:21:15 <oerjan> gah what's up with internet...
03:21:22 * oerjan goes to restart router
03:22:59 <Cale> right
03:24:50 <oerjan> hm that didn't help, still no connection to PPCG
03:25:24 <shachaf> Cale: Which properties of the reals do you need for this?
03:26:50 <shachaf> Totally ordered, Dedekind-complete?
03:26:54 <shachaf> Well, that's not enough.
03:28:31 * oerjan switches DNS to
03:29:42 * oerjan puts reminder in a vim window to change it back
03:30:17 <oerjan> high tech primitive solutions
03:32:53 <alercah> shachaf: that defines the reals though
03:33:00 <alercah> shachaf: well, that and that they are a field
03:33:24 <shachaf> "that they are a field" is a short phrase that has a lot of complexity.
03:33:54 <alercah> well, yes
03:34:04 <alercah> and in particular they are a totally ordered field
03:34:05 <shachaf> Did you see my post above?
03:34:25 <alercah> I don't have any special insight
03:34:56 <shachaf> "The real line ⟨ℝ,<⟩ is (up to isomorphism) the unique nonempty, separable, complete, dense, endless total order."
03:35:23 <shachaf> Which of those properties are used in Cale's game?
03:35:43 <shachaf> Hmm, I guess a lot of them.
03:37:34 <oerjan> not the endless one, i guess.
03:37:52 <shachaf> Cale's proof isn't even about R, it's about [0,1]
03:38:08 <shachaf> So that one isn't necessary.
03:38:50 <shachaf> What's separability again?
03:39:01 <oerjan> hm which of those properties isn't satisfied by a single point space...
03:39:10 <oerjan> oh.
03:39:17 <oerjan> that's the only one you need endless for.
03:39:25 <oerjan> to show that it has more than one point.
03:41:28 <shachaf> Well, [0,1] isn't endless. How do you characterize a potentially-closed real interval?
03:42:25 <oerjan> i think dropping endless gives all of them, plus the single point.
03:42:56 <alercah> shachaf: separable = contains countable dense subset
03:43:21 <alercah> I don't know why it's called separable
03:44:24 <shachaf> Ah, right, like Q in R
03:46:25 <alercah> yep
03:46:38 <alercah> trying to figure out why separable is necessary
03:48:16 <shachaf> https://mathoverflow.net/a/43165 gives an example
03:54:44 <oerjan> i'm not sure separable is necessary for the proof.
03:57:31 <HackEgo> [wiki] [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=52614&oldid=52610 * Phi * (+160)
03:59:51 <alercah> I don't think it is
04:00:20 <HackEgo> [wiki] [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=52615&oldid=52614 * PhiNotPi * (+203)
04:24:32 <myname> koenigl: https://gitlab.brokenpipe.de/stettberger/avremu
04:25:01 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
04:33:47 <oerjan> ooh, genuine spammers are back on the wiki...
04:34:14 <shachaf> I bet I would be good at spamming the wiki.
04:34:26 <shachaf> I wonder how much I can get for it.
04:34:29 <oerjan> probably. for a while.
04:34:51 <oerjan> (it didn't get through the new filter.)
04:35:22 <shachaf> oerjan: how much will you pay me not to become an evil spammer and ruin the wiki for everyone twh
04:37:10 <oerjan> i'll delay banning you for up to a week hth
04:38:32 <imode> does anybody know of any papers covering a dynamic succinct linked list implementation?
04:38:43 <imode> the closest I can get is binary trees and squinting really hard.
04:38:52 <shachaf> What's a succinct linked list?
04:39:02 <shachaf> That seems kind of tricky.
04:39:35 <oerjan> `? succinct
04:39:36 <HackEgo> succinct? ¯\(°​_o)/¯
04:39:56 <imode> shachaf: lists that contain either empty lists or atoms that take up an amount of bits close to the minimum to represent them.
04:40:03 <oerjan> `dowg succinct
04:40:06 <imode> but still remain usable.
04:40:10 <HackEgo> No output.
04:40:16 <shachaf> imode: But they still have pointers between nodes?
04:40:22 <imode> nope.
04:40:51 <imode> I came up with a static version a while back that can fit a lot within a single machine word.
04:41:00 <imode> but now I'm searching for a dynamic version.
04:41:09 <shachaf> What's the difference between succinct linked lists and succinct sequences?
04:41:24 <shachaf> Do they support sharing nodes or something?
04:41:47 <imode> mmm. alright, bear with me now.
04:42:02 <imode> say you have a list like [[],[],[]].
04:42:40 <imode> how would you encode that so you conserve on space while retaining the same operations.
04:42:55 <imode> for traversal. not modification.
04:43:01 <shachaf> A list of lists?
04:43:15 <imode> yep. just as an example.
04:43:23 <shachaf> Is this an arbitrary tree or only depth 2?
04:43:49 <imode> any arbitrary list consisting of either nested lists or empty lists.
04:44:17 <shachaf> I would call that a tree. Where a tree is defined as a list of trees.
04:44:25 <imode> sure.
04:44:38 <shachaf> Anyway this is the old balanced parentheses thing, right?
04:44:44 <imode> correctamundo.
04:44:46 <shachaf> What makes these linked lists?
04:45:10 <imode> closest two words I have for something like this.
04:45:47 <imode> could just use 'list'.
04:46:11 <shachaf> Why would you call a tree a list?
04:46:12 <imode> anyway, yeah, this is the nested parens problem. store opening and closing parens as bits.
04:46:20 <shachaf> This is the least fixed point of lists.
04:46:43 <imode> "why would you call a tree of list."
04:46:47 <imode> *a list.
04:47:02 <imode> because... a list is a list of values, each of which may also be lists.
04:47:15 <imode> not sure why you're getting hung up on that.
04:47:54 <imode> if you wanted me to specify "right-heavy binary trees" I could.
04:49:22 <HackEgo> [wiki] [[Special:Log/block]] block * Oerjan * blocked [[User:Kutta]] with an expiration time of indefinite (account creation disabled): Spamming links to external sites
04:49:38 <imode> anyway, with the binary representation of a tree, it's hard to do arbitrary inserts without lots of operations being flung around at once. so I was wondering if there was a more dynamic method of storing them.
04:54:15 <oerjan> imode: us haskellers get hung up on that because of all the nested "lists" that won't pass type checking as lists in haskell because they're actually trees hth
04:54:41 <oerjan> (i forget, were you from PPCG)
04:54:48 <imode> I am not. :P
04:55:04 <oerjan> because there are quite a number of such challenges there.
04:55:17 <imode> nah. just a dude doing research.
04:55:36 <shachaf> imode: How much overhead are you willing to accept?
04:55:57 <imode> shachaf: for what? a dynamic representation?
04:56:01 <shachaf> You said "succinct" so I guess you want Z + o(Z)
04:56:13 <imode> yuh. also, I already have an encoding for static trees.
04:56:26 <imode> always saves one bit over the traditional parens representation.
04:56:34 -!- PattuX has quit (Quit: Connection closed for inactivity).
04:56:57 <imode> just wondering about what a convenient alternative is for trees that support arbitrary insertion/manipulation.
05:00:10 <shachaf> I don't know much about dynamic succinct data structures unfortunately. I'd like to know more.
05:00:45 <shachaf> But at least I understand the question now.
05:00:47 <shachaf> I don't think it has anything to do with linked lists (I think linked lists are lists where each node has a link pointer to the next node).
05:01:03 <imode> shachaf: you can replace linked list with "collections of cons cells". :P
05:01:41 <imode> but yeah, trees work.
05:01:47 <shachaf> But this has even less to do with binary trees than it does with lists.
05:02:02 <imode> not.. really.
05:02:16 <imode> considering they're all equal in representation. if you think not, ask a lisper. :P
05:02:42 <doesthiswork> Here's a exoteric reduct game http://www.therottingcartridge.com/games/programming/
05:03:35 <HackEgo> [wiki] [[Special:Log/upload]] upload * PhiNotPi * uploaded "[[File:Qftarch01.png]]"
05:03:51 <shachaf> @wn exoteric
05:03:52 <lambdabot> *** "exoteric" wn "WordNet (r) 3.0 (2006)"
05:03:52 <lambdabot> exoteric
05:03:52 <lambdabot> adj 1: suitable for the general public; "writings of an exoteric
05:03:52 <lambdabot> nature" [ant: {esoteric}]
05:04:28 <shachaf> doesthiswork: TG
05:05:40 <doesthiswork> Ferdinand-Tönnies-Gesellschaft ?
05:06:29 <shachaf> Too Good
05:07:23 <doesthiswork> axtually I'm juxt bad at typeing
05:07:53 <shachaf> What are these broken keys?
05:08:18 <shachaf> Booleans?
05:08:28 <doesthiswork> yeah, false booleans
05:09:25 <shachaf> I guess the pink thing is (==) and doesn't allow function arguments.
05:09:41 <oerjan> 🎜 Take these broken keys. And learn to type again. 🎜
05:10:46 <shachaf> Does this introduce callCC later?
05:11:07 <doesthiswork> yeah, once you unlock the hidden levels
05:12:19 <shachaf> Ah, 19 was the first slightly tricky one.
05:13:32 <shachaf> Did you make this?
05:14:00 <doesthiswork> no I found it on LTU
05:16:11 <shachaf> doesthiswork: You should extend it for linear types.
05:18:42 <doesthiswork> that would be interesting
05:20:03 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52617&oldid=52609 * Btiffin2017 * (+1769) /* Instructions (including Befunge-93 commands) */
05:22:14 <oerjan> shachaf: she'd be more the vicereine, i should think.
05:22:54 <oerjan> hm should that be reyne
05:23:03 <shachaf> oerjan: am i missing a pun twh
05:23:16 <oerjan> no, just a gender hth
05:23:45 <shachaf> are you missing a pun twh
05:23:52 <oerjan> probably.
05:24:23 <shachaf> it's not a very complicated one
05:24:39 <oerjan> i assumed you were just going from vicenarian.
05:24:54 <oerjan> which isn't much of a pun. and not even cognate, i suspect.
05:25:05 <shachaf> assume again
05:25:08 <oerjan> or wait, maybe it is.
05:27:13 <oerjan> nope, doesn't seem to be cognate.
05:27:39 <oerjan> ...
05:28:28 <oerjan> i cannot in good conscience swat for a pun that took me that long, sorry.
05:28:51 <shachaf> What!
05:28:56 <shachaf> How about the pan?
05:31:02 <oerjan> i'm afraid it doesn't pan out, either.
05:32:45 <oerjan> `? decadent
05:32:46 <HackEgo> a decadent is a ten-pronged rake
05:33:02 <oerjan> `slwd decadent//s,.,A,;s,$,.,
05:33:04 <HackEgo> decadent//A decadent is a ten-pronged rake.
05:33:08 <shachaf> I knew it.
05:33:43 <oerjan> but did you manage to make a profit from your inside knowledge?
05:34:00 <shachaf> No, I don't play golf.
05:34:14 <oerjan> shocking
05:38:47 <shachaf> doesthiswork: How do you unlock the hidden levels?
05:39:57 <doesthiswork> you invoke the continuation and restore to level 5 with continuations enabled
05:40:39 <shachaf> Oh, so you were joking? :-(
05:41:20 <doesthiswork> I'm sorry but I was, I'm going to design some levels and suggest continuations to andru
05:42:04 <doesthiswork> http://www.cs.cornell.edu/andru/
05:44:37 <imode> that was a fun game.
05:57:58 <\oren\> how is the bitcoin fork going?
06:09:28 <\oren\> Are graphics cards going to become affordable again
06:12:24 <HackEgo> [wiki] [[QFTASM]] N https://esolangs.org/w/index.php?oldid=52618 * PhiNotPi * (+6860) created page
06:13:07 <\oren\> find out in 7 hours, 7 minutes and 7 seconds!
06:13:55 <\oren\> https://www.timeanddate.com/countdown/launch?iso=20170801T1220&p0=1440&msg=Bitcoin+Cash+Hardfork
06:14:20 <HackEgo> [wiki] [[QFTASM]] M https://esolangs.org/w/index.php?diff=52619&oldid=52618 * PhiNotPi * (-2) fixed link format
06:29:37 -!- https___GK1wmSU has joined.
06:30:10 -!- https___GK1wmSU has left.
06:33:34 -!- erkin has joined.
07:00:41 -!- FreeFull has quit.
07:21:00 <zzo38> Do you know this algorithm for converting a number into decimal? http://wiki.nesdev.com/w/index.php/User:Zzo38/Decimal_numbers
07:25:37 -!- sleffy has joined.
07:25:43 <imode> why not just use BCD. :P
07:27:28 <zzo38> Mainly for cases where conversion is needed. For many uses, BCD (or base 100 may be better, especially for Famicom which has no decimal mode) can be very helpful, but sometimes you will need conversion (such as if implementing Z-machine, for example).
07:27:57 <imode> how so? packed BCD is pretty standard.
07:29:11 <zzo38> Famicom and NES doesn't support the packed BCD arithmetic of 6502; that flag will be ignored (it still exists though, it just doesn't do anything).
07:29:43 <imode> oh shit, yeah. forgot about that.
07:30:08 -!- sleffy has quit (Ping timeout: 258 seconds).
07:30:09 <imode> man it has been a while..
07:30:25 * imode looks at the last accessed date on his old NESASM...
07:31:52 <zzo38> Which is what date?
07:32:48 <imode> January 13th, 2011.
07:33:02 <zzo38> OK
07:34:38 -!- augur has quit (Remote host closed the connection).
07:40:38 -!- sdhand has quit (Excess Flood).
07:40:48 -!- sdhand has joined.
07:41:12 -!- sdhand has changed nick to Guest43396.
07:43:07 -!- Guest43396 has quit (Changing host).
07:43:07 -!- Guest43396 has joined.
07:43:07 -!- Guest43396 has changed nick to sdhand.
07:49:30 -!- HackEgo has quit (Remote host closed the connection).
07:50:14 -!- HackEgo has joined.
07:54:12 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52620&oldid=52617 * Btiffin2017 * (+0) /* Instructions, correct the stack pictures */
08:11:18 -!- sleffy has joined.
08:28:03 <\oren\> there will, in less than 5 hours, be two variant coins: Bitcoin Core, and Bitcoin Cash
08:28:32 -!- doesthiswork has quit (Quit: Leaving.).
09:08:00 <Jafet> `? bitcoin
09:08:02 <HackEgo> bitcoins are coins that have been drilled through with a bit, and can be strung together in long chains. This practice dates to ancient China, and the Chinese remain experts in bitcoin manufacturing. A chain can support up to 21 million coins before breaking.
09:15:50 <izabera> why do large companies care about being influential in standard committees?
09:16:07 <izabera> like google and facebook
09:16:11 <izabera> why do they even care?
09:19:32 <Jafet> in IBM's case, an ultimately futile struggle to stem the tide of trigraph-haters
09:24:25 <izabera> hah
09:26:17 <Jafet> in any case, it's rather cheap influence compared to, say, congressional lobbying
09:49:26 -!- oerjan has quit (Quit: Nite).
09:58:17 -!- btiffin has quit (Quit: ChatZilla 0.9.93 [SeaMonkey 2.46/20170120202656]).
10:11:23 -!- imode has quit (Ping timeout: 255 seconds).
10:20:30 -!- sleffy has quit (Ping timeout: 240 seconds).
10:24:49 -!- hppavilion[1] has quit (Ping timeout: 246 seconds).
10:46:12 -!- hppavilion[1] has joined.
10:51:23 -!- hppavilion[1] has quit (Ping timeout: 258 seconds).
10:51:46 -!- hppavilion[1] has joined.
10:52:40 -!- hppavilion[1] has quit (Client Quit).
11:38:56 -!- boily has joined.
11:56:20 -!- LKoen has joined.
12:06:04 -!- jaboja has joined.
12:29:57 -!- boily has quit (Quit: TOROIDAL CHICKEN).
13:07:37 -!- ais523 has joined.
13:51:14 -!- ais523 has quit.
13:51:29 -!- LKoen has quit (Remote host closed the connection).
14:00:46 -!- doesthiswork has joined.
14:03:07 -!- copumpkin has quit (Ping timeout: 240 seconds).
14:10:52 -!- wob_jonas has joined.
14:11:41 <wob_jonas> "<doesthiswork> Here's a exoteric reduct game" => oh, will this become the next toy everyone in #esoteric tries, like that euclides compass and line game last time?
14:12:02 <wob_jonas> I still haven't figured out how to do the pentagon in 10 steps
14:12:13 <doesthiswork> I really like that ancient greek geometry game
14:12:30 -!- Cale has quit (Remote host closed the connection).
14:15:09 -!- Cale has joined.
14:21:47 <wob_jonas> (trying that reduct game) huh what? I don't understand
14:22:30 -!- jaboja has quit (Read error: Connection reset by peer).
14:23:18 -!- jaboja has joined.
14:23:55 <wob_jonas> I don't understand how this game works
14:24:02 <wob_jonas> maybe it will become clear later
14:26:49 <wob_jonas> ok, now I'm even more confused
14:29:14 -!- `^_^v has joined.
14:39:08 -!- jaboja has quit (Ping timeout: 255 seconds).
14:41:35 -!- copumpkin has joined.
14:41:55 -!- jaboja has joined.
14:48:53 <wob_jonas> well I still don't understand what this game is about, even after beating lots of levels
14:49:51 <doesthiswork> I thought it was about arbitrary changes in notation
14:50:56 <wob_jonas> doesthiswork: maybe
14:53:42 <Cale> I understand what it's about
14:53:51 <Cale> It's basically like weird manual lambda calculus
14:54:19 <wob_jonas> Cale: but where's the lambda calculus part? I've seen lambdas, but no application expression.
14:55:05 <Cale> You do application by hand by dropping things into the lambdas
14:55:26 <wob_jonas> yes, but there's no expression that does application. you can't have lambda calculus without that.
14:55:47 <wob_jonas> or at least, I haven't encountered such an expression up to where I'm at
14:55:58 <wob_jonas> and I'm playing level 69 now
14:58:18 <wob_jonas> wait what?
15:01:02 <wob_jonas> I'm at the end of the game, and I still don't understand it
15:01:49 <wob_jonas> I just don't get the point
15:03:37 -!- jaboja has quit (Ping timeout: 258 seconds).
15:03:51 -!- jaboja has joined.
15:04:26 <Cale> wob_jonas: I think the main thing which is confusing there is that you can't just leave something sitting in the input of a lambda without having it automatically reduce
15:06:15 -!- ais523 has joined.
15:06:29 <wob_jonas> Maybe ais523 can make sense of it
15:06:44 -!- doesthiswork has quit (Quit: Leaving.).
15:06:54 <wob_jonas> `? euclid
15:06:56 <HackEgo> euclid? ¯\(°​_o)/¯
15:07:59 <ais523> wob_jonas: context?
15:08:09 <ais523> or am I going to have to read the logs? :-(
15:08:50 <wob_jonas> ais523: doesthiswork brought up this game thingy http://www.therottingcartridge.com/games/programming/
15:08:50 <ais523> Jafet: (re Brainfudge) I'm not sure that counts; at least, it's fairly different from what I had in mind
15:09:00 <wob_jonas> I played through the 72 levels, but still don't understand what it's about
15:09:06 <ais523> wob_jonas: can't really follow links like that at work
15:09:11 <ais523> I can have a look tomorrow, perhaps?
15:09:23 <wob_jonas> sure
15:09:26 <Cale> wob_jonas: I don't know if it's about anything more than what is apparent
15:09:57 <wob_jonas> well, I guess it does say "prototype" at the bottom
15:10:01 <wob_jonas> so maybe he'll change it later
15:10:13 <ais523> on the subject of programming games, I used to like Rubicon (which is based on an esolang, http://esolangs.org/wiki/RUBE)
15:10:18 <ais523> but I haven't played it in ages
15:10:34 <ais523> being written as a Java applet isn't great for modern-day computers
15:10:36 <wob_jonas> ais523: I mentioned that euclid game that we played on this channel some years ago
15:10:54 <wob_jonas> you know, the one about how to make a regular pentagon in ten of the game's steps, which I couldn't solve
15:11:28 <ais523> oh, is it a geometry game?
15:11:40 <ais523> hmm, is geometry somehow Turing-complete?
15:11:47 <wob_jonas> no, it's not a geometry game
15:12:02 <wob_jonas> it just reminds me because it's a meme game on web someone thrown into #esoteric
15:12:18 <wob_jonas> and the same sort of abstract geeky game
15:12:39 <ais523> I get really annoyed by the classification "meme game"
15:12:55 <ais523> people act like a game that becomes suddenly popular is necessarily bad as a result
15:13:00 <wob_jonas> no
15:13:02 <ais523> kind-of like hipsterism except it's mainstream
15:13:09 <wob_jonas> I mean it was popular on #esoteric
15:13:13 <wob_jonas> and I'm not saying it's bad
15:13:24 <wob_jonas> well, I guess I am
15:13:24 <ais523> right
15:13:27 <wob_jonas> they are bad
15:13:36 <ais523> people normally use the phrase "meme game" to dismiss a game that's had a recent surge in popularity, though
15:13:50 <wob_jonas> but it's not bad because it's popular, but more like it's popular despite that it's bad, which is why I call it a meme game
15:14:04 <wob_jonas> yes, I am dismissing it, but not because it's popular
15:14:33 <ais523> right
15:14:38 <ais523> you're dismissing it, and it also happens to be popular?
15:15:05 <wob_jonas> yes
15:15:26 <wob_jonas> and I'm dismissing it more than the geometry game, because I can't make sense of what it's about
15:16:14 <ais523> oh, "<ais523> oh, is it a geometry game" was referring to the euclid thing, not the earlier topic of conversation
15:16:19 <ais523> I need to be more precise in my pronouns
15:16:36 <ais523> the earlier game I can't really discuss because I have basically zero information about it and can't take a look at it directly until tomorrow
15:17:50 <wob_jonas> sure
15:18:49 <ais523> well, not quite zero information, I know that a few #esotericers don't understand it, an URL, and the number of levels it has
15:19:32 <Cale> I understand it
15:19:47 <Cale> I don't know what it is that wob_jonas is saying he doesn't understand about it. It's fairly straightforward.
15:34:40 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
15:44:24 <wob_jonas> by the way, ICFP contest http://events.inf.ed.ac.uk/icfpcontest2017/ starts in less tha n3 days
15:44:32 <wob_jonas> I think that's on topic for #esoteric
15:46:40 <ais523> definitely
15:46:43 <ais523> it should be in topic, not just on topic
15:46:55 <ais523> to reduce the number of people who miss it
15:47:03 <wob_jonas> good idea
15:47:55 <wob_jonas> and still no news about IOCCC
15:49:28 <int-e> bad timing: http://www.cade-26.info/
15:50:14 <int-e> but I guess it just happens that both the ICFP contest and CADE are one month before ICFP.
15:50:38 <wob_jonas> int-e: they scheduled one of the previous ICFP contests at the same time as a Harry Potter book release, making it a bad time for many people, even though the date for the latter was known ages ago.
15:51:04 <ais523> I might or might not participate
15:51:15 <ais523> participating will depend on a) me remembering to participate, b) me liking the task
15:51:32 <ais523> when I've participated in the past it's been solo, depending on what the task is it might make sense to get a #esoteric team together
15:52:27 -!- wob_jonas has set topic: bimetal prismack | http://esolangs.org/ | logs: http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf | ICFP contest starting on 2017-08-01.
15:52:43 <ais523> at 12 pm UTC, annoyingly
15:52:48 <wob_jonas> ais523: yes, these days they're increasingly making the task such that it's harder and harder to participate
15:52:50 <ais523> that means I'll miss the first few hours due to work
15:52:58 <wob_jonas> um
15:53:03 <wob_jonas> harder and harder to participate alone
15:53:14 <int-e> wait, 08-01?
15:53:22 <wob_jonas> uh wait
15:53:22 <ais523> the UMIX challenge was very parallelisable
15:53:27 <ais523> int-e: wob_jonas got the wrong date
15:53:27 -!- wob_jonas has set topic: bimetal prismack | http://esolangs.org/ | logs: http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf | ICFP contest starting on 2017-07-01.
15:54:00 <wob_jonas> no wait
15:54:03 <wob_jonas> um
15:54:05 <int-e> 2017-08-04, I'd guess?
15:54:11 -!- wob_jonas has set topic: bimetal prismack | http://esolangs.org/ | logs: http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf | ICFP contest starting on 2017-08-04.
15:54:18 <wob_jonas> that, yes
15:55:01 <FireFly> It looks like I'll miss it entirely
15:55:04 <FireFly> oh well
15:55:47 <int-e> why does it have to be a VM... and does the VM exploit vulnerabilities in Virtualbox or VMware or the lesser known ones (is Bochs still a thing? Qemu...)
15:56:29 <ais523> and why does the VM have to be so large
15:56:40 <wob_jonas> int-e: it doesn't have to be a VM. you can just compile your programs for a similar linux machine. they just make it a VM in case you're worried your program won't work in their setup.
15:56:47 <wob_jonas> you don't actually need to use the VM.
15:56:55 <ais523> Debian used to have a version which ran off 1.44 MB of disk space
15:57:06 <wob_jonas> ais523: what? no way
15:57:10 <ais523> they dropped that eventually to fit more programs in, but 5 GB is too much of a scale
15:57:19 <ais523> wob_jonas: it was very cut down, I think
15:57:21 <wob_jonas> I mean, 3 MB, sure, but 1.44 MB?
15:57:27 <ais523> I might be misremembering
15:57:31 <ais523> but that's only a factor of 2
15:57:38 <wob_jonas> yes, a factor of 2
15:58:02 <ais523> but Debian is intentionally designed to be able to do a minimal install if you want
15:58:05 <wob_jonas> first disk is only half full and has the boot loader and kernel (initrd wasn't a thing back then), second floppy has root file system image
15:58:24 <wob_jonas> I mean, I wasn't using Debian back then, but that's how small linux systems worked
15:58:27 <ais523> most programs are split between core functionality and larger data files, so you can install just the core functionality if you like
15:58:53 <ais523> well, I think the Debian install was just kernel + shell + dpkg + apt
15:58:59 <ais523> i.e. just enough to be able to install more programs
15:59:00 <quintopia> they probably realized that computers dont have floppy drives any more.
15:59:09 <ais523> I own a USB floppy disk drive
15:59:17 <ais523> and have even used it on occasion, although not for a long time
15:59:20 <wob_jonas> mind you, I've heard legends about Linux before Linux 2.0 where you could run a system on 1 MB of RAM, which frankly seems impossible to me. you need at least 2MB for Linux, 4MB if you actually want to run nontrivial programs. And that's for old versions. These days you need much more.
15:59:38 <quintopia> i havent used one since like 2007
15:59:47 <wob_jonas> ais523: you need a libc too. libc was big even back then.
15:59:54 <ais523> wob_jonas: the 8086 can't address more than 1 MiB of RAM
16:00:42 <wob_jonas> ais523: sure, but Linux was never intended to run without 386 32-bit protected mode, and it still almost doesn't run without it. I hear there are non-vanilla versions for cpus without memory protection, but not for x86.
16:00:52 <wob_jonas> Linux was originally intended as an OS for 386,
16:00:56 <wob_jonas> but later they made it portable
16:01:09 <wob_jonas> (386 compatibles obviously)
16:01:27 <ais523> its instruction set can address almost 2 MiB if you use carrying rather than wrapping addition for segmentation calculations
16:01:47 <wob_jonas> what? no way
16:01:52 <wob_jonas> how would that work?
16:02:13 <ais523> so a far pointer on x86 real mode is 32 bit long
16:02:22 <ais523> and the address is calculated as (high 16 bits × 16) + low 16 bits
16:02:47 <wob_jonas> which cpu generation are you talking about here?
16:02:59 <ais523> wob_jonas: 8086-compatibles
16:03:12 <wob_jonas> yes, but which generation? 8086 or 286 or 386?
16:03:47 <ais523> all of them use this syntax when running in real mode (which is meant to be 8086 compatible)
16:03:57 <ais523> however, the actual 8086 will do a wrapping calculation
16:04:11 <wob_jonas> yeah, and so will the 8086 I think
16:04:13 <wob_jonas> um
16:04:15 <ais523> whereas the 80286, which has more address lines available, deos a carrying calculation
16:04:16 <wob_jonas> the 80286
16:04:19 <wob_jonas> ah
16:04:21 <wob_jonas> right
16:04:24 <wob_jonas> now I'm confused
16:04:30 <wob_jonas> how much address lines does the 286 have?
16:04:33 <ais523> so motherboards at the time had a configurable bit 20 of their address line
16:04:56 <ais523> the 80286 can address 16 MiB in protected mode, so I guess 24 address lines?
16:05:15 <wob_jonas> I see
16:06:01 <wob_jonas> I never really actually used a 286, I only read about them in books. The first computer we had at home was a 386-based PC with I think 8 MB of RAM, although I've seen older PCs elsewhere
16:06:18 <wob_jonas> It was quite a good machine at that time, the 386 was pretty new
16:07:23 <ais523> the 286 never really caught on because its protected mode was really buggy / lacking in features
16:07:36 <wob_jonas> I see
16:08:04 <ais523> it uses 16 bit addresses + fairly slow bank switching, which means that it can't easily access most of the memory that's available
16:08:20 <wob_jonas> yeah
16:08:39 <wob_jonas> also you can't switch back to real mode without resetting the cpu
16:08:45 <ais523> right
16:08:50 <wob_jonas> they fixed all of that and more in the 386
16:08:57 <ais523> although it took surprisingly long for people to find the triple-fault-based method to do that
16:09:00 <ais523> which is fairly clean and net
16:09:02 <ais523> *neat
16:09:08 <wob_jonas> plus made the cpu way more efficient
16:09:11 <ais523> (and, incidentally, is still used by Linux as a last resort implementation of rebooting)
16:09:25 <ais523> (if it can't reboot via ACPI like it'd like to)
16:09:29 <wob_jonas> a triple-fault based method? nice
16:09:45 <wob_jonas> I thought they just used a small circuit on the motherboard
16:09:50 <wob_jonas> in the keyboard controller or something
16:10:47 <wob_jonas> the 386 is a great cpu. it actually has a data cache. that was a big innovation.
16:10:55 <wob_jonas> obviously they didn't NEED a cache before that
16:10:56 <wob_jonas> but still
16:11:01 <ais523> wob_jonas: that was the original method discovered (i.e. using the keyboard controller to trigger the hardware reboot input)
16:11:05 <wob_jonas> that allowed them to run the cpu so quickly
16:11:15 <ais523> triple fault is much simpler, though, I wonder why they didn't think of it before screwing around with hardware
16:11:26 <wob_jonas> that was *discovered*? I assumed it was built into the motherboard deliberately
16:11:43 <ais523> well, I mean
16:11:51 <ais523> IBM were stuck trying to work around Intel's bugs
16:12:03 <ais523> so they programmed their keyboard controller to be able to do reboots
16:12:13 <ais523> which is one solution to the issue of "how can the processor reboot itself to get back into real mode"
16:12:23 <wob_jonas> right, but you didn't really have to discover that. it's a well-known feature that the cpu can be reset in like four ways and one of them is a signal on a leg.
16:12:27 <ais523> so they discovered the principle behind the solution, but still had to actually implement it using a custom keyboard controller
16:12:29 <\oren\> ReeCoin up 7300%
16:12:32 <\oren\> https://twitter.com/WorldCoinIndex/status/892399569077776385
16:12:37 <\oren\> REEEEEEEEE
16:12:45 <ais523> \oren\: altcoins are incredibly volatile
16:12:53 <wob_jonas> right, but they need a completely new motherboard for 286 anyway
16:13:01 <ais523> and most of them are almost worthless, thus a small absolute change can lead to a large relative change
16:13:20 <\oren\> ais523: right now everyone if panicky about the whole bit coin core bit coin cash split
16:14:05 <ais523> why not just run both chains and see which one ends up having more value?
16:14:20 <ais523> each bitcoin gets split into two, one on each system; their total value should add up to the original value of the coin
16:14:37 <\oren\> some people are doing that, but others are trying to arbitrage
16:15:02 <wob_jonas> ais523: sure, they're run both. but it's a market, so they won't "just" run both and see, they want to predict the value to win huge
16:15:04 <ais523> arbitrage helps to cause convergence to a stable value
16:15:18 <ais523> wob_jonas: oh, I didn't realise there was an actual hard fork that had already happened
16:15:24 <ais523> I thought it was still being discussed
16:15:27 <wob_jonas> I think it hadn't happened yet
16:15:32 <wob_jonas> but will very soon
16:15:33 <wob_jonas> but I'm not sure
16:15:54 <wob_jonas> as in, so soon people who are serious about that sort of thing have had to start preparation long ago
16:32:03 -!- jaboja64 has joined.
16:32:11 <ais523> for comparison, the last time the ICFP used a VM image, it was 639.1 MB
16:32:20 -!- jaboja has quit (Read error: Connection reset by peer).
16:32:26 <ais523> this one's 5.3 GB
16:32:38 <alercah> Oo
16:32:46 <wob_jonas> yeah, that's big. but like I said, you don't actually need it.
16:33:39 <ais523> if they ask you to submit an executable, and they usually do, you probably need it for the final compile
16:33:43 <ais523> but you certainly don't need to work on it
16:37:53 <wob_jonas> I don't think you really need it. You just need any modern x86_64 linux system to compile on, and make sure you either include the required dynamical libraries or compile them statically into the program.
16:38:10 <wob_jonas> although I'm not sure how libc works these days
16:39:22 <wob_jonas> I mean, I understand why in normal production work you don't want to statically link libc to your programs, but in a competition thing like this it might be useful.
16:42:26 <ais523> depending on how much of libc you need, normally you could statically link it
16:42:39 <ais523> however, this particular purpose for the VM, compiling programs, has a big reason to want all of libc
16:42:45 <ais523> because compiled programs will likely want to link against it
16:42:48 <wob_jonas> and the only reason you even might need to statically link it is if you're using a later version of glibc than what's on their debian
16:43:52 <wob_jonas> and that isn't too likely, since they're using debian 9, which is recent
16:44:14 <wob_jonas> so you'll get screwed up only if you use some gentoo or something with later libc
16:44:35 <wob_jonas> and even then you could install a smaller installation of debian 9 (or 8) on x86_64 and compile on that
16:47:44 -!- jaboja64 has quit (Ping timeout: 260 seconds).
16:48:48 <ais523> hmm, the VM is failing to boot under qemu
16:48:57 <ais523> GRUB works, and Linux starts to load
16:49:07 <wob_jonas> ais523: do you have enough RAM?
16:49:15 <ais523> but after the "setting up initial RAMdisk" stage, the view returns to the original view as of boot, then it hangs
16:49:17 <wob_jonas> where does it fail?
16:49:28 <wob_jonas> ah
16:49:42 <wob_jonas> I'd guess it's a problem with the boot lodaer setup with your emulator then
16:49:57 <wob_jonas> or something
16:49:58 <ais523> well, GRUB working is evidence that it at least doesn't fail in the early stages
16:50:12 <wob_jonas> yeah, but grub has to load the initrd
16:50:25 <ais523> right, but that isn't a hard step or one I'd expect to fail
16:50:34 <wob_jonas> yeah
16:50:37 <wob_jonas> dunno
16:50:48 <wob_jonas> debug it and if it's their fault complain to them
16:51:49 <wob_jonas> I don't think I'll even try to install the VM if I want to participate
16:51:58 <wob_jonas> or download
16:53:13 <ais523> hmm, I think the issue is to do with memory
16:53:30 <ais523> my qemu can't give it more than half a gigabyte, but the implication in the notes is that it needs 4 gigabytes of memory
16:53:47 <ais523> qemu actually segfaults trying to allocate 4G of memory
16:53:59 <ais523> I wonder if it's overflowing it to 0 bytes?
16:54:16 <wob_jonas> no, the implication in the notes is that they will give you 4G of memory for the contest, but it's a modern debian system which is terrible on machines with low amount of RAM so it might actually need 2G or something
16:54:35 <wob_jonas> is it a recent enough version of qemu?
16:54:46 <ais523> whatever the most recent version in the Ubuntu stable repos is
16:55:05 <wob_jonas> and your host is x86_64, right?
16:55:20 <wob_jonas> try giving it just one virtual cpu?
16:55:31 <wob_jonas> not that it should matter much
16:56:05 <wob_jonas> but even with just 512M it should get past the loading initrd stage
16:59:24 <ais523> changing the number of CPUs doesn't help
17:00:51 <ais523> hmm, I suspect GRUB is running but failing to hand over to Linux
17:00:58 <ais523> in this configuration, it's GRUB that loads the initrd
17:01:02 <ais523> let me add some debug statements to the GRUB config
17:02:05 <wob_jonas> sure, grub or the boot loader is always what loads the initrd. that's why it's called *init*rd. it would be just a ramdisk otherwise.
17:02:42 <HackEgo> [wiki] [[Number Factory]] https://esolangs.org/w/index.php?diff=52621&oldid=52544 * Qwertyu63 * (+86)
17:02:50 -!- idris-bot has quit (Quit: Terminated).
17:03:32 <HackEgo> [wiki] [[User:Qwertyu63]] https://esolangs.org/w/index.php?diff=52622&oldid=52519 * Qwertyu63 * (+8)
17:03:49 <ais523> hmm, it seems to be working now, even though I didn't change anything other than dropping caches
17:03:57 <ais523> at least, I'm not aware of having changed anything
17:04:21 <wob_jonas> what caches?
17:04:22 <ais523> I'm also not specifying the amount of memory to use; 0.6GB was not enough
17:04:28 <ais523> wob_jonas: Linux virtual memory caches on the host
17:04:47 <wob_jonas> wtf
17:05:12 <ais523> some web searches implied that QEMU incorrectly counts them as used memory when trying to work out how much memory is available
17:05:16 <wob_jonas> is it possible that you have ran out of memory on the host?
17:05:28 <wob_jonas> ah!
17:05:35 <wob_jonas> so it automatically set the memory size
17:05:45 <wob_jonas> you should try to set it explicitly
17:06:03 <ais523> right, but all the values were either too small, or else caused qemu to fail to allocate memory
17:06:06 <HackEgo> [wiki] [[Number Factory]] https://esolangs.org/w/index.php?diff=52623&oldid=52621 * Qwertyu63 * (+162)
17:06:20 <ais523> the remaining issue seems to be that, after logging in, all the filesystems are read-only
17:06:29 <ais523> but that's likely fixable with a ramdrive
17:06:40 <wob_jonas> and if you're on a machine that doesn't have much resources, such as mine where I ran out of memory for ayacc, then you might be screwed anyway, because you shouldn't expect that a 5 GB disk sized debian system will be kind on memory use.
17:07:03 <wob_jonas> Isn't that because the underlying virtual disk drives are read-only?
17:07:49 <ais523> yes, almost certainly
17:10:26 <ais523> OK, this works
17:10:28 <ais523> at least for C
17:11:16 <wob_jonas> as in, you compiled a hello world?
17:11:18 <ais523> yes
17:11:32 <wob_jonas> yeah, I did at one point break my linux system such that that simple test failed
17:11:45 <wob_jonas> that was shortly before I reinstalled, and one of the last straws
17:11:55 <wob_jonas> the other was the man program no longer working
17:12:13 <wob_jonas> it was all my fault by the way
17:12:26 <wob_jonas> I don't know the specifics, but I fiddled a lot with the system
17:12:33 <wob_jonas> I learned a lot though
17:13:29 <ais523> are you the person who reimplemented core programs like cat and managed to break them in the process? or was that someone else?
17:13:40 <wob_jonas> that was someone else
17:15:55 <HackEgo> [wiki] [[Language list]] https://esolangs.org/w/index.php?diff=52624&oldid=52587 * Qwertyu63 * (+63)
17:16:01 <HackEgo> [wiki] [[User:Qwertyu63]] https://esolangs.org/w/index.php?diff=52625&oldid=52622 * Qwertyu63 * (+0)
17:17:09 -!- erkin has joined.
17:17:15 -!- ais523 has quit.
17:21:11 <HackEgo> [wiki] [[Special:Log/newusers]] create * TheZipCreator * New user account
17:22:00 -!- FreeFull has joined.
17:25:50 -!- staffehn has quit (Ping timeout: 258 seconds).
17:28:01 <wob_jonas> oh wow
17:28:12 <wob_jonas> I got nostalgic and started thinking about those old computers
17:28:51 <wob_jonas> basically the story is that the third computer we had at home was a Pentium that was my computer, running at the same time as the main computer (my father's computer), another Pentium
17:29:40 <wob_jonas> and that I still use that same PC, even though I've replaced the hardware and the operating system many times, but I never replaced both the operating system and a major hardware component at the same time, so I always had to keep the hostname
17:29:42 -!- staffehn has joined.
17:30:21 <wob_jonas> and I have backups sometimes local copies of lots of files from all the earlier operating systems
17:30:47 <wob_jonas> and I used to say that the operating system and each individual part of the hardware got replaced at least three times since
17:30:53 <wob_jonas> but I just realized that's not true
17:31:21 <wob_jonas> I think the optical disk drive only got replaced twice,
17:31:35 <wob_jonas> but when that computer was first set up, it didn't yet have an optical disk drive
17:31:53 <wob_jonas> so getting that first CD drive probably counts as an extra occasion
17:31:59 <wob_jonas> ok, that means the balance is restored
17:32:29 <wob_jonas> heck, I think even the desk has been replaced three times
17:33:01 <wob_jonas> the monitor, I think, got replaced exactly three times: once to a newer crt, once to a small tft, and once to this big tft
17:33:44 <wob_jonas> I'm really fuzzy with the history and I'm not sure how many times the motherboard and many other components were replaced, but I know it was at least three times each
17:34:07 <wob_jonas> hmm... the floppy drive might also be a bottleneck in fact
17:34:30 <wob_jonas> both the 1.44 and the 1.2 floppy drive. I think I only had one 1.2 floppy drive and one or two 1.44 floppy drive
17:34:32 <wob_jonas> damn it
17:35:06 <wob_jonas> but I don't have a floppy drive in this machine anymore, so it's hard to notice
17:36:25 -!- staffehn has quit (Ping timeout: 276 seconds).
17:37:13 -!- staffehn has joined.
17:37:25 <wob_jonas> do I now have to buy two cheap floppy drives and throw one out after installing to the machine? probably no
17:47:14 -!- jaboja64 has joined.
18:02:18 <zzo38> I invented a kind of character coding for use with computer applications involving astronomy and/or astrology.
18:03:51 <zzo38> There are up to 1065353472 codepoints, and the first 128 codepoints are compatible with ASCII.
18:04:52 <zzo38> Do you like this?
18:05:56 <Cale> wob_jonas: Okay, one thing I don't understand is why this thing makes the notation for lambdas and conditionals worse halfway through
18:10:13 <Cale> Yeah, the notation is getting more and more disgusting :)
18:25:43 -!- jaboja64 has quit (Ping timeout: 246 seconds).
18:28:15 -!- jaboja has joined.
18:34:17 -!- LKoen has joined.
18:49:26 -!- idris-bot has joined.
18:52:18 -!- Lord_of_Life has quit (Excess Flood).
18:52:50 -!- Lord_of_Life has joined.
18:59:20 -!- imode has joined.
19:08:26 -!- augur has joined.
19:08:53 <HackEgo> [wiki] [[~-~!]] https://esolangs.org/w/index.php?diff=52626&oldid=47106 * Xav737 * (+331) Add a summary area for the esolang
19:11:59 <pikhq> zzo38: This sounds almost like giga-Unicode. :P
19:14:26 <wob_jonas> Cale: wait till the last few levels. I already didn't understand how come lists can always be extracted freely, even when they are the output of a computation,
19:15:07 <wob_jonas> but in the final few levels suddenly you'll be able to remove the condition from the conditionals, even if that conditional is the output of a computation (like a lambda)
19:15:24 <wob_jonas> So I really don't understand how building stuff works in this game.
19:15:25 <Cale> wob_jonas: Yeah, I finished it, and the notation was really dumb at the end, I guess they want it to look like ruby or something?
19:15:39 <wob_jonas> Also, at some point it changes the notation to the atoms to something horrible.
19:15:46 <shachaf> Cale: h8r
19:15:53 <shachaf> The notation is pretty silly but it doesn't matter.
19:16:08 <wob_jonas> Cale: maybe they want to make it look like *something*, but not ruby
19:16:17 <imode> what game? that lambda game?
19:16:20 <wob_jonas> But it's not really the notations that bother me.
19:16:21 <Cale> shachaf: I just don't know why they would start with better notation, and then make it worse gradually
19:16:25 <wob_jonas> imode: yes
19:16:51 <Cale> wob_jonas: Would it be better if you could place an argument on a lambda and only click it to beta reduce?
19:17:27 <Cale> I mean, the rules about how you can manipulate the components are pretty arbitrary
19:17:38 <Cale> Like the thing about being able to unpack lists
19:17:45 <Cale> That seems okay to me
19:17:55 <Cale> It's just an arbitrary power that you're granted
19:18:23 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
19:18:27 <int-e> /context
19:18:39 <wob_jonas> Cale: I don't think so. Even now in some tasks you need too many clicks to reduce expressions that should just auto-reduce.
19:19:33 <int-e> Ah, found it.
19:19:35 <Cale> wob_jonas: I thought it was kind of interesting to have the power to avoid reduction and decompose things
19:19:57 <wob_jonas> Cale: really my main complaint is that we never see an application expression
19:20:10 <shachaf> Cale: I don't quite understand those null things.
19:20:18 <Cale> shachaf: Just bad notation.
19:20:28 <wob_jonas> Cale: but you don't seem to NEED reduction. And I think I understand the null thing
19:20:51 <Cale> They want it to look like a ternary operator for some reason, but it's not actually a ternary operator
19:21:06 <Cale> So they introduce null there (which actually always occurs on the false branch of the thing)
19:21:11 <shachaf> This might be inspired by Dragonbox. At least it has some similarities.
19:21:30 <wob_jonas> basically a lambda can have multiple return values, which makes sense even if few languages have it, and then it freely allows you to compose any output to any input without building blocks
19:21:33 <shachaf> Cale: I was hoping they'd introduce callCC
19:21:47 <wob_jonas> shachaf: we'd need a fucking function composition first
19:21:50 <Cale> I mean, this style of game could be much better with different primitives
19:21:54 <wob_jonas> the part I really don't understand is the map thing
19:22:03 <wob_jonas> Cale: sure. like the crocodile game, but more powerful.
19:22:04 <shachaf> Anyway I wanted to make a game like this but in the version I had in mind you build more complicated expressions without reducing them all the time.
19:22:09 <wob_jonas> you know the crocodile game, right?
19:22:12 <Cale> yeah
19:22:14 <shachaf> Alligator eggs?
19:22:32 <Cale> Yeah, Alligator eggs
19:22:38 <shachaf> Professor Twist could not but smile. / "You mean," he said, "a crocodile."
19:22:38 <wob_jonas> shachaf: that yes. I'm in Europe, so I can only go with crocodiles
19:23:01 <shachaf> Why?
19:23:47 <wob_jonas> Europe doesn't really have aligators. It has crocodiles, which are nicer, and even those are really far from Hungary, I only see them in zoos.
19:24:31 <shachaf> You're in Eurasia, which has Chinese alligators.
19:24:44 <shachaf> But you can talk about dragon games even though dragons are extinct in Europe.
19:24:59 <wob_jonas> yeah, but Africa has crocodiles, and it's much closer
19:25:32 <shachaf> Africa also has elephants. Why not talk about elephant eggs?
19:25:34 <wob_jonas> are they extinct or are they just hiding? even so, I don't use Chinese dragons for dragon games
19:26:13 <wob_jonas> shachaf: crocodiles have big gaping mouths, you can draw them easily as swallowing eggs or other crocodile families, and even draw them to look similar to a lowercase lambda
19:26:28 <wob_jonas> it would be much stranger for an elephant to eat other elephant families
19:26:42 <shachaf> http://www.qu-i-x.com/crocodile.html
19:26:54 <Jafet> space games are quite popular these days
19:27:02 <Jafet> you could set it in space, with spacesuits
19:28:02 <shachaf> Jafet: Why not set it in a factory with nuclear waste containers?
19:30:18 <wob_jonas> Cale: anyway, the building rules indeed start to make no sense when map are introduced. you can map an expression that has holes, and get expressions with multiple holes. how does that even work?
19:30:28 <wob_jonas> ok, maybe that already didn't make sense with the lambdas
19:30:30 <wob_jonas> dunno
19:31:12 <shachaf> The holes vs. lambdas thing didn't quite make sense to me in the first place.
19:31:17 -!- jaboja has quit (Ping timeout: 246 seconds).
19:31:35 <shachaf> `5 w
19:31:40 <HackEgo> 1/1:galaxy//A galaxy is a star that feeds its litter with milk. \ canada//Canada is Big Scotland. Like, you know, very big. \ turing complete//You complete a Turing when you Tur by a specified amount. \ cod//Cod is a fish's favourite fish person shooter. \ watch//Too late!
19:31:41 <HackEgo> [wiki] [[Talk:~-~!]] https://esolangs.org/w/index.php?diff=52627&oldid=39430 * Xav737 * (+708) /* Dropping the requirement of bignums */ new section
19:31:50 <Cale> You might be overthinking it?
19:32:10 <Cale> It's not like, keeping track of scope or anything
19:32:33 <HackEgo> [wiki] [[Talk:~-~!]] M https://esolangs.org/w/index.php?diff=52628&oldid=52627 * Xav737 * (+78) /* Dropping the requirement of bignums */
19:32:52 <shachaf> `cwlprits canada
19:32:53 <wob_jonas> level 35 is also strange
19:33:00 <HackEgo> shachäf shachäf boil̈y boil̈y boil̈y
19:33:07 <wob_jonas> you get free variables you can drag there
19:33:20 <wob_jonas> and insert to a lambda, and suddenly they're bound to it
19:33:37 <shachaf> Yes, I guess that's the distinction between holes and lambdas.
19:34:06 <wob_jonas> but that was the only level where you can do that, the theme doesn't get explored, and we never find out what the rules are or how alpha-reduction works
19:34:46 <wob_jonas> ah yes, you also get free variables in level 7
19:35:08 <Cale> I also prefer the original syntax for "lists" which makes them look more like sets
19:35:23 <HackEgo> [wiki] [[~-~!]] M https://esolangs.org/w/index.php?diff=52629&oldid=52626 * Xav737 * (+30)
19:35:28 <wob_jonas> but I think you never get enough building blocks to witness alpha reduction, do you?
19:35:45 <Cale> There's nothing really to suggest that sets/lists have any order to them
19:36:06 <Cale> There's only ever x
19:36:15 <shachaf> They're multisets.
19:36:22 <shachaf> But in at least one level the order is required.
19:36:33 <shachaf> ...But you can always take them apart and put them back together so it doesn't mean much.
19:36:36 <Cale> yeah, multisets / bags
19:36:40 <wob_jonas> Cale: yes, that was strange, but I think there's only one or two tasks where that actually matters, the ones that use both lists and equal, and at that point you get the bracket notation
19:37:02 <Cale> wait, which level required something about order?
19:37:21 <wob_jonas> Cale: let me find that
19:37:35 <shachaf> Looks like 54
19:37:49 <wob_jonas> 48
19:37:58 <Cale> oh
19:38:05 <Cale> I see
19:38:11 <wob_jonas> and 49
19:38:19 <Cale> 48 and 49 surely don't
19:38:20 <shachaf> 48 requires order?
19:38:23 <Cale> 54 does
19:38:25 <wob_jonas> no wait, 49 doesn't require it
19:38:40 <shachaf> I don't see how to make order matter in 48 or 49
19:38:43 <wob_jonas> shachaf: I think 48 has solutions and non-solutions that differ only by order in lists
19:38:46 <wob_jonas> 49 doesn't
19:39:06 <shachaf> I don't see how.
19:39:13 <wob_jonas> hmm wait
19:39:14 <shachaf> ([star,star] ==) is pre-bound
19:39:36 <wob_jonas> sorry, you're right
19:39:39 <wob_jonas> 48 doesn't require order
19:42:42 -!- AnotherTest has joined.
19:43:01 <wob_jonas> hmm... I think order might matter for level 51, let me try that
19:43:49 <wob_jonas> wait wtf
19:45:20 -!- PattuX has joined.
19:45:24 <wob_jonas> #51 seems to claim that ([star, (false?$hole:null)] == [(false?$hole:null),star]) evaluates to true
19:45:26 <wob_jonas> how does that work?
19:50:17 <int-e> you did that differently... I compared two stars and erased a bag containing four stars.
19:50:20 <wob_jonas> 65 is the other level where order matters
19:50:29 <wob_jonas> int-e: sure, that's the easy solution
19:50:55 <int-e> but the thing is that nulls disappear completely
19:50:57 <wob_jonas> so because of 54, the goal definitely cares about order
19:51:16 <wob_jonas> but let me test if the == operator cares about the order in 65
19:51:42 <wob_jonas> no wait, 54 doesn't let me test that
19:52:48 <int-e> in any case, I agree that it introduces ugly notation for no good reason.
19:53:07 <wob_jonas> ok, then I think 51 is the only level where you can detect whether == cares about list order
19:53:47 <wob_jonas> I still don't understand the part where you can sometimes evaluate lambdas and some other expressions even if the arguments have holes
19:53:57 <wob_jonas> that's so strange, and I don't understand what the meaning is supposed to be
19:54:03 <wob_jonas> I mean, how do you do that in programming?
19:54:53 <wob_jonas> and it's a bit strange that 51 lets you evaluate (false?$hole:null)
19:56:05 -!- jaboja has joined.
19:56:11 <wob_jonas> The way a conditional can return variable number of return values is strange, but technically you can imagine like you always get a list of the variable arity they output (like in scheme) and as a concession to easy playing the game, you can freely unpack and repack lists, sort of
19:56:23 <wob_jonas> it doesn't quite make sense, but it's not the most disturbing thing at first about the game
19:56:23 -!- AnotherTest has quit (Ping timeout: 255 seconds).
19:57:31 <wob_jonas> in the end, the whole game is so strange I can't make much sense of it, but I'll see what ais says because he knows more about strange logic systems
19:57:59 <wob_jonas> (logic systems in the sense like modal logic and linear logic and use-once variables etc)
20:01:53 <int-e> well, #51 also says that [true,star] == [star,true]
20:02:06 <int-e> as you've probably found out
20:02:23 <wob_jonas> int-e: oh! I haven't checked that. good idea.
20:03:55 <int-e> also the items in the bag aren't arranged nicely after the 6th one, sad :)
20:04:19 <wob_jonas> int-e: well after a while it's hard to display stuff on the screen
20:04:35 <wob_jonas> bags also don't get nicely arranged when the contained elements are large in screen space
20:04:41 <int-e> yeah, but up to 9 is still easy
20:18:22 -!- LKoen has quit (Remote host closed the connection).
20:24:22 -!- jaboja has quit (Read error: Connection reset by peer).
20:29:19 -!- jaboja has joined.
20:31:04 -!- moony has joined.
20:31:10 <moony> _unidecode ᠍
20:31:14 <moony> err
20:31:20 <moony> `unidecode ᠍
20:39:36 <\oren\> AAAAAAAAAAAAAAAAAA
20:39:42 <\oren\> WHYYYYYYY
20:48:48 <wob_jonas> what why?
20:49:11 <wob_jonas> I must be missing the context
20:52:09 -!- sleffy has joined.
21:05:11 -!- sleffy has quit (Remote host closed the connection).
21:20:44 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52630&oldid=52620 * Btiffin2017 * (+546) /* Examples, add Rock Scissors Paper */
21:23:00 -!- Naya has joined.
21:23:20 -!- Naya has quit (Quit: -a- IRC for Android 2.1.35).
21:25:21 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52631&oldid=52630 * Btiffin2017 * (+7) /* Instructions */
21:30:44 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52632&oldid=52631 * Btiffin2017 * (+0) /* Instructions */
21:43:02 -!- jaboja has quit (Ping timeout: 255 seconds).
21:50:57 -!- jaboja has joined.
21:59:13 -!- Phantom_Hoover has joined.
22:02:12 -!- jaboja has quit (Read error: Connection reset by peer).
22:02:42 -!- jaboja has joined.
22:09:25 -!- jaboja has quit (Ping timeout: 276 seconds).
22:16:49 -!- jaboja has joined.
22:25:03 -!- LKoen has joined.
22:38:51 -!- sleffy has joined.
22:54:25 -!- btiffin has joined.
22:57:05 -!- Jafet has quit (Ping timeout: 246 seconds).
22:57:25 <btiffin> To the Funge-98 experts in the crowd? I've tried FBBI rcfunge and cfunge, the Input Character function is buffered. For a proper Play again? prompt is it wise to spin on ~ eating newlines? Or are there better options for getting a 'yn' answer that is to be repeated after the next round?
22:57:35 -!- Jafet has joined.
22:58:26 -!- `^_^v has quit (Quit: This computer has gone to sleep).
23:00:01 -!- `^_^v has joined.
23:08:18 -!- `^_^v has quit (Quit: This computer has gone to sleep).
23:24:52 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
23:29:25 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52633&oldid=52632 * Btiffin2017 * (+293) /* Rock Scissors Paper, on 3; updated to ask play again? */
23:44:28 -!- rdococ has quit (Quit: ZNC - http://znc.in).
23:44:35 -!- rdococ has joined.
23:44:36 -!- rdococ has quit (Changing host).
23:44:36 -!- rdococ has joined.
23:46:03 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52634&oldid=52633 * Btiffin2017 * (-32) /* Rock Scissors Paper, on 3 */
23:57:48 -!- oerjan has joined.
00:03:52 -!- LKoen has quit (Remote host closed the connection).
00:06:26 -!- https_GK1wmSU has joined.
00:08:42 -!- https_GK1wmSU has left.
00:52:44 -!- augur has quit (Ping timeout: 240 seconds).
01:19:48 -!- doesthiswork has joined.
01:34:55 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
01:45:16 -!- augur has joined.
01:45:19 -!- sftp has quit (Ping timeout: 246 seconds).
01:47:04 -!- sftp has joined.
01:55:22 -!- jaboja has quit (Ping timeout: 260 seconds).
02:34:44 -!- Sgeo_ has joined.
02:36:04 -!- Sgeo has quit (Ping timeout: 268 seconds).
02:36:49 -!- https_GK1wmSU has joined.
02:37:01 -!- https_GK1wmSU has left.
03:21:26 -!- sleffy has quit (Ping timeout: 255 seconds).
03:34:59 -!- sleffy has joined.
03:36:24 -!- moony has quit (Ping timeout: 260 seconds).
03:48:17 <doesthiswork> Hah! I constructed an ancient greek pentegon
03:52:37 -!- moony has joined.
04:02:10 -!- sleffy has quit (Ping timeout: 240 seconds).
04:04:50 -!- LKoen has joined.
04:10:10 -!- LKoen has quit (Ping timeout: 276 seconds).
04:10:35 -!- PattuX has quit (Quit: Connection closed for inactivity).
04:12:32 -!- sleffy has joined.
04:17:14 -!- moony has quit (Disconnected by services).
04:17:39 -!- moonythedwarf has joined.
04:34:30 -!- sleffy has quit (Ping timeout: 240 seconds).
04:36:57 -!- sleffy has joined.
04:39:52 -!- MrBrq has joined.
04:42:29 -!- MrBrq has left.
05:37:04 <oerjan> girl genius is recycling material i've already read! it's an outrage!
05:42:17 <oerjan> oh it may get colored
05:44:27 -!- sleffy has quit (Ping timeout: 240 seconds).
05:44:53 -!- sleffy has joined.
06:08:15 -!- moonythedwarf has quit (Quit: Leaving).
06:31:54 -!- erkin has joined.
06:59:43 -!- FreeFull has quit.
07:03:36 -!- sleffy has quit (Ping timeout: 260 seconds).
07:08:59 <\oren\> FUUUUUUUUUUUU
07:15:50 <\oren\> http://imgur.com/a/pYQht
07:18:49 -!- augur has quit (Remote host closed the connection).
07:26:12 <\oren\> http://imgur.com/kFg6XT3
07:26:20 <\oren\> Look at this shit!
07:29:24 <oerjan> are you sure it's not the other continents that are too far south hth
07:30:43 <\oren\> oerjan: welll... whatever, relativity and all that
07:30:53 <oerjan> also they've placed italy in the north of africa tdnh
07:32:17 <\oren\> oerjan: no, that was the treaty of lausanne that did that
07:32:54 <oerjan> ah.
07:52:02 <Jafet> a bigger problem is its use of a mercator projection
07:53:05 <Taneb> I think it's a we do what we want projection
07:54:02 <shachaf> I'm inclined to agree with the folks in the Hunting of the Snark.
08:16:36 <doesthiswork> Girl Genius is showing reruns. I want my money back!
08:19:27 <shachaf> doesthiswork: your complaint is a rerun of oerjan's hth
08:19:32 <shachaf> `complaints
08:19:36 <HackEgo> 24 share/Complaints.mp3
08:19:45 <shachaf> `? `complain
08:19:46 <HackEgo> ​`complain? ¯\(°​_o)/¯
08:19:53 <shachaf> `w complain
08:19:54 <HackEgo> That's not wise.
08:19:57 <shachaf> `grWp complain
08:20:06 <HackEgo> No output.
08:27:44 -!- erkin has quit (Remote host closed the connection).
08:28:09 -!- erkin has joined.
08:42:58 -!- MrBusiness has quit (Quit: https://www.youtube.com/watch?v=xIIqYqtR1lY -- Suicide is Painless - Johnny Mandel).
08:50:05 -!- MrBusiness has joined.
08:59:18 -!- spruit11 has joined.
09:17:01 -!- imode has quit (Ping timeout: 255 seconds).
09:28:37 -!- https_GK1wmSU has joined.
09:31:07 -!- https_GK1wmSU has left.
09:59:50 -!- oerjan has quit (Quit: Nite).
10:07:47 <int-e> \oren\: http://newsthump.com/2017/07/31/scaramucci-fired-after-failing-to-do-the-fandango/ <-- I hope this will be the final Bohemian Rhapsody piece on that guy.
10:27:38 -!- LKoen has joined.
10:59:59 -!- btiffin has quit (Quit: ChatZilla 0.9.93 [SeaMonkey 2.46/20170120202656]).
11:01:55 -!- tromp has quit.
11:12:58 -!- doesthiswork has quit (Quit: Leaving.).
11:15:22 -!- tromp has joined.
11:34:14 -!- boily has joined.
11:40:44 <boily> `w
11:40:45 <HackEgo> spore//spore <n> stores its input in tmp/spout and displays the nth line (default first). For a version considering irc line lengths, see sport. See also `spam.
11:42:42 <shachaf> Taneb invented mushrooms, so I guess he probably invented spores too.
11:48:01 <boily> `? tanebventions
11:48:02 <HackEgo> Tanebventions include automatic squirrel feeders, necessity, Go, submarine jousting, Fueue, the universe, special relativity, metar, weetoflakes, mushrooms, sand, dragons, persistence, the BBC, _46bit, cognac, progress, sanity, the Oxford comma, and this sentence. See also tanebventions: maths. He never invents anything involving sex.
11:48:13 <boily> indeed.
12:23:55 -!- PattuX has joined.
12:24:39 -!- boily has quit (Quit: EVERYTHING CHICKEN).
13:22:01 -!- jaboja has joined.
13:41:18 -!- jaboja has quit (Read error: Connection reset by peer).
13:41:59 -!- jaboja has joined.
13:45:23 -!- jaboja has quit (Read error: Connection reset by peer).
13:45:32 -!- jaboja has joined.
13:49:58 -!- jaboja has quit (Read error: Connection reset by peer).
13:51:11 -!- jaboja has joined.
13:52:52 -!- ski has quit (Ping timeout: 260 seconds).
13:55:47 -!- jaboja has quit (Read error: Connection reset by peer).
13:56:01 -!- jaboja has joined.
14:00:30 -!- doesthiswork has joined.
14:04:17 -!- jaboja has quit (Ping timeout: 246 seconds).
14:06:44 -!- jaboja has joined.
14:12:10 -!- jaboja has quit (Ping timeout: 240 seconds).
14:31:07 -!- joast has quit (Ping timeout: 246 seconds).
14:39:43 -!- `^_^v has joined.
14:45:46 -!- jaboja has joined.
14:49:44 -!- erkin has quit (Remote host closed the connection).
14:50:07 -!- erkin has joined.
15:05:25 -!- Cale has quit (Ping timeout: 246 seconds).
15:07:52 -!- joast has joined.
15:10:02 -!- doesthiswork has quit (Quit: Leaving.).
15:11:08 -!- sdhand has quit (Excess Flood).
15:11:31 -!- sdhand has joined.
15:11:42 -!- sdhand has quit (Changing host).
15:11:42 -!- sdhand has joined.
15:18:11 -!- Cale has joined.
15:23:44 -!- jaboja has quit (Ping timeout: 258 seconds).
15:38:57 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
15:50:07 <HackEgo> [wiki] [[Special:Log/newusers]] create * SpeedTime * New user account
15:51:50 <HackEgo> [wiki] [[Special:Log/newusers]] create * Plantagenet * New user account
16:09:20 -!- impomatic has quit (Quit: http://corewar.co.uk).
16:32:24 -!- AnotherTest has joined.
16:42:22 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
16:55:21 -!- AnotherTest has quit (Ping timeout: 258 seconds).
16:58:36 -!- sleffy has joined.
17:15:12 <HackEgo> [wiki] [[Cubix]] https://esolangs.org/w/index.php?diff=52635&oldid=49843 * SnoringFrog * (+55) adding D comand
17:15:26 -!- FreeFull has joined.
17:20:48 -!- AnotherTest has joined.
17:25:52 -!- sdhand has changed nick to [f][r][o][g][b][.
17:27:08 -!- [f][r][o][g][b][ has changed nick to [s][a][m].
17:42:28 -!- AnotherTest has quit (Ping timeout: 240 seconds).
17:44:51 -!- AnotherTest has joined.
17:59:34 -!- AnotherTest has quit (Ping timeout: 276 seconds).
18:02:10 -!- sleffy has quit (Ping timeout: 246 seconds).
18:07:06 -!- [s][a][m] has changed nick to sdhand.
18:11:50 -!- erkin has joined.
18:15:10 -!- sleffy has joined.
18:15:49 -!- Phantom_Hoover has joined.
19:00:41 <int-e> if anyone cares, #esoteric is now channel number 38 out of 84 that lambdabot joins... should get here sooner after restarts. (I reprioritized the non-core-haskell channels based on channel population count, and #esoteric is quite large)
19:09:35 <Cale> int-e: Maybe #reflex-frp would make a good addition as well? :)
19:09:54 <Cale> (I manually joined it there a little while back)
19:12:50 <int-e> looks good, adding it...
19:15:06 <HackEgo> [wiki] [[Befunge]] M https://esolangs.org/w/index.php?diff=52636&oldid=52606 * Btiffin2017 * (+63) /* Befunge-98 and beyond */
19:25:49 -!- augur has joined.
19:48:03 -!- imode has joined.
19:51:20 -!- MrBismuth has joined.
19:53:46 -!- MrBusiness has quit (Ping timeout: 255 seconds).
19:56:45 <\oren\> WILLIAM SHATNER IS A BRONY
20:00:21 <imode> source or die.
20:00:53 -!- sleffy has quit (Ping timeout: 258 seconds).
20:07:11 <\oren\> imode: look at his twitter
20:08:00 <imode> oh my god he's shitposting.
20:08:19 -!- shikhin has changed nick to shikbie.
20:08:25 <\oren\> yeah... he also in one tweet implied he posts on 4chan
20:08:28 -!- MrBismuth has quit (Ping timeout: 240 seconds).
20:08:46 <imode> I wonder if that's actually him or a PR dude.
20:08:48 <APic> *shrug*
20:16:04 -!- tromp has quit (Read error: Connection reset by peer).
20:16:10 -!- tromp has joined.
20:17:34 -!- MrBusiness has joined.
20:32:37 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
20:34:45 -!- sleffy has joined.
20:41:04 -!- MrBusiness has quit (Ping timeout: 246 seconds).
20:48:40 -!- sleffy has quit (Ping timeout: 255 seconds).
20:51:36 -!- MrBusiness has joined.
20:54:26 <rdococ> Imagine a language which uses "yes" and "no" for its boolean values, rather than "true" and "false".
20:59:05 -!- AnotherTest has joined.
20:59:19 <\oren\> rdococ: kOS uses On and Off
20:59:42 <\oren\> eg. to set the variable X to true, you say:
20:59:46 <\oren\> X ON.
20:59:51 <rdococ> ah
21:00:13 <rdococ> imagine extending On and Off with something that doesn't translate to the true/false dichotomy, e.g. In
21:00:28 <APic> Hare Krishna. ♥
21:03:13 -!- AnotherTest has quit (Ping timeout: 240 seconds).
21:05:30 -!- AnotherTest has joined.
21:05:41 <imode> rdococ: there was a codebase I worked on that replaced booleans with bitwise flags, and we had to use <prefix>_valid for true and <prefix>_invalid for false.
21:06:22 <imode> it was convenient because if you wanted to signal multiple conditions you could (because you were returning a uint), but it ended up with us just aliasing things to true and false. :P
21:07:27 <rdococ> heh
21:11:36 -!- `^_^v has quit (Quit: This computer has gone to sleep).
21:11:39 <rdococ> imode: 7
21:11:56 <imode> 7?
21:12:05 <APic> 7.
21:12:25 <rdococ> the three bit flags that I turned on happened to be at the least significant end, but their meaning is most significant.
21:12:41 <imode> lmao.
21:12:55 <rdococ> 19.
21:13:01 <rdococ> :P
21:13:06 <imode> one on, two off, two on. :P
21:13:36 <rdococ> one on, two on, three off, four on, five on.
21:13:39 <imode> we basically treated uints as bit arrays with macros to access individual bits.
21:13:54 <rdococ> like an array of booleans
21:13:57 <imode> yuh.
21:14:16 <rdococ> Wait. Each bit's index in the bit array is its own bit array.
21:14:24 <imode> hahahahahaha.
21:14:39 <imode> it's bit arrays all the way down.
21:16:10 <rdococ> Not only can you store bit arrays, you can store sets of bit arrays.
21:16:18 <rdococ> In fact, not just sets.
21:18:33 <rdococ> A bit array is an associative array that maps bit arrays to bits. Which means that it is an associative array that maps associative arrays that map bit arrays to bits, to bits.
21:19:00 <imode> yo dawg.
21:19:05 -!- AnotherTest has quit (Ping timeout: 258 seconds).
21:19:20 -!- AnotherTest has joined.
21:20:27 <rdococ> A class of associative arrays that map themselves to bits.
21:21:43 <rdococ> Imagine an entire self-referential language in which every class is defined this way.
21:22:25 <rdococ> So you have class number = {number -> bit}. Now you can have class array = {number -> number}, which is also {{number -> bit} -> {number -> bit}}.
21:22:55 <rdococ> hm.
21:23:55 <rdococ> A set maps objects (including numbers and arrays) to bits. So here's the twist: a set of numbers is a number.
21:24:41 <imode> huh. you're doing something that's close to what I'm doing.
21:24:47 <imode> storing paths in a binary tree as unsigned integers.
21:25:10 <rdococ> At least a finite set containing finite numbers, anyway.
21:25:34 <rdococ> Transfinite ordinals might work the same way, but I'm not sure.
21:25:44 <rdococ> We are, after all, dealing with powers of two.
21:25:57 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
21:27:17 <imode> https://ptpb.pw/2bPr/python check this out
21:28:23 <rdococ> Woah.
21:28:37 <imode> storing/encoding binary trees.
21:29:09 <rdococ> Holy nuts.
21:29:09 <imode> the way it works is you provide a path to a node (in the form of left/right instructions)
21:29:44 <imode> and on every query for a node (meaning, you go left, right, then left, then ask if a node is there), we simply trace all the way back to the root of the tree from that node.
21:29:57 <imode> if your node happens to fall upon that path, we output a '1'. if not, we output a '0'.
21:30:48 <rdococ> !Warning! Mind has reached critical meta and explosion is imminent. Evacuate immediately. !Warning!
21:31:04 <imode> if you run the python script, it actually prints out the resulting tree.
21:31:28 <rdococ> is it python 2.x or 3.x?
21:31:37 <imode> 3. but it should just work.
21:31:52 <imode> yeah it works with 2.
21:32:31 <rdococ> hm. what's __name__?
21:32:40 <rdococ> I'm not acquainted with python, so idk.
21:33:13 <imode> that's just some code to run the file if you call, rather than importing it.
21:33:18 <imode> err, run the main function.
21:33:22 <rdococ> ah.
21:33:30 <rdococ> makes sense.
21:33:35 <imode> otherwise main() would run on every import.
21:33:39 <rdococ> yeah.
21:34:18 <imode> what I wanted was something additive. meaning, to construct a binary tree in memory, updates don't have to come in order.
21:34:35 <rdococ> ah.
21:35:01 <imode> '0000' is 'fork left four times'. '10000' is 'fork right once, then left four times.'
21:35:12 <imode> regardless of when these arrive, the structure is the same. you can even re-order them.
21:35:46 <rdococ> cool.
21:36:12 <rdococ> 10110 is "fork right once, then left once, then right twice, then left once", right?
21:36:18 <imode> yup.
21:36:27 <imode> any node on that path is now valid.
21:36:32 <rdococ> what content does each node have?
21:36:46 <imode> none. but it's trivial to ship your data after the fact.
21:37:02 <imode> or build it in like an associative array.
21:37:06 <rdococ> is each tree defined as an array of these numbers, then?
21:37:07 <imode> "this path maps to this binary blob."
21:37:12 <imode> yup.
21:37:20 <rdococ> ah, makes sense.
21:37:36 <imode> this tree, for example, contains 26 unique nodes across all the paths.
21:38:04 <imode> the resulting list, [15, 47, 271, 2191, 111, 4385], can all be stored as two-byte numbers if you're really hamfisted about it.
21:38:17 -!- wob_jonas has joined.
21:38:18 <imode> so your 26-node tree is encoded in 12 bytes.
21:38:22 <rdococ> heh
21:38:57 <imode> the cool part is that it's also a sort of database. you can query for a partial path, delete a node along that path, and then the rest of the paths become invalid because they matched.
21:39:00 <wob_jonas> "<\oren\> WILLIAM SHATNER IS A BRONY <imode> source or die." => imode: he's voiced a character in S7 E13
21:39:11 <imode> wob_jonas: hahaha oh god.
21:40:07 <rdococ> imode: So say you took the tree from the demo, and removed "0001". Would that make 00010000, 00010010000 and 000100100010 invalid too?
21:40:08 -!- https_GK1wmSU has joined.
21:40:34 <imode> correct. you say "remove all paths corresponding to this prefix 0001."
21:40:37 <rdococ> ah.
21:40:45 <imode> meaning "delete the node at left,left,left,right.
21:40:57 -!- https_GK1wmSU has left.
21:40:57 <imode> which means its children are orphans.
21:41:15 <rdococ> :O
21:41:17 <imode> now, you can -not- do that. another path may pick up the slack later.
21:41:27 <imode> meaning, say, if you wanted to do an arbitrary insertion.
21:41:43 <imode> or a replacement. it's a lot easier than messing with pointers.
21:41:56 <imode> and at that level, your paths take up less than a machine word's worth of space.
21:43:12 <imode> I mean, that demo decodes to... {{*,*,*,*},*,*,*},*,*,{*,*,{*,*,{*},*},*}}
21:43:43 <rdococ> Hm. If a path, e.g. "001100", has leading 0s, simply converting it into an integer would remove the information and make it indistinguishable from "1100" or "00001100". How do you convert it?
21:43:58 <imode> that's in the path function.
21:44:18 <imode> I take the traditional approach of only dealing with nodes in a complete binary tree.
21:44:22 <rdococ> ah.
21:44:38 <imode> which means that for a given node N, children are located at 2n+1 and 2n+2.
21:44:49 <imode> and parent is located at n-1/2
21:44:52 <rdococ> Makes sense, I suppose.
21:45:21 <imode> this way given a bit's index (a number), I can trace all the way back towards the root of the tree just by calling parent until I hit it.
21:45:30 <rdococ> ah.
21:45:45 <rdococ> Wait, (n-1)/2?!
21:45:49 <rdococ> Oh, ah.
21:45:50 <imode> mhm.
21:46:10 <rdococ> I assume there's some rounding there (especially since the code uses bit shifting).
21:46:18 <rdococ> That's... actually really clever.
21:46:18 <imode> correct, integer arithmetic.
21:46:24 <imode> pretty standard for heaps.
21:47:15 <imode> here's something that'll twist your mind. because we can map integers onto unique paths for a binary tree, we can create functions that generate infinite or bounded trees with a certain pattern, compose them, and traverse the results.
21:48:00 <imode> for example, checking if the number is even yields only right branches from a given node.
21:48:02 <rdococ> ...Wait.
21:48:18 <rdococ> Hold on, let me reread that.
21:48:38 <imode> short version: I can write functions to generate infinite trees and compose them together.
21:48:55 <imode> in fact, let's do an experiment.
21:49:09 <rdococ> Wait - are these infinite trees finite in their format as an array of integer paths?
21:50:50 -!- AnotherTest has quit (Ping timeout: 246 seconds).
21:51:33 <imode> https://ptpb.pw/UnFc/python run this.
21:51:43 <imode> look at the second tree() function.
21:51:58 -!- AnotherTest has joined.
21:52:48 <imode> notice how I'm not running through a list of paths or anything. the code is doing the work.
21:54:11 <rdococ> woah, recursion
21:54:27 <imode> in traverse(), yeah.
21:54:34 <imode> just a standard left/right traversal.
21:55:28 <rdococ> brb, piecing my brain back together
21:55:52 <imode> the way I envision it is taking the infinite full binary tree and carving paths out of it. it's somewhat similar to raymarching, where you can compose transforms on distance functions to yield a scene.
21:56:05 <imode> sort of playing with 1D space.
21:56:28 <rdococ> wait, so an infinite tree which is stored as its complement?
21:56:40 <imode> there's nothing stored here.
21:56:49 <rdococ> ...wait, what?
21:56:50 <imode> you could remove the list in main() and it'd still work.
21:57:04 <imode> the second tree() function is generating the tree based on which node gets queried.
21:57:31 <rdococ> Ahh.
21:57:32 <imode> if the node you're on's index is divisible by 4, you'll see that it doesn't exist in the tree.
21:57:41 <imode> if it isn't, then the node exists in the tree.
21:58:01 <rdococ> Ahhh.
21:58:14 <imode> (the first if statement is just to limit it to a few levels.
21:58:21 <rdococ> That makes sense.
21:58:42 <rdococ> This is similar to infinite lazy lists.
21:58:46 <imode> so imagine this. you have a set of primitive functions that you can compose together to make any tree you'd like without having to store anything.
21:58:50 <imode> yup.
21:58:55 <rdococ> In fact, it IS infinite lazy lists.
21:59:11 <imode> essentially, yeah. :P
21:59:20 <rdococ> Makes sense, somehow.
21:59:50 <wob_jonas> ARGH!
21:59:56 <rdococ> eh?
21:59:56 <imode> I was working on encoding nested lists of atoms (just unlabeled trees) in as small a format as possible, and I just ended up here.
22:00:54 <wob_jonas> I still hate how font creators for latin script always put a fucking fi ligature in their font that is very distinctive from just a plain fi with possibly slight kerning, even if such a ligature looks bad in that font, just to try to signal that their font is well-made and high-classed.
22:00:54 <imode> go change the modulo parameter to see how it adds and eliminates paths.
22:01:12 <rdococ> The way I understand it, ["0001", "000100", "00011"] is the same list as ["000100", "00011"], yes?
22:01:14 <wob_jonas> Sure, and fi ligature may look nice in a Times-like font, but in most fonts it's just freaking ugly.
22:01:15 <rdococ> s/list/tree
22:01:27 -!- `^_^v has joined.
22:01:54 <imode> rdococ: in the original script, yes.
22:02:06 <rdococ> Not in the second script, though?
22:02:18 <wob_jonas> And yes, I know I keep complaining about this.
22:02:19 <imode> well, the second script doesn't use lists of paths to traverse a tree. :P
22:02:23 <rdococ> heh
22:02:59 <imode> but yeah, that's the idea. paths are additive. meaning if two paths share the same prefix, you can always select the longer one and the shorter one will remain valid.
22:03:49 <rdococ> ah.
22:03:55 <imode> this is useful because if you say "oh I want to insert at this point in the tree", you don't have to do anything. you just have to say "oh this path is now valid." and optimize later.
22:04:05 <rdococ> heh
22:04:26 <imode> like, if you had a series of right branches, 0000, and you wanted to branch -one more time- after that, you could either edit the path to 00000, or just add 00000 to the list of paths.
22:05:29 <imode> if you're playing the home game you'll notice that you can encode arbitrary lists like this. :P
22:09:08 -!- AnotherTest has quit (Ping timeout: 255 seconds).
22:09:33 <imode> rdococ: for example, 00010010000 and 000100100010.. you can always choose the latter, because it still yields a valid path for the former. the same goes with 00010000 and 0000.
22:10:28 -!- `^_^v has quit (Quit: This computer has gone to sleep).
22:11:16 <imode> though actually, now that I'm looking at it, unless you choose it very carefully, some of those forks are invalid.
22:11:24 -!- MDude has joined.
22:14:18 <rdococ> moo.
22:14:44 <rdococ> you mean 0001001000 and 000100100010, right?
22:15:00 <imode> yup.
22:15:32 <rdococ> I already gathered that :P
22:15:42 <rdococ> I'm gonna try mod 5
22:15:49 <imode> do it. it's pretty trippy.
22:16:08 <imode> if you do mod 2, and then mod 3, you can see how it adds an entire left traversal.
22:16:11 <rdococ> woah, it made the tree even larger
22:16:34 * imode wonders if he could form a bitwise trie...
22:16:56 <imode> mainly to do prefix sharing.
22:18:19 -!- shikbie has changed nick to shiklet.
22:22:11 <imode> nah. that'd be more trouble than it's worth. what I could do is just do it on the db side and say "well okay, I'm going to be using this path entry as my prefix now."
22:22:14 <imode> and do parent prefixes.
22:23:24 <APic> Explicit Content
22:23:41 <imode> so one path could look like (Null, 00010000), and another could look like (1, 000), and another could look like (1, 0010).
22:24:23 <imode> so the paths generated would be 00010000, 00010000000, and 000100000010.
22:24:29 -!- `^_^v has joined.
22:24:43 <imode> but with the overhead being smaller because you wouldn't have to repeat the prefix each time.
22:26:42 <rdococ> heh
22:27:44 <imode> a 26-node tree in 6 bytes isn't that bad though.
22:28:17 <rdococ> agreed
22:28:48 <rdococ> nice, mod 2 creates a left-only tree
22:29:36 <rdococ> and %2==1 is a right-only tree - makes sense
22:29:36 <imode> mhm. if you invert the conditions (so that it outputs a '1' instead of a '0' and vice versa), you'll create a right-only tree.
22:29:45 <imode> or do that. :P
22:29:49 <rdococ> heh
22:31:25 <rdococ> for some reason, I'm beginning to understand the structure of the tree system by only looking at the output rather than the code
22:31:44 <imode> that's the benefit of a quickly added depth variable. :P
22:31:49 <rdococ> heh
22:32:25 <rdococ> id:depth:latest_turn
22:32:33 <imode> yup!
22:32:38 <imode> id == index in this case.
22:32:58 <imode> it's cryptic because it's a scratch file.
22:34:26 <rdococ> I assume the bottom line of output is the tree converted into one integer
22:36:52 <rdococ> how is that done?
22:37:35 <imode> so that's actually just a depth-order traversal in binary.
22:37:41 <rdococ> ah.
22:37:47 <imode> 0's are lefts, 1's are rights.
22:38:09 <rdococ> oh, I see the correlation now.
22:38:56 <imode> I'd like to encode text and such via this.
22:40:10 <imode> i.e get the ordinal for a given character, split it up via its decimal digits, encode said digits as a tree traversal.
22:48:47 <\oren\> Un problema en Las Toninas hace que Internet funcione mal en todo el país
22:48:53 <\oren\> En el balneario hay un cable que es la principal fuente de fibra óptica de todo el país. En una de ellas hay inconvenientes y, por eso, hay dificultades de conexión en todo el territorio argentino.
22:49:00 <\oren\> Este cable tiene una extensión total de unos 20 mil kilómetros y forma parte del SAC (siglas de South American Crossing), un anillo interoceánico que bordea América del Sur y provee conectividad a diversos países de la región.
22:49:29 <\oren\> The entire country of Argentina is having internet problems
22:50:16 <rdococ> odd
22:53:23 -!- hppavilion[1] has joined.
23:15:52 <rdococ> hppavilion[1]!
23:15:59 <hppavilion[1]> rdococ!
23:16:56 -!- `^_^v has quit (Quit: This computer has gone to sleep).
23:23:16 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
23:23:55 -!- https_GK1wmSU has joined.
23:24:32 -!- https_GK1wmSU has left.
23:29:32 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
23:30:07 -!- wob_jonas has joined.
23:33:05 -!- boily has joined.
23:33:07 <boily> @metar CYUL
23:33:07 <lambdabot> CYUL 022200Z 22006KT 15SM FEW040TCU BKN240 29/17 A2993 RMK TCU2CI4 SLP138 DENSITY ALT 1800FT
23:39:23 <rdococ> ba na na na
23:40:12 <rdococ> hm. Some (human) languages utilize echo answers instead of yes/no ("Did you fart?" "I did fart.")
23:40:32 <rdococ> what happens if we translate that to the realm of programming? "2 == 3" returns "2 ~= 3"
23:40:41 <boily> rdochellochelloc.
23:42:31 <rdococ> hoily.
23:42:57 <shachaf> `cat bin/makelist
23:42:58 <HackEgo> if [[ "$1" == *" "* ]]; then exec makelist $@; fi; name="$1"; file="bin/$name"; makelistlist "$name"; shift; cp bin/emptylist "$file"; for n in "$@"; do echo "$n" >> "$file"; done
23:43:46 <shachaf> `makelist ysaclist boily shachaf
23:43:49 <HackEgo> makelistlist ysaclist: shachaf
23:44:00 <shachaf> hm
23:44:05 <shachaf> Ah, right.
23:44:08 -!- imode has quit (Ping timeout: 240 seconds).
23:46:44 <\oren\> I thought suv was a regular word, prnounced like "sub" but with a v
23:46:46 <boily> `ysaclist (63)
23:46:46 <HackEgo> ysaclist (63): boily shachaf
23:46:52 <boily> heh, it works ^^
23:47:07 <\oren\> `? suv
23:47:08 <HackEgo> suv? ¯\(°​_o)/¯
23:47:10 <boily> he\\oren\! long time no see.
23:50:07 <\oren\> `learn A suv /sʌv/ is used to transport toddlers of various sizes.
23:50:09 <HackEgo> Learned 'suv': A suv /sʌv/ is used to transport toddlers of various sizes.
00:02:18 <hppavilion[1]> That bugs me so much
00:02:19 <boily> holy fungot it's pouring like crazy...
00:02:19 <fungot> boily: sometimes i wonder if it keeps it the jury people so close for weapons and everything changes so quick that eight years ago))
00:02:25 <boily> @metar CYUL
00:02:25 <lambdabot> CYUL 022200Z 22006KT 15SM FEW040TCU BKN240 29/17 A2993 RMK TCU2CI4 SLP138 DENSITY ALT 1800FT
00:02:35 <hppavilion[1]> @metar PAMR
00:02:35 <lambdabot> PAMR 022253Z 01004KT 10SM FEW049 OVC060 16/12 A3019 RMK AO2 SLP225 T01610117
00:06:27 -!- sleffy has joined.
00:26:48 -!- augur has quit (Quit: Leaving...).
01:02:04 -!- sleffy has quit (Ping timeout: 276 seconds).
01:11:30 -!- http_GK1wmSU has joined.
01:11:32 -!- http_GK1wmSU has left.
01:17:31 <boily> `5 w
01:17:36 <HackEgo> 1/2:dy//dx = y \ htdh//HtDH is a classic text on How to Design Hotdogs or possibly Hogprams. It is all about functional condiments, and was co-authored by Herence Tao and Don Ho. \ gonad//gonads are the best punctional fondlegramming squishcture. \ golf//Golf is the shortest game known. The goal is to get a ball into a hole with a single stroke. \
01:17:37 <boily> `n
01:17:38 <HackEgo> 2/2:category-helpdesk//category-helpdesk is a helpdesk with identity and composition. This channel isn't it.
01:21:02 -!- doesthiswork has joined.
01:27:42 -!- augur has joined.
01:39:05 <rdococ> mo
01:49:22 * boily mapoles rdococ into complete words
01:49:27 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
01:49:45 -!- imode has joined.
01:53:44 <ybden> `? rdococ
01:53:45 <HackEgo> rdococ was thought to be from Budapest, then Mars, but he is actually in Airstrip One. Thanks to boily he is approaching permanent boredom & mapoledom. He is a relative of `words.
01:54:19 <imode> `? imode
01:54:20 <HackEgo> imode? ¯\(°​_o)/¯
01:54:24 <imode> :(
01:55:10 <ybden> "IMODE - Innovative Multicomponent Drug Design"
01:55:15 <ybden> imode: are you innovative?
01:55:24 <ybden> imode: are you componentised?
01:55:26 <boily> imellode, ybdellon!
01:55:30 <ybden> imode: do you design drugs?
01:55:41 <ybden> belloily!
01:56:10 <shachaf> hybden
01:56:11 <ybden> imode: do you have a severe (or not so severe) case of the UPPERs?
01:56:31 <ybden> shachaif
01:56:40 -!- sdhand has quit (Ping timeout: 276 seconds).
01:56:43 <boily> `le/rn imode//imode is an Innovative Multicomponent Drug Designer, afflicted by a severe case of the UPPERs.
01:56:44 <doesthiswork> imode: if you do could you suggest a replacement for amphetamines that doesn't increase my heart rate?
01:56:45 <imode> I may design drugs.
01:56:45 <HackEgo> Learned 'imode': imode is an Innovative Multicomponent Drug Designer, afflicted by a severe case of the UPPERs.
01:57:04 <boily> `? ybden
01:57:05 <HackEgo> ybden daintily hides in her den, fostering dark machinations on warfare cutlery.
01:57:06 <shachaf> ybden: http://kmcallister.github.io/complexity.html
01:57:13 -!- sdhand has joined.
01:57:36 -!- sdhand has changed nick to Guest94226.
01:58:15 <ybden> shachaf: To-day I have learned that I should be careful around drugs, lest I mistake them for complexity classes
01:58:57 -!- boily has quit (Quit: EXECUTIVE CHICKEN).
02:00:10 <doesthiswork> just ask yourself "what would Erdős do?"
02:05:22 <rdococ> `? UPPERs
02:05:23 <HackEgo> UPPERs? ¯\(°​_o)/¯
02:08:17 <doesthiswork> There's a new SpecGram out http://specgram.com/CLXXIX.3/00.contents.html
02:36:20 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
02:37:56 <quintopia> i swear i just heard jaku say bjonas in a video
02:41:05 <doesthiswork> ?Qien es jaku?
02:41:05 <lambdabot> Unknown command, try @list
02:45:48 -!- PattuX has quit (Quit: Connection closed for inactivity).
03:16:58 -!- sleffy has joined.
03:42:37 <shachaf> `5 w
03:42:42 <HackEgo> 1/2:hertz//hertz (German for heart) is an SI unit equal to the frequency of an average heartbeat. \ nih//NIH was /not/ invented by Taneb. \ rntz//rntz is a classically-trained logician known for his constructive criticism. \ fact//Facts are lies. They are not there. Go away! \ infidel//An infidel is someone who doesn't support the great former lead
03:42:44 <shachaf> `n
03:42:45 <HackEgo> 2/2:er. Socialismo o muerte!
03:59:58 -!- hppavilion[1] has quit (Ping timeout: 246 seconds).
04:28:31 <doesthiswork> Dicotomías de rechazo
04:28:43 <doesthiswork> Socialismo Y muerte!
04:45:16 <shachaf> `5
04:45:17 <HackEgo> 1/3:411) <ais523> 99% OF USES OF STRDUP ARE ILLEGAL! \ 785) <oklopol> my best guess is 4 years ago but possibly also yesterday \ 1285) <int-e> I couldn't help thinking that maybe if one considers the ramifications in full detail it will turn out that overthinking is often not helpful and therefore, not something to be proud of. \ 746) <Phantom_Hoov
04:45:22 <shachaf> `n
04:45:23 <HackEgo> 2/3:er> i once had a dream when i was told to look after some kittens but they were made of chocolate and i ate them :( \ 878) <Bike> the idea is that you can get the information you need from reading the other players, isn't it [...] <Bike> and of course, reading isn't limited to facial expressions [...] <fizzie> That's true, you can read e.g. boo
04:45:25 <shachaf> `n
04:45:25 <HackEgo> 3/3:ks.
04:45:38 <shachaf> What is the context of 411?
04:45:57 <shachaf> `` doag quotes | grep STRDUP
04:46:03 <HackEgo> No output.
04:46:21 <shachaf> `` hg cat -r 1 quotes | grep STRDUP
04:46:23 <HackEgo> ​<ais523> 99% OF USES OF STRDUP ARE ILLEGAL!
04:46:26 <shachaf> figures
04:46:40 <imode> I'd like to know too.
04:47:25 * imode ponders an alternate tree indexing scheme.
04:47:45 <shachaf> The context is 2011-07-22
05:12:12 -!- brandonson has quit (Ping timeout: 260 seconds).
05:13:41 -!- brandonson has joined.
06:36:32 -!- erkin has joined.
06:56:09 -!- doesthiswork has quit (Quit: Leaving.).
06:59:54 -!- FreeFull has quit.
07:01:16 -!- Guest94226 has changed nick to sdhand.
07:01:32 -!- sdhand has quit (Changing host).
07:01:32 -!- sdhand has joined.
07:26:37 -!- augur has quit (Remote host closed the connection).
07:27:11 -!- augur has joined.
07:31:39 -!- augur has quit (Ping timeout: 258 seconds).
08:19:32 -!- sdhand has quit (Excess Flood).
08:19:45 -!- sdhand has joined.
08:20:08 -!- sdhand has changed nick to Guest79676.
08:31:32 -!- Guest79676 has quit (Changing host).
08:31:32 -!- Guest79676 has joined.
08:31:32 -!- Guest79676 has changed nick to sdhand.
08:43:49 -!- sleffy has quit (Ping timeout: 246 seconds).
09:15:50 -!- imode has quit (Ping timeout: 240 seconds).
09:43:26 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52637&oldid=52634 * Btiffin2017 * (+9501) Add Fingerprints blurb and table
09:47:09 <Deewiant> Some of those links are incorrect since rcsfingers.html is only for the RCS-defined ones
09:47:46 <Deewiant> E.g. NCRS is not from there
09:48:50 <Deewiant> Not sure if this Btiffin2017 is on this channel though.
09:59:39 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52638&oldid=52637 * Deewiant * (+141) Link original docs for jvh fingerprints
10:04:21 <Deewiant> fizzie: Please link the original ext_SOCK.txt from GLfunge98, I don't think it's up at http://glfunge98.sourceforge.net directly
10:07:03 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52639&oldid=52638 * Btiffin2017 * (+6) /* Example of fingerprint loading */
10:11:04 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52640&oldid=52639 * Btiffin2017 * (-38) /* Some well known fingerprints */
10:11:23 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
10:11:52 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52641&oldid=52640 * Btiffin2017 * (+38) Undo revision 52640 by [[Special:Contributions/Btiffin2017|Btiffin2017]] ([[User talk:Btiffin2017|talk]])
10:13:16 -!- btiffin has joined.
10:14:10 <btiffin> Sorry Deewiant, I undid one of your fixes as I thought I made a mistake on the origin. Undid my erroneous edit. ;-)
10:25:51 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52642&oldid=52641 * Btiffin2017 * (+613) /* Stack Stack */
10:38:31 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52643&oldid=52642 * Btiffin2017 * (+764) /* Concurrency */
10:46:17 <rdococ> funge
10:46:18 <rdococ> tasty
10:54:22 <btiffin> salty
10:57:42 <Deewiant> btiffin: The link for SCKE is still wrong, but I'm not sure if the original doc is available online directly. It should be in the tarballs at http://glfunge98.sourceforge.net but it's less than ideal to link to those... I already asked fizzie about it.
11:01:24 <btiffin> Deewiant: thanks for the updates. Page needs a good History section and some nice credits in the Implementation part. Will try and track down and gather up some blurbs worthy of the page. And will appreciate corrections to the guaranteed mistakes that will be made.
11:06:16 <btiffin> Haven't built CCBI yet, but your mycology kit has really upped the game for the implementations it seems. Grand work, Deewiant, it's nice being able to play and not have things jump and catch fire.
11:07:06 <Deewiant> Thanks, and yeah, didn't really expect it or Funge-98 to become so popular
11:08:34 <Deewiant> You might need some good luck building CCBI these days... D 1.0 hasn't been supported in ages, hopefully at least some of the tools still work
11:08:43 <btiffin> Consistent and reliable toys makes for good toys, worthy of some time in.
11:10:22 <btiffin> I had a 1.0 D, but that machine gave up the ghost a while back, might have the archive in a state that can be restored (but, a backup untested is usually borked, right? Just because) ;-)
11:11:05 <Deewiant> One of my projects for years has been to build a new interpreter in C, starting with a solid Funge-Space library... which has been a work in progress since 2011 and has seen almost no work since 2013 or so. (These days I might go for Rust for the interpreter itself though.)
11:12:25 <Deewiant> Coïncidentally, 2013 is when I graduated from university.
11:13:09 <btiffin> Only been funging for a week on and off, but NEED libfunge for embedding in COBOL. ;-) libfunge, someone needs to treat Funge like a Lua and take over the world from within.
11:13:12 <Deewiant> It's funny how badly having a full-time job eats your free time, as opposed to school/uni
11:14:31 <btiffin> Oh, I turn 54 in a few days, I still have a final year to complete (my ID started with 82). Might not make it to grad. ;-)
11:18:19 <Deewiant> Heh, I don't think the universities around here let people do that kind of thing any more :-)
11:23:40 <btiffin> I do miss Waterloo. I started the day they dragged the last card punch machine out of the Pit and into a museum. I kinda don't miss the 8K machines of the time though, them be good old days only in the sense of, "really? they were good? those old days?"
11:28:47 <rdococ> bechocolatefudge
11:29:04 -!- erkin has joined.
11:30:09 <btiffin> A computer without Funge is a like a piece of chocolate cake without mustard and ketchup
11:31:34 <rdococ> so... good?
11:31:59 <btiffin> Best
11:32:20 * rdococ needs fresh concepts
11:32:26 <rdococ> I FEAST ON CONCEPTS!!!
11:34:45 -!- boily has joined.
11:34:46 <Deewiant> btiffin: About Mycology, gotta credit Vorpal as well in the game-upping, for doing cfunge and actively discussing issues that came up. In a way there's some luck involved in that he did it when I was still available for doing my part in the discussions and whatnot, but still.
11:35:14 <btiffin> Try inventing something with the elegance of Forth with the human friendly syntax of algebra (not reverse polish). REBOL Red come close, but the editor and file system access needs to be part of the language so there is zero brain swapping during development.
11:36:24 <btiffin> Deewiant, I'll likely pester the IRC room when writing up a history blurb and try and pack it with names that deserve recognition.
11:36:47 <Deewiant> Sure.
11:39:43 <btiffin> My go to implementations are cfunge and rcfunge at the moment. Too much fun. These are all fairly amazing pieces of work, but I'm still leaning to mycology being a root cause of the robustness.
11:41:16 <Deewiant> I seem to recall that rcfunge still had some quirks, cfunge should be solid though
11:44:26 <rdococ> fudge!
11:45:04 <Deewiant> The main selling point of CCBI these days is probably the interactive debugger, I'm not sure if anybody else implemented something like that
11:45:08 <btiffin> Yeah, rcfunge BOOL unload isn't correct; easy fix (umm, I think - it looked straight forward, but maybe I'm too new); but I want to play with the Tardis so rcfunge will get a workout. cfunge is the default funge here.
11:45:53 <btiffin> rdococ: mustard funge
11:48:40 <btiffin> Will strive to get CCBI built shortly. It would be nice to be able to point to one as the "reference" implementation; FBBI just advertises as 'early, not reference'.
11:53:00 <Deewiant> I think FBBI is the closest you can get to a reference since it's by the same guy as the spec. Too bad it contradicts the spec (or at least used to) so much...
11:53:42 <Deewiant> In a way CCBI was used as a reference since at least Vorpal admitted to sometimes just checking its source for how to do things when Mycology spat out an error. :-P
11:53:55 <btiffin> :-)
11:57:09 <btiffin> libfunge, the world needs a libfunge, something with an init, a go, and a let me at the resulting stack(s) and funge space, simple API
12:00:14 <Deewiant> You can probably write one that works by shelling out to CCBI's debugger ;-)
12:01:42 <Deewiant> Unfortunately "simple API" may turn out to be not so simple with funny Funge-Spaces and abstraction-breaking fingerprints
12:02:03 <btiffin> Hmm...
12:03:51 <Deewiant> Depends on what you want out of it, of course.
12:05:37 <btiffin> Yeah, I guess simple in this case would be low number of function entry points for a make it work mode. And then side functions for deeper mining. Like Tcl, only more mustard-ey. A ten line C file to embed a funge and then 80 meg of API docs for figuring out what else you can do.
12:06:22 <Deewiant> Sure, init and go should be simple enough.
12:06:42 <Deewiant> It's the "let me at it" part where things get tricky.
12:07:09 <Deewiant> TRDS for instance.
12:09:00 <btiffin> Then read stack to get results, and a way to peek into final Funge space. Details on access to running programs would be part of the 80 megs of API.
12:10:05 <btiffin> Still reading up on TRDS before attempting a script, but looking forward.
12:13:25 <Deewiant> Ah, only the final state. Yeah, that should be simpler. Still there's some funky stuff about the stack, e.g. MODE, and Funge-Space is basically a sparse 2^N * 2^N square (or cube or worse) (with N = 32 or N = 64 typically) so I'm not sure what kind of API would be suited for anything beyond "read from x,y" style operations
12:13:48 <btiffin> From a GnuCOBOL perspective it would be nice as CALL "funge" USING script RETURNING answer; default easy mode just returns top of stack cell. "funge-stack" could provide more and "funge-space" just does a get on a vector after the run.
12:19:51 <btiffin> or range, similar to i and o, and that would make a toy people could brag about; and then you know ignore, except for the odd fan that flames the admiration.
12:23:58 <Deewiant> Yeah, I added i-like display of an area to the CCBI debugger, was quite useful at times
12:24:18 <Deewiant> It's all there, just hook it up ;-)
12:26:01 -!- boily has quit (Quit: TRAP CHICKEN).
12:29:43 <btiffin> I work with GNU, and asked the mailing list if I could get an alias for brainfuck in the Guile binding. Most of the dev group hadn't heard about it, and thought I was just swearing at them. The goal was to add documentation to the GnuCOBOL FAQ without swearing. Richard Stallman gave me a small talking down to until someone else posted the wikipedia link and saved my rep. End of the day,...
12:29:45 <btiffin> ...I folded (and agree), brainfuck is simply not mentioned as one of the possible integrations to GnuCOBOL in any manuals. Funge would be something that could be written down with the expectation that wouldn't offend anyone like an IBM president or Church Lady.
12:32:01 <Deewiant> Heh.
12:45:23 -!- mroman has joined.
12:45:38 <mroman> Is there some neat way to get dx, dy in a grid system for a given radius 3
12:45:44 <mroman> and I only want the outermost fields
12:46:01 <mroman> i.e. not for(dx=-r;dx<=r;dx++) for(dy=-r;dy<=r;dy++)
12:46:09 <mroman> as this will also give pixels that don't exactly have a distance of r
12:47:12 <mroman> *radius r
12:49:50 <btiffin> Deewiant; hope to chat again, time to call it a day, and once again, thanks for the updates.
12:50:08 <Deewiant> No worries, talk to you later.
12:51:07 -!- btiffin has quit (Quit: ChatZilla 0.9.93 [SeaMonkey 2.46/20170120202656]).
13:09:06 <sdhand> mroman: I feel like you can use some trig functions for that
13:09:17 <sdhand> I seem to have forgotten how maths works though
13:10:08 <mroman> http://codepad.org/nPcmCam2 <- something along the lines of this
13:10:12 <mroman> but this is really inconvenient.
13:33:39 -!- mroman has quit (Ping timeout: 260 seconds).
14:00:32 -!- doesthiswork has joined.
14:36:33 -!- Jafet has quit (Ping timeout: 255 seconds).
14:36:33 -!- shachaf has quit (Ping timeout: 255 seconds).
14:37:19 -!- shachaf has joined.
14:42:44 -!- MDude has joined.
14:57:21 -!- `^_^v has joined.
14:58:46 -!- Jafet has joined.
15:05:21 -!- imode has joined.
15:17:41 <Jafet> the gnu mindset is interesting indeed
15:19:00 <Jafet> GNU ease.js is a classical object-oriented framework for JavaScript, intended to eliminate boilerplate code and ease the transition to JavaScript from other object-oriented languages.
15:19:27 <Jafet> GNU Java Training wheels provides a less steep learning curve for learning to program in Java. The system is powered by a preprocessor that adds features to Java such as a superfor macro and a file inclusion system much like the C language's preprocessor.
15:21:33 <alercah> "superfor"?
15:21:39 <alercah> wait why would you want a C preprocessor in Java
15:33:32 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
15:33:38 <izabera> cpp is not actually that bad
15:46:52 -!- sdhand has changed nick to |test|.
15:47:04 -!- |test| has changed nick to sdhand.
15:50:12 -!- sdhand has changed nick to addhns.
15:51:37 <alercah> file inclusion is
15:52:01 <alercah> and the way that C/C++ don't have a better way to include libraries, at least until C++ modules
16:04:14 <Jafet> alercah: http://www.ioccc.org/2005/chia/chia.c
16:13:21 <alercah> amazing
16:51:38 -!- augur has joined.
17:27:57 -!- addhns has changed nick to sdhand.
17:39:52 -!- FreeFull has joined.
17:40:51 <Vorpal> <Deewiant> btiffin: About Mycology, gotta credit Vorpal as well in the game-upping, for doing cfunge and actively discussing issues that came up. In a way there's some luck involved in that he did it when I was still available for doing my part in the discussions and whatnot, but still. <-- hm, don't have time to read the context of this highlight, is it something I need to get involved in?
17:41:23 <Vorpal> <btiffin> Only been funging for a week on and off, but NEED libfunge for embedding in COBOL. ;-) libfunge, someone needs to treat Funge like a Lua and take over the world from within. <-- it is/was possible to hook up C-INTERCAL and cfunge with each other
17:41:37 <Vorpal> All credit for that really goes to ais523
17:41:55 <Vorpal> <Deewiant> I seem to recall that rcfunge still had some quirks, cfunge should be solid though <-- thanks
17:43:06 <Vorpal> <Deewiant> In a way CCBI was used as a reference since at least Vorpal admitted to sometimes just checking its source for how to do things when Mycology spat out an error. :-P <-- yep, 1) I was a teenager at the time, not as good at programming 2) mycology errors could be really obscure. More often just locking up or sending the instruction pointer out to nowhere instead of giving a useful error
17:44:30 <Vorpal> <Deewiant> Ah, only the final state. Yeah, that should be simpler. Still there's some funky stuff about the stack, e.g. MODE, and Funge-Space is basically a sparse 2^N * 2^N square (or cube or worse) (with N = 32 or N = 64 typically) so I'm not sure what kind of API would be suited for anything beyond "read from x,y" style operations <-- "give me all non-zeros"?
17:45:13 -!- augur has quit (Remote host closed the connection).
17:47:21 -!- augur has joined.
17:51:56 -!- augur has quit (Ping timeout: 260 seconds).
17:55:27 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52644&oldid=52643 * Vorpal * (+0) /* Some well known fingerprints */ Fix some links.
17:55:40 <Vorpal> the cats eye links are broken
17:56:05 <Vorpal> but at least that one points to the right name now (PERL was pointing to ORTH and such)
17:59:24 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52645&oldid=52644 * Vorpal * (+10) /* Some well known fingerprints */ Fix links to catseye fingerprints
18:00:08 <Vorpal> Deewiant: you never made any fingerprint yourself right? I guess I did one, in efunge
18:02:51 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52646&oldid=52645 * Vorpal * (+182) /* Resources */ Add efunge
18:13:41 -!- sdhand has quit (Excess Flood).
18:13:49 -!- sdhand has joined.
18:14:13 -!- sdhand has changed nick to Guest67954.
18:32:27 -!- AnotherTest has joined.
18:45:45 <zzo38> Now you can download MIXPC: http://zzo38computer.org/prog/mixpc.zip
18:49:53 <Deewiant> Vorpal: I was planning some, but only as vague ideas.
18:50:28 <Deewiant> Vorpal: And no need to get involved in anything, just discussing Funge-98 history.
18:53:36 <Vorpal> Deewiant: okay
18:54:52 <Vorpal> Deewiant: if he comes back, since he talked about embedding funge into something (COBOL?), cfunge is embeddable to some degree (assuming license compatibility and so on), since ais523 managed to do it for C-INTERCAL
18:58:05 -!- LKoen has joined.
18:59:49 -!- AnotherTest has quit (Ping timeout: 246 seconds).
19:01:00 <Deewiant> Vorpal: True that, I forgot about that. And yes, he was talking about embedding into COBOL.
19:02:04 <Deewiant> Vorpal: lambdabot's here so I guess you can @message him or whatever.
19:02:10 <Vorpal> Sure
19:03:07 <Vorpal> @tell btiffin You talked about embedding funge into COBOL, cfunge is embeddable to some degree (assuming license compatibility and so on), since ais523 managed to do it for C-INTERCAL. If I rememeber correctly funge and INTERCAL ran as co-routines almost
19:03:07 <lambdabot> Consider it noted.
19:03:43 -!- Guest67954 has changed nick to sdhand.
19:03:53 -!- sdhand has quit (Changing host).
19:03:53 -!- sdhand has joined.
19:12:06 -!- `^_^v has quit (Quit: Leaving).
19:12:25 -!- `^_^v has joined.
19:15:07 <HackEgo> [wiki] [[MIX (Knuth)]] https://esolangs.org/w/index.php?diff=52647&oldid=52494 * Zzo38 * (+1523) MIXPC
19:20:02 <zzo38> If you have DOS then you can see if MIXPC is working and tell me if anything wrong with it please (including the document).
19:21:41 <HackEgo> [wiki] [[MIX (Knuth)]] https://esolangs.org/w/index.php?diff=52648&oldid=52647 * Zzo38 * (+43)
19:23:04 <zzo38> Does a implementation of MIX in MMIX exist yet?
19:30:02 -!- wob_jonas has joined.
19:32:12 <wob_jonas> Guys, I have a software licensing question. How is it possible that the boost multiprecision library is distributed under the boost license, yet it can optionally link to the gnu multiprecision library, which is under the Gnu GPL?
19:33:41 <int-e> gmp is dual-licensed, GPLv2 or LGPLv3; presumably the latter allows this
19:34:44 <wob_jonas> int-e: wait what? since when is itdual-licensed?
19:34:57 <int-e> "Since version 6, GMP is distributed under the dual licenses, GNU LGPL v3 and GNU GPL v2."
19:35:28 <wob_jonas> lgpl allows it, but how can they apply that license? doesn't GMP have too many contributors to change?
19:36:59 <int-e> besides, even with GPL, wouldn't you still ba able to use that option with code that you're not distributing... I guess that's untested legal territory.
19:37:32 <wob_jonas> int-e: you could choose to not distribute, but boost multiprecision is clearly distributed openly
19:39:48 -!- LKoen has quit (Remote host closed the connection).
19:40:00 <wob_jonas> https://gmplib.org/manual/Contributors.html#Contributors lists tons of contributors. how the shit did they get permissions from all of them?
19:41:03 <wob_jonas> did someone just randomly pull the license off his without having permission?
19:41:24 <int-e> Anyway, I'm confused. gmp 4.2.1 (that's somewhere in 2007) was LGPL 2.1+
19:41:36 <wob_jonas> what?
19:41:43 <int-e> 4.2.2 switched to the current GPLv2+LGPLv3
19:42:02 <wob_jonas> strange, I checked a few times and I seem to remember it was GPL, not LGPL
19:43:35 <int-e> you seem to remember wrong :)
19:43:47 <wob_jonas> possible
19:44:34 <wob_jonas> if it was always LGPL licensed, that would explain everything
19:46:39 <int-e> you're right about version 1.3.2 (GPLv2+), but version 2.0 was LGPLv2+
19:47:13 <wob_jonas> ok, thank you
19:49:41 -!- augur has joined.
19:50:28 <int-e> and it seems that therer were about 5 contributors when the relicensing happened... sounds doable :)
19:53:22 <wob_jonas> the fork MPIR ("http://mpir.org/") is also LGPL-licensed
19:53:43 <wob_jonas> (it's an API-compatible fork)
19:54:41 <wob_jonas> and so are MPFR and MPC. good.
19:55:12 <int-e> wob_jonas: In any case, there's a legal theory that says that if you optionally use an API then that doesn't make your software fall under the GPL even if therer is only a GPL implementation. It has sort of held up for the Linux kernel afaiui, which led them to make their wishes more explicit by storing a license in the kernel modules and marking many new APIs as GPL only.
19:56:43 <wob_jonas> int-e: hmm. maybe, but I wouldn't bet on it.
19:57:00 <wob_jonas> it's possible that that's how law works.
20:00:25 <wob_jonas> `olist 1088
20:00:27 <HackEgo> olist 1088: shachaf oerjan Sgeo FireFly boily nortti b_jonas
20:00:39 <int-e> Well yes... nobody can predict what a court would decide.
20:01:39 -!- sleffy has joined.
20:15:22 <rdococ> moo.
20:35:05 <zzo38> wob_jonas: Now MIXPC is available; do you like this? Also, does a implementation of MIX in MMIX exist yet?
20:36:02 <wob_jonas> zzo38: there's probably an implementation of MIX in C that you could compile to MMIX successfully
20:37:42 <wob_jonas> zzo38: where is it available? have you tested it with some of the larger programs in Knuth vols 1 to 3, and what assembler did you use?
20:38:27 <quintopia> hello wob_jonas
20:38:28 <zzo38> It is http://zzo38computer.org/prog/mixpc.zip but so far I have not tested with the larger programs (since the books were from the library and I no longer have them)
20:38:40 <zzo38> Anyone else could try to test them though, who does have.
20:38:59 <quintopia> you like to watch jaku?
20:43:48 -!- Akaibu has joined.
20:50:01 <shachaf> Here's a puzzle I got from kmc: https://twitter.com/shachaf/status/892956611576082432
20:50:11 <shachaf> I guess I can paste it.
20:50:15 <shachaf> Puzzle (amd64 Linux): int main() { printf("data: "); if (fwrite((void *) 0xffffffffff600000, 1, 4096, stdout) != 4096) perror("fwrite"); }
20:50:25 <shachaf> That program prints some data to stdout. But if you remove the printf, fwrite fails with EFAULT. Why?
20:51:18 <imode> something to do with device readiness.
20:51:54 <wob_jonas> shachaf: um, I presume it prints "data: " to stdout because the fwrite has a long enough size that it would overflow the buffer so it flushes what the printf writes first?
20:52:21 <wob_jonas> and the fwrite must fail with EFAULT in any case because you're writing from kernel memory
20:52:33 <zzo38> shachaf: What does that address correspond to anyways?
20:52:51 <wob_jonas> or I guess it could fail with segfault instead, if fwrite chooses to copy the data
20:53:00 <wob_jonas> it's fwrite's choice really
20:53:01 <shachaf> wob_jonas: If fwrite fails with EFAULT, why doesn't it fail when you add the printf?
20:53:08 <shachaf> It doesn't segfault.
20:53:14 <zzo38> wob_jonas: MIXPC loads the program from cards rather than binary like GNU MIX does, although converting is possible (if you tell MIXPC to use base 64 instead of the default base 100). I don't know what binary format GNU MIX is using though, so I don't know if MIXPC can read them directly (as a tape perhaps).
20:53:15 <shachaf> It successfully prints out some data.
20:53:27 <shachaf> zzo38: If you have an amd64 Linux machine you can find out for yourself.
20:53:52 <wob_jonas> shachaf: well it can successfully print the "data: " part, right? but it doesn't fail after in any way? like some other error return or signal?
20:53:59 <zzo38> shachaf: I do, but I don't have a document explaning the addressing
20:54:22 <imode> search the address on google.
20:54:27 <shachaf> wob_jonas: No, it prints some actual data read from that address.
20:54:33 <shachaf> zzo38: Try tail -n1 /proc/self/maps
20:54:43 <zzo38> OK
20:54:44 <wob_jonas> shachaf: um, but what does it do after printing the data? does it scucessfully return?
20:54:57 <shachaf> Does what successfully return?
20:55:02 <wob_jonas> the fwrite call
20:55:07 <shachaf> Yes.
20:55:11 <wob_jonas> strange
20:55:34 <zzo38> It says "vsyscall", and it does seem to be the correct size
20:55:53 <wob_jonas> AH
20:56:10 <imode> https://lwn.net/Articles/446528/ <-- zzo38
20:56:19 <wob_jonas> it's some magic segment that is mapped by default for users, in the kernel address space? strange
20:56:26 <imode> this will clarify many thing.
20:56:28 <imode> *many things.
20:57:18 <zzo38> OK I will read it
20:57:57 <shachaf> imode: That's an incomplete description of vsyscall, I think.
20:58:03 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52649&oldid=52646 * Btiffin2017 * (+2138) /* Implementations, incomplete table to start */
20:59:42 <imode> the reason why it fails with an error is that the previous call to printf sets up the vsyscall segment in such a way that the next fwrite call grabs stuff from the segment and throw it out.
21:00:00 <imode> without that, it doesn't exist. I think.
21:00:11 <shachaf> The vsyscall segment exists immediately, right after exec.
21:01:13 <wob_jonas> imode: sure, the difference is whether libc is directly writing from there or copying from it. if it's writing, the kernel will see it's in kernel address space and won't read it. if it's copying, the user space can access it.
21:01:39 <wob_jonas> the part I'm still a bit surprised about is just that there's a mapping in the kernel address region
21:01:39 <imode> and it's copying in this case. if I read that tweet from the back of a moving car correctly.
21:02:20 <imode> well yeah. vsyscall basically exists iirc to speed up frequent syscalls. that's been passed down from the kernel ABI.
21:03:06 <imode> so I'd imagine that when doing printf, a syscall or two gets dumped in there.
21:03:25 <wob_jonas> imode: ok. I don't quite understand why that's needed, but it's plausible enough that there's a good reason
21:03:27 <imode> but attempting to read from it prior generates a fault for.. some reason.
21:03:32 <wob_jonas> or at least was a good reason when it was added
21:03:38 -!- btiffin has joined.
21:03:48 <imode> wob_jonas: well if you can always guarantee that a syscall + its required data is always in the same place, that's less overhead.
21:03:57 <imode> for reasons that.. honestly I don't care to look up. :P
21:05:34 <imode> here's an experiment: does a regular fwrite before the one reading from vsyscall still result in the same data?
21:05:39 <wob_jonas> imode: yeah, but it could be mapped in a user-space mapping you create with a fancy syscall or mmapping a device, instead of getting mapped into kernel address region
21:07:08 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52650&oldid=52649 * Btiffin2017 * (+0) /* Rock Scissors Paper, on 3 */
21:07:47 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52651&oldid=52650 * Btiffin2017 * (+0) Undo revision 52650 by [[Special:Contributions/Btiffin2017|Btiffin2017]] ([[User talk:Btiffin2017|talk]])
21:08:00 <imode> yuh. it works.
21:08:09 <imode> same data and everything until it hits a bad address.
21:12:10 -!- hppavilion[1] has joined.
21:12:11 <imode> huuuh. curious. a regular call to write means fwrite stops immediately.
21:12:38 <HackEgo> [wiki] [[Funge-98]] M https://esolangs.org/w/index.php?diff=52652&oldid=52651 * Btiffin2017 * (-3) typo
21:12:41 <imode> perhaps fwrite preallocates a buffer.
21:15:37 <imode> yeah okay. change 4096 to 2047. then change it to 2048. we're hitting an uninitialized buffer.
21:16:17 <imode> if you don't include the first call to printf, which uses fwrite, that buffer never gets mapped.
21:22:57 <zzo38> MIXPC and GNU MIX are both including some features that the other lacks (based on my reading of the documentation of GNU MIX), such as, MIXPC currently has no support for breakpoints (although you can still add a HLT instruction into your program to do something similar), and GNU MIX does not support changing the byte size and also does not implement the standard loading mechanism of MIX programs from cards.
21:29:13 <wob_jonas> zzo38: wait what? how can you not support loading programs from cards? loading programs from cards basically just executes the four instructions "IN 0(16); JOV *+1; JBUS *(16); JSJ 0" (except technically rJ is set to 0, but nobody actually depends on that),
21:29:37 <wob_jonas> so you could just put those four instructions near the end of the memory in the debugger, insert the cards to the reader, and jump to the first instruction, couldn't you?
21:30:15 <wob_jonas> you can bootstrap to that from basically any startup method their program already provides
21:30:39 <wob_jonas> that's why the init mechanism is specified that way, it can be implemented easily in any MIX machine
21:31:14 <zzo38> I don't know, although MIXPC does support loading programs from cards; as far as I can tell from the GNU MIX documentation, GNU MIX does not and instead loads a binary program (which includes a link to the source file, and a symbol table, presumably).
21:32:27 <wob_jonas> zzo38: then you could just write a short binary program that runs these few instructions (just be careful that they don't overlap with the first 16 words)
21:32:44 <zzo38> Yes, I suppose so
21:33:06 <wob_jonas> and write "START BUTTON" to the disk of that program in a sharpie
21:35:55 <zzo38> OK
21:38:56 -!- ineiros has quit (Ping timeout: 260 seconds).
21:39:15 -!- ineiros has joined.
21:40:37 -!- Warrigal_ has joined.
21:43:39 <zzo38> Are you able to run MIXPC on your computer? If so, then you could try to see if there is anything wrong that I have missed.
21:44:56 <wob_jonas> zzo38: I'm not too interested to do that. I'd have to get an assembler working, get some sort of BASIC that supports TYPE, and in the end I don't care that much about MIX
21:45:17 <wob_jonas> unless you already have written an assembler together with it
21:45:23 <wob_jonas> but even then
21:45:28 <wob_jonas> I just don't care enough
21:45:55 <shachaf> wob_jonas, imode: Yes, the vsyscall page is special in that it's user-readable but in kernel address space, and write() doesn't check the actual page mapping, just which half of the address space it's in.
21:46:26 <shachaf> The vsyscall page exists to use the SYSENTER instruction, I think.
21:46:38 <wob_jonas> shachaf: yes, I understand that. I was just surprised on the first half. the second half is obvious, that's how they implement copy from user easily.
21:46:39 <shachaf> SYSENTER is a little odd in that it doesn't save RIP.
21:47:10 <shachaf> So the kernel doesn't have an address to return to when it's done handling the system call.
21:47:44 <int-e> SYSENTER is a Highlander instruction: there can be only one
21:48:25 <shachaf> So it maps a page at a known fixed address, and the system call ABI is to jump to that page. Then the kernel can always return to the same place.
21:48:45 -!- AnotherTest has joined.
21:49:34 <shachaf> int-e: It's more of a "many may enter, but only one can leave" instruction.
21:50:25 <int-e> well, it's hardly useful to have more than one, I think.
21:50:42 -!- sleffy has quit (Ping timeout: 240 seconds).
21:51:00 <imode> shachaf: was my guess correct though? we're reading past the end of a mapped area? if you read 2047 bytes, everything's good.
21:51:20 <imode> (with the prior call to printf/fwrite.)
21:51:21 <shachaf> imode: Hmm? The smallest page size on x86 is 4096 bytes.
21:51:30 <shachaf> (And that address is page-aligned.)
21:51:45 <imode> shachaf: try to read 2047 bytes instead of 4096.
21:51:46 <wob_jonas> imode: I think the difference is whether fwrite chooses to write directly from that area, or copy it to a stream buffer first
21:51:56 <shachaf> Yes, it's what wob_jonas said.
21:52:08 <shachaf> If you give fwrite a big enough buffer it might just write() it directly.
21:52:15 -!- imode has quit (Quit: WeeChat 1.9).
21:52:23 -!- sleffy has joined.
21:52:26 <wob_jonas> fwrite can do either, or any combination of copies and writes
21:52:26 <shachaf> imode took that harshly.
21:52:35 <shachaf> It can do whatever it wants.
21:52:48 <shachaf> This program also behaves differently when stdout is a file, and so on.
21:53:11 <wob_jonas> right
21:53:11 <wob_jonas> makes sense
21:53:55 <wob_jonas> because stdout is by default line buffered or block buffered depending on what type of file the underlying handle is... hmm wait, is it only when it isatty when it gets line buffered, or when it's any device, or when it's anything but a regular file?
21:54:03 <zzo38> wob_jonas: It does include the .EXE file now, although you will need DOS (or an emulator) to use that file.
21:54:05 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
21:54:44 <wob_jonas> zzo38: yeah, that's the other option, but that could be more difficult because then I have to transfer data into or out the dos emulator
21:54:55 <wob_jonas> it might be easier to just run the basic source code on linux directly
21:55:12 <wob_jonas> I don't know much about basic interpreter impls
21:55:38 <wob_jonas> zzo38: do you have an assembler? I haven't looked in that zip yet
21:56:19 <zzo38> There is FreeBASIC, although the program probably will not work as is, and may need modification. I have also heard of QB64, but I don't know how well it will work with that either.
21:56:35 <zzo38> There is no assembler yet. I have started to write one, but since is not finish yet, it is not included yet.
21:56:59 <wob_jonas> zzo38: yeah, but how much modification? does it support TYPE, SUB, and passing typed structures to a SUB, or would you have to rewrite all that?
21:57:05 <int-e> hmm, is SYSENTER actually used... looks like SYSCALL here.
21:57:10 <wob_jonas> is it juts the DOS console output you have to change?
21:57:31 <int-e> (which does save RIP to a register. (x86_64))
21:58:19 -!- augur has quit (Remote host closed the connection).
21:58:28 <zzo38> wob_jonas: I believe FreeBASIC does support TYPE and SUB and passing typed structures to SUB, but not SOUND, and POKE/PEEK may not work either (which it uses for the display).
21:58:32 <shachaf> int-e: Well, I don't think Linux uses SYSENTER at all nowadays. Maybe it did once?
21:58:33 -!- augur has joined.
21:58:57 <shachaf> int-e: But the vsyscall ABI is just jumping to a page. Or something.
21:59:07 <wob_jonas> zzo38: the SOUND is probably not important, unless you use it for timing or something like that
21:59:11 <zzo38> You also need to ensure you are using PC character set, since MIXPC uses PC character set for I/O. (I believe FreeBASIC will automatically do this in graphical mode)
21:59:32 <zzo38> wob_jonas: It doesn't; it is used only for I/O unit 32, which is nonstandard anyways.
21:59:54 <wob_jonas> PEEK/POKE/SYSTEM/DEFUSR are obviously inherently nonportable, unless you only use them to change variables of which you get the VARPTR and VARSEG
22:00:20 <int-e> shachaf: Oh SYSENTER was introduced for IA32. Well I'm not inclined to check.
22:00:45 <wob_jonas> yeah, it's complicated. there are like four generations of system call methods on x86 introduced at different times
22:00:46 <shachaf> int-e: Then why does the vsyscall page exist at all for amd64?
22:00:48 <zzo38> wob_jonas: It uses them for reading/writing video memory
22:00:50 <shachaf> It's all very mysterious.
22:01:13 <wob_jonas> zzo38: right, that can be a problem
22:01:14 <shachaf> The more modern version is the vdso, anyway.
22:01:38 <shachaf> vdso38
22:02:00 <shachaf> Did you know Windows used to use an illegal instruction to do system calls?
22:02:08 <shachaf> Because it was faster than an interrupt.
22:02:15 <int-e> shachaf: I don't see a vsyscall page mapped here. There's a vvar and a vdso (which unsurprisingly, contains syscall instructions).
22:02:20 <wob_jonas> in that case indeed a DOS emulator would be easier
22:02:36 <wob_jonas> although I'd have to enable console to see what the program says
22:02:56 <shachaf> int-e: Hmm, what's vvar?
22:02:58 <int-e> I may have heard about the illegal instruction thing, anecdotically.
22:03:07 <shachaf> I saw that when I was looking at the code that maps vsyscall.
22:03:10 <wob_jonas> shachaf: on what generation of cpu was that?
22:03:22 <shachaf> https://blogs.msdn.microsoft.com/oldnewthing/20041215-00/?p=37003
22:03:42 <shachaf> Apparently it was around 1989.
22:03:43 <wob_jonas> "faster than an interrupt" is a bit suspicious because (a) illegal instruction generates an interrupt, and (b) isn't the normal mechanism call gates rather than interrupts?
22:03:50 <shachaf> No, before 1989
22:04:17 <shachaf> I mean faster than the interrupt instruction, I guess. I don't know.
22:04:38 <wob_jonas> shachaf: yes, but was it also faster than calling to a gate?
22:04:49 <int-e> shachaf: I'm still trying to find information, but I'd hope it's data the kernel shares with the process. it's read-only, at least
22:05:00 <wob_jonas> I mean the gross amount for handling system calls in general of course, not just that one instruction
22:05:20 <Hoolootwo> at least on z80, interrupts take a long time to trigger, since they have to push stuff to the stack, which requires an expensive 16-bit add
22:06:26 <int-e> shachaf: one thing that's available there is the current jiffies value.
22:06:27 <wob_jonas> Hoolootwo: um, the long time there i s
22:06:38 <wob_jonas> just like ten cycles or something, isn't it?
22:06:50 <Hoolootwo> hmm, I guess
22:07:22 <Hoolootwo> depending on interrupt mode, there's some extra fetches to the interrupt vector table too, not sure how those fit in
22:08:30 <Hoolootwo> I suppose the z80 can't do anything like using invalid instructions as interrupts because there is no distinction between valid and invalid instructions
22:08:57 <int-e> wob_jonas: code size may matter as well... an undefined instruction should be 2 bytes; a far call is 7 in 32 bit mode?
22:09:43 <int-e> (IIRC entering a call gate worked by doing a far call; the offset would be ignored, but the instruction demands it anyway)
22:10:03 <wob_jonas> int-e: code size can matter in general, but I don't think it matters in that case
22:10:15 <Warrigal_> I read about the 8008 once and noticed that there were a few undocumented opcodes.
22:10:24 <Warrigal_> I don't remember whether or not they did anything interesting.
22:10:42 <wob_jonas> Warrigal_: yes, and some of them got retroactively documented later
22:10:42 -!- `^_^v has quit (Ping timeout: 260 seconds).
22:10:56 <Warrigal_> I think there were only, like, 4 or something?
22:11:07 -!- `^_^v has joined.
22:11:13 <wob_jonas> in that case that happened the wrong way, that is, intel turned them to documented instructions because people were using them and they didn't want to break compatibility;
22:11:32 -!- staffehn has quit (Remote host closed the connection).
22:12:03 <wob_jonas> luckiliy some much later x86 extensions retroactively document instructions in the good way, when it comes from intel and the instructions can be used in new programs for some special purpose but with a fallback that automatically works in older programs
22:12:13 <int-e> salc is the best! (though the aam/aad with arbitrary argument were far more useful)
22:12:29 <Hoolootwo> the z80 had similar things, like the half-index register commands, which are really nice if you're running out of registers
22:12:45 <wob_jonas> int-e: what is salc?
22:12:49 <int-e> set al to carry
22:12:59 <int-e> (al = 0xFF if C is set; 0 otherwise)
22:13:04 <wob_jonas> oh... that one isn't documented officially, is it?
22:13:36 <int-e> if it is, they documented it quite late
22:13:50 -!- btiffin has quit (Quit: ChatZilla 0.9.93 [SeaMonkey 2.46/20170120202656]).
22:13:53 <int-e> (and of course all those nice instructions are gone in 64 bit mode anyway)
22:13:57 <wob_jonas> let me check
22:13:58 <Hoolootwo> that's something like ld al, 0; sbc a internally, right?
22:14:25 <int-e> Hoolootwo: well, IIRC it doesn't modify any flags.
22:14:32 <Hoolootwo> oh, interesting
22:14:35 <wob_jonas> that's a GOOD thing. the instruction encoding space was too crowded, they can reuse a lot of opcode bytes now. there were literally eight pairs of identical instructions there.
22:14:36 <int-e> and it's a single byte instruction
22:15:36 <wob_jonas> nope, no instruction named SALC is documented in the intel docs. what's its encoding? I'll check what the encoding tables say
22:15:39 <int-e> wob_jonas: I'm just complaining because I used to be a big fan of the cmp al,10; sbb al,0x6f; das sequence.
22:15:57 -!- sleffy has quit (Ping timeout: 260 seconds).
22:16:14 <wob_jonas> int-e: but are those decimal thingies still useful now that we have fast multiplication of 64-bit integers and stuff like that?
22:16:25 <Hoolootwo> D6
22:16:25 <wob_jonas> I just don't see much utility in them
22:16:35 <int-e> wob_jonas: the fast multiplication doesn't matter
22:17:01 <int-e> wob_jonas: they really were never very useful at all.
22:17:14 <wob_jonas> I mean, there's a lot of baggage the cpu has to support for compatibility. x87 floating point is still supported in 64-bit mode, sadly. supporting MMX can *sort of* make sense for obscure hacks, but why the floating point stuff?
22:17:39 -!- staffehn has joined.
22:17:59 <int-e> dunno, how else do you get those funny 80 bit floats?
22:18:14 <wob_jonas> the tables don't tell what 0xD6 encodes either.
22:18:36 <wob_jonas> it doesn't seem like intel documents it, unless it's changed very recently, and I'm lazy to check the AMD docs.
22:21:37 <wob_jonas> no wait, sorry, I'm wrong. not eight pairs. only z80 does something such silly.
22:24:18 -!- `^_^v has quit (Quit: This computer has gone to sleep).
22:27:09 <Hoolootwo> yep, all the load m,m instructions for each value of m except (hl) are a bit overkill
22:27:19 <Hoolootwo> not even counting nop
22:29:22 <wob_jonas> Wait, I've actually seen an esoteric computer that has an encoding where two register numbers (naming one of 4 general registers) are in the opcode but the instruction often means something else if the two numbers are the same
22:32:58 -!- AnotherTest has quit (Ping timeout: 276 seconds).
22:33:01 <wob_jonas> here: look at the encoding of the sxt, inv, abs instructionshttp://www.megaprocessor.com/architecture.html
22:34:22 <wob_jonas> anyway, sure, I admit there are some strange uses of the x87 and the MMX, but they're just not pulling their weight, they cost a lot to maintain
22:34:30 <wob_jonas> perhaps when x86_64 was introduced, it was not yet time to retire them
22:35:55 <int-e> wob_jonas: here's the real story, it was about returning from v86 mode: https://blogs.msdn.microsoft.com/oldnewthing/20041215-00/?p=37003
22:37:27 <int-e> (the other related thing I found was about the L4 kernel which used `lock nop` to query the location of the mapped kernel page for syscalls: http://www.pagetable.com/?p=9
22:37:30 <int-e> )
22:39:12 <int-e> And that makes sense because I bet that v86 wasn't envisioned to be a major, performance critical, mode of operation.
22:42:15 <wob_jonas> int-e: oh, returning from v86 mode. that sounds much more believable.
22:45:06 -!- sdhand has quit (Quit: *dies of death*).
22:45:20 -!- sdhand has joined.
22:45:37 -!- sdhand has quit (Changing host).
22:45:37 -!- sdhand has joined.
22:46:16 -!- boily has joined.
22:47:55 -!- sebbu2 has joined.
22:48:21 <boily> @metar CYUL
22:48:22 <lambdabot> CYUL 032100Z 24004KT 210V350 15SM FEW030TCU SCT210 OVC240 27/18 A3002 RMK TCU1CI2CI5 SLP169 DENSITY ALT 1500FT
22:48:30 <boily> too warm.
22:48:36 * boily hugs his AC.
22:50:56 -!- sebbu has quit (Ping timeout: 246 seconds).
22:51:00 -!- augur has quit (Remote host closed the connection).
22:53:24 <int-e> @metar lowi
22:53:24 <lambdabot> LOWI 032120Z AUTO 08004KT 360V150 9999 FEW120 23/17 Q1018
22:54:14 <wob_jonas> yes, too warm
22:54:35 <wob_jonas> it's almost midnight and it's still hot in here
22:54:57 <int-e> @metar ESGG
22:54:57 <lambdabot> ESGG 032150Z 22010KT 9999 FEW017 15/14 Q1001
22:55:35 <boily> ESGG?
22:55:53 <int-e> 23 is okay...
22:56:42 -!- augur has joined.
22:56:54 <Warrigal_> @metar kgrr
22:56:54 <lambdabot> KGRR 032153Z 18011G20KT 2SM R26L/3000VP6000FT -TSRA BKN043CB BKN100 BKN220 23/20 A2991 RMK AO2 LTG DSNT ALQDS RAB50 TSB45 SLP124 OCNL LTGIC S TS S MOV NE P0003 T02330200
22:57:06 <Warrigal_> My METAR is bigger than your guys's.
22:57:25 <boily> damned!
22:57:40 <wob_jonas> boily: ESGG is Göteborg
22:57:56 <boily> wellob_jonas. tdh.
22:58:20 <Warrigal_> Man, I don't know how to read these.
22:58:26 <FireFly> oh, landvetter?
22:58:30 <Warrigal_> Wind from 180, 11 knots gusting to 20 knots?
22:58:31 <wob_jonas> I don't either
22:58:53 <Warrigal_> Visibility 2 statute miles?
22:59:06 <Warrigal_> Who the hell uses statute miles?
22:59:08 <FireFly> int-e: you in Göteborg?
22:59:20 <Warrigal_> Runway 26L, 3000 Vice President... no, that's probably not right.
22:59:36 <FireFly> @metar ESSB
22:59:36 <lambdabot> ESSB 032150Z AUTO 14004KT 9999 BKN047/// OVC061/// 15/14 Q1001
22:59:40 <Warrigal_> Broken clouds at 4,300 feet with a citizens' band radio.
22:59:41 <wob_jonas> I just read the nice layperson-readable descriptions
23:00:15 <int-e> FireFly: will go there tomorrow
23:00:35 <FireFly> I see
23:00:55 <wob_jonas> this one tells me it will be too hot during the night
23:01:48 <wob_jonas> and that it will still be too hot during the next three nights
23:02:02 <wob_jonas> probably also after that, but that isn't certain
23:05:26 <quintopia> helloily
23:05:33 <quintopia> hows life
23:05:48 <wob_jonas> I hate it, especially because the major libraries (which are nice cold stone buildings) are closed for summer
23:06:01 <boily> QUINTHELLOPIA! hot!
23:06:14 <wob_jonas> and if the weather is too hot during the night for an extended time, then I have serious problems with sleeping
23:06:27 <quintopia> i heard there are heatwavy places
23:06:30 <Warrigal_> Hey, nobody porthelleaued me.
23:06:34 <quintopia> not here tho
23:06:42 <quintopia> @metar Katl
23:06:42 <lambdabot> KATL 032152Z 23006KT 10SM FEW025 SCT040 BKN080 OVC200 27/21 A3009 RMK AO2 SLP180 T02670211
23:06:46 <shachaf> That's fine, this channel has too many porthellos already.
23:06:52 <Warrigal_> :(
23:06:55 -!- alercah has left.
23:06:58 <shachaf> You can have some of mine.
23:07:00 <wob_jonas> I can tolerate a few days of heat when it's only hot during the day, but when weather is hot for weeks, then the nights are too hot and that makes me crazy
23:07:02 <quintopia> warrigallo!
23:07:18 <Warrigal_> Hallopia.
23:07:38 <Warrigal_> @metar 8d4
23:07:43 <quintopia> boily. your high is the same as mine.
23:08:08 <quintopia> i dont consider this very hot for the summer
23:08:17 <quintopia> you must be heat sensitive
23:08:17 <Warrigal_> lambdabot: not even an error message? Just silence?
23:10:58 <boily> 21 is perfect. 23 is too warm.
23:11:00 <int-e> it was meant to be a metasepia substitute for when metasepia was absent... I didn't polish it
23:11:17 <boily> I ought to remetasepia...
23:11:33 <int-e> `? metasepia
23:11:35 <HackEgo> metasepia knew the weather at your nearest airport, and also something about ducks.
23:11:55 <quintopia> ducks? ddg search?
23:12:13 <wob_jonas> not during the night
23:12:18 <boily> ddg.
23:12:26 <shachaf> `? weather
23:12:28 <HackEgo> lambdabot: @@ @@ (@where weather) CYUL ENVA ESSB KOAK PAMR
23:12:30 <lambdabot> CYUL 032200Z 21007KT 15SM FEW040TCU BKN200 OVC240 27/19 A3003 RMK TCU1CI4CI3 SLP172 DENSITY ALT 1400FT \ ENVA 032150Z 08005KT CAVOK 16/10 Q1000 RMK WIND 670FT 13011KT \ ESSB 032150Z AUTO 14004KT
23:12:30 <lambdabot> 9999 BKN047/// OVC061/// 15/14 Q1001 \ KOAK 032153Z 31012KT 10SM BKN170 BKN200 22/14 A2996 RMK AO2 SLP145 T02170144 \ PAMR 032153Z 30009KT 10SM OVC016 14/13 A3029 RMK AO2 SLP257 T01440128
23:14:23 <Warrigal_> I loved how my #esoteric neural nets used to produce METARs from time to time.
23:14:44 <shachaf> I think the phrase "neural net" should be banned.
23:14:51 <shachaf> At least when not preceded by "artificial".
23:15:06 <shachaf> I would like every use of the word "neuron" in machine learning to go away.
23:15:39 <Warrigal_> Let's call them layered unit nets instead.
23:15:44 <int-e> shachaf: what if it's a neural safety net woven out of axons?
23:16:02 <shachaf> What's a layered unit net?
23:16:10 <shachaf> What makes it a net? What are the units?
23:17:48 -!- hppavilion[1] has joined.
23:19:54 <Warrigal_> The units are little parameterized functions with inputs and outputs.
23:20:01 <Warrigal_> And they're all connected into a big convoluted network.
23:22:13 <shachaf> I thought "layers" typically referred to vectors, not to maps between vectors.
23:24:55 <Warrigal_> Mmm, I don't think so.
23:25:09 <Warrigal_> You've got "dense layers" and "activation layers" and "convolutional layers" and various blah blah.
23:34:25 -!- imode has joined.
23:37:49 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
23:40:29 <Warrigal_> Woo, I have a new layered unit net for #esoteric. :D
23:40:34 <Warrigal_> Let's see its first words...
23:40:56 <Warrigal_> 29:48:31 <imode> the ardelilly the tree wot if denhs. zais on bit's mod treebde.
23:41:39 <Warrigal_> Well said.
23:43:09 <boily> imode is a cyborg?
23:43:27 <Warrigal_> I'm attempting to replace imode with an artificial substitute.
23:43:34 <boily> :D
23:44:00 -!- boily has quit (Quit: LESSON CHICKEN).
23:45:46 <Warrigal_> Ooh, the net mentioned comex.
23:45:47 <Warrigal_> IT KNOWS.
23:45:49 <Warrigal_> 18:49:57 <ldoes\\> `t (Rist rist-ronats (Quition comode: Comexed out ood sut dirg
23:52:51 <imode> what.
23:53:08 * imode looks at his hands.
23:53:12 <imode> am.. I.. metal?
23:55:13 <imode> Warrigal_: are you gonna run the voight-kampff test on it. :P
00:07:07 -!- Warrigal_ has quit (Ping timeout: 246 seconds).
00:15:16 -!- Warrigal_ has joined.
00:22:21 -!- Akaibu has quit (Quit: Connection closed for inactivity).
00:47:49 -!- LKoen has joined.
00:48:08 <HackEgo> [wiki] [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=52653&oldid=52615 * TheZipCreator * (+125) Put an introduction
00:51:36 <HackEgo> [wiki] [[User:TheZipCreator]] N https://esolangs.org/w/index.php?oldid=52654 * TheZipCreator * (+82) Created page with "Hi. I came to Esolangs because I was interested in Esoteric Programming Languages."
01:18:04 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
01:23:25 <Warrigal_> I wonder if any OSs have filesystems that support "Unicode files".
01:23:47 <Warrigal_> A Unicode file is a sequence of Unicode characters, like how an ordinary file is a sequence of bytes.
01:23:56 <Warrigal_> You can't write invalid Unicode to a Unicode file.
01:24:15 <imode> so a record-based filesystem, but one that only supports unicode records?
01:25:12 <HackEgo> [wiki] [[Typespam]] N https://esolangs.org/w/index.php?oldid=52655 * TheZipCreator * (+1642) Created page with "Typespam is a language created by [[User:TheZipCreator|TheZipCreator]]. It's a cell-based language similar to [[Brainfuck]] but it has some important changes. 1. The tape st..."
01:25:19 <shachaf> Aren't Windows file names UTF-16?
01:25:48 <imode> iirc just UTF-8.
01:26:10 <imode> nope, I'm wrong. UTF-16.
01:26:48 <HackEgo> [wiki] [[Typespam]] https://esolangs.org/w/index.php?diff=52656&oldid=52655 * TheZipCreator * (-15) /* What is an instance? */
01:28:01 <HackEgo> [wiki] [[Typespam]] https://esolangs.org/w/index.php?diff=52657&oldid=52656 * TheZipCreator * (+3)
01:31:25 <Warrigal_> imode: I guess you might say that, if you would also say that today's filesystems are record-based filesystems which only support byte-string records.
01:32:21 <HackEgo> [wiki] [[Language list]] https://esolangs.org/w/index.php?diff=52658&oldid=52624 * TheZipCreator * (+15) /* Non-alphabetic */
01:33:26 <HackEgo> [wiki] [[Language list]] https://esolangs.org/w/index.php?diff=52659&oldid=52658 * TheZipCreator * (+15) /* T */
01:34:12 <HackEgo> [wiki] [[Language list]] https://esolangs.org/w/index.php?diff=52660&oldid=52659 * TheZipCreator * (+0) /* Non-alphabetic */
01:37:18 <zzo38> I suppose it can be idea having filesystems having multiple kind of records. It is something like that (but there is no Unicode records), such as byte strings, directory listings, and devices, for example.
01:38:16 <quintopia> what if we're ALL cyborgs?
01:39:52 <imode> quintopia: well, I mean.. I have glasses, does that count.
01:43:01 <HackEgo> [wiki] [[Ly]] https://esolangs.org/w/index.php?diff=52661&oldid=52563 * LyricLy * (+16)
01:54:46 <Cale> quintopia: even worse... what if none of us are cyborgs? *shudder*
02:04:49 * imode contemplates building a game that takes place inside of a binary tree.
02:06:15 <imode> you'd travel from node to node, with multiple players being able to occupy the same node at once. subtrees could qualify as different kinds of environments/biomes. dungeons could be collections of valid paths..
02:08:07 <zzo38> Why does rogue display "I don't have any options, oh my!"? At least the DOS version does.
02:09:35 <shachaf> `5 w
02:09:41 <HackEgo> 1/2:ehlist//ehlist is update notification for the Everyday Heroes webcomic. http://eheroes.smackjeeves.com/ \ comonad//Comonads are just monads in the dual category. They are hard to get into. \ @messages-loud//@messages-loud @messages-fond / @messages-flood @messages-bond // @messages-lousy @messages-sound / @messages-lost @messages-found // @mess
02:09:56 <shachaf> `n
02:09:57 <HackEgo> 2/2:ages-proud @messages-bold / @messages-good @messages-gold \ tmux//tmux is a way to have tabs in your terminal without having bash barf all over your screen. It allows the character 🀤 to appear. \ pokemon//A pokemon is a monster that you keep in your pocket. Taneb invented them.
02:10:06 <shachaf> `? comonads
02:10:07 <HackEgo> Comonads are just monads in the dual category. They are hard to get into.
02:14:41 <HackEgo> [wiki] [[Special:Log/newusers]] create * Esolangsme123 * New user account
02:18:01 -!- wob_jonas has joined.
02:19:09 <wob_jonas> Wow, the user manual for this new kitchen mixer is a bit reckless. The overview section says "Apertures for inserting the tools" (where "tools" means the mixing bits that are in contact with the food).
02:19:37 <shachaf> What sort of kitchen mixer is it?
02:19:42 <shachaf> Should I get a kitchen mixer?
02:19:49 <shachaf> I wish I had more kitchen space. :-(
02:20:42 <wob_jonas> It says "4 Aperture for inserting the tools". On figure A, that's correct. But if you accidentally look at figure B instead, there number 4 is a label for an image for how to insert the plug to an electric wall socket.
02:21:02 <wob_jonas> Do they want people to try to insert the tools into the two holes of the wall socket?
02:23:06 <wob_jonas> Wait, "The maximum processing quantity is 500 g of flour and ingredients" -- no way. It mixes the food in a local way, it can't be limited. I'll totally use it for food in larger amount than that.
02:23:23 <wob_jonas> shachaf: depends on what you want to cook
02:23:37 <wob_jonas> it's a handheld kitchen mixer with no fixed chasis or bowl
02:23:44 <shachaf> Oh.
02:23:50 <shachaf> I was thinking of what's-it-calleds.
02:24:01 <shachaf> The fancy ones that everyone says are very good.
02:25:31 <wob_jonas> The ones that have a base and a bowl and possibly a lid? I don't know if they are good, possible, but I don't need one
02:26:31 <shachaf> Maybe only their marketing is good.
02:26:50 <wob_jonas> Apart from that labeling thing, the manual is short and useful.
02:27:36 <wob_jonas> shachaf: I cook rarely and only simple things, so there are a lot of kitchen implements that I don't have and don't want.
02:27:48 <HackEgo> [wiki] [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=52662&oldid=52653 * Esolangsme123 * (+185) added ME
02:27:53 <HackEgo> [wiki] [[(P™TM™)™]] N https://esolangs.org/w/index.php?oldid=52663 * Esolangsme123 * (+1108) Created Page
02:28:13 <shachaf> What are some simple (vegetarian) things I should cook?
02:28:22 <HackEgo> [wiki] [[(P™TM™)™]] https://esolangs.org/w/index.php?diff=52664&oldid=52663 * Esolangsme123 * (+1)
02:28:45 -!- moony has joined.
02:31:01 <moony> isnt there a bot written in Befunge in here?
02:31:11 <pikhq> fungot: Yo
02:31:11 <fungot> pikhq: ( ( yeah yeah laughter
02:31:20 -!- hppavilion[1] has quit (Ping timeout: 260 seconds).
02:31:23 <moony> ah, right.
02:31:27 <moony> fungot: yo
02:31:27 <fungot> moony: ( ( but i laughter i gave it up thank goodness i never started
02:32:00 <moony> fungot: source
02:32:01 <fungot> moony: ' cause i missed it or they'll have commentators or whatever but
02:32:07 <moony> isnt the sourcecode somewhere? :P
02:32:10 <moony> fungot: help
02:32:11 <fungot> moony: yeah it is yeah and actually the city i live about thirty five years so
02:32:12 <pikhq> https://github.com/fis/fungot
02:32:13 <fungot> pikhq: yeah i've heard of some games that would be great
02:32:51 <shachaf> pikhq: good afternoohq
02:43:04 <rdococ> array banana() { repeal three; }
02:50:38 <HackEgo> [wiki] [[Deadfish]] https://esolangs.org/w/index.php?diff=52665&oldid=52191 * Zzo38 * (-487) RogueVM is being entirely rewritten
02:51:49 <wob_jonas> It's so crazy how people could make these same food forty years ago without all these modern conveniences like electric mixer, plastic containers, heat-resistant silicone and teflon-coated vessells, and the shitton of pre-prepared food ingredients you can buy in shops.
03:01:47 <rdococ> hm.
03:02:00 <rdococ> there's this, what about that?
03:02:58 -!- oerjan has joined.
03:03:52 -!- contrapumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
03:11:50 -!- moony has quit (Ping timeout: 240 seconds).
03:16:50 -!- btiffin has joined.
03:18:39 <HackEgo> [wiki] [[Fish]] M https://esolangs.org/w/index.php?diff=52666&oldid=52479 * Manushand * (+19) /* Code execution */
03:20:36 -!- http_GK1wmSU has joined.
03:23:17 -!- http_GK1wmSU has left.
03:25:04 <HackEgo> [wiki] [[Fish]] M https://esolangs.org/w/index.php?diff=52667&oldid=52666 * Manushand * (+7) /* Hello, world! */
03:30:49 <Warrigal_> I've got another neural net going. It makes some interesting blended nicks currently.
03:33:00 <HackEgo> [wiki] [[Fish]] M https://esolangs.org/w/index.php?diff=52668&oldid=52667 * Manushand * (+0) /* Fibonacci sequence */
03:33:34 <Warrigal_> iis5233, zzh183, izt-23, HackEgibo, zzo38L, eeljan, oiis823, oerjaf, oeljanj, oerjat, zeejan, shabaly, oily, ois522, oi"sjan, toppavilion[1, \oren., hackEgon
03:34:01 <zzo38> Now I wrote one program with MIX it will tell you what base it is using; the program is: " M B$ J OGA B= AE I E1 H R7 BE F A9BASE" (do not include the quotation marks, which aren't a valid character in MIX anyways)
03:34:14 <Warrigal_> It pretty frequently outputs nicks with invalid characters in them, like oi"sjan.
03:39:04 <wob_jonas> Warrigal: what outputs such nicks?
03:39:28 <wob_jonas> ah, neural net
03:51:21 <oerjan> . o O ( `learn eeljan is oerjan's slippery twin. )
03:59:48 <rdococ> banana
04:00:59 <Warrigal_> --- nick: ASfues_Cherican (Ping timeout: 255 shdeconds) #esoteric
04:01:02 <Warrigal_> Yeah, nice try.
04:02:33 <shachaf> rdococ: please stop it
04:03:17 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
04:08:40 <oerjan> . o O ( bananjan )
04:10:44 -!- newsham has quit (Ping timeout: 260 seconds).
04:13:15 -!- augur has quit (Read error: Connection reset by peer).
04:15:20 -!- augur has joined.
04:17:03 <HackEgo> [wiki] [[Fish]] M https://esolangs.org/w/index.php?diff=52669&oldid=52668 * Manushand * (+120) /* Square root */
04:27:01 <shachaf> `5
04:27:03 <HackEgo> 1/2:1278) <prooftechnique> I mean, that's just the bare function. You throw some concurrency primitives in there and you're off to the races \ 392) <oklopol> doctor who. i saw part of one episode of that and it reminded me of buffy the vampire slayer. \ 560) <Phantom__Hoover> Also you steal Berwick from us and then say you don't want it? <Ngevd> Y
04:27:05 <shachaf> `n
04:27:06 <HackEgo> 2/2:ou stole it from us first! \ 898) <evincar> okay so like <evincar> do <fizzie> Or do not? <evincar> no no <evincar> do <evincar> There is no do not. \ 1294) <Taneb> I once forgot what bin men were called <Taneb> Doing roughly 50% of a computer science degree, the only term I could think of was "garbage collector"
05:08:25 <zzo38> Is there any benefit to punching cards so that the fewest number of holes is punched?
05:10:02 -!- doesthiswork has quit (Quit: Leaving.).
05:18:26 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52670&oldid=52652 * Btiffin2017 * (+3323) /* History */
05:18:41 -!- doesthiswork has joined.
05:21:26 <btiffin> zzo38: more holes increased the likelihood of wear and tear causing the card to fail. Historic COBOL reserves the first 6 character positions and the last 8 positions of the 80 columns to not include code so that fraying of cards didn't cause production run problems.
05:26:50 <btiffin> who/what is lambdabot and do I bother sending it a request to read the messages?
05:27:43 <shachaf> only you can answer that question
05:28:22 -!- contrapumpkin has joined.
05:34:03 <oerjan> btiffin: it's our resident haskell bot, and yes.
05:34:05 <zzo38> Oops I did find a mistake in MIXPC still, that a field specification (0:0) is not working
05:34:38 -!- contrapumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
05:41:11 <zzo38> btiffin: I did not know about avoiding fraying cards like that
05:43:21 <zzo38> Why does it uses different number of position to be avoiding for start end?
06:00:07 <zzo38> I read a message elsewhere someone says C build systems is terrible. Do you even need a build system? I have written C programs without needing a build system
06:00:26 <pikhq> For small programs, that works, but when you get larger you start kinda needing one.
06:00:54 <pikhq> But yeah, for smaller stuff "I expect you or your distributer to know how a compiler works" is fine.
06:02:06 <shachaf> pikhq: Which build systems do you like?
06:02:17 <pikhq> Everything is scow.
06:02:24 <shachaf> Do you like bazel?
06:02:36 <pikhq> No, though I dislike it less than some others.
06:02:54 <shachaf> I think it has all sorts of good ideas.
06:02:56 <pikhq> And for a notable search company, it actually does make sense.
06:02:59 <shachaf> And also some scow.
06:03:02 <zzo38> I just put the command for compiling at the top of the C code inside of a "#if 0" block, so it specifies all of the options you need
06:03:45 <shachaf> What don't you like about it, given the use case of one company's code kept in one repository?
06:05:35 <pikhq> Psuedo-python hackery, for one. :)
06:06:23 <zzo38> Do you like my way?
06:06:44 <pikhq> zzo38: I think that it scales poorly, but for smaller programs it's fairly reasonable.
06:08:24 <shachaf> Yes, I'd like a better language to express build files in.
06:09:42 <shachaf> I can think of several pseudo-Python languages developed at a particular company that people aren't very fond of.
06:10:09 <pikhq> I also am a bit grumpy at mono-repos in general, TBH.
06:11:14 <zzo38> Even for larger programs you can make dependencies and automatic including keeping track of which files are modified and need to be recompiled; each source file can still contain its own build script, and can use "touch" and "test" commands to determine if it needs to call other files to compile them too, in case they have been changed.
06:13:37 <shachaf> pikhq: Why?
06:13:41 <shachaf> They're the best.
06:14:24 <shachaf> zzo38: What if your program is too big to use touch and test?
06:15:47 <zzo38> shachaf: Could you give the example?
06:16:41 <shachaf> I'm looking for some public numbers from Google about their thing.
06:16:48 <shachaf> I remember seeing them but I don't remember where.
06:16:54 <shachaf> Anyway, sometimes the compilation graph is very large.
06:17:22 <pikhq> Profoundly.
06:17:51 <shachaf> zzo38: Do you like Daniel Bernstein's redo system?
06:18:10 <pikhq> IMO redo has some quirks, but I at least like the idea.
06:18:26 <pikhq> Which is pretty normal with djb.
06:18:36 <shachaf> pikhq: I like many of the ideas of bazel.
06:18:38 <pikhq> "There's some funny stuff here, but I like the direction you're going in."
06:18:39 <zzo38> I don't know Daniel Bernstein's redo system
06:18:55 <shachaf> I think a lot of them could be adapted to a non-monorepo world.
06:19:19 <shachaf> I was thinking of working on a thing like that. But then I realized how scow the non-monorepo world is.
06:19:59 <btiffin> zzo38; not sure why the start was 6 characters and the end was 8; but that form still sticks today when using a mainframe editor; the last 8 columns are automatically filled in with sequence numbers.
06:23:07 <zzo38> I suppose the sequence numbers can help if the cards are mixed up?
06:24:33 <btiffin> oerjan; worth talking to lambdabot, thanks
06:24:53 <zzo38> On MIX, when reading numbers, the character code is modulo ten to determine the digit; digits "0" to "9" have codes 30 to 39, and a space is 00, so if you punch a space instead of zero then it is punching one less hole, but it can still be read as zero.
06:26:56 <btiffin> that was the original intent yep, if a box of cards hit the floor it was a long drawn out process to get things back in order
06:28:53 <btiffin> Not sure why autonumbering is still in z/OS editors; I think it makes programmers over 50 feel comfortable
06:30:54 <zzo38> Standard MIX has no way to reorder cards, although you could make a program that will punch a copy of the deck with the cards in the correct order.
06:35:15 <btiffin> the much maligned ALTER verb in COBOL was partly because of the hassles involved in inserting lines in card decks. Easier to just a few cards at the end that rerouted a jump to a new jump (that rerouted to a new jump, that rerouted to a new jump...) sounds bad, but the alternative was often worse
06:35:49 <zzo38> O, OK, so that is why they put that in there
06:38:03 <btiffin> Partly, perhaps mostly, ALTER is also awesome for writing state machines though. But for COBOL is was mostly because some regulation changed and the 3am run had to follow a different set of laws than the day before
06:38:35 <zzo38> OK
06:41:15 <btiffin> I know of a fellow that misses his card punch; so much so that he has added lines to his Hercules MVS emulator to kick an audio track of a punch reader when he submits JCL
06:45:22 <btiffin> I much prefer the fancy modern cathode ray tube interface. It's like living in the future.
06:46:59 -!- FreeFull has quit.
06:53:41 <zzo38> I use a LCD monitor though rather than CRT
06:54:16 <zzo38> (LCD works best at the native resolution and works badly at other resolutions, while CRT seems to work equally well at any resolution, however)
06:54:43 -!- sleffy has joined.
06:55:30 -!- sdhand has quit (Quit: ZNC 1.6.5 - http://znc.in).
06:56:07 -!- sdhandsucks has joined.
06:56:48 -!- sdhandsucks has quit (Client Quit).
06:57:03 -!- sdhand has joined.
06:57:22 -!- sdhand has quit (Changing host).
06:57:22 -!- sdhand has joined.
07:15:05 -!- erkin has joined.
07:29:31 -!- hppavilion[1] has joined.
07:43:04 -!- sleffy has quit (Ping timeout: 260 seconds).
07:47:05 -!- augur has quit (Remote host closed the connection).
08:13:18 -!- augur has joined.
08:16:23 -!- augur_ has joined.
08:17:53 -!- augur has quit (Ping timeout: 248 seconds).
08:20:37 -!- augur_ has quit (Ping timeout: 246 seconds).
08:47:10 -!- augur has joined.
08:50:06 -!- http_GK1wmSU has joined.
08:51:28 -!- augur has quit (Ping timeout: 240 seconds).
08:52:29 -!- http_GK1wmSU has left.
08:59:51 -!- PattuX has joined.
09:11:43 <HackEgo> [wiki] [[Funge-98]] https://esolangs.org/w/index.php?diff=52671&oldid=52670 * Btiffin2017 * (+202) /* History, wording fix ups, added more links */
09:24:26 -!- rodgort has quit (Quit: Leaving).
09:29:24 -!- doesthiswork has quit (Quit: Leaving.).
09:32:36 -!- rodgort has joined.
09:36:28 -!- imode has quit (Ping timeout: 240 seconds).
09:41:09 -!- imode has joined.
10:11:11 -!- btiffin has quit (Quit: ChatZilla 0.9.93 [SeaMonkey 2.46/20170120202656]).
10:14:30 -!- erkin has quit (Remote host closed the connection).
10:14:49 -!- erkin has joined.
10:19:10 -!- erkin has quit (Ping timeout: 240 seconds).
10:40:08 -!- imode has quit (Ping timeout: 240 seconds).
11:07:23 -!- oerjan has quit (Quit: leaving).
11:14:34 -!- erkin has joined.
11:35:16 -!- boily has joined.
11:49:08 <boily> `w
11:49:09 <HackEgo> magic//The magic was in you all along.
11:53:18 <int-e> that doesn't seem very wise
11:53:26 <int-e> `cwlprits magic
11:53:33 <HackEgo> oerjän
11:57:04 <shachaf> shocking
11:57:08 <shachaf> `dowg magic
11:57:18 <HackEgo> 6054:2015-10-10 <oerjän> learn The magic was in you all along.
11:58:25 <int-e> what's the etymology of dowg anyway... I guess I can trace it to doag, but then I'm lost.
11:58:43 <shachaf> dowg = wisdom doag
11:58:51 <shachaf> doag = hoag that shows date
11:59:07 <shachaf> hog = hg log
11:59:17 <shachaf> I don't remember the link between hog and hoag
11:59:47 <int-e> `paste bin/hog
11:59:48 <shachaf> hoag is hog with --removed, so it shows a more complete history
11:59:49 <HackEgo> https://hackego.esolangs.org/fshg/index.cgi/file/tip/bin/hog
11:59:52 <shachaf> `cat bin/hog
11:59:53 <HackEgo> hlnp --template "{desc}\n" -- "$@"
12:00:14 <shachaf> There's a story called _The Unpleasant Profession of Jonathan Hoag_ that it's probably named after.
12:00:36 <shachaf> I don't think the story is all that good among the stories in the book I read it in.
12:01:29 <shachaf> But the book was named after it anyway.
12:01:33 <int-e> thanks
12:02:16 <shachaf> Maybe you should invent better names. That would help.
12:02:20 <shachaf> invent-e
12:02:28 <shachaf> inventions-e
12:02:37 <shachaf> invent-eions?
12:02:58 <boily> I like invent-e.
12:05:40 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
12:06:02 -!- hppavilion[1] has quit (Ping timeout: 260 seconds).
12:18:34 <boily> `w
12:18:36 <HackEgo> infidel//An infidel is someone who doesn't support the great former leader. Socialismo o muerte!
12:24:12 -!- erkin has joined.
12:29:07 -!- boily has quit (Quit: UNICORN CHICKEN).
12:42:34 -!- wob_jonas has joined.
12:45:43 -!- http_GK1wmSU has joined.
12:45:46 <wob_jonas> contest is starting soon
12:47:15 -!- http_GK1wmSU has left.
12:47:57 -!- augur has joined.
12:52:55 -!- augur has quit (Ping timeout: 276 seconds).
13:02:16 -!- ais523 has joined.
13:02:25 <ais523> so, the ICFP contest is supposed to have started
13:02:32 <ais523> however it doesn't seem to have actually started, e.g. the problem specification isn't up
13:02:37 <ais523> anyone know what's going on?
13:06:08 <ais523> aha, up now
13:06:45 <ais523> and it's got misconfigured https (the cert is for the wrong subdomain), how typical :-)
13:20:02 <ais523> hmm, this game, as currently written (apparently the spec is going to change), is broken in the two-player case
13:20:09 <ais523> it's trivial to prove that the second player can't possibly win with optimal play
13:20:21 <ais523> presumably the hope is that the maps will be so large that the optimal strategy can't easily be calculated
13:21:42 <wob_jonas> ais523: and the top menu entry "Problem Specification" points to a useless page that doesn't seem to contain the problem spec
13:21:53 <ais523> right
13:21:59 <ais523> the spec is linked from the homepage though
13:22:03 <wob_jonas> right
13:22:05 <wob_jonas> that's just rufe
13:22:07 <wob_jonas> rude
13:22:12 <wob_jonas> people might be refreshing that useless page
13:22:17 <ais523> the game, at present, is basically generalised Hex
13:22:25 <ais523> but with a different scoring system
13:22:52 <wob_jonas> well hex is hard enough to win (except for very small board sizes)
13:24:31 <ais523> yes
13:30:10 <ais523> anyway, I predict this to be a task where functional languages will do fairly badly; pretty much any algorithm can be improved via adding extra brute-forcing
13:30:16 <ais523> which means that raw efficiency will be very important
13:36:20 <wob_jonas> Oh! so there are more example maps than the ones shown in the visualizer pulldown menu: http://punter.inf.ed.ac.uk/maps/
13:37:16 <ais523> right, and the maps used for judging may well be ones that aren't publicly available
13:37:43 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
13:40:26 -!- wob_jonas has joined.
13:57:36 <wob_jonas> ais523: they silently updated the spec pdf
13:57:43 <ais523> what was the change?
13:57:51 <ais523> apparently there's a mailing list
13:57:58 <ais523> that I tried and failed to subscribe to
13:58:03 <ais523> perhaps there are updates there
13:58:05 <wob_jonas> submission procedure
13:58:08 <ais523> but the archives are only visible to subscribers…
13:58:11 <ais523> oh good, the old one was terrible
13:58:23 <wob_jonas> and maybe, I didn't check the mailing list
13:58:48 <ais523> err, I don't see a change
13:59:04 <ais523> they still want submissions via Google Docs (which requires a Google account)
13:59:06 <wob_jonas> I have version 1.1, what version are you seeing?
13:59:26 <ais523> oh, "task-1.0.pdf"
13:59:34 <ais523> apparently on top of everything else, there's a caching issue
13:59:54 <ais523> but I /still/ don't see a change with the new link to task.pdf
13:59:57 <wob_jonas> Yes, still google docs, but now there's a link to a registry form. The registry form asks for the list of names of members, and it's not clear to me how to add more members to your team later.
14:00:24 <int-e> oh github hosted, mm... in which case you get a cached version unless logged into github? not sure.
14:00:33 -!- doesthiswork has joined.
14:00:33 <ais523> I guess I'd need to form a team with someone else just so that they can submit for me :-P
14:00:40 <wob_jonas> ais523: the filename is the same, look inside the PDF under the title]
14:01:01 <ais523> wob_jonas: it /isn't/ the same (task-1.0.pdf versus task.pdf), but I can see a 1.1 under the title
14:01:07 <ais523> so I guess this is the most recent version
14:01:14 <wob_jonas> Apparently you can add members later
14:03:48 <int-e> "oxford city center"... I guess the mining sites are the colleges?
14:04:02 <ais523> where else would you produce lambdas? :-D
14:04:25 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
14:10:23 <int-e> anyway, cute, but I have no time
14:15:26 -!- LKoen has joined.
14:25:28 -!- erkin has joined.
14:26:22 <Warrigal_> `? code
14:26:23 <HackEgo> ​[11,11,11,15,15,23,12],[5,5,5,3,53,45,16,26,00,20,15,16,22,25,45,91,32,11,15,27,06,01,11,01,47,22,30,13,43,21,11,13,29,61,65,17,19,12,28,17,11,01,23,20,16,20,81,18,32,25,58,22.,1985,10.301350435,1555466973690094680980000956080767,13720946704494913791885940266665466978579582015128512190078...
14:26:39 <Warrigal_> I remember that.
14:28:06 <wob_jonas> what is that?
14:28:24 <wob_jonas> `dowg code
14:28:31 <HackEgo> 5674:2015-06-24 <tsweẗt> echo \'[11,11,11,15,15,23,12],[5,5,5,3,53,45,16,26,00,20,15,16,22,25,45,91,32,11,15,27,06,01,11,01,47,22,30,13,43,21,11,13,29,61,65,17,19,12,28,17,11,01,23,20,16,20,81,18,32,25,58,22.,1985,10.301350435,1555466973690094680980000956080767,13720946704494913791885940266665466978579582015128512190078...\' > wisdom/code \ 5658:
14:29:37 <Warrigal_> Why, it's a secret code...
14:29:49 <Warrigal_> Actually it's something generated by a neural net... I mean, a layered unit net.
14:30:48 <Warrigal_> Here's another bit of wisdom from the LUN:
14:30:56 <Warrigal_> 14:21:30 <wob_jonas> `? falras
14:30:56 <Warrigal_> 14:38:19 <HackEgo> perl --electries internet \ topic-nedwime \ wisdom/welcome no automatic squirt *wmpcch/ [Thundrey lian !echo knottocoin pauseFulgeberwarnin:14bag
14:40:31 -!- zseri has joined.
14:40:35 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
14:45:23 -!- furozo has joined.
14:53:38 -!- furozo_ has joined.
14:53:39 -!- furozo_ has quit (Client Quit).
14:53:49 -!- furozo has quit (Ping timeout: 276 seconds).
15:27:39 -!- augur has joined.
15:31:44 <ais523> I think I've decided not to participate in the ICFP contest
15:32:04 -!- augur has quit (Ping timeout: 260 seconds).
15:32:16 <ais523> it's a fairly interesting task but I don't feel confident I'd do well on it
15:32:32 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
15:33:44 <ais523> there are a number of possible approaches and I'd be depressed if I picked the wrong one
15:38:08 -!- ais523 has quit.
16:08:47 -!- contrapumpkin has joined.
16:54:32 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
17:12:08 -!- AnotherTest has joined.
17:18:41 -!- AnotherTest has quit (Ping timeout: 246 seconds).
17:23:32 -!- PattuX has quit (Quit: Connection closed for inactivity).
17:27:21 -!- newsham has joined.
17:28:25 -!- erkin has joined.
17:30:41 -!- ais523 has joined.
17:41:55 -!- AnotherTest has joined.
17:58:22 -!- AnotherTest has quit (Ping timeout: 260 seconds).
18:06:09 -!- ais523 has quit (Remote host closed the connection).
18:07:18 -!- ais523 has joined.
18:08:19 -!- AnotherTest has joined.
18:12:36 <\oren\> hmm... what if each line of a program is first parsed as C, BASIC, and python, and then whichever parse is most correct is used
18:14:16 <\oren\> extending this, you could have a syntax that is deliberately ambiguous, but the parser chooses whichever parse is longest
18:17:30 -!- AnotherTest has quit (Ping timeout: 255 seconds).
18:18:20 -!- AnotherTest has joined.
18:21:54 -!- augur has joined.
18:22:30 -!- AnotherTest has quit (Ping timeout: 240 seconds).
18:26:28 -!- augur has quit (Ping timeout: 255 seconds).
18:29:45 -!- AnotherTest has joined.
18:32:09 -!- FreeFull has joined.
18:45:23 -!- atslash has joined.
18:48:59 -!- AnotherTest has quit (Ping timeout: 246 seconds).
18:54:16 <Warrigal_> \oren\: you trying to get banned for spamming? :)
18:56:36 -!- hppavilion[1] has joined.
18:57:12 -!- hppavilion[0] has joined.
18:57:55 -!- hppavilion[1] has quit (Client Quit).
18:58:23 -!- hppavilion[0] has changed nick to hppavilion[1].
19:06:51 -!- moony has joined.
19:08:33 -!- ATMunn has joined.
19:08:39 <ATMunn> o/
19:08:51 <doesthiswork> p/
19:14:32 -!- Cale has quit (Ping timeout: 255 seconds).
19:15:02 -!- Cale has joined.
19:17:56 -!- moony has quit (Ping timeout: 260 seconds).
19:22:03 <\oren\> https://www.nytimes.com/2017/08/03/world/europe/denmark-prince-henrik-burial-wishes.html
19:22:32 <rdococ> hello humans
19:22:38 <rdococ> good evening, homo sapiens
19:23:05 <rdococ> may you be in a pleasant state of affairs, specimens of the subspecies of homo sapiens sapiens
19:25:58 <rdococ> that is, if any of you are present at your electronic devices
19:29:46 <rdococ> well, hppavilion[1] has gotta be here at least...?
19:29:58 <hppavilion[1]> I am. I always am.
19:30:04 <rdococ> yay!
19:30:21 <shachaf> please stop it, rdococ
19:31:10 <rdococ> shachaf: it's clear to me that hppavilion[1] is, indeed present - he does not have a bouncer, and his username is obviously here. it is not my fault if I want to talk to him.
19:31:54 <hppavilion[1]> rdococ: You are being a tad annoying in your way of going about it though
19:31:58 <hppavilion[1]> Just saying.
19:33:16 <rdococ> this channel is one of the only channels in which people find me annoying anymore. I would chalk it down to differences in perspective.
19:33:51 -!- moony has joined.
19:35:34 <rdococ> I was considering a self-modifying event-based system today.
19:37:17 <hppavilion[1]> Oh?
19:38:17 <rdococ> the idea is simple: the user could trigger events, and those events could modify the behaviours of other events - as opposed to keeping track of the program state with variables, you'd modify each event to act as if it was in the intended state.
19:44:29 <moony> Im feeling lucky. Mixture { chemicals: [Chemical { name: "H2", moles: 0.5, mole_mass: 0.0000000000000000000000033474472, matter_state: Gas,specific_heat: 14.2, is_pseudo: false }, Chemical { name: "O2", moles: 0.75, mole_mass: 0.000000000000000000000026566962,matter_state: Gas, specific_heat: 0.915, is_pseudo: false }, Chemical { name: "H2O", moles: 0.5, mole_mass: 0.00000000000000000000002991507361, matter_state: Liquid, specific_heat: 4.814,
19:44:29 <moony> is_pseudo: false }], temperature: 802.8550270045699, volume: 1 }
19:44:37 <moony> Anyone know if that is the correct reaction?
19:44:56 <moony> (1 mole H2 1 mole O2 burning, with only half of it burning per universal 'update')
19:44:59 -!- imode has joined.
20:18:30 -!- FreeFull has quit (Quit: Rebooting).
20:30:20 -!- FreeFull has joined.
20:46:20 -!- AnotherTest has joined.
20:56:13 -!- zseri has quit (Quit: Page closed).
21:01:48 -!- Phantom_Hoover has joined.
21:21:18 -!- zseri has joined.
21:22:13 -!- augur has joined.
21:27:02 -!- doesthiswork has quit (Quit: Leaving.).
21:30:08 -!- AnotherTest has quit (Ping timeout: 240 seconds).
21:30:25 -!- AnotherTest has joined.
21:49:17 <ATMunn> im currently trying to wrap my head around befunge, because why not :p
21:49:25 <ATMunn> working on a fizzbuzz program right now
21:49:41 <ATMunn> im sure its been done before, but sometimes you have to reinvent the wheel, you know? :p
21:50:29 <ATMunn> so far i've got a thing that counts from 1 to 100 and prints it out
21:50:35 <ATMunn> its even got newlines! :D
21:56:48 <myname> befunge <3
22:01:56 -!- AnotherTest has quit (Ping timeout: 255 seconds).
22:12:21 <moony> ATMunn, may want to look at fungot's code for examples later on. It demonstrates some neat functions
22:12:22 <fungot> moony: well i'm a my hobby laughter i guess it when i go and i'm like man how am i going to be good
22:12:41 <moony> like how to make a.. What does fungot use? in befunge
22:12:41 <fungot> moony: well i think it was televised uh-uh)) amazing
22:12:50 <ATMunn> lol does fungot activate a markov chain or something when you ping it
22:12:50 <fungot> ATMunn: right it's it's very cooperative you know everyone loved it it was hard but we did and um i don't really i
22:13:05 <moony> ATMunn, uses something similar. But fungot is written in pure befunge.
22:13:05 <fungot> moony: um i used to
22:13:12 <ATMunn> neat
22:13:18 <ATMunn> lmao
22:13:33 <ATMunn> its like "i used to be written in pure befunge, but not anymore"
22:13:45 <moony> lol. It still is
22:13:51 <ATMunn> i know
22:14:05 <ATMunn> but that was too perfect
22:14:22 <moony> ikr
22:14:31 <ATMunn> also, does fungot use 93 or 98?
22:14:31 <fungot> ATMunn: yeah yeah i think ah a lot of days later to come back in so sigh you know
22:14:36 <moony> 98
22:14:38 <ATMunn> ah
22:14:46 <ATMunn> im using 93 at the moment
22:14:56 <moony> use 98, 93 has a size limit
22:15:06 <ATMunn> but if i want to do anything more than just something simple then i'll use 98 yeah
22:15:35 <ATMunn> what other differences are there
22:19:40 <moony> 98 has some new instructions
22:25:41 -!- atslash has quit (Ping timeout: 240 seconds).
22:26:01 -!- atslash has joined.
22:26:22 <ATMunn> looking at the wiki, quite a few new instructions in fact
22:26:41 <ATMunn> including one for every letter of the alphabet it seems :p
22:32:11 <rdococ> Fudge.
22:41:26 -!- augur has quit (Remote host closed the connection).
22:42:31 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
23:04:30 -!- augur has joined.
23:17:04 -!- zseri has quit (Quit: Page closed).
23:35:03 <fizzie> fungot would be pretty much impossible (or at least implausible) without some of the '98 fingerprints, even without the size issue.
23:35:03 <fungot> fizzie: see i don't either
23:35:38 <fizzie> In particular the babbling models are a bit too large to fit comfortably in memory, so it needs the FILE fingerprint to read them.
23:37:07 <ais523> OK, I'm glad I decided not to take part in the contest, now
23:37:16 -!- atslash has quit (Quit: This computer has gone to sleep).
23:37:30 <ais523> this spec change means you need to start thinking about the algo again
23:37:51 <ais523> in general, I'm not sure this is a good task for a 1- or 3-day contest, it's more the sort of thing you'd want to spend months on
23:38:12 <ais523> fizzie: sockets?
23:38:25 <Sgeo_> https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/mines.html Always-solvable Minesweeper
23:38:43 <fizzie> ais523: That as well, but I thought the usual "conect stdin/stdout to the server via some external means" approach would work around that.
23:38:45 <Sgeo_> Gregor tricked himself into thinking a puzzle he encountered didn't have a unique solution
23:38:56 <Sgeo_> >.>
23:43:30 <Sgeo_> I still should assume most people are better at Minesweeper than I am
23:46:42 <rdococ> eh, depends
00:02:42 -!- atslash has joined.
00:03:32 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
00:12:29 -!- augur has quit (Remote host closed the connection).
00:14:16 -!- augur has joined.
00:40:51 -!- atslash has quit (Quit: This computer has gone to sleep).
00:51:48 -!- atslash has joined.
01:03:49 <ATMunn> \o/ now my fizzbuzz thing outputs buzz instead of the number on every multiple of 5
01:04:15 <ATMunn> man there's something so satisfying about watching a program counter/instruction pointer fly through a befunge program :p
01:05:32 <ATMunn> now to make it output fizz on multiples of 3, and fizzbuzz on multiples of 15
01:07:19 -!- btiffin has joined.
01:09:48 <imode> damnit. how do I signal the end of a valid path when all I can use is binary?!
01:18:50 -!- atslash has quit (Quit: This computer has gone to sleep).
01:22:22 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
01:23:48 -!- hppavilion[1] has quit (Ping timeout: 260 seconds).
01:27:52 <rdococ> Idea - a super-lazy language: a language which /actively/ avoids evaluating expressions, even if they'd normally be necessary.
01:29:06 <rdococ> say you have: var x := 3; var y := 2; var z := sqrt(x^2 + y^2); if (z < 5) { return }; here, the language will avoid evaluating the sqrt, prefering rather to square the 5
01:47:21 <imode> I wonder if I could store the traversal in reverse order so that I terminate when I get to the parent.
02:06:25 -!- augur has quit (Remote host closed the connection).
02:07:07 -!- augur has joined.
02:07:50 -!- ATMunn has changed nick to ATMunn62.
02:07:54 -!- ATMunn62 has changed nick to ATMunn.
02:42:27 <Warrigal_> Wisdom from the layered unit net:
02:42:28 <Warrigal_> 23:12:43 <hppavilion[1]> So, it's actually intended for instance for the fucking pokemon point, multi-uninteresting!
02:42:57 -!- augur has quit (Remote host closed the connection).
02:43:45 <Warrigal_> 22:06:00 <lambdabot> Define montal maxlack (cannot bother nickname with sweden)
02:51:29 -!- augur has joined.
02:51:42 <imode> what does lambdabot have against swedish nicknames.
02:59:31 -!- augur has quit (Remote host closed the connection).
03:02:00 -!- ATMunn has quit (Quit: See ya! o/).
03:07:58 -!- Warrigal_ has quit (Ping timeout: 246 seconds).
03:17:07 -!- contrapumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
03:25:50 -!- moony has quit (Ping timeout: 240 seconds).
03:48:56 -!- augur has joined.
04:39:23 -!- augur has quit (Remote host closed the connection).
05:09:26 -!- augur has joined.
05:12:23 -!- oerjan has joined.
05:29:23 <ais523> rdococ: that's basically a symbolic evaluation language
05:29:36 <ais523> instead of calculating the values of things, you have them as unevaluated expressions
05:29:49 <ais523> and then things like conditional operators will compare the expressions symbolically
05:30:31 <ais523> this also lets you do things like compare expressions with uninitialized variables in and get a yes/no/maybe response
05:31:39 -!- sleffy has joined.
05:52:41 -!- sleffy has quit (Ping timeout: 240 seconds).
06:13:37 <oerjan> "layered unit" \\ "neural"
06:13:40 <oerjan> > "layered unit" \\ "neural"
06:13:42 <lambdabot> "yed it"
06:23:48 -!- doesthiswork has joined.
06:43:51 <oerjan> `? lunac
06:43:52 <HackEgo> lunac? ¯\(°​_o)/¯
06:43:54 <oerjan> `? lunacy
06:43:55 <HackEgo> lunacy? ¯\(°​_o)/¯
06:44:30 <oerjan> `learn LUNacy is wisdom generated by a neu^Wlayered unit net. Ask Warrigal for details.
06:44:32 <HackEgo> Learned 'lunacy': LUNacy is wisdom generated by a neu^Wlayered unit net. Ask Warrigal for details.
06:50:53 <shachaf> `grWp for details
06:51:04 <HackEgo> goat:Goats will eat and drink anything, except tea. Solain is unavailable for details. \ lunacy:LUNacy is wisdom generated by a neu^Wlayered unit net. Ask Warrigal for details. \ monqy:monqy is no longer extant. He lives in concept, hidden, unfindable. You could ask itidus21 for details, if you find him.
06:52:02 <shachaf> What was the command for simulating `...-style command line parsing?
06:52:36 <oerjan> `cat bin/nur
06:52:37 <HackEgo> ​"${1%% *}" "${1#* }"
06:53:43 <shachaf> Right.
06:53:49 <shachaf> `nur run
06:53:49 <HackEgo> run run run
06:54:47 <oerjan> `2 grWp for details
06:54:48 <HackEgo> 2/116:. \ ⊥:⊥ is a bottom tack, useful for annoying teachers. \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ 1:The 1 is just for disambiguation. \ `2:`2 <cmd> is equivalent to `1 <cmd>, except that it starts displaying the _second_ output piece. Useful when you've alrea
06:55:05 <oerjan> `2 grWp "for details"
06:55:06 <HackEgo> 2/1:
06:55:16 <oerjan> `1 grWp "for details"
06:55:18 <HackEgo> 1/1:goat:Goats will eat and drink anything, except tea. Solain is unavailable for details. \ lunacy:LUNacy is wisdom generated by a neu^Wlayered unit net. Ask Warrigal for details. \ monqy:monqy is no longer extant. He lives in concept, hidden, unfindable. You could ask itidus21 for details, if you find him.
07:01:32 -!- augur has quit (Remote host closed the connection).
07:31:23 <Vorpal> hi
07:31:40 <oerjan> hirpal
07:32:48 * oerjan was inspired by the logs to try the "always solvable" mines in chatham's puzzles, but cannot see why this one is solvable.
07:34:10 <int-e> count?
07:34:23 <oerjan> hm it seems so.
07:34:48 <oerjan> i didn't think i had found enough mines to rule out just by count, but it seems i have.
07:34:57 <Vorpal> what is chatham's puzzles?
07:35:07 <oerjan> er
07:35:09 <Jafet> it's like hexham, but more chatty
07:35:11 <oerjan> *tatham
07:35:20 <Vorpal> doesn't help either
07:35:46 <Jafet> the mines generator just runs a constraint solver internally, I think
07:35:47 <Vorpal> minesweeper puzzles?
07:35:47 <oerjan> https://www.chiark.greenend.org.uk/~sgtatham/puzzles/
07:36:03 <oerjan> lots of puzzles, minesweeper is just one of them
07:36:37 <oerjan> *just by total count. obviously i've counted neighbors plenty.
07:38:35 <int-e> oh it even says so in the description
07:38:43 <Vorpal> the thing with that type of puzzle for me, I find it far more interesting inventing algorithms for solving it with a computer program than actually solving it myself
07:38:56 <oerjan> OKAY
07:39:01 <Vorpal> so not for me
07:39:01 <Jafet> `w itidus
07:39:56 <Vorpal> though minesweeper is kind of trivial in that regard, at least sudoku requires some thought of how to solve it efficiently
07:40:04 * oerjan prods HackEgo with the cane J======O
07:40:07 <oerjan> `echo hi
07:40:18 <Vorpal> I think it may be dead
07:40:42 <Vorpal> It's dead oerjan
07:41:19 <shachaf> The cane?
07:41:22 <oerjan> hm wiki may be too
07:41:37 <oerjan> shachaf: i've got a cane for telling people to get off my lawn, naturally
07:42:12 <oerjan> it's shape may be a little unstable.
07:42:14 <oerjan> *its
07:42:59 -!- AnotherTest has joined.
07:44:20 <int-e> Vorpal: You can leave all the cleverness to a SAT solver.
07:45:27 <Vorpal> int-e: that is the boring option though
07:46:19 <int-e> (for Sudoku, I mean, though this extends to quite a lot of puzzles that don't involve guessing... mine sweeper gets kind of interesting if you try to maximize the winning probability on random starting grids)
07:46:37 <Vorpal> yeah okay that is true
07:47:48 <Vorpal> Hm, there should be more variants of minesweeper. Some ideas (they are probably not original): hex grids, board game version with tiles, multi-player (competitive on shared grid)
07:48:22 <Vorpal> Or why not more types of mines, with different radius effects?
07:49:01 <Vorpal> Or more attributes, not just number, but make the colour have a meaning (other than 1 is blue, 2 is green, ...)
07:49:25 <Vorpal> 3D minesweeper
07:49:37 <Vorpal> or even higher dimensionality
07:50:33 <Vorpal> moving mines, that can move about in patterns, but only under non-revealed tiles
07:57:27 <Jafet> I sense a seumas mcnally award in your future
07:59:38 <btiffin> Vorpal: got Funge-98 embedded in COBOL now. First step anyway. Used rcfunge as it doesn't use exit and rely on q to return top of stack. C and COBOL coding took about 10 minutes, playing with more Funge took hours.
08:00:00 <myname> i saw minesweeper with a hex grid on a sphere, it was pretty easy, though
08:00:58 -!- AnotherTest has quit (Ping timeout: 255 seconds).
08:01:29 <myname> i also saw a minesweeper crawler where mines were opponents with different levels and the numbers were the sum of the adjacent levels. you will get damage if you attack monsters above your level
08:07:32 <oerjan> . o O ( you cannot put a hex grid on a sphere, it has the wrong euler characteristic )
08:10:19 -!- AnotherTest has joined.
08:12:14 <myname> you are right, there were also pentagons
08:14:31 -!- augur has joined.
08:18:47 -!- augur has quit (Ping timeout: 258 seconds).
08:21:26 -!- atslash has joined.
08:23:39 -!- doesthiswork has quit (Quit: Leaving.).
08:23:48 -!- AnotherTest has quit (Ping timeout: 240 seconds).
08:26:36 -!- atslash has quit (Ping timeout: 260 seconds).
08:27:14 -!- atslash has joined.
08:27:51 <Taneb> Hmm, you can put a pentgrid on a sphere
08:29:20 -!- AnotherTest has joined.
08:31:02 <oerjan> a small one.
08:31:51 <oerjan> wikipedia has a picture of a chocolate brownie and now i'm hungry :(
08:32:09 <oerjan> *+front page
08:38:18 * oerjan tries the esoteric solution known as "eating".
08:39:30 -!- erkin has joined.
08:42:51 -!- AnotherTest has quit (Ping timeout: 255 seconds).
08:43:45 -!- spruit11 has quit (Ping timeout: 255 seconds).
08:51:59 <Taneb> You can make a pentgrid bigger with arbitrary numbers of hexagons, maybe
08:52:39 <oerjan> yes. but you will always have 12 pentagons that way.
08:54:29 <Taneb> Spheres a frustrating like that
08:54:35 -!- bb010g_ has joined.
08:57:47 <shachaf> They have a lot of pent-up frustration.
08:59:54 <Taneb> oerjan, would you recommend eating?
09:00:04 <Taneb> I've heard good things about it but I'm not so sure
09:00:24 <shachaf> I think it depends a lot on what you eat.
09:00:33 <shachaf> Do you like mushrooms?
09:01:16 -!- imode has quit (Ping timeout: 255 seconds).
09:01:53 <Taneb> From time to time
09:02:08 <Taneb> Had mushroom pasta the day before yesterday
09:04:26 <fizzie> "Subject: [FIRING:1] host_down (esolangs.org)". Unfortunately too sleepy to look into this now, and the machine isn't answering to SSH anyway. Will try again tomorrow.
09:07:20 <shachaf> Taneb: I don't recommend eating death caps.
09:08:22 <Taneb> I'll bear that in mind
09:09:58 <oerjan> Taneb: with moderation hth
09:10:15 <Taneb> oerjan, thank you tdh
09:11:38 <shachaf> Good thing oerjan is an op.
09:11:44 <oerjan> . o O ( some crazy people might consider it tomorrow already )
09:12:08 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
09:12:56 <oerjan> are there _any_ foods with "death" in the name that are recommended to eat
09:13:10 <oerjan> it's pretty obvious, really.
09:13:51 <Taneb> Death by chocolate?
09:14:29 <oerjan> huh. so it is.
09:14:53 <oerjan> but clearly _someone_ is trying to kill me with chocolate today, anyway.
09:15:08 -!- HackEgo has quit (Ping timeout: 260 seconds).
09:17:38 -!- zseri has joined.
09:33:45 <shachaf> oerjan: You'd think that it'd be easy, but people still eat them for some reason.
09:33:57 <shachaf> Apparently it's a delicious mushroom.
09:36:13 <oerjan> maybe something for one of those bucket lists. in one of the last spots.
09:37:04 -!- zseri has quit (Quit: Page closed).
09:37:30 <Taneb> I recall seeing I think a Tumblr post that was like "Did you know you can drink magma???? But only once"
09:39:07 <oerjan> is suspect magma isn't delicious, though.
09:39:11 <oerjan> *i
09:41:06 <shachaf> I'm not sure I would describe it as drinking.
09:51:00 -!- oerjan has quit (Quit: Later).
09:51:02 -!- FreeFull has quit.
09:55:20 <\oren\> I am da Μαֆד𝒆г of unicode!
10:09:15 -!- ais523 has quit.
10:20:22 -!- btiffin has quit (Quit: ChatZilla 0.9.93 [SeaMonkey 2.46/20170120202656]).
10:28:42 -!- zseri has joined.
10:29:42 <zseri> esolangs.org seems down.
10:36:19 <Vorpal> zseri: so it does
10:36:25 <Vorpal> not sure who is responsible for it
10:37:41 <Vorpal> @tell btiffin Ah, good. That sort of integration seems less fun than what C-INTERCAL did though, with the calling back and forth between two separate programs
10:37:41 <lambdabot> Consider it noted.
10:38:30 <Vorpal> myname: interesting
10:39:40 <Vorpal> myname: it seems to me there is a huge potential to invent new (possibly interesting, maaaybe good) games by just "x in y genre". I.e. the RPG style minesweeper you decribed
10:39:44 <Vorpal> described*
10:40:13 <Vorpal> <fizzie> "Subject: [FIRING:1] host_down (esolangs.org)". Unfortunately too sleepy to look into this now, and the machine isn't answering to SSH anyway. Will try again tomorrow. <-- so what timezone are you in? Thought you were in EU?
10:40:57 <myname> Vorpal: i totally agree
10:41:30 <Vorpal> myname: though now I'm trying to think what a minesweeper with RPGs would be like
10:41:36 <Vorpal> first person?
10:41:44 -!- zseri has quit (Quit: Page closed).
10:42:30 <myname> i don't think that'll work
10:42:46 <myname> also, there is kind of a 3d sokoban
10:43:08 -!- zseri has joined.
10:43:19 <myname> and a tetris-like with sand
10:45:30 <Vorpal> myname: how does tetris with sand work?
10:46:04 <Vorpal> sand just piles up with a certain critical slope, so surely you could never reach the top of the stage before filling the width of the stage
10:46:21 <Vorpal> unless the stage is much shorter I guess
10:55:32 <myname> https://play.google.com/store/apps/details?id=com.hottato.sandagolite
10:59:14 <Vorpal> the video doesn't really explain the mechanics
10:59:39 <myname> if you have a big enoug pile of sand of one color, you can make it disappear
10:59:49 <Vorpal> (also, as a side note, it feels rather unprofessionally made, using a camera on a phone rather than screen capture)
11:02:57 -!- bb010g_ has quit (Quit: Connection closed for inactivity).
11:26:02 -!- MDude has joined.
11:28:51 <Vorpal> myname: what about a tetris with mines such that you build up certain patterns of adjacency?
11:29:53 <myname> how?
11:30:22 <Vorpal> not sure... maybe one person plays tetris to generate the level that another person solve as a mine sweeper game
11:31:55 <Vorpal> or you could just make it require a certain amount of mines per line to remove that line, rather than the fullness of the line, though that way it would be easy to get stuck not being able to remove a filled in line, but that could be solved by having the mines explode nearby blocks when removed (thus "damaging" the line below and above)
11:34:33 <myname> that would work but does not sound that interesting
11:34:36 <Vorpal> myname: ah, I got an idea that might actually be good (though I personally would be stressed out instead by it): Endless scrolling minesweeper, such that you only see a moving window over a set number or rows or columns, and you have to mark as many mines as possible to get high score. I think one hit kill would be too punishing in this scenario
11:35:49 <Vorpal> say every 5 or so seconds (depending on selected difficulty) a new line appears on the left side and an old one is removed on the right
11:36:04 <Vorpal> or maybe a block of lines (5 or so)
11:36:25 <myname> take a look at concrete jungle
11:36:37 <Jafet> what about a game that is exactly like battleships except you launch airstrikes on terrorists
11:36:47 <Vorpal> myname: the one on steam?
11:36:55 <Vorpal> Jafet: that is just a re-theme
11:36:55 <myname> yeah
11:37:38 <Vorpal> myname: this looks turn based (i.e. based on number of actions you perform rather than time)?
11:37:44 <Vorpal> that probably works better
11:37:56 <myname> it is
11:38:11 <Vorpal> yeah, that seems somewhat towards that idea
11:40:42 <Vorpal> I'm not much for these types of puzzle games, I find them monotonous. I like puzzle games like Myst and Antichamber, because they are quite varied.
11:41:08 <Vorpal> I guess that is why I like programming, it is after all like a puzzle in some ways, but it is very varied
11:41:37 <myname> i totally agree
11:42:27 <myname> there is way too few mobile friendly interesting gamification of it
11:42:30 <Vorpal> I can not understand why my dad continues to engage in Sodoku puzzles for years
11:43:39 <myname> i recommend "the sequence" for android, nice little bullying automaton puzzle
11:43:41 <Vorpal> Hm, now for a completely different type of puzzle, how early do I need to leave on a Saturday to go to the opposite side of the city arriving at 13:30...
11:44:27 <Vorpal> myname: I liked Monument Vally, the puzzles weren't that advanced, but the atmosphere and (rather opaque) storytelling more than made up for it
11:44:50 <Vorpal> also the puzzles were basically MC Escher style, messing with perspective
11:45:00 <Vorpal> which I very much like
11:45:06 <myname> it was way too short, though
11:45:19 <Vorpal> yeah, and they haven't ported the second one to Android yet
11:45:38 <Vorpal> just ios, which I don't own
11:45:44 <myname> also: snakebird is a pretty hard puzzle
11:46:50 <myname> euclidea is interesting, too
11:46:52 <Vorpal> hm google suggests about 20 minutes driving, but I know that route is not the fastest in practice
11:47:12 <Vorpal> oh yeah I saw someone at work playing euclidea I think
11:47:42 <Vorpal> myname: I don't mind PC games though, I have a reasonable desktop
11:48:55 <Vorpal> myname: the latter two has in app purchases... :/
11:48:59 <Vorpal> and are free
11:49:03 <Vorpal> so I expect the worst
11:49:39 <Vorpal> anyway I need to get ready to leave, have a great day
11:53:57 <myname> euclideas IAP just allow you to skip levels
11:54:34 <myname> snakebird is kind of a shareware version, if you don't purchase the one IAP that is there, you can only play a limited amount of levels
11:54:49 <myname> demo may be the better term
12:02:20 -!- augur has joined.
12:06:37 -!- augur has quit (Ping timeout: 246 seconds).
12:20:05 -!- btiffin has joined.
12:23:54 -!- LKoen has joined.
12:31:08 -!- hkt has joined.
12:31:45 -!- hkt_ has joined.
12:32:03 -!- hkt_ has quit (Client Quit).
12:33:18 -!- hkt has quit (Client Quit).
12:42:54 -!- augur has joined.
12:48:52 -!- augur has quit (Ping timeout: 260 seconds).
12:50:36 -!- boily has joined.
12:51:21 -!- btiffin has quit (Remote host closed the connection).
12:51:50 <rdococ> hoily!
12:57:47 <boily> rdochellochellochellochellochello...
12:58:08 <zseri> hi.
13:02:17 -!- __kerbal__ has joined.
13:03:38 -!- zseri has quit (Quit: Page closed).
13:03:43 <__kerbal__> hi
13:04:19 <__kerbal__> what happened to the wiki?
13:05:52 <rdococ> `moo
13:06:20 <rdococ> I can't seem to connect to the wiki.
13:06:26 <boily> __kellorbal__.
13:06:54 <rdococ> good kerbing.
13:07:19 <__kerbal__> boily: hoillo
13:07:29 -!- hkt has joined.
13:07:48 <__kerbal__> rdococ: grdococtings
13:09:05 <rdococ> I guess it'd make sense for versors (unit quaternions) to be stored in memory with only three values (x, y, z).
13:13:25 <boily> it makes sense for display purposes to reduce a quaternion to three dimensions, but their whole purpose in 3D graphics is to expediently compute rotations.
13:14:01 <boily> and for that we need all four values to be present and close by, so it's more efficient to keep everything in memory.
13:14:16 <rdococ> k
13:14:32 <rdococ> what happens if they're not unit?
13:14:41 <boily> well, w.
13:21:28 <rdococ> say I rotated a cube to Q(0.5, 0, 0, 0). would it appear smaller?
13:22:43 <boily> as far as my addled coffeeless brain can figure it, yes.
13:22:58 <rdococ> Wanna try some Klatchian Coffee?
13:24:21 <boily> I'm having sourj at the moment. it tastes good.
13:26:14 -!- zseri has joined.
13:27:31 <rdococ> But Klatchian Coffee gives you superspeed!
13:27:37 <boily> `relcome zseri
13:27:57 <zseri> hi
13:27:57 <rdococ> the wiki and the bot are down
13:28:08 <boily> 'tis the end of times.
13:28:09 <zseri> I already know.
13:28:31 <boily> the horror.
13:28:34 <boily> the agony.
13:29:07 <rdococ> ice scream.
13:31:07 <boily> the bowl of cereals.
13:31:43 <__kerbal__> What is the ICFP contest?
13:35:49 <__kerbal__> wait, it's this: https://icfpcontest2017.github.io
13:40:53 <__kerbal__> Here's the wiki backup from the last outage: http://esolangs.zem.fi
13:41:06 <__kerbal__> It doesn't work very well, though
13:42:18 <__kerbal__> you have to manually fiddle with the URLs, and the info it provides is incredibly outdated
13:42:28 <boily> @metar CYUL
13:42:28 <lambdabot> CYUL 051236Z 20010KT 2 1/2SM SHRA BR FEW012 OVC035 19/17 A2978 RMK CF1SC7 VIS W 12 SLP087 DENSITY ALT 900FT
13:44:15 -!- hkt has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
14:00:46 -!- doesthiswork has joined.
14:01:24 <zseri> The search forwards to esolangs.org and thus doesn't work now.
14:01:39 <zseri> (on the backup page)
14:05:13 -!- boily has quit (Quit: DIGGING CHICKEN).
14:06:19 <rdococ> I'd like to clarify: is the name of the wiki "Esolang", or is it "Esolangs"?
14:06:46 <zseri> I think it's named "Esolang"
14:06:53 <__kerbal__> The main page suggests "Esolang"
14:07:37 <zseri> Yes.
14:07:52 <rdococ> But the URL is esolangs.org/, right?
14:08:29 * __kerbal__ 's mind was blown
14:08:46 <rdococ> I'm...not cleaning that up.
14:17:29 -!- ATMunn has joined.
14:27:14 -!- __kerbal__ has quit (Ping timeout: 260 seconds).
14:28:33 <Vorpal> <rdococ> But Klatchian Coffee gives you superspeed! <-- makes you knurd
14:29:51 <ATMunn> website seems to be down :\
14:33:22 <zseri> Yes
14:58:03 -!- doesthiswork has quit (Quit: Leaving.).
15:00:27 -!- augur has joined.
15:04:30 -!- augur has quit (Ping timeout: 240 seconds).
15:06:02 -!- LKoen has quit (Remote host closed the connection).
15:45:07 -!- zseri has quit (Quit: Page closed).
15:45:44 -!- zseri has joined.
15:48:39 <ATMunn> \o/ finished my befunge-93 fizzbuzz program
15:48:49 <ATMunn> it's probably super inefficient but i dont care :p
15:52:25 <zseri> is esolangs.zem.fi a clone of esolangs.org?
15:57:18 <zseri> the esolangs.zem.fi certificate doesn't match the domain name.
16:25:03 <rdococ> is anyone even trying to get the wiki/bot back up?
16:25:37 <zseri> I don't know.
16:47:48 -!- Warrigal_ has joined.
16:53:39 -!- zseri has quit (Ping timeout: 260 seconds).
16:53:51 -!- imode has joined.
16:59:17 <fizzie> Vorpal: Usually UK, but I'm visiting Mountain View this week.
17:05:11 -!- http_GK1wmSU has joined.
17:07:04 <Vorpal> fizzie: ah
17:07:08 <Vorpal> fizzie: fixing the wiki?
17:07:40 -!- http_GK1wmSU has left.
17:12:43 -!- heroux has quit (Ping timeout: 268 seconds).
17:16:08 -!- imode has quit (Ping timeout: 246 seconds).
17:16:14 -!- augur has joined.
17:18:17 <fizzie> Vorpal: Can't do terribly much about it, other than maybe ping Gregor. It's not answering SSH.
17:18:34 <fizzie> I could point at the backup copy I have, I guess.
17:18:45 <fizzie> Usually I've done that once it's been down for more than a day though.
17:19:48 <fizzie> Funny, though -- yesterday evening when I got the alert, I was getting a timeout. Now it actually does TCP connect to port 22, but then immediately gets closed by the remote side.
17:20:56 -!- augur has quit (Ping timeout: 260 seconds).
17:22:28 <fizzie> And on port 80 it accepts a connection and reads any data, but doesn't send back any response. That's so odd.
17:29:10 -!- AnotherTest has joined.
17:32:18 -!- zseri has joined.
17:32:27 <zseri> hi
17:35:39 <rdococ> yay
17:39:44 <ATMunn> fungot: poke
17:39:44 <fungot> ATMunn: and i mean)) i can't really say that that's there policy but different places i've worked they've brought
17:41:31 <fizzie> fungot: Brought what?
17:41:32 <fungot> fizzie: no but but people were taking it pretty easy i can't imagine how writers and researchers fnord before there used to be that it was
17:58:29 -!- AnotherTest has quit (Ping timeout: 255 seconds).
17:58:59 -!- AnotherTest has joined.
18:02:54 <quintopia> fizziello
18:03:10 -!- AnotherTest has quit (Ping timeout: 240 seconds).
18:23:26 -!- AnotherTest has joined.
18:23:29 -!- zseri has quit (Ping timeout: 260 seconds).
18:33:50 <Vorpal> <fizzie> And on port 80 it accepts a connection and reads any data, but doesn't send back any response. That's so odd. <-- very
18:33:52 <Vorpal> is it a VPS?
18:35:37 -!- LKoen has joined.
18:59:49 -!- augur has joined.
19:02:24 -!- AnotherTest has quit (Ping timeout: 258 seconds).
19:15:03 -!- atslash has quit (Quit: Leaving).
19:23:28 -!- sleffy has joined.
19:25:12 -!- erkin has joined.
19:40:16 -!- sleffy has quit (Ping timeout: 255 seconds).
19:45:43 -!- augur has quit (Remote host closed the connection).
19:53:08 -!- erkin has quit (Read error: Connection reset by peer).
19:53:41 -!- erkin has joined.
19:54:50 -!- augur has joined.
19:55:06 -!- zseri has joined.
20:03:48 -!- AnotherTest has joined.
20:07:16 <zseri> hi
20:17:00 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
20:17:20 -!- erkin has joined.
20:22:50 -!- MrBusiness has quit (Ping timeout: 240 seconds).
20:24:06 -!- augur has quit (Remote host closed the connection).
20:25:40 -!- AnotherTest has quit (Ping timeout: 240 seconds).
20:27:05 -!- GeekDude has changed nick to Rowlet.
20:31:31 -!- augur has joined.
20:51:00 <rdococ> He wasn't a fungi, he was a fungot.
20:51:00 <fungot> rdococ: ( ( yeah i can i can't even imagine um we my parents had to say about airport security noise mhm))
20:51:07 <rdococ> ...
21:00:06 -!- FreeFull has joined.
21:00:09 -!- Phantom_Hoover has joined.
21:14:40 -!- MDude has quit (Ping timeout: 240 seconds).
21:15:05 -!- LKoen has quit (Remote host closed the connection).
21:15:08 <Warrigal_> Let's see how good the layered unit net is at making METARs.
21:15:20 <Warrigal_> LOWI 021920Z VRB03KT 090V19KT CRICTE40 CLM BKN009/02///////// \1936 \ 9999 122353370 1003 5400 5121 1435 3132 2325 3253 5f46
21:15:42 <Warrigal_> I'm pretty sure that stopped making sense right around those slashes.
21:16:46 <Warrigal_> Looks like it gave two wind things instead of one. CRICTE and CLM don't mean anything.
21:17:05 -!- MDude has joined.
21:17:05 -!- AnotherTest has joined.
21:17:10 <Warrigal_> ENVA 012455Z 02005KT 10SM FEW014 FEW048 SCT064CC2 31/06 Q1013 TEMPO SMP137 TF 40010 FROL
21:25:07 <Warrigal_> The time there is 24:55 UTC, which is impossible. As far as I can tell, CC2, SMP, 40010, and FROL don't seem to mean anything.
21:25:14 <Sgeo_> Higher density of mines definitely makes Minesweeper harder
21:25:23 <Sgeo_> I actually have to think instead of relying on 1-corners
21:25:32 <Warrigal_> I found a page that says that TF means tornado.
21:27:14 <Jafet> at least for tatham's mines, the critical density seems to be around 40%
21:27:29 <Cale> https://tortue.itch.io/triangulation
21:27:34 <rdococ> 99 mines out of 100 squares is either 99% instant loss, or 100% instant win, depending on whether the implementation is a good one or a bad one
21:27:40 <Cale> (Interesting take on minesweeper)
21:27:52 <Jafet> this is interesting because from what I can tell, it just generates the minefields at random
21:29:55 <Jafet> then again, 3-sat also has a critical density
21:30:49 <rdococ> oh
21:30:50 <rdococ> cool
21:35:27 -!- pikhq has quit (Ping timeout: 240 seconds).
21:38:21 -!- MrBusiness has joined.
21:39:12 <Phantom_Hoover> is the wiki down?
21:40:59 -!- pikhq has joined.
21:41:35 -!- AnotherTest has quit (Ping timeout: 268 seconds).
21:43:09 -!- AnotherTest has joined.
21:46:58 -!- Jafet has set topic: http://esolangs.org/ will be back shortly after this bimetal prismack | logs: http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf | ICFP contest ends on 2017-08-07.
22:02:16 <zseri> Yes, the wiki is down.
22:08:10 -!- AnotherTest has quit (Ping timeout: 240 seconds).
22:13:41 -!- zseri has quit (Quit: Page closed).
22:33:36 -!- augur has quit (Remote host closed the connection).
22:38:58 -!- sleffy has joined.
22:57:39 -!- sleffy has quit (Quit: Leaving).
22:57:51 -!- augur has joined.
23:07:15 -!- Phantom__Hoover has joined.
23:10:00 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
23:28:08 <rdococ> Are there any esolangs in which the break command accepts an integer as the number of loops to break out of?
23:28:30 <rdococ> s/esolangs/normal langs/, because honestly it'd be useful to me
23:28:40 <rdococ> e.g. while true { while true { break; } }; vs e.g. while true { while true { break 2; } };
23:29:33 <Sgeo_> Try a language that uses delimited continuations, maybe you could make your own
23:39:54 -!- Warrigal_ has changed nick to tswe_tt.
23:43:07 -!- imode has joined.
23:44:36 <rdococ> excuse me, I have to pick up bits of my brain again. the last time this happened, I was introduced to storing binary tree paths as numbers.
23:50:54 -!- LKoen has joined.
23:51:05 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
00:00:20 -!- tswe_tt has quit (Ping timeout: 268 seconds).
00:14:43 <fizzie> rdococ: There's a bunch where the "break" command (or equivalent) accepts a label of the loop, but there's also at least one where it takes the number.
00:15:32 <fizzie> "Label of the loop" meaning e.g. outer: while true { while true { break outer; } }
00:15:41 <rdococ> ik
00:16:02 <rdococ> Numbers just seem to make sense to me, to be honest.
00:17:11 <fizzie> http://php.net/manual/en/control-structures.break.php "break accepts an optional numeric argument which tells it how many nested enclosing structures are to be broken out of. The default value is 1, only the immediate enclosing structure is broken out of."
00:17:36 <rdococ> break -1;
00:27:35 -!- tswe_tt has joined.
00:27:43 <tswe_tt> `? squid
00:28:05 <tswe_tt> :(
00:33:17 -!- Rowlet has changed nick to GeekDude.
00:34:26 <tswe_tt> rdococ: re taking the number of loops to break out of as an integer: I feel like that's an idea people tend to come up with every so often...
00:35:05 <tswe_tt> For "serious" languages, I don't see a big advantage over labeled breaks.
00:35:56 <rdococ> I don't see much of a disadvantage.
00:37:01 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
00:37:27 <tswe_tt> Well, there are a couple of disadvantages.
00:37:37 <tswe_tt> When you're writing it in the first place, you have to count the number of loops you're breaking out of.
00:37:40 <rdococ> true
00:37:48 <tswe_tt> Same thing when you're reading it. You have to count the number of loops it's going to break out of.
00:37:59 <rdococ> So it's perfect for a language that wants to be hard to read.
00:38:03 <tswe_tt> Yup.
00:38:13 <rdococ> Cool.
00:38:17 <tswe_tt> If you add or remove a loop without realizing that there's a numbered break in there, you'll break the break.
00:38:36 <rdococ> Sounds lovely and esoteric to me.
00:41:20 -!- imode has quit (Ping timeout: 246 seconds).
00:43:40 -!- imode has joined.
00:47:38 <Sgeo_> Does the number have to be a constant?
00:51:52 <rdococ> nope
00:52:23 <rdococ> you could, if you really wanted to, ask the user how many loops they'd like to break out of.
01:06:37 -!- tswe_tt has quit (Remote host closed the connection).
01:07:04 -!- tswe_tt has joined.
01:11:49 -!- doesthiswork has joined.
01:23:56 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
01:24:19 -!- Phantom__Hoover has joined.
01:35:51 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
01:44:36 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
01:56:08 -!- sebbu2 has quit (Ping timeout: 240 seconds).
02:24:04 <tswe_tt> @metar KGRR
02:24:04 <lambdabot> KGRR 060053Z 26005KT 10SM FEW100 SCT190 BKN250 20/13 A3004 RMK AO2 SLP169 T02000133
02:50:22 <doesthiswork> where is that quote that says programming a large project in C is like building the taj mahal out of toothpicks?
02:53:10 <Hoolootwo> all I can find is people building the taj mahal out of toothpicks :/
02:53:53 <doesthiswork> I couldn't find it in "the lisp curse" which was the context that I remember it from
02:54:14 <doesthiswork> There sure are a lot of toothpick Taj Mahals
03:04:29 -!- ATMunn has quit (Quit: See ya! o/).
03:20:32 <imode> well, I just made some improvements, and at the same time made a downgrade.
03:21:18 <imode> in order to store an N-M bit path in a N-bit integer, pad the bit string with N-M 1's, one 0, and then the path.
03:23:05 <imode> you could also make it subtractive and say "well I padded it with 3 1's, that means the path is 8 - 3 long."
03:35:25 -!- contrapumpkin has joined.
03:59:23 <imode> this wastes one bit. but it's a nice improvement.
04:00:16 <rdococ> hah, you wasted one bit :P
04:00:26 <imode> I'd rather waste 0. :P
04:01:00 <rdococ> Here's a compromise: waste 2. you can't waste 0, but it's even like 0!
04:01:06 <imode> hahahahhahahaha.
04:03:47 <imode> I was considering another scheme where if your path starts with 0, you fill the unused bits with 1's.
04:03:57 <imode> and vice versa.
04:04:54 <imode> but that would waste one bit as well.
04:05:22 <imode> because you'd always need to sacrifice one as a 'boundary bit' even at larger paths.. or would you.
04:05:54 <imode> if I wanted to store the path '00000000' in a chunk of 8 bits, I would need 9 because I would need an extra '1'.
04:06:31 <imode> same if I wanted to do 11111111, or 10101010.
04:07:41 * imode grumbles.
04:10:14 <imode> well, at least it's better than storing the length of the damn bit string.
04:31:51 -!- MDude has joined.
04:34:22 <doesthiswork> imode: I haven't been able to bully my friends into reading my article and the submission deadline is the 8th.
04:34:35 <doesthiswork> Would you be willing to help me?
04:42:35 <imode> uhm. I suppose. what's the article about.
04:43:24 <doesthiswork> Live-Programming :)
04:43:26 <doesthiswork> https://www.pdf-archive.com/2017/08/06/scrubbing-complex-and-non-incremental-domains-1/
04:44:02 <imode> sure. I suppose.
04:44:40 <doesthiswork> Thank you
04:45:05 <imode> 4's "conclusion" is not capitalized.
04:45:29 <imode> what's with the weird red numbers on the sides.
04:45:55 <doesthiswork> adding "review" does that
04:46:02 <imode> ah.
04:46:21 <imode> so your main idea is scrubbing CAs?
04:46:23 <imode> mm.
04:47:10 <doesthiswork> yes, because the technique should be generalizable to other things that seemed unscrubbable
04:47:46 <imode> kind of cool. scrubbable datastructures would be an interesting thing to investigate after this introduction.
04:49:31 <doesthiswork> could you tell me what kind of data structures would interesting to scrub?
04:50:13 <imode> anything really with a composable set of transforms. something like a 3D renderer with a scrubbable "matrix timeline" would be interesting.
04:50:21 <imode> something akin to a scrubbable forth would also be cool.
04:50:33 <imode> maybe something with scrubbable graph operations
04:51:31 <doesthiswork> wonderful!
04:52:07 <imode> honestly the first one wouldn't be that hard to hack up in GLSL.
05:07:39 <zzo38> I have made up two loading programs for MIX each of which fit on one card (and in fact the last five character positions of that card aren't used), one for specific byte size and one to be independent of byte size. (The independent one needs more cards to encode a program than the one for specific byte sizes.)
05:12:33 <zzo38> Here is one (untested, may contain mistakes): " N O6 A O4 H N ENX E K BU I OA H A. PA N D LB E AEU ABG G 9"
05:13:04 <zzo38> Do you like this?
05:16:36 <Jafet> huh, google's recaptcha tests recognition of vehicles in a photo
05:18:12 <Jafet> isn't this the kind of thing that google's automatic driver can recognise?
05:18:15 <doesthiswork> They phased out the "select all squares with Sarah Connor" captcha
05:22:45 <zzo38> (It is actually a 80-column card, so there are five more spaces afterward, although the copy in RAM will be immediately overwritten anyways so it doesn't matter; using spaces means less holes will be punched into the card, though)
05:25:47 <zzo38> If you are making a code golf with MIX, you could have the variants. Such as, binary program loading, as well as text program loading, and in the text case, you could have variants such as if some characters cannot be loaded from cards, as well as the scoring, such as the total number of cards, total number of holes punched into the cards, or total mass of the cards (in this last case, you may allow "lace columns", which have an undefined value).
05:31:59 <shachaf> `5 w
05:33:52 <shachaf> Oh, right.
05:35:13 -!- joast has quit (Ping timeout: 246 seconds).
05:35:28 <Jafet> it's actually better without all that bot spam in the way
05:35:34 <Jafet> `? shachaf
05:35:39 <Hoolootwo> that would be an interesting code golf: write the lightest program that does a given task
05:36:04 <Hoolootwo> and only allow languages that can be used with punch cards
05:40:18 <zzo38> Yes, I thought so perhaps
05:49:20 -!- hppavilion[1] has joined.
06:06:02 -!- contrapumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
06:22:09 <int-e> @metar ESGG
06:22:09 <lambdabot> ESGG 060450Z 24013KT 9999 BKN016 13/10 Q1008
06:22:15 <int-e> chilly
06:24:56 <Taneb> @metar EGSC
06:24:56 <lambdabot> No result.
06:25:18 <Taneb> ... I'm sure that's worked previously
06:27:47 <int-e> it only shows data that's less than 3 hours old, I think
06:28:20 <int-e> so if you have an airport that closes overnight and has no automated updates then this can easily happen
06:28:26 <Taneb> That might be it, it's pretty early here and it's a tiny airport
06:29:06 <Taneb> It's also the closest I've ever lived to anything with an ICAO code
07:14:52 -!- oerjan has joined.
07:17:41 -!- sftp has quit (Ping timeout: 255 seconds).
07:17:49 -!- augur has quit (Remote host closed the connection).
07:40:16 -!- imode has quit (Ping timeout: 255 seconds).
07:52:37 -!- doesthiswork has quit (Quit: Leaving.).
07:56:47 -!- sftp has joined.
09:12:09 -!- AnotherTest has joined.
09:27:49 -!- AnotherTest has quit (Ping timeout: 255 seconds).
09:28:54 -!- AnotherTest has joined.
09:34:15 -!- erkin has joined.
09:47:37 <oerjan> @tell doesthiswork <doesthiswork> They phased out the "select all squares with Sarah Connor" captcha <-- i'm pretty sure "phased out" is the wrong verb here hth
09:47:37 <lambdabot> Consider it noted.
09:49:07 -!- AnotherTest has quit (Ping timeout: 276 seconds).
09:55:15 -!- AnotherTest has joined.
10:21:23 <Jafet> I'm sure they'll be back
10:35:45 <Taneb> @metar EGSC
10:35:45 <lambdabot> EGSC 060920Z 23009KT 190V250 9999 FEW020 18/11 Q1022
10:38:45 <shachaf> @metar koak
10:38:45 <lambdabot> KOAK 060853Z 29012KT 10SM OVC008 16/16 A2992 RMK AO2 SLP131 T01610156 56005
10:38:49 <shachaf> @metar ksjc
10:38:49 <lambdabot> KSJC 060853Z AUTO 30005KT 10SM CLR 18/16 A2991 RMK AO2 SLP129 T01780156 56006
10:38:53 <shachaf> @metar ksan
10:38:53 <lambdabot> KSAN 060851Z 18003KT 10SM OVC017 21/17 A2992 RMK AO2 SLP132 T02110167 58007
10:38:58 <shachaf> @metar llbg
10:38:59 <lambdabot> LLBG 060920Z 29008KT 240V340 CAVOK 32/21 Q1007 NOSIG
10:39:15 <shachaf> Taneb: Did you learn Latin?
10:39:29 <Taneb> Up to A-level
10:39:47 <Taneb> I was never particularly good at it but I know a bit
10:39:52 <shachaf> Do levels go from A to Z?
10:40:11 <Taneb> That would be nice but unfortunately not
10:40:24 <Taneb> Why do you ask about Latin?
10:40:40 <shachaf> I know someone who's learning Latin this summer.
10:40:52 <shachaf> I vaguely remembered that maybe you learned it once but I wasn't sure.
10:42:06 <Taneb> Good luck to them! I hope they enjoy it
10:43:24 <shachaf> Well, they're almost done.
10:47:44 -!- zseri has joined.
10:47:53 <zseri> hi
10:52:10 -!- AnotherTest has quit (Ping timeout: 276 seconds).
10:55:36 -!- hppavilion[1] has quit (Ping timeout: 255 seconds).
11:00:36 -!- atehwa_ has quit (Remote host closed the connection).
11:09:42 -!- oerjan has quit (Quit: Later).
11:13:46 -!- AnotherTest has joined.
11:19:45 -!- sebbu has joined.
11:46:33 -!- LKoen has joined.
12:16:02 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
12:23:14 -!- zseri has quit (Ping timeout: 260 seconds).
12:39:30 -!- AnotherTest has quit (Ping timeout: 240 seconds).
12:40:18 -!- AnotherTest has joined.
12:50:28 -!- AnotherTest has quit (Ping timeout: 276 seconds).
13:01:01 -!- PattuX has joined.
13:14:06 -!- http_GK1wmSU has joined.
13:16:20 -!- http_GK1wmSU has left.
13:30:46 -!- Phantom_Hoover has joined.
13:54:04 -!- AnotherTest has joined.
14:00:43 -!- doesthiswork has joined.
14:01:00 -!- heroux has joined.
14:03:13 -!- AnotherTest has quit (Ping timeout: 255 seconds).
14:03:35 -!- AnotherTest has joined.
14:14:22 -!- heroux has quit (Remote host closed the connection).
14:17:32 -!- heroux has joined.
14:18:53 -!- augur has joined.
14:23:10 -!- augur has quit (Ping timeout: 240 seconds).
14:43:41 -!- ATMunn has joined.
15:04:44 -!- doesthiswork has quit (Quit: Leaving.).
15:06:46 -!- AnotherTest has quit (Ping timeout: 246 seconds).
15:59:01 -!- zseri has joined.
16:01:06 <zseri> esolangs.org is still down.
16:23:10 -!- MrBusiness has quit (Ping timeout: 240 seconds).
16:28:37 -!- contrapumpkin has joined.
16:29:10 -!- MrBusiness has joined.
16:32:51 -!- contrapumpkin has quit (Client Quit).
16:35:02 -!- atehwa has joined.
16:56:49 -!- zseri has quit (Ping timeout: 260 seconds).
17:10:01 -!- AnotherTest has joined.
17:28:36 <Cale> `smlist
17:29:42 -!- FreeFull has quit (Ping timeout: 260 seconds).
17:32:23 -!- AnotherTest has quit (Ping timeout: 255 seconds).
17:32:53 -!- AnotherTest has joined.
17:41:22 -!- FreeFull has joined.
17:48:59 -!- AnotherTest has quit (Ping timeout: 258 seconds).
18:29:43 -!- erkin has joined.
18:52:43 -!- imode has joined.
18:54:58 -!- zseri has joined.
19:42:10 <zseri> When does the Wiki go online again?
19:53:11 <zzo38> I don't know
20:03:26 -!- viznut_ has joined.
20:07:55 -!- j-bot has quit (*.net *.split).
20:07:55 -!- izabera has quit (*.net *.split).
20:07:55 -!- olsner has quit (*.net *.split).
20:07:56 -!- zgrepc has quit (*.net *.split).
20:07:57 -!- viznut has quit (*.net *.split).
20:08:49 -!- olsner_ has joined.
20:11:23 <Sgeo_> "The Rekursiv Single-Board Computer had hardware support for a writable instruction set (that is, you could dynamically add microcode instructions) and associative memory dispatch tables for supporting object-oriented programming.
20:11:23 <Sgeo_> "
20:11:29 <Sgeo_> ...writable instruction set
20:11:34 <Sgeo_> That sounds fascinating
20:12:31 <quintopia> sgello
20:12:32 <rdococ> O_o
20:12:42 <rdococ> mornintopia
20:12:49 <rdococ> evenintopia, rather.
20:13:10 <quintopia> its a rainy fternoon
20:13:40 <rdococ> eh, it's closer to ighttime.
20:16:38 <Taneb> I'd say it's vening
20:16:47 <Taneb> You know
20:16:56 <Taneb> Maybe we're in different imezones
20:17:05 -!- copumpkin has quit (Ping timeout: 255 seconds).
20:18:49 -!- j-bot has joined.
20:18:49 -!- izabera has joined.
20:18:49 -!- zgrepc has joined.
20:19:51 <quintopia> here its just past 3, with some 6 hours to go until ighttime
20:20:00 <quintopia> also anell9
20:20:04 <quintopia> anello
20:23:18 -!- joast has joined.
20:26:14 -!- zseri has quit (Ping timeout: 260 seconds).
20:27:02 <Taneb> Today I had a go at an idea I had about 4 years ago
20:27:16 <Taneb> I think I did a cleaner job than I did back then
20:30:16 <quintopia> a new tanebvention?
20:37:35 -!- zseri has joined.
20:38:27 -!- AnotherTest has joined.
20:45:03 -!- ais523 has joined.
20:52:43 <zseri> When does the Wiki go online again?
20:52:44 <zseri> hi
20:57:20 <Taneb> zseri, I don't think asking over and over again is going to make it come back any faster
20:57:40 <Taneb> Especially when none of us know all that much more than you do
20:57:42 <zseri> I know.
20:58:02 <Sgeo_> Why do x86 processors have so many modes?
20:58:52 <zseri> Because they have grown historically.
20:59:40 <Taneb> zseri, if you just want to read it, it's on the wayback machine here: http://web.archive.org/web/20170710222334/http://esolangs.org/wiki/Main_Page
21:00:34 <Taneb> quintopia, nah, just something I've made
21:00:43 <zseri> I also know the backup page: http://esolangs.zem.fi/wiki/Main_Page
21:01:04 <myname> so, your point of asking is what?
21:01:20 <Taneb> `quote definition of insanity
21:01:33 <Taneb> ...no wiki, no HackEgo, of course
21:02:35 <zseri> But the search doesn't work on the backup page.
21:03:55 <myname> there is a language list
21:04:54 <zseri> ok
21:06:49 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
21:08:40 -!- zseri has quit (Quit: Page closed).
21:10:11 -!- AnotherTest has quit (Ping timeout: 246 seconds).
21:14:04 -!- AnotherTest has joined.
21:24:23 -!- augur has joined.
21:48:30 -!- AnotherTest has quit (Ping timeout: 240 seconds).
21:51:54 -!- AnotherTest has joined.
21:57:50 <fizzie> I have a flight today, but will try to set the backup back up properly tomorrow, assuming the real thing is still down then.
21:58:36 -!- hppavilion[1] has joined.
22:04:31 <ATMunn> hm, what's a good fungy-98 interpreter? im on windows. i downloaded one made in c#, but i dont really like the look of it, and i'd prefer a browser based one.
22:08:34 -!- dingbat has quit (Quit: Connection closed for inactivity).
22:10:03 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
22:13:04 -!- AnotherTest has quit (Ping timeout: 246 seconds).
22:13:24 -!- AnotherTest has joined.
22:19:32 -!- copumpkin has joined.
22:28:34 -!- LKoen has quit (Remote host closed the connection).
22:31:30 -!- AnotherTest has quit (Ping timeout: 240 seconds).
22:33:56 <imode> I'll pay for efficient sibling traversal with one bit.
22:47:05 <rdococ> heh
22:50:09 <zzo38> Do you have some test files for MIX to test implementations?
22:55:30 -!- contrapumpkin has joined.
22:56:55 -!- ais523 has quit (Remote host closed the connection).
22:58:04 -!- ais523 has joined.
23:03:48 -!- augur has quit (Remote host closed the connection).
23:14:46 -!- LKoen has joined.
23:22:57 -!- augur has joined.
23:28:29 -!- wob_jonas has joined.
23:32:38 <wob_jonas> hello, guys
23:32:42 <wob_jonas> what happened while I was away?
23:39:40 <zzo38> Do you have some test files for MIX to test implementations?
23:40:13 <wob_jonas> no. you'll just have to look at the programs from the Knuth vol 1 to 3, such as the crossword program
23:40:42 <wob_jonas> I don't use MIX, I just documented it as an esolang.
23:48:17 -!- Mr2001 has quit (*.net *.split).
23:48:29 -!- boily has joined.
23:49:47 <boily> `w
23:53:22 -!- Mr2001 has joined.
23:54:12 <zzo38> Still I want to see to find some program. I do not have those book anymore because they were from the library
23:54:29 <zzo38> (and, it was a inter library loan, so I can't read it there, either)
23:56:12 <wob_jonas> zzo38: wait, aren't you in an English-speaking country? why do you need an inter-library loan for it?
23:56:57 <zzo38> wob_jonas: Because different libraries have different books.
23:57:39 <wob_jonas> anyway, even though the e-book edition is expensive and the only website where you can buy it sucks, it was totally worth the money I spent
23:58:32 <wob_jonas> this way I got the originals, and their latest editions, so I can now give away my translations of vol 1 to 3 inclusive (which are good, but based on the older edition)
23:58:50 <wob_jonas> I will totally buy vol 4B and 4C and 5 when they come out
00:03:11 -!- augur_ has joined.
00:04:46 <Sgeo_> Should I read the 80386 manual to start learning assembly?
00:04:52 <Sgeo_> OSDev wiki seems to suggest that
00:05:00 <Sgeo_> http://wiki.osdev.org/Learning_80x86_Assembly
00:05:05 -!- augur has quit (Ping timeout: 240 seconds).
00:06:17 <wob_jonas> Sgeo_: maybe. but don't forget that cpus have changed a lot since the 386. they have out-of order execution and speculative and rollback and crazy branch condition and target prediction and multi-level caches and vector registers (which are the new general registers) and 64-bit mode and all that stuff now.
00:06:53 <wob_jonas> oh, and register renaming too
00:06:56 <Jafet> not all english-speaking countries have useful libraries
00:07:02 <wob_jonas> and fast-multiplication
00:08:44 <ais523> Sgeo_: do you want to learn how to write assembly that works or assembly that runs fast?
00:08:58 <Sgeo_> I want to understand CPUs better.
00:09:01 <ais523> assembly optimization is pretty crazy nowadays, mostly because processors no longer work anything like asm assumes they do
00:09:26 <ais523> modern x86 basically recompiles the asm into an entirely different format on the fly
00:10:00 <wob_jonas> ais523: I personally care about the x86 cpu to learn how to write compiled code (C or C++ etc) that can run fast. it's rare that you actually have to write assembly, but knowing what the cpu does and caches and stuff helps when you write compiled code.
00:11:43 <ais523> it's hard to know how to understand CPUs better nowadays
00:11:58 <ais523> I guess looking at pathological cases and understanding why they're pathological can help
00:12:14 <Jafet> I suppose you could start with agner fog's optimization manual
00:13:03 <Jafet> (namely, the microarchitecture manual)
00:13:25 -!- augur_ has quit (Read error: Connection reset by peer).
00:14:16 <wob_jonas> ais523: you don't need to understand it perfectly, but knowing something about it can help
00:20:12 <Jafet> one other approach, which is a bit more relaxing, is to read mysticial's stack overflow answers
00:20:21 <zzo38> I would want to instead design the computer better, to not be so complicated and confusing like that.
00:22:19 <wob_jonas> Some of the complicatedness have really good excuses. Like, you know, speed of light and how big atoms are.
00:24:13 <zzo38> Yes, but I think there are better ways to deal with that.
00:24:29 <wob_jonas> with the speed of light?
00:24:35 <wob_jonas> or with the size of atoms?
00:25:13 <imode> less speed of light and more speed of electric charge through a medium. :P
00:25:27 <imode> but I guess if you did optical computing..
00:26:19 <wob_jonas> imode: that matters only in the short deep circuits, like within the cpu. for between the main ram and cpu where there's only wires, no logic, the propagation speed is basically the speed of light.
00:27:01 <zzo38> You shouldn't put the out of order execution, complicated caching, speculation/rollback, etc. Make any stuff being doing explicily as part of the program instead.
00:27:06 <Jafet> then there are dumb complications, like how every x86 chip has three different types of floating point units
00:27:22 <imode> what? it's all subject to the speed of electric charge through a medium. transferrance of charge is NOT the speed of light.
00:28:03 <Jafet> (apparently gcc defaults to doing all floating point in sse now, if you use -ffast-math)
00:28:08 <imode> regardless of whether or not there's logic in the way. logic only adds switching delays, gate delays, etc.
00:28:49 <wob_jonas> zzo38: I don't think that's a good idea. hardware guys tried that, but it turns out it only works if you assume the software guys can write magic compilers that can guess how cached each memory load actually is and the people who write the high level code want to annotate their C code with lots of hints,
00:29:14 <wob_jonas> and even then the machine code will be very verbose and you can't cache it properly.
00:29:35 <wob_jonas> out-of-order execution and register renaming and speculative branch prediction works well.
00:29:58 <ais523> the way to think about modern x86 machine code is as a compression scheme for what's actually run
00:30:03 <ais523> and one that isn't very good, at that
00:30:24 <zzo38> I don't like it, as then you can't know what order it is in, and so on. MMIX has explicit branch prediction; you must specify whether you want a branch or not-branch to be faster.
00:30:28 <imode> the machine models probably should stay the same, but we should move to asynchronous circuits.
00:30:38 <Jafet> actually, the complexity of a modern core exists for a more fundamental reason
00:30:51 <Jafet> because memory is getting slower
00:30:53 <zzo38> Then use a better compression scheme, I suppose?
00:31:13 <wob_jonas> most of the time the bottleneck is either memory access when people write cache-unfriendly code or decoding time when people write cache-friendly code. it's less common that the bottleneck is mispredicted jumps which is the only case when reducing the depth of the pipeline would actually help.
00:32:16 <zzo38> If I want caching I should to explicitly write in the caching instead.
00:32:40 <wob_jonas> zzo38: tell that to stupid programmers who insist on using large arrays of 64-bit pointers everywhere when large arrays of 32-bit array indexes would work.
00:32:48 <Jafet> since memory is getting slower, there is nothing else for your doubling transistor counts to do other than to reorder more loads and stores or to cram more ways to use that memory bandwidth into the instruction decoder
00:32:57 <wob_jonas> zzo38: it's not "if I want caching". you almost always want caching.
00:33:42 <zzo38> I don't want to complicate it. You don't need so huge number of transistor and so slow memory; make faster memory then.
00:34:04 <quintopia> helloily
00:34:34 <wob_jonas> Jafet: I have said this a few times, but what would IMO help a lot is if the cpu and OS people together found a way to increase the minimum page size from 4k, because then we could have more L1 cache, but it only works globally and some software assumes the page size is fixed, so it's really hard to do without breaking compatibility with everything
00:34:34 <wob_jonas> we have.
00:35:40 <wob_jonas> zzo38: memory throughput is plenty fast, especially if you're willing to buy expensive hardware. you can't have faster memory in latency though, because the main memory is between 0.1 to 0.3 meters from the cpu pyhsically, so the signal takes several clock cycles to propagate
00:35:52 <Jafet> what does the page size have to do with it?
00:36:20 <wob_jonas> that's why we need lots of on-board caches, in three levels (L3 for the whole chip, L2 per core or per two cores, and L1 with very slow latency really close to the execution units)
00:37:39 <wob_jonas> Jafet: basically L1 cache wants to have very low latency, so it has to guess which cache slot holds your memory before it can look up the physical address in the page table cache (aka TLB = translation lookaside buffer), then verify that the address matches what the cache entry caches.
00:38:41 <wob_jonas> So the L1 cache can only use the low 14 bits of the address, and it practically can't have more than 8 entries for any one address because then managing it would be too slow. So L1 caches have been topped out at 32 kilobytes (8 page sizes) of data cache and 32 kilobytes of code cache per core for half a decade now.
00:38:48 -!- sebbu has quit (Ping timeout: 240 seconds).
00:38:49 <zzo38> I still think there is a way to do though, by having separate addressing for the cache
00:39:18 <zzo38> And put the memory in the processor itself also microcode, that you can program your own microcode too, to improve the speed.
00:39:38 <wob_jonas> All cpus have that much L1 cache, but none can have more. To fix this, either you need larger page sizes, or some even more incompatible change.
00:40:14 <zzo38> I am not so concerned if C codes will run extremely fast, since you can write it in assembly language if you want to code for specifically this computer.
00:40:20 <wob_jonas> zzo38: the memory IS practically in the processor. processors have like 380 megabytes of L3 cache, and it keeps increasing. you get memory outside of the cpu too because most people want even more memory than that.
00:41:32 <zzo38> Yes, but you could have separate addressing for them.
00:41:56 <imode> yeah. sliding memory windows..
00:42:07 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
00:42:14 <imode> you could run a linux system off of cache alone these days.
00:42:17 <wob_jonas> zzo38: why would that be worth? the program can't tell in advance which memory will be in L3 because that depends a lot on the multitasking, and spilling from L3 to memory doesn't really add much overhead anyway.
00:42:39 <Jafet> note that for the machines that have 380 megabytes of L3, it takes almost as long to access as the dram
00:42:52 <wob_jonas> imode: I think motherboards don't really support that, but that doesn't matter, because slow RAM chips are cheap anyway, so you can just put some in.
00:42:56 <zzo38> Design it so that the program does know in advance, because only what the program puts there will be there.
00:43:02 <Jafet> at least for chipsets that I know of
00:43:16 <wob_jonas> Jafet: no, not really. not in latency. It's still five times closer physically than the main memory.
00:43:25 <shachaf> hi wob_jonas
00:43:29 <wob_jonas> hi shachaf
00:43:37 <shachaf> I ate lángos the other day.
00:43:45 <wob_jonas> shachaf: go on
00:43:52 <shachaf> That's pretty much it.
00:43:59 <shachaf> Do you eat it sometimes?
00:44:07 <zzo38> You may even add parallel memory transfer if you want to, and then you can only address the cache, and not the external memory.
00:44:09 <wob_jonas> no, I don't much like it
00:46:40 <wob_jonas> I don't like food that's soggy with fat. That mostly comes up with ways to prepare meat, but lángos is an example too.
00:47:18 <shachaf> It was very deep-fried.
00:48:09 <wob_jonas> Exactly.
00:48:14 <wob_jonas> Doesn't change much.
00:48:30 <shachaf> Is there other Hungarian food I should try?
00:48:34 <Jafet> here's a diagram claiming 40ns for the SB-E interconnect https://mechanical-sympathy.blogspot.de/2013/02/cpu-cache-flushing-fallacy.html
00:49:01 <Jafet> although I'm not sure if I should believe 65ns dram
00:49:06 <wob_jonas> shachaf: I can't predict what you'd like.
00:49:16 <wob_jonas> are you in Hungary or close somewhere?
00:49:47 <wob_jonas> or just ate lángos in Norway? I've seen such sold in Sweden, though I can't tell how authentic they are.
00:49:50 <shachaf> No.
00:49:54 <shachaf> It was in Oakland, CA.
00:50:02 <shachaf> I don't know how authentic it was, or how to measure that.
00:51:32 <Jafet> relatedly, the mill architecture videos were p.g.
00:52:25 <shachaf> Did you watch them all?
00:52:25 <wob_jonas> In any case, even if better architecture is possible, I care about x86_64 only, because it has the best support: most of the powerful computers have it, including anything I'll buy, and there's lots of good tools like optimizing compilers and good documentation.
00:52:33 <shachaf> You should go work for the Mill folks.
00:54:02 <zzo38> No, x86_64 is too complicated and too confusing; MMIX is better, and the original x86 is also good, and also MIX, and also 6502.
00:54:13 <Jafet> I did watch them all, but the plot twist in 10 was perhaps worth it
00:54:36 <shachaf> zzo38: Do you like the Mill?
00:55:03 <shachaf> Jafet: 10?
00:55:09 <zzo38> I looked but was unable to find the proper document of it
00:55:26 <shachaf> zzo38: I think the best documentation is in video form unfortunately.
00:55:30 <shachaf> Did you watch the videos?
00:55:33 <zzo38> No
00:56:16 <wob_jonas> There are a lot of people that start projects about fancy new cpu architectures, but actually making good optimized and well-tested cpu hardware and supporting software like optimizing compilers is pretty hard, so I don't think those projects make any sense.
00:56:39 <wob_jonas> Only a big company like Intel or AMD has the resource to be competitive in it.
00:56:41 <zzo38> You can write the program in assembly language, though.
00:57:12 <Jafet> huh, video 10 (“compiler”) is not the tenth on the website
00:57:25 <wob_jonas> And while it's easy to criticise Intel, and they do make mistakes, they are actually doing a pretty good work overall IMO.
00:57:28 <Jafet> well, it was that one
00:57:31 <shachaf> Hmm, what's the twist in that video?
00:58:22 <Jafet> the true nature of the mill is revealed in the end, in the q&a session I think
00:58:38 <wob_jonas> zzo38: only if you don't care about the lots of existing software written in C and other compiled languages that you'll want to run and want them to perform fast, such as the linux kernel itself
00:58:59 <shachaf> Which true nature? I watched the video but it was a while ago.
01:00:04 <wob_jonas> and don't even try to say you'll just have two different cpus side by side, because it turns out, if you want to do thousands of operating system calls per second and low latency networking and stuff like that, that just doesn't work.
01:00:25 <zzo38> Of course I will likely want the programs to run, but I can do without them going fast if making them fast means making a lot of confusion and complication, and instead write assembly languages programs when wanting to make a faster program specifically for this computer. This is always the case anyways; you will want to write assembly language program hand optimize for space and speed taking advantage of the specific features of this computer.
01:00:49 <zzo38> For example, you might use different kinds of data structures for the version of the program for different computers, too.
01:01:17 <wob_jonas> zzo38: for some programs, you can get away with running slow. but you won't rewrite the linux kernel and all the hardware drivers. there's a lot of work going into that project.
01:01:19 <zzo38> Or one version might omit some check that is needed on another implementaiton. Or whatever.
01:01:23 <Jafet> shachaf: something about how the belt is really just a better register map
01:01:32 <Jafet> but I don't remember clearly either
01:01:40 <shachaf> Jafet: Ah, I vaguely remember something like that.
01:01:47 <zzo38> Different computers will have different interfacing with hardware anyways.
01:02:02 <shachaf> I talked to someone who worked at Intel about it and they were a bit dubious about the hardware implementation of it.
01:02:09 <shachaf> But I don't really know much about it.
01:02:13 <shachaf> zzo38: Do you like the Mill's instruction encoding?
01:02:20 <zzo38> I don't know how it is work
01:02:22 <shachaf> zzo38: There are two instruction pointers, one moving forward and the other moving backward.
01:03:48 <zzo38> My own idea a bit different, there is a microcode memory (with RAM and ROM), that you can load VLIW microcode into, and uses entirely different addressing (and even different number of bits) from the external memory, is one thing that it does. There are others too.
01:04:15 <shachaf> zzo38: Do you like the Mill's belt?
01:04:16 <zzo38> Programs can load their own self-modifying microcodes.
01:04:56 <shachaf> Is self-modifying code worth the trouble?
01:05:08 <zzo38> shachaf: Again, I don't know how it is working; you will need to explain them if I am to answer such questions
01:05:26 <zzo38> I think self-modifying code is worth the trouble; I do not see why not.
01:05:53 <shachaf> zzo38: The belt is like a stack, except it's a queue of some bounded size.
01:05:56 <zzo38> As long as the CPU execution is defined precisely and unambiguously, then you have compatibility.
01:06:32 <shachaf> Instructions push their results onto the belt, and refer to belt positions by index (i.e. how recently a value was pushed).
01:07:11 <shachaf> When values fall off the end of the belt, they disappear.
01:07:31 <zzo38> Actually I have done stuff like that before, so yes I do understand.
01:08:52 <wob_jonas> people try that, but IMO it doesn't work. ostensibly it saves a few bits in the encoding, but nothing else (the register renamer isn't actually a bottleneck EVERY, register reads and writes sometimes are but a belt doesn't help) and your code gets much harder to write when you need to store registers for longer or need conditions or loops.
01:09:13 <wob_jonas> it does sound like a good idea, I've thought about it, but I don't think it works.
01:10:20 <Jafet> as I understand it, the main point of the belt is that you get to use 512 registers instead of 16
01:10:54 <wob_jonas> how does that work? don't you still need to encode all the input registers in the code explicitly, even if you can omit the output register most of the time?
01:11:48 <wob_jonas> we can have a plain large register array (like the one with 32 vector registers in future x86) or a large MMIX-like register stack if we just want more registers
01:12:17 <wob_jonas> (and that's 32 vector registers, plus the same 16 index registers you've always had)
01:12:17 <Jafet> well, the output registers are always fixed, so leaving that out does free up some bits
01:12:30 -!- augur has joined.
01:12:44 <wob_jonas> (and if you want even more, you can save index registers into fields of vector registers, and also efficiently use the stack)
01:12:48 <Jafet> but the videos didn't go into any detail about the instruction encoding
01:12:55 <ais523> wob_jonas: golfing languages have experimented with different registerish things quite a bit
01:12:59 <wob_jonas> I just don't believe it saves much
01:13:12 <ais523> I think the optimum is to have some way to have very cheap, short-lived local values but also separate storage for longer-lived values
01:13:23 <ais523> a Mill-like belt is good at the former but not the latter
01:13:59 <wob_jonas> ais523: after a limit, golfing doesn't help. modern x86 extensions actually are somewhat less golfed than old x68 used to be, because being able to decode the instructions quickly is more important. so they actually have a lot of unused bits in instructions in EVEX encoding.
01:14:28 <ais523> wob_jonas: well, golfing helps in that it reduces cache pressure
01:14:31 <wob_jonas> Sure, compact code still matters, but extreme golfing isn't always good.
01:14:36 <zzo38> I prefer how MMIX is doing actually, although I can also think of a few other ideas about how to do
01:15:02 <ais523> and the thing about a highly golfed instruction set is that there's more scope to improve its performance as processors get better
01:15:09 <wob_jonas> and you lose a lot in expressability
01:15:14 <ais523> REX encoding annoys me, it's so verbose, and yet you have to use it for basically everything on x86_64
01:15:30 -!- doesthiswork has joined.
01:16:53 <wob_jonas> ais523: nah, the double prefixes (0xF0 and one more prefix byte) for old SSE code is much worse, but it was necessary for easy decoding
01:17:15 <zzo38> I still think modern x86 is too messy, and modern ARM is also too messy.
01:17:17 <wob_jonas> but it get somewhat better with the later extensions (AVX code and AVX512 code)
01:17:55 <wob_jonas> zzo38: sure, there's some historical craft, but a lot of it is pushed out to where it doesn't actually impact the performance if you don't use it
01:18:34 <zzo38> I am not talking about historical stuff, but about the new stuff.
01:18:42 <Jafet> the mill speaker was going on about small loops very often, so I don't think his goal was to improve instruction set density
01:20:15 <wob_jonas> zzo38: some of it is messy, but they are getting better in the design than they used to. AVX512 actually manages to avoid the AVX stupidity o(where vector registers got split to 16 bit and 32 bit) which was only done to make it easier for operating systesm
01:21:18 <wob_jonas> you only affect whole registers now, which by the way means you can't have callee-saved registers because they can't save the upper part if the register is ever extended to 1024 bytes, but that ship has sailed with AVX2 anyway already
01:21:22 <Jafet> he had a plan to pipeline loops with nullable values, though (which can be implemented in a conventional CPU)
01:21:23 <wob_jonas> or with AVX
01:21:38 <wob_jonas> the vector registers all have to be scratch except for the lower 128 bits of four of them
01:22:03 <wob_jonas> Jafet: we have efficient conditional move instructions for that
01:23:05 <wob_jonas> it took us quite a while, they should have added them long ago, so sadly you still have to feature test for them on x86_64, but still, they are there in all currently used cpus
01:23:09 <ais523> zzo38: even the original 8086 was pretty messy
01:23:17 <ais523> x86 must be the worst popular asm
01:23:34 <shachaf> What's a good popular asm?
01:23:41 <imode> 6502.
01:23:47 <wob_jonas> ais523: yes, and it already had stupid historic cruft for marketing reasons
01:24:02 <ais523> 6502 isn't popular but it is fairly good for the scale of processor it's on
01:24:27 <zzo38> ais523: Yes, but still not quite as messy as the modern kind
01:24:29 <Jafet> you still have to move a value, though, and it could cause an instruction in the pipeline to trap?
01:25:02 <ais523> 6502's pipeline is /very/ short
01:25:06 <zzo38> I do like 6502 though, as well as MMIX
01:25:33 <wob_jonas> 6502 was good when it was new. but it's just not modern.
01:26:08 <imode> ARM then. AVR. MIPS. choose one, they all suck in many ways. :P
01:26:36 <zzo38> Is why, I will prefer MMIX than ARM, AVR, MIPS
01:27:07 <tswe_tt> I think 8080 seems nice.
01:27:14 <tswe_tt> What's all the hype about 8086?
01:27:28 <imode> historic reasons.
01:30:22 <wob_jonas> tswe_tt: historical 8086 isn't important, except historically as in it has a lot of successors that have inherited some decisions from it that made sense at the time but are hard to support now and take a ton of time to get rid of them. modern x86_64 matters because it's the best supported high-performance cpu there is on the market now, with good
01:30:22 <wob_jonas> hardware and software, both well-tested and high performance.
01:36:30 <wob_jonas> `? charizard
01:36:56 <wob_jonas> wait, where's HackEgo. fungot, what did you do with HackEgo?
01:36:56 <fungot> wob_jonas: yes i think everybody's just afraid i think now
01:36:59 <Jafet> when people say that arm's instruction set is good, are they referring to a subset that does not include thumb, thumb2, jazelle, neon, virtualization, or mov pc
01:38:23 <imode> all of the damn embeddings I've seen for binary trees have been in hypercubes, and they all waste one bit of space.
01:38:53 <Jafet> one bit per tree?
01:38:56 <wob_jonas> `? bulbasaur
01:39:07 <imode> one bit per path to a node.
01:40:02 <imode> it seems that I can't escape paying one bit..
01:40:25 <zzo38> Can you prove it?
01:40:38 <imode> certainly trying to.
01:41:19 <imode> you can encode any path from the root of an N level full binary tree to any of its leaves in N bits, but you can't encode a partial path.
01:41:44 <imode> unless I'm clinically insane, you will always have leftover bits that stand for a left traversal if left unchanged.
01:44:53 <Jafet> ah, the wonderful world of small-space information-theoretic lower bounds
01:45:11 <imode> you have to waste _at least one bit_ to mark the start of a valid sequence of branches.
01:45:45 <Jafet> doesn't an n-level binary tree have 2^n-1 nodes?
01:46:59 <myname> if it's balanced
01:47:20 <imode> hm.
01:50:57 <imode> Jafet: I'm trying to avoid integer arithmetic. calculating parent paths is not beneficial if you're dealing with paths through 1024-level binary trees or larger.
01:51:11 <imode> this is actually faster.
01:51:45 -!- augur has quit (Remote host closed the connection).
01:52:28 <imode> the problem reduces to "how do I store the length of a bit vector without storing the length of a bit vector." :P
01:55:12 -!- augur has joined.
01:55:29 -!- boily has quit (Quit: ARTICULATED CHICKEN).
01:59:02 <Jafet> I believe that computers do integer arithmetic in binary
01:59:49 <imode> that they do. but I would rather not implement arbitrarily large binary numbers just to store large paths.
02:00:08 <imode> now, arbitrarily large bitvectors on the other hand, that I can get behind.
02:00:09 <zzo38> But for what kind of computer?
02:01:50 <wob_jonas> Let's see what the weather forecast says. Does the weather cool down after this rain and storm and cold front?
02:02:32 <Jafet> if you store all paths with the same number of bits, then you do not need any extra bits
02:03:43 <imode> yeah, you do. if you want to store a path in a byte, you're going to store lefts as 0's, and rights as 1's. the path 101 is really 10100000, which is not the path you intended.
02:04:36 <wob_jonas> A bit, but not enough. It will warm up again. Damn.
02:04:59 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
02:05:43 <Jafet> hmm, it seemed like there was an arbitrage opportunity for a bit
02:05:56 <zzo38> Do you like the two new loader programs for MIX that I have designed? (Both need only one card, and actually the last five character positions are unused. One is for loading programs with a specific byte size, while the other one is independent of byte size)
02:06:51 <zzo38> " N O6 A O4 H N ENX E K BU I OA H A. PA N D LB E AEU ABG G 9 "
02:07:20 <imode> Jafet: here's the solution to that. pad the path with however many unused bits there are - 1, then pad it with a 0. so the path 101 becomes 11110101. you march forward through the bit vector and stop after the first 0.
02:07:56 <imode> the downside is that now your paths must _always_ start with a 0. you could fenangle it to work out an extra root node from a path, but uh.. yeah.
02:10:02 <Jafet> @wn fenangle
02:10:02 <lambdabot> No match for "fenangle".
02:10:13 <Jafet> @wn finagle
02:10:14 <lambdabot> *** "finagle" wn "WordNet (r) 3.0 (2006)"
02:10:14 <lambdabot> finagle
02:10:14 <lambdabot> v 1: achieve something by means of trickery or devious methods
02:10:14 <lambdabot> [syn: {wangle}, {finagle}, {manage}]
02:10:22 <imode> huh, til.
02:10:33 <imode> never even knew it was.. really a word.
02:11:28 <Jafet> it doesn't seem tricky or devious if you just number all the nodes in level order starting from 00000001
02:12:11 <imode> right. so, with that numbering, give me the path to that node.
02:12:36 <Jafet> then 101$ is 00001101
02:13:39 <imode> because the real idea here is storing sparse trees, where you give me a node and I assume that every node along the path is a valid one.
02:14:34 <imode> so when I say "well does node X exist?", all I have to do is run over all the stored paths and check whether a partial match exists.
02:17:17 <Jafet> well, storing paths in trees is a generally poor way to store trees
02:17:51 <imode> what alternative would you give me? I just need to store the structure of the tree and query whether a given node exists.
02:19:44 <Jafet> I might offer a parenthetical (even a balanced one)
02:20:00 <imode> mm. sure. that's a good way to store static trees.
02:20:12 <imode> hell, I have an encoding that saves a bit.
02:20:26 <imode> but dynamic trees.
02:22:46 <Jafet> most trees look static to me; they sway a bit sometimes
02:22:52 <imode> lmao.
02:23:29 -!- btiffin has joined.
02:23:39 <Jafet> are you one of those people who graft branches, or turn them sideways?
02:24:30 <imode> I would really like to not rewrite a given bit string representing a tree every time I need to insert a node.
02:24:34 <Jafet> actually, I'm not sure I've seen a paper that implements tree rotations
02:24:53 <Jafet> they only tend to cover indels, and maybe split/merge
02:24:58 <imode> yeah.
02:25:09 <Jafet> I guess rotations reduce to split/merge
02:25:21 <imode> pretty much any operations imply rewriting the whole bit string.
02:25:54 <Jafet> I think navarro had a paper that demonstrated logarithmic indels, splits and merges
02:26:04 -!- augur has quit (Remote host closed the connection).
02:26:23 <imode> I'd rather take my chances with early matches and additive updates. the benefit to my method is that no matter how the paths arrive, the tree is final.
02:26:44 <imode> meaning I could send over the paths 000, 010, 110, 101 in any order and the tree would still be the same.
02:28:30 <imode> so I guess... I'm willing to pay the extra storage.
02:28:47 -!- contrapumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
02:29:41 <Jafet> well, “demonstrates” might have been the wrong word, as this data structure has probably never been actually implemented
02:29:47 <Jafet> https://arxiv.org/abs/0905.0768
02:30:07 <imode> oh yeah, I saw this.
02:35:23 -!- augur has joined.
02:36:00 <Jafet> I don't think any of these bit strings are meant to be stored as bit strings
02:36:27 <imode> how so?
02:37:12 <Jafet> they are stored as trees, with nodes near the edge compressed into short strings to reduce size
02:37:38 <imode> mm. I'd store them as bit strings. efficient traversal, but inefficient updates. :P
02:38:06 <imode> hell, efficient storage too.
02:38:23 <Jafet> as long as you compress groups of about (log n)^k nodes at a time, the remaining n/(log n)^k pointers for the tree no longer prevent you from having the word “succinct“ in your paper title
02:39:22 <Jafet> so it's asymptotically worthwhile to interpret trees as bitstrings then store them in trees of bitstrings
02:39:59 <Jafet> perhaps xzibit would have been a good string algorithms researcher
02:40:44 <ais523> is there a word for the relationship expressed by that meme that's more precise than just "recursion"?
02:41:13 <ais523> (for reference, the "reference implementation" of that meme is "I put a car in your car so you can drive while you drive")
02:42:19 <Jafet> I'm not sure, but such a word could also describe the work that someone once did benchmarking nested self-interpreters
02:43:04 <Jafet> oh, the eigenratio website still exists
02:45:30 <ais523> I've been thinking about nested self-interpreters quite a bit recently
02:45:50 <ais523> trying to work out what sort of language would naturally have an eigenratio of 1 for most obvious ways of writing a self-interpreter
02:46:05 <ais523> also continuations
02:52:21 <Jafet> if you take a recursive unit cell grid in conway's life and run it with hashlife you should technically get an eigenratio of 1
02:53:26 <Jafet> I'd test this, but nesting a unit cell sounds like something I'd need to generate with a script and I don't care enough
02:55:27 -!- augur has quit (Remote host closed the connection).
03:00:43 <shachaf> Why would you need to nest it with a script?
03:01:28 <shachaf> If you have some way to describe macrocells, you should just be able to do a simple substitution or something for the next level.
03:02:05 <Jafet> well, I would do such a substitution with a script
03:02:19 <ATMunn> gn
03:02:21 <shachaf> Well, OK.
03:02:21 <Jafet> I'm not sure if macrocell identifiers are required to be increasing
03:02:24 -!- ATMunn has quit (Remote host closed the connection).
03:02:28 <Jafet> that would make it more annoying
03:02:42 <imode> Jafet: storing trees, even partial trees, via pointers is not succint, afaict.
03:02:45 <shachaf> Required by what?
03:03:50 -!- augur has joined.
03:04:39 <Jafet> apparently the nodes are numbered implicitly, so I'd have to change all the numbers when combining macrocell files
03:05:09 <shachaf> Is there a standard format for describing hashlife states?
03:05:40 <Jafet> yes, I think that format is called macrocell
03:06:03 <Jafet> well, not if you also want the cached results
03:08:58 <ais523> Jafet: ah right, hashlife is a good example here
03:09:15 <Jafet> it seems that nobody wants the cached results, though, not even golly, which clears the cache every GC cycle (even for results that didn't get GC'd!)
03:11:00 <Jafet> ais523: now if you had a simple functional language that, unlike a really overrated CA from 1970, could express the notion of a memoizing implementation of itself
03:11:29 <ais523> it's pretty easy if you're OK with programs like if (false) while (true); not terminating
03:11:36 <ais523> but that's a pretty big restriction
03:15:15 <Jafet> so they found the unit cell and hashlife but failed to see that the resulting eigenratio is 1
03:15:49 <Jafet> But the main point as far as this blog goes is that "Life" has a self-interpreter, and it's eigenratio is exactly 5760! — http://eigenratios.blogspot.de/2007/09/self-interpreter-for-conways-game-of.html
03:17:49 <ais523> a self-interpreter that works from finitely many starting cells would be rather more impressive :-)
03:18:04 <ais523> also should be possible, and might even be possible with the same ratio
03:19:24 <Jafet> well, you only need to invent a fast enough breeder that lays more unit cells
03:19:39 <Jafet> it would probably have a larger period that 5760 though
03:22:18 <ais523> if it fits within 11520 it would be fine
03:22:47 <ais523> the speed of light might be the absolute speed limit in Life, but if starting from a finitely large pattern, things can't escape the pattern boundary faster than c/2 in the long term
03:26:15 <shachaf> Can you have a non-empty background for a finite pattern?
03:26:40 <shachaf> Some sort of infinite pattern that lets you communicate information more quickly.
03:27:01 <shachaf> I guess you would want all your patterns to preserve it.
03:30:29 <Jafet> well, a breeder for unit cells would likely have a six-digit period
03:32:23 <Jafet> (or more than six, but the unit cell seems to be made of standard parts so a fast glider synthesis shouldn't be too hard)
03:33:43 <Jafet> imode: a succinct data structure is just one that has less than O(n) overhead
03:34:40 <imode> not O(n), o(n).
03:35:24 <Jafet> this generously includes trees with O(n/(log n)^(1+ε)) pointers of O(log n) bits each
03:35:33 <imode> again, that is not the lower bound.
03:35:54 <shachaf> ꙮ(n)
03:36:42 <ais523> shachaf: in general, yes, but I'm thinking about the specific case of an only-dead-cells background
03:37:56 <Jafet> golly supports a toroidal grid, which could be expanded to support a periodic background
03:39:08 <shachaf> Presumably a periodic background is reasonably easy to implement in hashlife -- you just need to change the way you grow the grid.
03:39:40 <Jafet> yes, though having to pad it to powers of 2 would be annoying
03:47:53 <Jafet> ꙮ̃(n)?
03:58:44 -!- PattuX has quit (Quit: Connection closed for inactivity).
04:01:36 <ais523> I don't think multiocular O is a common piece of computational order notation
04:04:38 <Jafet> creationists use it to denote information lower bounds — the eyes signify irreducible complexity
04:05:04 <shachaf> Nor is it a common character in Cyrillic manuscripts.
04:05:27 <shachaf> Creationists? Is that people who use ꙮ_CREAT?
04:07:10 <Jafet> ꙮ̃ is used when a log gets in the eye, or perhaps a 2-by-4
05:00:26 -!- btiffin has quit (Remote host closed the connection).
05:13:57 -!- olsner_ has changed nick to olsner.
05:15:03 <zzo38> Apparently some Java-based HTTP client interpreted "gopher://zzo38computer.org" as a relative URI, even though clearly by its syntax it isn't.
05:15:07 <Hoolootwo> golly supports one perodic background, but that's only for b0s8 rules
05:15:33 <shachaf> What's b0s8?
05:15:38 <Hoolootwo> and where the background switches from on to off every generation
05:15:44 <Jafet> the parity hack doesn't really count
05:16:05 <Hoolootwo> yeah, that's just an edge case
05:16:09 <Hoolootwo> http://golly.sourceforge.net/Help/Algorithms/QuickLife.html
05:16:22 <Hoolootwo> I think that explains it better than I could here
05:26:44 -!- xkapastel has joined.
05:31:45 <zzo38> What does "eigenratio" mean here?
05:33:01 <shachaf> Oh, b,s means born,survive
05:34:36 <Hoolootwo> oh, :/ thought that page said that
05:40:37 <shachaf> It does.
05:43:28 <ais523> zzo38: "zzo38computer.org" is technically a relative domain name; the absolute version is "zzo38computer.org."
05:43:38 <ais523> however, for some reason it became standard to write URLs without the trailing dot
05:44:35 <zzo38> ais523: OK, but is still not a relative URI
05:44:44 <shachaf> Do you mean it interpreted it as ./gopher:/zzo38computer.org?
05:45:34 <zzo38> Yes, that is what it did, it look like
05:48:45 -!- augur has quit (Remote host closed the connection).
05:50:54 <doesthiswork> huh, so it did
05:53:44 <shachaf> If I get a vanity TLD, can I put an MX record on it?
05:54:55 <ais523> there's no technical restriction against that
05:55:12 <ais523> there might or might not be a political one (e.g. ICANN only agreeing to sell you the TLD if you don't host anything on the TLD directly)
05:55:32 <ais523> or, well, it's a known fact as to whether or not there's a political restriction, but not known by me
05:57:18 <shachaf> There was a URL shortener on a two-letter country TLD once.
05:57:21 <shachaf> But they took it down.
05:57:53 <shachaf> I bet lots of bad email regexps would reject a email address like that.
06:03:21 <Jafet> hmm https://serverfault.com/questions/154991/why-do-some-tld-have-an-mx-record-on-the-zone-root-e-g-ai
06:07:22 <shachaf> Aha, Jafet++
06:10:09 <Jafet> I wonder if /bin/hostname should ship with a copy of this table
06:10:43 <Jafet> I guess that would only solve half the problem
06:12:39 <shachaf> Which table?
06:28:01 <Jafet> shachaf: a table of TLDs with strange DNS records
06:29:00 <Hoolootwo> that would be hard to update
06:30:35 <Jafet> seems that ai. no longer has an MX record, though it still has A, NS, and a conspicious lack of SOA
06:30:39 -!- erkin has joined.
06:44:08 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
06:45:08 -!- newsham has quit (Ping timeout: 260 seconds).
06:49:58 <shachaf> Jafet: It looks like it has an MX record to me?
06:51:26 -!- FreeFull has quit.
06:51:47 <shachaf> Is .home a generic TLD? It would make a good email address for inquiries regarding distributed computing projects.
07:00:18 -!- erkin has joined.
07:03:49 -!- hakatashi has joined.
07:14:33 -!- newsham has joined.
07:17:27 -!- ais523 has quit (Ping timeout: 260 seconds).
07:34:53 -!- doesthiswork has quit (Quit: Leaving.).
07:49:19 -!- oerjan has joined.
07:59:10 -!- ybden has quit (Ping timeout: 240 seconds).
08:01:45 -!- ybden has joined.
08:12:57 -!- erkin has quit (Read error: Connection reset by peer).
08:13:29 -!- erkin has joined.
08:21:33 <deltab> no (but homes and house are)
08:21:43 <deltab> Wikipedia says "BT hubs use the top-level pseudo-domain home for local DNS resolution of routers, modems and gateways."
08:22:48 <deltab> https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains
08:26:08 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
08:41:56 -!- tuu has joined.
08:59:41 -!- sebbu has joined.
09:44:58 -!- imode has quit (Ping timeout: 276 seconds).
10:04:56 -!- oerjan has quit (Quit: Later).
10:05:14 <\oren\> look at this shit http://imgur.com/k86avnF
10:05:25 <\oren\> How is this allowed?
10:07:58 <\oren\> I think an instersection between 6 or more streets should be required to be a roundabout
10:25:07 -!- mroman has joined.
10:25:10 <mroman> rello.
10:25:22 <mroman> esolangs.orgc is down.
10:26:21 -!- xkapastel has quit (Quit: Connection closed for inactivity).
11:25:59 <fizzie> I can't count the number of times that has been said already.
11:26:09 <fizzie> I do have alerting on it as well.
11:27:12 <fizzie> Anyway, will set up the backup thing properly once I get home from the airport and unpack a little.
11:34:01 -!- boily has joined.
11:35:41 -!- PattuX has joined.
11:48:16 <mroman> :D
11:48:24 <mroman> well.. I'm not pressuring you.
11:48:26 <mroman> just informing you
11:48:42 <mroman> it's really the least important site in my life.
11:52:08 <mroman> the most important is int-e's cheap server :D
11:52:13 <mroman> because it hosts the online shell.
12:03:27 -!- zseri has joined.
12:11:17 -!- jaboja has joined.
12:12:35 <boily> fungot: can you be HackEgo?
12:12:35 <fungot> boily: you you can start ' em in the paper
12:12:51 * boily starts HackEgo in the paper
12:27:55 -!- boily has quit (Quit: DECLARED CHICKEN).
12:49:44 -!- zseri has quit (Ping timeout: 260 seconds).
12:54:47 -!- zseri has joined.
13:02:25 -!- heroux has quit (Ping timeout: 246 seconds).
13:02:35 -!- heroux has joined.
13:10:13 <mroman> - + + + ] + > [ [ + > < > ] - > [ - ] ] [ - < - + + ] - < < - > > + < - > [ < ] + > - + ] < ] < + - < - - [ < ] >
13:27:44 <mroman> stupid evolver produces stupid programs
13:27:59 <mroman> hm.
13:28:13 <mroman> has anybody ever done evolving html/css
13:28:16 <mroman> to fit a specific design
13:38:02 -!- Labeo has joined.
13:42:20 -!- Labeo has quit (Quit: Mutter: www.mutterirc.com).
13:44:31 -!- Labeo has joined.
13:47:41 -!- LKoen has joined.
13:48:31 -!- Labeo has quit (Client Quit).
14:00:30 -!- doesthiswork has joined.
14:01:38 -!- Labeo has joined.
14:03:14 -!- mroman has quit (Ping timeout: 260 seconds).
14:06:55 -!- ais523 has joined.
14:13:54 -!- Labeo has quit (Quit: Mutter: www.mutterirc.com).
14:16:11 -!- erkin has quit (Ping timeout: 255 seconds).
14:22:54 -!- atslash has joined.
14:27:12 -!- erkin has joined.
14:27:57 -!- jaboja has quit (Ping timeout: 260 seconds).
14:32:07 -!- Mayoi has joined.
14:32:14 -!- erkin has quit (Disconnected by services).
14:37:42 -!- zseri has quit (Quit: Page closed).
14:39:40 -!- ais523 has quit (Remote host closed the connection).
14:40:50 -!- ais523 has joined.
14:42:09 -!- `^_^v has joined.
14:48:27 -!- LKoen has quit (Remote host closed the connection).
14:52:19 -!- tuu has quit (Remote host closed the connection).
14:59:41 -!- jaboja has joined.
15:03:26 -!- doesthiswork has quit (Quit: Leaving.).
15:05:25 -!- __kerbal__ has joined.
15:05:45 <__kerbal__> Hi
15:06:34 <__kerbal__> Does anyone know exactly what is wrong with the wiki?
15:07:25 <myname> no, we only heard that question like a dozen times the last hours
15:11:40 <__kerbal__> Probably CaC's fault again
15:16:22 -!- ATMunn has joined.
15:16:22 -!- ATMunn has quit (Changing host).
15:16:22 -!- ATMunn has joined.
15:18:10 -!- jaboja has quit (Ping timeout: 240 seconds).
15:21:11 <__kerbal__> https://www.youtube.com/watch?v=HuCJ8s_xMnI
15:21:20 <__kerbal__> One of the weirdest videos I've seen in a while
15:29:43 -!- Mayoi has quit (Quit: Ouch! Got SIGABRT, dying...).
15:42:12 -!- Bowserinator has quit (Excess Flood).
15:42:22 -!- Bowserinator has joined.
15:42:45 -!- Bowserinator has changed nick to Guest82305.
15:43:42 -!- augur has joined.
15:43:57 -!- __kerbal__ has quit (Quit: Page closed).
15:47:59 -!- augur has quit (Ping timeout: 255 seconds).
15:48:05 <rdococ> Heh, division is weird. You could consider multiplication its "opposite", but considering modulo its opposite also makes sense. :P
15:50:47 -!- contrapumpkin has joined.
15:57:56 -!- Guest82305 has changed nick to Bowserinator.
15:57:57 -!- Bowserinator has quit (Changing host).
15:57:57 -!- Bowserinator has joined.
15:58:45 <ATMunn> so uh, can someone exlpain funge-98's stack stack to me? im having trouble understanding the commands it uses
16:01:34 -!- ais523 has quit (Remote host closed the connection).
16:02:44 -!- ais523 has joined.
16:23:18 -!- LKoen has joined.
16:46:20 -!- Lord_of_Life has quit (Remote host closed the connection).
16:59:35 -!- LKoen has quit (Remote host closed the connection).
17:15:05 <rdococ> Concept: like the "break n;" idea, but with returning values. "return<2> x;", for example, would return x and force the function that called it to immediately return x too.
17:17:07 <myname> that would break encapsulation a lot
17:17:24 -!- Lord_of_Life has joined.
17:17:31 <rdococ> exactly.
17:17:57 -!- LKoen has joined.
17:22:04 -!- AnotherTest has joined.
17:29:43 -!- LKoen has quit (Remote host closed the connection).
17:38:00 -!- FreeFull has joined.
17:38:12 -!- LKoen has joined.
17:39:31 -!- erkin has joined.
17:41:32 -!- AnotherTest has quit (Read error: Connection reset by peer).
17:41:51 -!- AnotherTest has joined.
17:44:27 -!- augur has joined.
17:45:55 -!- augur has quit (Remote host closed the connection).
17:47:13 -!- augur has joined.
17:58:44 -!- zseri has joined.
18:02:13 -!- AnotherTest has quit (Ping timeout: 276 seconds).
18:20:31 -!- AnotherTest has joined.
18:25:28 -!- LKoen has quit (Remote host closed the connection).
18:38:39 -!- AnotherTest has quit (Ping timeout: 255 seconds).
18:45:53 -!- imode has joined.
18:48:21 -!- AnotherTest has joined.
19:03:13 <ais523> rdococ: that operation exists in INTERCAL
19:03:22 <ais523> in fact, it's the only way to do flow control in INTERCAL-72
19:11:34 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
19:13:38 -!- ais523 has quit (Ping timeout: 240 seconds).
19:35:08 -!- AnotherTest has quit (Ping timeout: 240 seconds).
19:40:42 -!- AnotherTest has joined.
19:48:41 -!- LKoen has joined.
20:01:09 -!- LKoen has quit (Remote host closed the connection).
20:01:29 -!- wob_jonas has joined.
20:02:04 <wob_jonas> ais523: I don't think that's the same. Intercal has multi-level return, that is, it can pop multiple entries from the return stack and return to the last one popped.
20:02:45 <myname> how is this different?
20:02:47 <wob_jonas> You could actually emulate that in GW-BASIC, which has a form of the RETURN statement that pops the return stack but jumps to a constant line in the statement.
20:03:04 <wob_jonas> myname: I think the original question was a multi-level break. As in, from while or for or do-while loops
20:03:35 <myname> it was a multi-level return like the existing multi-level break
20:03:54 <wob_jonas> oh, that was the question?
20:03:59 <wob_jonas> sorry then
20:04:02 <wob_jonas> I didn't follow
20:07:45 -!- AnotherTest has quit (Ping timeout: 248 seconds).
20:08:30 -!- AnotherTest has joined.
20:09:55 -!- oerjan has joined.
20:14:35 <zzo38> Do you know when to expect fixing esolang wiki?
20:15:37 <zzo38> wob_jonas: Yes, I have used that before, using RETURN to jump to a different line number (and have used it once to RETURN to the next line which is a RETURN to a constant line number, even)
20:17:32 -!- AnotherTest has quit (Ping timeout: 255 seconds).
20:19:35 -!- AnotherTest has joined.
20:19:40 <zzo38> PHP has multi-level break by number, while JavaScript has multi-level break by name. (Although I happen to think goto would be a better way of doing this anyways; you don't need much more than the single-level break/continue, as well as goto)
20:21:00 <Cale> zzo38: Just throw in callCC and call it a day
20:21:40 <oerjan> callIAD
20:22:34 <ATMunn> :( why are there no good befunge-98 interpreters for windows
20:22:57 <myname> because developers don't use windows?
20:23:41 <ATMunn> yeah i guess
20:23:51 <ATMunn> there's not even any good online ones :(
20:24:04 <myname> there are
20:24:21 <ATMunn> at least, i havent found any
20:24:31 <myname> i don't know which one anymore, though
20:24:38 <myname> i used to have one modified
20:25:10 <wob_jonas> actually there are way more developers who use windows than developers who use befunge
20:28:14 <zzo38> One of the features of NNIX is that the file number has to be a constant and it does not support variable file numbers. Do you know why?
20:29:18 <wob_jonas> zzo38: because it's just a toy OS interface that's enough for the examples in the book, not a real complete operating system?
20:29:37 <zzo38> I think it should be fixed
20:30:13 <wob_jonas> zzo38: it also doesn't support modifying an already written file without erasing its data first, that's much more annying IMO
20:30:45 <wob_jonas> (and that's despite that the book claims it supports everything the file interface of C89 can do except remove files)
20:31:25 <wob_jonas> but in any case, the OS interface is extensible, an OS could add new system calls, it doesn't intend to be complete and closed like the CPU architecture itself
20:32:29 <zzo38> Yes, that is another think to fix. There are a few other things too, such as adding file control interface, and perhaps a convenience function for reading/writing one value to/from $255.
20:32:42 <ATMunn> myname: also, at some point ill get linux, but for now im stuck on windows so i have no choice but to use a windows or browser based one :/
20:32:48 <wob_jonas> what do you mean "file control interface"?
20:33:02 <zzo38> Similar to fcntl()
20:33:26 <zzo38> (Although you don't need all of the functions of fcntl)
20:34:38 <zzo38> Also similar to ioctl() for some devices
20:35:57 <wob_jonas> again, he only needs a little of OS interface for his examples. he did say he doesn't intend to create a full operating system.
20:36:01 <Cale> wob_jonas: hah, I actually kind of like that thing about not allowing modification of files after the fact.
20:36:11 <wob_jonas> if you want a full OS, just imagine a unix-like running on MMIX
20:36:37 <wob_jonas> Cale: you can modify files, it's just you can only do so if you do the equivalent of O_TRUNC
20:36:45 <Cale> aw
20:36:49 <zzo38> Actually fcntl() probably isn't needed, but a few of the controls of ioctl() may be, mainly the terminal controls.
20:39:48 <zzo38> One possible way that could be done is to add additional command-line arguments to the simulator to load .so files assigned to different X values in the TRAP instructions, where 0 means to use the built-in stuff.
20:40:16 <zzo38> That way you could add one extension for connecting to the X server, one extension for music, and so on
20:49:26 <wob_jonas> I'm trying to rig up some method to photograph a book, for which I need to hold both the book and the camera in place. But I am failing miserably, because I'm really bad at hardware stuff, and don't have many things to use at home.
20:51:05 <wob_jonas> (and it shouldn't obstruct lighting, which is basically impossible since I want to get the camera close to the book)
20:51:27 -!- AnotherTest has quit (Ping timeout: 240 seconds).
20:52:12 -!- AnotherTest has joined.
21:05:48 -!- AnotherTest has quit (Ping timeout: 240 seconds).
21:06:48 -!- AnotherTest has joined.
21:18:40 <Cale> wob_jonas: There are scanners which can feed a stack of pages through, if you don't mind destroying the book
21:20:33 <Cale> There was one point when I was in highschool where I helped a friend of mine make a digital version of his mother's cookbook, and we cut the ring binding off a copy and fed it through a scanner, and then OCR'ed it... and OCR was terrible back then, so I had a lot of hand-editing to do. :P
21:21:55 <Cale> Still probably amounted to less work than typing out the whole book though
21:24:31 <wob_jonas> Cale: I don't want to destroy the book. A flatbed scanner is a good idea in general, and I did think of it,
21:24:39 <wob_jonas> and I could flip pages manually
21:25:37 <wob_jonas> but the problem is that the scanner I have access to has a maximum scan area of only slightly bigger than A4, and this book is bigger than that. The page content might just barely fit in that area, but I couldn't position it right.
21:25:41 <wob_jonas> I'd need a larger scanner.
21:26:28 <wob_jonas> Although destroying a book isn't such a bad idea actually. I didn't think of that. I can't destroy this library copy, but I might be able to locate a new or used copy of this that I can destroy.
21:26:52 <wob_jonas> That would make this somewhat easier, because then I only have to position the individual pages, but it's still not easy
21:27:01 <wob_jonas> Let me check online for the price
21:28:06 -!- xkapastel has joined.
21:28:35 <Hoolootwo> the easiest way to mount a normal digital camera is by the mount on the bottom, usually
21:29:01 <Hoolootwo> I think it's a 1/4-20 thread, you could bolt it to something solid above the book
21:30:17 <wob_jonas> Hmm, it's not expensive. I could buy and destroy a copy.
21:30:26 <wob_jonas> I'd still have to figure out how exactly to photograph or scan it though.
21:35:34 <wob_jonas> Is there somewhere I can just borrow a flatbed scanner larger than A4?
21:40:32 <Hoolootwo> what if you scanned the pages in two parts sideways and stitched them back together
21:40:44 <Hoolootwo> print shops would probably have a big scanner
21:40:49 <Hoolootwo> not sure what else would
21:40:53 <wob_jonas> Hoolootwo: would be hard to stitch them accurately
21:41:01 <wob_jonas> and to position the pages accurately that way
21:41:04 <Hoolootwo> is there not software for that? :/
21:41:15 <wob_jonas> Yeah, but still
21:41:16 <Hoolootwo> I guess automatedly doing it is probably hard
21:41:29 <wob_jonas> It would be much better if scanned together
21:41:38 <Hoolootwo> yeah, definitely
21:42:01 <wob_jonas> The image quality matters here. If it didn't, I'd just shoot the pictures with the camera handheld and be done with it.
21:42:37 <Hoolootwo> with scanning, I think you have plenty of resolution
21:42:57 <wob_jonas> Exactly, that's why a scanner would be better
21:45:26 <wob_jonas> Apparently this print shop has A3 sized scanners I can use (for a fee obviously)
21:45:31 <wob_jonas> in 600 DPI
21:45:33 <wob_jonas> that could work
21:46:01 <wob_jonas> It's not even expensive.
21:49:12 -!- sleffy has joined.
21:49:26 <zzo38> Now I made up a way to make operating system interface extensions into the MMIX simulation. It is: http://sprunge.us/PAdY
21:53:09 <zzo38> Do you like this?
21:53:15 <wob_jonas> I think I'll order a copy of this book.
21:56:34 <wob_jonas> Ordered.
21:57:12 <wob_jonas> I'll be able to get it in a few days. Then I can decide whether I want to scan it whole or cut up.
21:57:21 <wob_jonas> Cut up would probably be more precise.
22:01:46 <wob_jonas> Cale: thanks for the cut up idea
22:02:34 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
22:07:38 -!- AnotherTest has quit (Ping timeout: 240 seconds).
22:08:09 -!- AnotherTest has joined.
22:11:22 -!- LKoen has joined.
22:12:42 -!- hppavilion[1] has joined.
22:17:23 -!- `^_^v has quit (Quit: Leaving).
22:17:42 -!- `^_^v has joined.
22:20:50 -!- paul2520 has joined.
22:20:50 -!- paul2520 has quit (Changing host).
22:20:50 -!- paul2520 has joined.
22:21:43 -!- AnotherTest has quit (Ping timeout: 258 seconds).
22:22:52 -!- AnotherTest has joined.
22:27:08 -!- AnotherTest has quit (Ping timeout: 240 seconds).
22:40:16 -!- btiffin has joined.
22:42:23 -!- `^_^v has quit (Quit: This computer has gone to sleep).
22:43:57 -!- oerjan has quit (Quit: Nite).
22:51:07 -!- zseri has quit (Quit: Page closed).
22:56:44 -!- ais523 has joined.
22:59:20 -!- boily has joined.
23:14:35 <boily> `w -- Will HackEgo ever be again \\ S'enfargea-t-il dans un tranche de pain \\ I need my random wisdom \\ Peut-être est-il tombé dans les pommes?
23:14:55 <FreeFull> https://github.com/aaronduino/asciidots/
23:21:54 <quintopia> helloily
23:23:21 <shachaf> boily bluepommel
23:24:23 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
23:24:55 <shachaf> fizzie: less fizzie, more fixxie twh
23:34:53 <boily> QUINTHELLOPIA!
23:34:56 <boily> helloochaf!
23:35:16 <boily> bluepommel?
23:35:50 -!- imode has quit (Ping timeout: 240 seconds).
23:37:02 <shachaf> oui
23:59:27 -!- augur has quit (Ping timeout: 240 seconds).
00:04:27 <boily> French lesson of the day: Est-ce que les cabots peuvent manger de la poutine? Non, les cabots ne peuvent pas manger de la poutine.
00:04:47 -!- boily has quit (Quit: PERSPIRATING CHICKEN).
00:06:30 -!- wob_jonas has joined.
00:11:36 -!- btiffin has quit (Remote host closed the connection).
00:19:56 <shachaf> `olist 1089
00:20:17 <wob_jonas> ooh!
00:20:34 <shachaf> olist 1089: shachaf oerjan Sgeo FireFly boily nortti b_jonas
00:20:54 <wob_jonas> ah yeah, since HackEgo isn't here, you have to do it manually
00:22:12 <myname> lol
00:23:36 <myname> asciidots looks interesting
00:25:42 <wob_jonas> Mark Rosewater in http://magic.wizards.com/en/articles/archive/making-magic/cats-2017-08-07 writes "While [sabertooth is] not the only word spelled differently on different cards (I'm looking at you "sylex"), such occurrences are infrequent."
00:26:58 <shachaf> wob_jonas: I think I must be missing something about this comic.
00:27:04 <wob_jonas> The word sylex is in the name of "Golgothian Sylex", but what other cards does it appear on, what is the alternate spelling, what the heck is a sylex, and why did it choose to collapse on Betelguse Seven in particular?
00:27:28 <zzo38> Do you know any GURPS game?
00:28:14 <myname> there is a pratchett themed
00:28:26 <zzo38> Do you like the two loader programs I wrote for use with MIX? (One for programs that are only for specific byte sizes of MIX, and one for programs that are independent of byte sizes of MIX.)
00:29:28 <zzo38> (Both of these programs each fit on only one card; you don't need two cards.)
00:34:07 <zzo38> However, I used a different format for the program cards, which are the format which can be loaded more efficiently. The one for specific byte sizes, has seven words per card like the one described in the book, although their format is different, and it skips by 2 instead of by 1 (so if a card specifies an address of 300, then it loads at 300, 302, 304, 306, 308, 310, and 312, instead of 300, 301, 302, 303, 304, 305, 306).
00:35:12 <zzo38> The final card (the "transfer card") will modify the loading routine; there is no special logic for this in the loader program.
00:35:41 <myname> the fuck is MIX?
00:35:55 <wob_jonas> dunno, look on the wiki... oh wait
00:36:12 <zzo38> It is a kind of hypothetical computer invented by Knuth. There is a description in esolang wiki, but esolang wiki does not currently work now.
00:40:45 <zzo38> http://zzo38computer.org/textfile/miscellaneous/mix_stuff
00:45:45 -!- Lord_of_Life has quit (Quit: EliteBNC free bnc service - http://elitebnc.org - be a part of the Elite!).
00:49:16 <tswe_tt> wob_jonas: I did some Gathering and Googlering, and it looks like "sylex" is a misspelling of "cylix".
00:49:55 <wob_jonas> tswe_tt: ah thanks
00:51:26 <wob_jonas> in that case the second half of the question stands. what's a cylix? it's not in my dictionary.
00:51:59 <zzo38> I also don't know what is meaning
00:52:11 <tswe_tt> "Noun. 1. cylix - a shallow drinking cup with two handles; used in ancient Greece. kylix."
00:52:47 <wob_jonas> thanks
00:53:58 <zzo38> That would be like what the picture shows, I guess
00:54:52 <wob_jonas> yeah, all four cylix cards show a chalice (flat cup)
00:57:04 <wob_jonas> of course, M:tG has chalices and goblets too
01:07:16 -!- sleffy has quit (Ping timeout: 246 seconds).
01:10:43 -!- ais523 has quit (Remote host closed the connection).
01:11:54 -!- ais523 has joined.
01:21:20 -!- doesthiswork has joined.
01:37:44 -!- GeekDude has quit (Quit: WeeChat 1.8).
01:45:18 -!- Lord_of_Life has joined.
01:45:18 <tswe_tt> I made the layered unit net generate some exchanges with lambdabot. My favorite one so far...
01:45:34 <tswe_tt> > z (f xarg $mob n)) tswett [x]
01:45:34 <tswe_tt> 12:59:29 <lambdabot> L2DIMAIT #=. (bad exoteric program status reverse copy")
01:46:35 <wob_jonas> lol
01:47:26 -!- GeekDude has joined.
01:50:30 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
01:52:52 <rdococ> Concept: esoteric, stack-based programming language where the program must pop their clogs before it can halt
01:55:01 -!- augur has joined.
01:57:39 <wob_jonas> pop their what?
01:57:50 <wob_jonas> oh
01:57:57 <wob_jonas> do you mean cogs?
01:58:06 <FreeFull> Can we make a hydraulic esoteric language?
02:00:02 <tswe_tt> Ooh, more fake METAR.
02:00:03 <tswe_tt> LASK 041356Z 23013KT 200 9999 SCT011 BKN007 02/05 A2979 RMK AO2 THITK AO2 SLP123 T01860004
02:03:21 -!- Lord_of_Life has joined.
02:03:54 <shachaf> fizzie: I didn't actually mean "less fizzie". Your presence here is valued and appreciated.
02:04:04 <shachaf> It was just a pun.
02:10:14 <FreeFull> Sin gas
02:15:31 -!- PattuX has quit (Quit: Connection closed for inactivity).
02:24:23 <tswe_tt> I trained a net on timestamps only. Some of the output is pretty funny.
02:24:58 <tswe_tt> The output mostly makes sense. 13:59:26 is followed by 14:02:20, which is followed by 14:25:52.
02:25:15 <wob_jonas> tswe_tt: did it produce invalid dates like 2017-02-29?
02:25:46 <tswe_tt> Just the time component.
02:26:06 <tswe_tt> Here it went from 15:59:45 to 15:00:03.
02:26:29 <tswe_tt> So it thought it was reasonable for 15:59:45 to be followed by another timestamp in hour 15, but then decided to reset the minutes and seconds anyway.
02:26:42 <wob_jonas> you could add some domain-specific knowledge to timestamp generation though
02:27:45 <tswe_tt> Shouldn't be necessary. After just a little more training, it should generate timestamps pretty flawlessly.
02:28:18 <tswe_tt> It occasionally goes backwards a little bit, like from 18:11:03 to 18:10:23.
02:29:14 <tswe_tt> Here it generated 23:03:31 followed by 22:03:30...
02:29:20 <wob_jonas> tswe_tt: clock skew or timezone offset change
02:29:28 <wob_jonas> or even most of a day skipped
02:29:43 <tswe_tt> I think the timestamp 00:00:00 always appears every day, in the training data.
02:29:54 <tswe_tt> Here's a mutant time, 221:29:08.
02:30:31 <tswe_tt> 02:04:17 to 20:04:30. I wonder if it forgot which digit was which in the hour component?
02:31:28 <tswe_tt> Then here it goes from 23:59:08 to 24:00:02 and stays in hour 24 for a while before going back to 23.
02:31:58 <tswe_tt> After a while, it generates the timestamp 00:00:00:00.
02:35:54 <tswe_tt> I want to train a network on this for a while and then do one of those visualization things to see what units are doing what.
02:37:48 -!- imode has joined.
02:46:27 -!- augur has quit (Remote host closed the connection).
02:47:10 -!- augur has joined.
02:51:35 -!- augur has quit (Ping timeout: 240 seconds).
02:59:04 -!- augur has joined.
03:00:46 -!- ATMunn has quit (Quit: ~~~~goodnight~~~~).
03:11:13 -!- erkin has joined.
03:12:54 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
03:18:50 -!- jjthrash has quit (Ping timeout: 255 seconds).
03:25:45 -!- jjthrash has joined.
03:31:49 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
03:33:38 -!- sleffy has joined.
03:45:51 -!- sleffy has quit (Ping timeout: 255 seconds).
03:56:29 <rdococ> Concept: Esolang where tables can access theirselves, and their parent. e.g. {a = "foo", b = "bar", c = {c = self, d = parent}}.
03:57:04 <rdococ> So that table (let's call it t) would be recursive, and things like t.c.c.c.c.c.c.c.c.c.c.d.c.c.c.c.c.d.a would be valid.
04:05:41 -!- Lord_of_Life has joined.
04:15:47 -!- contrapumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
04:32:26 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
05:10:00 -!- doesthiswork has quit (Quit: Leaving.).
05:10:33 -!- doesthiswork has joined.
05:12:54 <zzo38> Heirloom-Mailx allows to write downloaded attachments to pipes. Why doesn't a web browser do this?
05:24:21 <imode> nothing stops you from using curl. :P
05:25:33 <zzo38> Yes, although I think it can be useful at the download prompt. The same is true with upload forms; you should be allowed to enter the local filename (or program to execute) and the remote filename separately.
05:25:59 <zzo38> And I don't like the file dialog boxes either; a simple prompt where you can type in the full path (with tab completion) is best.
05:26:13 <zzo38> I do have curl and yes it is very useful though.
05:41:29 <zzo38> Another possible thing to be useful is an extension to make a shell script equivalent of a HTML form.
05:54:52 <Sgeo_> Any image I had of low-level programming being saner than web dev was just shattered
05:54:53 <Sgeo_> http://wiki.osdev.org/A20_Line
05:55:45 <rdococ> Are there esolangs with support for anonymous, first-class functions, but not closures?
05:55:46 <Jafet> userspace in amd64 is fairly sane
05:59:14 <imode> Sgeo_: legacy x86 is often crufty.
05:59:49 <Jafet> usually you can choose not to use the insane bits, though there is the legacy cruft where ymm registers have split lanes
06:03:31 <Sgeo_> Maybe I should read about MINIX?
06:04:23 <zzo38> I think the original design of IBM PC was reasonable (although there are a few things I would have done differently), although now it is a mess.
06:04:36 <Sgeo_> ...the book recommended is a bit more than I want to pay right now
06:05:08 <pikhq> zzo38: I concur.
06:05:30 <pikhq> The original IBM PC was, in most respects, a very normal computer of its time.
06:05:54 <pikhq> Just made a bunch of natural decisions on how you'd go about designing a computer around the 8080 and off-the-shelf components.
06:06:25 <zzo38> Yes, although there are a few things I would have done differently; such as, altering a few gates of CGA would make CGA much more flexible than it is.
06:07:03 <pikhq> Yeah, that's probably the best example of a case where they could've *easily* done better.
06:07:44 <pikhq> But goodness a lot of cruft got built up.
06:07:48 -!- hppavilion[1] has quit (Quit: HRII'FHALMA MNAHN'K'YARNAK NGAH NILGH'RI'BTHNKNYTH).
06:08:06 <zzo38> (I have the schematics, so I can see which gates to change.)
06:08:54 <pikhq> Sgeo_: For extra fun, the only thing we know of that used the A20 wraparound is *itself* a legacy compat feature.
06:08:56 <zzo38> I think the original "Model F" keyboard design was good too actually.
06:09:11 <pikhq> It was used by DOS's implementation of the CP/M API.
06:09:22 <rdococ> well, that was... odd. didn't expect the wikipedia article on callbacks to mention Roblox of all things.
06:09:59 -!- sleffy has joined.
06:10:02 <pikhq> You see, one of the selling points of the 8086 was that it was a purely mechanical process to convert 8080 asm to it...
06:10:30 <pikhq> So, *if* your 8086 OS implemented the CP/M system call API, then it was trivial to port CP/M software to it.
06:10:34 <pikhq> And DOS did exactly that.
06:10:48 <pikhq> But it had to use the A20 wraparound to do it.
06:11:14 <pikhq> If not for that, the A20 line mess probably wouldn't have happened.
06:11:35 <Sgeo_> o.O
06:12:12 <pikhq> Also, this was actually a damned important feature; most of the early DOS software was actually CP/M ports.
06:13:41 <pikhq> Nobody would've bought an IBM PC if it didn't run WordStar, dBASE, or AutoCAD.
06:13:52 <Jafet> I wonder how many CP/M programs actually needed the wraparound
06:14:12 <pikhq> Jafet: All of them. For technical reasons, the *API* relied on it.
06:14:33 <pikhq> I suspect few of them needed it outside of that, however.
06:14:35 <Jafet> that would do it, then
06:15:13 <pikhq> The API was a call to a weird address, which on an 8080 was just a normal address, but with segmenting involved pretty much had to wrap around.
06:26:16 <shachaf> whoa whoa whoa, "Intel no longer supports the A20 gate, starting with Haswell."
06:28:07 <int-e> bold move, I wonder how many programs that will break.
06:28:38 <pikhq> Wanna bet it's still togglable from the keyboard controller?
06:29:34 <int-e> well, define "keyboard controller"... AFAIK that stuff tends to be emulated by SMM code these days.
06:30:03 <pikhq> The 8042 chip is only so emulatable considering many systems still *ship* with a PS2 port.
06:30:13 <pikhq> i.e. the thing that it actually interfaces with.
06:31:19 <pikhq> TBH, I strongly suspect it broke the use cases of exactly *nobody* to not support the A20 line, though.
06:31:55 <pikhq> It'd only *possibly* break software people are running straight from DOS on a Haswell system.
06:32:06 -!- Lord_of_Life has quit (Remote host closed the connection).
06:32:14 <int-e> maybe highmem.sys actually checked whether the A20 gate worked at some point? :P
06:33:08 <pikhq> If it's running from inside virtual 8086 mode, nothing breaks, so...
06:33:20 <pikhq> Yes, himem.sys could *hypothetically* be broken by that.
06:34:52 <pikhq> Also, given it's recent enough, you could actually probably work around it by using the virtualization extensions to have a *thin* VM that's basically just the base hardware except for a tiny chunk of RAM carved out, and A20 actually works.
06:36:02 <int-e> you can even use paging to get the wrapping behavior right.
06:36:52 -!- erkin has joined.
06:36:54 <int-e> the A20 gate was mighty silly from the moment it was introduced.
06:37:22 <pikhq> It made sense for maybe the year after it was introduced.
06:37:46 <int-e> no, because oce it was there you'd be stuck for it forever :P
06:37:56 <pikhq> The only software that needed it was legacy software *at the time*, so.
06:38:12 -!- doesthiswork has quit (Quit: Leaving.).
06:38:18 <int-e> admittedly updating software wasn't as easy then as it is now
06:41:34 <ais523> just think, the alternative fix would be to permanently alias A20 to 0 if A21 upwards are all 0
06:41:35 <ais523> (or to implement A20-as-0 in virtual 8086 mode)
06:43:02 <zzo38> I thought that 8088 only has twenty address lines anyways? Although, ais523's idea makes sense too, that you can have mirrored addressing of the physical memory perhaps. If 8088 has only twenty address lines and the later versions have more, then it would make more sense for that function to be part of the processor instead, where if you do not use long addressing then it wraps.
06:43:19 <ais523> zzo38: it only has 19 address lines
06:43:29 <ais523> that's why there were backwards compatibility issues when the twentieth was introduced
06:43:42 <ais523> wait, no
06:43:46 <ais523> I'm off by 1
06:43:52 <ais523> it has 20 address lines, A20 is the 21st
06:44:36 <ais523> so some 8086/8088 programs assume that there's no A20 line (by wrapping addresses past 1MB), meaning that later processors which wanted to be compatible tended to disable the A20 line by default
06:44:59 <zzo38> Yes, although due to that backward compatibility issues, I think it would make more sense for that to be a feature of the processor itself. If you do not enable long addressing by the control registers then the processor should automatically output 0 on the A20 line and all higher address lines.
06:45:58 <ais523> zzo38: that's basically the solution the 80386 used
06:46:05 <ais523> although in a bit of an indirect way
06:46:19 <ais523> the A20 line nonsense was mostly related to the 80286 (which also had a number of other problems)
06:46:41 <ais523> actually, a good way to think about the 80386 is "Intel learns how to be backwards compatible in a way that doesn't hold back the future too"
06:47:05 -!- Lord_of_Life has joined.
06:57:43 -!- xkapastel has quit (Quit: Connection closed for inactivity).
06:58:10 <Sgeo_> Is OSDev wiki the best way to learn about this stuff?
07:02:18 -!- ais523 has quit (Remote host closed the connection).
07:03:28 -!- ais523 has joined.
07:06:19 -!- FreeFull has quit.
07:07:13 <\oren\> I just invented a new word. Weaboo, but korea: Weobeo
07:08:47 <rdococ> . o O ( Are there esolangs with support for anonymous, first-class functions, but not closures? I'd say langs in general, but it seems odd enough to me that it would be considered esoteric )
07:28:33 <Jafet> GCC C local functions
07:29:02 <Jafet> you've never heard of it because no one uses it, because it is about as useless as it sounds
07:29:18 <ais523> Jafet: I've heard of it
07:29:38 <ais523> however I believe they are closures, they just only last as long as the surrounding stack frame
07:30:16 <Jafet> oh, apparently they are
07:32:35 <shachaf> I've heard of it but never looked into the details.
07:32:44 <shachaf> How does it work?
07:33:15 <ais523> shachaf: syntax-wise, it's basically the C function definition syntax that appears inside a function body
07:33:18 <shachaf> You can pass a nested function pointer as an argument to another function and it has its local scope?
07:33:29 <ais523> implementation-wise, via the use of a small executable trampoline on the stack
07:33:45 <ais523> and yes, the resulting function can be called (not very useful) but you can also take pointers to it
07:34:00 <shachaf> But the pointer is the same code pointer each time?
07:34:10 <shachaf> Or does it allocate executable memory or something?
07:34:51 <Jafet> nearly all implementations of first-class functions use the same code pointers each time
07:35:07 <shachaf> But then how does it pass the data?
07:35:27 <Jafet> using a data pointer, presumably
07:35:53 <shachaf> https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
07:35:59 <ais523> shachaf: the pointer is to the stack
07:36:03 <shachaf> I'm talking about the "intermediate" example.
07:36:11 <shachaf> ais523: Executable memory on the stack?
07:36:13 <ais523> which is basically a simple wrapper that supplies arguments and calls the actual code
07:36:20 <ais523> shachaf: yes, it's a nightmare for gcc backend writers
07:36:58 <shachaf> I heard about a clever trick used by GHC on iOS, where you're not allowed to allocate writable executable memory (or something).
07:37:07 <shachaf> Or rather used by a library GHC uses.
07:37:45 <shachaf> I think the way it works is, they have a dynamically linked library that has a relative address.
07:37:50 -!- imode has quit (Ping timeout: 240 seconds).
07:38:00 <shachaf> They load it at multiple places in memory, and they put the data pointer next to it.
07:39:33 <Jafet> I thought that ghc implemented closures as functions taking a pointer to the closure data
07:39:59 -!- ais523 has quit (Remote host closed the connection).
07:40:04 <shachaf> I mean the thing where you can pass closures to C.
07:40:07 <shachaf> foreign import "wrapper"
07:40:09 -!- ais523 has joined.
07:43:32 <Taneb> After visiting the centre for computing history in Cambridge, I really want a BBC Micro
07:45:20 <ais523> I used to have one of those
07:45:28 <ais523> I don't think I still do, though; it's possible it broke
07:45:41 <ais523> they should be pretty easy to emulate, come to think of it
07:45:46 <ais523> maybe there's an emulator already
07:45:52 <Taneb> I'd imagine there is
07:48:32 <shachaf> ais523: whoa, it just makes the stack executable
07:48:36 <shachaf> That's ridiculous.
07:48:58 <ais523> the whole thing? or just one page
07:49:02 <ais523> either would be pretty bad though
07:49:45 <ais523> it strikes me that programs would benefit from multiple (processor-provided) hardware stacks
07:50:04 <ais523> one which only holds return addresses, one which is executable, one for small fixed-size locals, one for allocas, etc.
07:50:04 <shachaf> As far as I can tell the whole thing.
07:50:07 <zzo38> Not being able to allocate writable executable memory isn't very good then it makes it difficult to use self-modifying codes.
07:50:12 <shachaf> Of course there isn't that much stack in this process.
07:50:13 <ais523> the extra cost in registers would be negligible
07:50:22 <shachaf> But at least the 33 pages labeled [stack] are +x
07:50:31 <ais523> 33 pages is a lot
07:50:31 -!- augur has quit (Remote host closed the connection).
07:50:38 <shachaf> Yep.
07:50:50 <shachaf> ais523: The Mill does something like that, doesn't it?
07:51:03 <shachaf> Well, not quite to that degree.
07:51:17 <ais523> Itanium probably does something like that too
07:51:33 <ais523> but having the return value stack independent of everything else makes quite a few exploits almost impossible
07:52:10 <ais523> most notably, both the original "overwrite the return address so that it points to data" exploit, and the ROP-based version that gets past W^X
07:57:14 <shachaf> ais523: Oh, it just sets the stack to executable in the ELF flags.
07:57:50 <shachaf> This is scow.
07:58:08 -!- ^v has joined.
08:00:05 <ais523> would sending the stack pointer to point at part of the executable image be more or less scow?
08:00:08 -!- augur has joined.
08:00:53 <shachaf> What do you mean?
08:01:23 <ais523> have a writable part of the executable; instead of writing to the stack, you temporarily shift the stack pointer to point at that part of the executable
08:01:28 <ais523> then move it back when the function returns
08:01:42 <shachaf> Why do you need to do that?
08:01:45 <ais523> you don't
08:02:05 <ais523> I was trying to think of something that would accomplish similar things as making the stack writable, but was even more ridiculous
08:03:20 <shachaf> Ah.
08:03:46 <shachaf> You can write to read-only shared executable memory using ptrace.
08:03:51 <shachaf> That's how gdb sets breakpoints and so on.
08:04:01 <shachaf> Of course at that point it stops being shared.
08:04:33 <ais523> come to think of it, a similar approach that's a bit less ridiculous is to reserve a few "closure slots" in the data segment for each closure to store the values being closed over
08:04:52 <ais523> this wouldn't work if the function were recursive, but would work in other cases
08:05:02 <ais523> and doesn't require any screwing around with memory protection nor segment discipline
08:05:16 -!- augur has quit (Ping timeout: 276 seconds).
08:05:28 <shachaf> I was planning to test with a recursive nested function.
08:05:43 <shachaf> Or rather a recursive nesting function.
08:05:51 <shachaf> But it turned out not be necessary.
08:09:36 <shachaf> It might be halfway reasonable to have a per-thread "stack" containing just executable closures.
08:10:35 <ais523> that'd interact badly with longjmp, unless you told your longjmp implementation about it specifically
08:11:01 <ais523> (and this is less irrelevant than it seems, as longjmp-heavy code is one of the main reasons to want to put random complicated things on the stack)
08:11:12 <shachaf> Speakinig of which, apparently you can implement longjmp using nested functions.
08:11:22 <shachaf> You can jump to labels from the nesting function.
08:12:07 <ais523> yes, I think that works
08:12:11 <ais523> in fact, it's basically just call/cc
08:12:24 <ais523> with a slightly different call sequence
08:12:56 <shachaf> Why call/cc rather than longjmp?
08:13:30 <ais523> because call/cc produces a "continuation" value which is a function that jumps to a particular point when called
08:13:39 <shachaf> In my informal mental hierarchy I have something like callcc > coroutines > longjmp
08:13:48 <Taneb> I think C should have more track and field sports than just longjmp
08:13:52 <ais523> setjmp doesn't do that; a jmp_buf is a value that's only meaningful to lonjgmp
08:13:59 <ais523> *longjmp
08:14:18 <shachaf> Since callcc can use the same continuation multiple times, and coroutines can switch back and forth, and longjmp can only jump up in the stack.
08:14:29 <ais523> so in your case of creating a nested function that creates a jump, you're pretty much literally calling the rest of the code with the current continuation
08:15:00 <ais523> note that the same continuation works multiple times in this case (actu