00:00:46 -!- dts|pokeball has joined. 00:11:33 -!- boily has joined. 00:12:25 -!- SirCmpwn has quit (Ping timeout: 240 seconds). 00:15:07 -!- SirCmpwn has joined. 00:18:26 -!- mihow has quit (Quit: mihow). 00:19:31 -!- SirCmpwn has quit (Excess Flood). 00:21:24 -!- SirCmpwn has joined. 00:25:19 -!- SirCmpwn has quit (Excess Flood). 00:25:37 -!- SirCmpwn has joined. 00:38:54 -!- azazel_ has joined. 00:46:25 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 00:57:50 [wiki] [[Unnecessary]] http://esolangs.org/w/index.php?diff=41482&oldid=40620 * Xbony2 * (+94) Added another interpreter 01:18:20 -!- cluid has quit (Quit: Leaving). 01:31:38 -!- Guest38946 has quit (Ping timeout: 272 seconds). 01:49:46 -!- glguy has quit (Quit: Quit). 01:54:16 -!- CrazyM4n has joined. 02:10:30 -!- dts|pokeball has quit (Quit: Leaving). 02:10:48 -!- dts|pokeball has joined. 02:14:46 -!- boily has quit (Quit: PHŒNICIAN CHICKEN). 02:16:45 -!- CrazyM4n has quit (Remote host closed the connection). 02:27:17 -!- mitchs_ has joined. 02:30:29 -!- mitchs has quit (Ping timeout: 244 seconds). 02:49:13 -!- _AndoDaan has joined. 02:50:46 -!- AndoDaan has joined. 02:52:14 -!- AndoDaan_ has joined. 02:53:44 -!- _AndoDaan has quit (Ping timeout: 264 seconds). 02:53:53 holy crap there are three AndoDaans? 02:54:06 dammit. 02:54:21 -!- oven has changed nick to |oren\. 02:54:37 tried to irc on my phone. 02:55:19 -!- AndoDaan has quit (Ping timeout: 240 seconds). 02:55:27 -!- AndoDaan_ has changed nick to AndoDaan. 02:55:33 <|oren\> and then there was one. 03:00:02 -!- AndoDaan_ has joined. 03:02:36 <|oren\> nvm. there are two 03:02:39 -!- AndoDaan has quit (Ping timeout: 240 seconds). 03:02:48 <|oren\> and one again 03:07:16 -!- AndoDaan_ has quit (Ping timeout: 272 seconds). 03:08:20 -!- Tod-Autojoined has joined. 03:08:31 -!- TodPunk has quit (Read error: Connection reset by peer). 03:08:39 -!- Tod-Autojoined has changed nick to TodPunk. 03:14:28 [wiki] [[Talk:Ragaraja]] M http://esolangs.org/w/index.php?diff=41483&oldid=41480 * Oerjan * (+50) Geronimo! Also fix link 03:24:50 -!- |oren\ has quit (Quit: Lost terminal). 03:25:41 Use an app ando 03:26:52 -!- copumpkin has joined. 03:28:16 copumpkin: you should add propumpkin hth 03:28:23 k 03:30:13 copumpkin is a pro 03:34:36 -!- oren has joined. 03:36:55 damn right 03:38:20 now if he were also bi he could get the full set 03:40:01 do i even want to know? 03:41:45 -!- glguy___ has changed nick to glguy_. 03:41:55 wait a second here, this is some sort of math pun isn't it? 03:42:44 ding ding ding 03:43:01 it's been a while since i posted a screenshot: http://ctrlv.in/474924 03:44:21 stupid google has menus to restrict searches to a language or region; but when i look at them they _only_ let me choose between everything and norwegian 03:44:51 use bing hth 03:45:05 -!- glguy_ has quit (Quit: Part). 03:45:23 does that allow me to exclude norwegian results? 03:45:29 -!- CrazyM4n has joined. 03:48:18 hm that doesn't allow me to set it for just one search 03:48:49 this is for when i want to search for something that's accidentally a common norwegian word 03:48:51 -!- augur has joined. 03:55:28 there seems to be no search prefix for language. 03:55:37 -!- dts|pokeball has quit (Ping timeout: 255 seconds). 03:56:46 oerjan: why not set it to english? 03:56:47 google doesn't have a concept for telling them "you're second-guessing me wrong, this is how i want you to adjust your behavior". 03:56:55 Why does Rust interest me, they keep saying it's mostly for systems programming, and I have no interest in that 03:57:57 oren: then i have to set it back afterward. and the preferences are on a different page. basically i _hate_ all ui that requires me to leave the information i'm actually looking at to adjust it. 03:59:15 i'm basically bitching about google putting this beyond my too-complicated-to-bother threshold. 04:01:00 oerjan: use a private broswing window? 04:01:26 ...i don't think you're getting what i'm saying. 04:01:32 google won't modify your main account's settings 04:02:15 anyway it was simpler to just append "definition" 04:02:35 -!- glguy has joined. 04:03:14 which happens to work for finding word definitions most of the time because the word is spelled differently in norwegian. 04:06:32 I hate that you can't search for C++ C# and C separately unless you write the symbols out as words 04:06:59 aye 04:09:26 So many Rust libraries have names that... are as unpleasant to Google for as Rust itself 04:09:32 Rust iron. Not helpful 04:09:42 ...apparently it is 04:10:05 Sgeo_: wow that sucks. clearly not thinking ahead. 04:12:21 at least C# isn't the name of a mundane object 04:12:48 -!- madbr has joined. 04:18:00 [wiki] [[Scrip7]] http://esolangs.org/w/index.php?diff=41484&oldid=41473 * Orenwatson * (+242) Register offsets in the forms I(12 or I)12 04:19:46 http://www.drdobbs.com/architecture-and-design/farewell-dr-dobbs/240169421 :( 04:40:31 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 04:43:40 -!- glguy__ has joined. 04:44:05 -!- glguy has quit (Read error: Connection reset by peer). 04:49:27 -!- bb010g has joined. 04:54:07 -!- J_Arcane has joined. 04:54:12 -!- oerjan has quit (Quit: Clearly these are the end times). 04:55:17 -!- J_Arcane_ has quit (Ping timeout: 258 seconds). 04:55:40 -!- aloril_ has quit (Ping timeout: 258 seconds). 04:58:52 J_Arcane: :( 04:59:24 -!- aloril_ has joined. 05:03:36 -!- glguy__ has changed nick to glguy. 05:03:38 -!- aloril_ has quit (Max SendQ exceeded). 05:03:58 the hacker news comments about the news are insufferably predictable. :/ 05:04:39 i suppose I shouldn't be surprised when a bunch of 'startup' types react to someone actually pointing out that web ads don't work, considering it's what all their investor storytimes mostly hinge on. 05:04:39 -!- aloril_ has joined. 05:04:41 -!- dts|pokeball has joined. 05:04:54 -!- glguy has quit (Quit: Part). 05:05:13 -!- glguy has joined. 05:13:18 -!- CrazyM4n has quit (Remote host closed the connection). 05:18:36 -!- glguy has quit (Quit: Part). 05:20:37 `slist 05:20:54 slist: Taneb atriq Ngevd Fiora Sgeo ThatOtherPerson alot 05:26:13 -!- glguy has joined. 05:29:11 Oooh, slist 05:29:44 have y'all tried prismata? 05:29:56 single-player demo at http://play.prismata.net/?demo (uses flash) 05:32:44 I'm personally not keen on that kind of game 05:34:57 what kind of game are you keen on 05:38:05 the kind that doesn't take a billion years to load maybe? 05:43:12 shachaf, I like platformers mostly 05:43:47 Taneb: what kind of game is it? i can't load it 05:43:56 oren, like a card game 05:44:01 I think hearthstone-ish 05:44:15 yes 05:44:32 well, it's a deterministic complet-information game with no deck building, so it's p. different in that respect 05:51:48 I sometimes like roguelikes like Pokemon Mystery Dungeon and sims like Dwarf Fortress 05:53:04 -!- Sprocklem has quit (Ping timeout: 264 seconds). 06:14:28 i have decided to keep my policy of keeping the entire scrip7 release as one .c file 06:17:11 separate files are for people who want to have to use a VCS instead of 20141216.c etc 06:19:17 -!- MDream has joined. 06:19:57 -!- MDream has quit (Client Quit). 06:20:35 -!- MDream has joined. 06:35:50 [wiki] [[MNNBFSL]] http://esolangs.org/w/index.php?diff=41485&oldid=41344 * AndoDaan * (+431) /* Examples */ 06:38:23 -!- AndoDaan has joined. 06:42:57 -!- drdanmaku has quit (Quit: Connection closed for inactivity). 06:46:03 is it evil to use the C preprocessor to include plaintext and shellscripts into a C file? 06:46:35 screw it this is an esolang anyway 06:47:38 I ask fungot to inform oren of the morality of his actions. 06:50:25 * MDream is abruptly destroyed as his monitor turns into a small nuclear blast at the revelation that fungot is not present. 06:52:23 shachaf: I put in for the Kickstarter, but haven't actually played, besides once in the tutorial 06:52:26 I want to play though 06:52:33 Kickstarter isn't looking so healthy :( 06:54:21 Yes. :-( I hope they reach their goal. 06:55:10 3 days for 15000 CAD 06:55:18 It's probably doable. 06:55:26 I think it did jump 5000 in one day, so.. maybe? 07:00:08 hm 07:00:24 I want to make a language where something like 07:00:29 var += array[$n] 07:00:36 is internally expanded into 07:00:56 for(int n=0; n var += array[n]; 07:01:22 J 07:01:34 at compile time 07:01:39 oh 07:01:43 -!- shikhin has joined. 07:01:44 -!- shikhin has quit (Changing host). 07:01:44 -!- shikhin has joined. 07:11:06 one way to do it would be that array::operator [](size_t index) checks for the superior bound and generates and exception, and all loops contain an implicit try catch block that catches this exception 07:11:52 and compilers are written in such a way that this exception is optimized into the correct n in a lanuguage that isn't defined in terms of horrifying c++ abominations you could do it more elegantly 07:12:32 I'm just using c++ as a convenience here 07:12:54 though I'd really like the statement used by the user to be "var += array[$n]" 07:12:54 why does c++ often require the compiler to achieve sentience? 07:13:21 c++ probably just got the wrong feature set and too much history 07:13:51 and is stuck with some things that used to make a difference but don't anymore 07:14:25 function static variables etc 07:15:04 so yeah i think you could do this with a standard yacc/lex thing 07:15:14 at least the parsing 07:15:38 well 07:15:51 it's more complex than it looks at first sight 07:16:15 also I'd like something like 07:16:33 var += array[$n], n < 8 07:16:40 to expand into something like 07:17:07 for(int n=0; n so you'd have syntax to append "conditions" on any piece of code, including its internal loop(s). 07:18:17 and various other similar types of variable binding 07:18:42 yeah... how to explain this 07:19:23 maybe any undeclared variables are assumed to be local to the current statement? 07:19:40 basically, any statement with $x variables in it should in theory expand to a loop trying all 4 billion possibilities 07:19:52 and with multiple variables, all combinations 07:19:57 but 07:19:59 and by doing A[n] you impose implicit restricitons on n 07:20:24 automatically discarding any possibility that violates an array bound 07:20:39 or a condition (like n<8) 07:21:46 so for instance if the "payload" of the statement is an assignment, the assignment isn't done 07:21:54 and then you write some clever code to preemptively not even try numbers that would always violate a condition 07:22:08 yep 07:22:52 or at least be clever enough to respect array bounds and easy to figure out boundary conditions 07:23:20 also would be able to do sortof multi step binding things 07:23:21 like 07:23:42 $v = array[$n], var += v*v 07:24:39 basically square each array value and do the sum of those 07:25:29 the way it would work is that it would try out every value of $n, and obviously this only works for indexes that are in the array 07:26:19 -!- Lymia has quit (Ping timeout: 250 seconds). 07:26:38 and obviously if you have 6 at array[0], if $n binds to 0, then $v in turns has to bind to 6 (since it's the only value where the statement $v = array[0] can be true) 07:27:12 and now that $v has binded, the "payload" (var += v*v) can be executed 07:27:24 anyhow, sleep time 07:28:18 -!- madbr has quit (Quit: Pics or it didn't happen). 07:32:47 Huh, no 'got? 07:33:15 -!- fungot has joined. 07:33:17 That's better. 07:41:11 -!- azazel_ has quit (Quit: Connection closed for inactivity). 07:44:24 -!- Patashu has joined. 07:46:23 fungot! 07:46:23 olsner: it was in america. especially in fnord) 07:46:42 fungot: did it have fun in america? 07:46:42 olsner: is ( and dip it in melted butter first)." fnord pope? 1)?? has type fnord of pointer to function ( long, long gone by the time i'm just using scheme48 in a shell) 07:49:07 fungot: What do they dip in melted butter in America? Everything? 07:49:07 fizzie: i'm with you. i have the browser tied in with mit scheme's compiler.) 07:49:28 fungot: Sounds very practical. 07:49:29 fizzie: kilimanjaro says: i don't use linux... plus it uses tk on it im not imagining things! it really does load the source of a minimal implementation 07:50:26 Tk, a web browser and MIT Scheme's compiler. A curious combination. 08:36:27 -!- shikhout has joined. 08:36:51 -!- shikhout has changed nick to Guest2022. 08:40:32 -!- shikhin has quit (Ping timeout: 265 seconds). 08:51:59 -!- atslash has joined. 08:53:06 -!- Guest2022 has changed nick to shikhin. 08:53:11 -!- shikhin has quit (Changing host). 08:53:11 -!- shikhin has joined. 08:59:54 The scrip7 IDE is coming along nicely: http://ctrlv.in/475010 09:01:24 [wiki] [[MNNBFSL]] http://esolangs.org/w/index.php?diff=41486&oldid=41485 * AndoDaan * (+159) Collatz program now terminates when n = 1. 09:05:09 -!- AndoDaan_ has joined. 09:07:54 -!- AndoDaan has quit (Ping timeout: 258 seconds). 09:14:17 -!- _AndoDaan_ has joined. 09:15:57 -!- AndoDaan_ has quit (Ping timeout: 264 seconds). 09:19:26 -!- _AndoDaan_ has changed nick to AndoDaan. 10:04:20 -!- mihow has joined. 10:09:52 -!- mihow has quit (Ping timeout: 264 seconds). 10:12:57 -!- dts|pokeball has quit (Ping timeout: 245 seconds). 10:56:34 -!- Phantom_Hoover has joined. 10:58:35 05:03:36 i suppose I shouldn't be surprised when a bunch of 'startup' types react to someone actually pointing out that web ads don't work, considering it's what all their investor storytimes mostly hinge on. 10:58:39 J_Arcane: they get as far as ads? 10:58:46 isn't it all about growth, growth, growth 10:59:10 "hacker news surprised to discover capitalism is unsustainable" 11:01:41 Not just 'capitalism' in their case, but 'capitalism founded on fairy stories'. XD 11:03:20 you'll have to enlighten me as to the difference :p 11:03:27 XD 11:03:48 True. I suppose the difference is mostly temporal, in SV's case. 11:07:29 http://pastebin.com/qVp7R5D2 <-- it is done: the "hopefully getting stabler release 2014-12-17 06:30" 11:08:50 is it morally wrong to include several programs in one .c file by use of ifdefs? 11:09:37 Not if the programs are 'true' and 'false'. 11:10:50 [wiki] [[Scrip7]] http://esolangs.org/w/index.php?diff=41487&oldid=41484 * Orenwatson * (+11) upadted link 11:13:19 remember that time this channel figured out how to make false succeed? that was good 11:14:25 I don't remember that at all, but it sounds intriguing. 11:15:07 it involved exploiting a buffer overflow in gettext 11:15:19 by crafting an appropriate translation file and getting it to display help 11:15:25 or, uh, not really a buffer overflow in gettext 11:15:34 more like just it doing printf(_("..."), ...) 11:15:37 so you can exploit the format string 11:15:51 I mean, you can make true fail, so why not the other way around, right? 11:17:22 fizzie: http://sprunge.us/JBhf 11:17:31 int-e was the one who got it to proof of concept 11:18:00 me and ais523 found/fiddled with the gettext use 11:18:07 I must've missed or forgotten about this. 11:18:10 V. fancy. 11:18:31 sadly gettext doesn't let you specify environment variables like this for setuid programs 11:18:38 so you can't use it for privilege escalation 11:18:48 but imagine if you could. 11:19:15 it does mean that having write access to /usr/share lets you "pwn" a box (if any programs that run as root use gettext like this), I think. 11:21:04 Makes me wonder how common it is to have localized format strings. Probably relatively so. 11:21:15 yeah, I think that's standard gettext use 11:21:32 certainly I expect most of coreutils does it, for the help messages 11:21:37 -!- erdic has quit (Ping timeout: 250 seconds). 11:21:49 anyway, this was half a year ago, fwiw. 11:22:11 -!- erdic has joined. 11:22:34 -!- boily has joined. 11:22:39 Yes, there's quite a lot of "%s: unrecognized option `%c%s'" and so on. 11:31:27 anyway, you'd think that it wouldn't be hard to write a printf_ which checks the format strings are compatible... 11:31:45 but I guess this is unix, we don't care about robustness! 11:33:14 The overhead would be unacceptable 11:36:16 -!- Patashu has quit (Ping timeout: 250 seconds). 11:38:49 Ah, so you also need to add a separate "format check only" function so you can keep using raw printf in all those thight inner loops, and hoist only the check out. 11:40:11 actually, that's sort of a good point, you could just call it __ instead of _ 11:40:15 or whatever 11:40:17 don't even need to wrap printf 11:40:24 printf doesn't check the format strings, but atleast gcc gives you a warning! 11:40:29 hell just turn it on for _ and at least make it print out warnings 11:40:37 oren: it doesn't if you use gettext :p 11:41:29 * elliott thinks about LD_PRELOADing an alternate gettext that does a naive format string check and prints out if they don't match... 11:41:40 can't wait for my NEXT coreutils xzero-day 11:41:43 *zero-day 11:42:19 elliott: The whole thing doesn't sound like a too far-fetched thing to be enabled by some sort of FORTIFY_SOURCE option. 11:43:03 I forget what exactly printf_chk does, actually. 11:43:13 yeah, I suppose if you cheated by actually patching the compiler it could avoid false whatsits. 11:43:28 really, though, the environment variables should probably just go away. 11:43:37 at the least. 11:44:07 hey imagine if we wrote in a language that wasn't segfault city 11:44:26 then we could have things like "features" without blowing up the planet in the process 11:45:29 safety, speed, flexibility, pick two 11:46:07 I don't believe you have to. 11:46:11 especially not for coreutils, come on. 11:46:28 elliott: (a) why would you have to LD_PRELOAD that? why not check during compiling the translation files with msgfmt instead? (b) in either case, how do you know which strings contain printf-formats, which ones used in some other way? 11:46:46 b_jonas: welltranslation files can be specified at runtime 11:46:48 *well translation 11:46:58 elliott: i mean that a language can only give you two, and you have to make the third by good programming 11:47:03 and by the rarity of % 11:47:15 I only wanted it so I could look for exploits, though I guess it's unlikely that mistake would be made in stock translation files 11:47:22 maybe it should just print whenever you pass a % to _ 11:48:26 oren: I don't agree. many of the ways in which C are unsafe aren't just design tradeoffs that there can be reasonable disagreement about; it is a flawed language and you can do better in many respects without making big sacrifices on speed or flexibility. languages aren't always a perfect balanced compromise that couldn't be objectively improved on 11:49:29 elliott: of course it can be improved on, but there is a upper limit at which tradeoffs emerge 11:50:10 sure. let's get to that point, and *then* you can say "safety, speed, flexibility, pick two" in response to me whining about whatever language we're using then :) 11:50:35 fine. 11:50:57 I suspect you could write coreutils in just about anything and be completely fine, anyway. it's not really number crunching. 11:51:09 so what about fortran 90? 11:51:35 okay, I guess something like sha*sum would be annoying if it was too slow. 11:53:07 maybe the coreutils shouldn't all be written in the same language? 11:53:58 uh, you could put forward that position but I don't know why you would 11:54:08 put all your eggs in one basket, then watch that basket very closely. 11:55:06 well, you could use fortran for number crunching things, something pedantic like Ada for security, etc. 11:58:24 only problem is that in olden times languages didn't interoperate well 11:59:09 so they standardized on C because it is very flexible. 11:59:35 (compared to its contemporaries i mean) 12:02:46 % time cat MacTeX.pkg >/dev/null 12:02:46 cat MacTeX.pkg > /dev/null 0.01s user 0.64s system 49% cpu 1.320 total 12:02:46 % time shasum -a 512 MacTeX.pkg 12:02:46 e788be6b14300f3e6463cdd8f8b1a4afc61e3a4c315c486e0dde465bf82ea16080bb0c6f78faa5cbd21a3ec6abb820ce805d1131f02069908514f1b28f06720d MacTeX.pkg 12:02:49 shasum -a 512 MacTeX.pkg 11.08s user 0.63s system 98% cpu 11.870 total 12:02:52 % time ruby -e 'require "digest"; d = Digest::SHA512.new; buf = ""; f = File.open("MacTeX.pkg"); while f.read(65536, buf) != nil; d << buf; end; puts d.hexdigest' 12:02:55 e788be6b14300f3e6463cdd8f8b1a4afc61e3a4c315c486e0dde465bf82ea16080bb0c6f78faa5cbd21a3ec6abb820ce805d1131f02069908514f1b28f06720d 12:02:58 ruby -e 11.96s user 0.57s system 98% cpu 12.690 total 12:03:00 of course this is depending on C code for the SHA-512 implementation. 12:03:19 but my point is that this is not an obstacle to writing coreutils even in something "famously slow" like ruby 12:03:34 though honestly ruby has a greater risk surface than coreutils probably 12:03:59 just saying that you probably have to look on our wiki to find a language too slow to reasonably write coreutils in 12:05:19 elliott: i see! so because modern languages can call the C ABI, we can write the glue codein something that has no risk of buffer overflows 12:05:31 -!- mihow has joined. 12:05:49 well, it's not even necessarily an ABI problem. you just need *some* way to extend the language in something fast enough 12:06:06 here's a question: how fast would sha512sum be with a hand-optimised, but totally memory-safe, pure haskell implementation? 12:06:19 I wouldn't be surprised if the answer was "fast enough". 12:06:32 i'm gonna guess at about 20% speed? 12:06:43 that's a serious underestimate I think 12:06:54 based on my knowledgeof racket 12:07:10 is haskell strongly typed? 12:07:14 haskell and racket are incomparable, I think 12:07:17 isn't racket interpreter-only 12:07:21 haskell has a very advanced optimising compiler 12:07:33 Racket is JIT-compiled from byte-code. 12:07:35 and people write rather gnarly hand-optimised code in it 12:07:50 It's pretty fast, but slower than most lisps, and slower than Haskell, generally speaking. 12:07:52 oren: yes, very much so 12:08:07 then i'll say 90% 12:08:21 it has probably the most advanced type system of any "commonly used to slightly obscure" language 12:08:33 http://benchmarksgame.alioth.debian.org/u32/compare.php?lang=racket&lang2=ghc 12:08:45 let's not use the benchmarks game to talk about haskell performance lol 12:08:48 those programs are horrific 12:08:58 :_D 12:08:59 okay, not all of them 12:09:27 but some of them probably have negative PR effect because people were obsessed with getting the tiniest last bit of performance out of them, making it so that if you actually look at the source you think you need to sacrifice your soul to satan to get reasonable performance out ofh askell 12:09:44 This is a fair point. 12:10:09 i have consistently seen that the stronger the typing of a language, the faster it is. 12:10:15 I found Haskell quite quick enough as it was, and certainly very little code I see in the actual Haskell sources looks as ugly as, say, this: http://benchmarksgame.alioth.debian.org/u32/program.php?test=pidigits&lang=ghc&id=4 12:10:38 -!- mihow has quit (Ping timeout: 256 seconds). 12:10:42 actually that code looks fine 12:10:45 there's no unsafety or unboxing or anything 12:10:52 aij (I# i) (I# j) = D# ( 12:10:52 case i +# j of 12:10:52 n -> 1.0## /## int2Double# 12:10:52 (((n *# (n+#1#)) `uncheckedIShiftRA#` 1#) +# (i +# 1#))) 12:10:56 this is scary though :p 12:11:03 oren: Generally yes, because it saves cycles for error checking and such. Though Common Lisp can be pretty fast I'm told. 12:11:04 that's the kind of code you'd be writing for a hand-optimised SHA implementation haha 12:12:58 the only reason C isso fast is because it is so unsafe. a safe language with C's type system would probably be slow as hell 12:13:30 you're wrong 12:13:53 the point is the uncheckedIShiftRA#, I guess; the rest the compiler should do by itself. 12:13:57 ll, "with C's type system", sure... 12:13:58 *well, 12:14:03 that's a ridiculous constraint though 12:14:47 elliott: it is a hypothetical. such language does not exist, because it would be ridiculous 12:14:52 speaking of C, I should probably get back to working on Build Your Own Lisp at some point. 12:14:53 how old is that code anyway? ghc has been getting smarter over the years. 12:14:53 actually it kind of does 12:14:58 @google asan clang 12:14:58 http://clang.llvm.org/docs/AddressSanitizer.html 12:14:59 Title: AddressSanitizer — Clang 3.6 documentation 12:15:20 adding naive memory safety to C makes programs twice as slow, basically 12:15:23 which is far from slow as hell 12:15:47 I think google run a bunch of high-risk stuff compiled with ASan or something? 12:16:28 they certainly use it for testing, anyway 12:16:42 -!- cluid has joined. 12:16:47 brb, installing that. 12:16:52 Yes. I think that's another thing about C, is it is indeed blisteringly fast, which throws the curve for everything else. ie. being 'twice as slow as C' sounds like more than it is in practical terms. It's not like we're talking BASIC v. Assembly, like in the old days. 12:16:58 oren: it comes with clang 12:17:08 oh then i already have it 12:17:22 i have like 10 c compilers installed 12:17:34 Heh. I just have tcc and gcc. 12:17:46 I guess you also need http://clang.llvm.org/docs/MemorySanitizer.html since ASan doesn't catch that, and that has a bigger slowdown, but whatever 12:18:03 that's probably more of a debugging thing than a big safety problem 12:19:11 -!- coppro has quit (Ping timeout: 258 seconds). 12:23:42 well that is certainly a better way of finding the memory leaks than simply printfing every damn thing 12:24:48 you know about valgrind, right? 12:25:11 I guess maybe the clang stuff is better these days, I don't know. 12:25:22 it's certainly faster. 12:25:27 valgrind works but it is annoying to use 12:26:41 -!- coppro has joined. 12:27:03 -!- Lymia has joined. 12:27:49 -!- boily has quit (Quit: RESPLENISHED CHICKEN). 12:28:15 these clang options can simply be added to the compile script, whereas valgrind requires you to run things in a different way 12:30:28 my short test indicates that the clang thing has less performance penalty too 12:34:44 yes, valgrind is very slow 12:58:08 Or you can use a language which ensures memory safety at compile time 13:00:31 yes 13:04:05 FreeFull: that will become the default when OS's C ABIs are replaced with something memory-safe. 13:08:13 what 13:08:26 what "OS's C ABIs" 13:08:30 syscalls do not use the C ABI... 13:09:06 -!- oren has quit (Ping timeout: 244 seconds). 13:09:12 FreeBSD's do, to some degree. 13:09:45 they don't use the CALL part, do they? :p 13:09:55 Not quite, but almost. 13:10:05 (looks it up) this is kinda weird but nice 13:10:09 -!- oren has joined. 13:10:21 I don't think it invalidates my point though. it's not like people write everything directly with syscalls 13:11:11 "Linux is a UNIX® like system. However, its kernel uses the same system-call convention of passing parameters in registers MS-DOS® does. [...] This convention has a great disadvantage over the UNIX® way, at least as far as assembly language programming is concerned: Every time you make a kernel call you must push the registers, then pop them later. This makes your code bulkier and slower. ... 13:11:14 (As in, the kernel skips a return address when looking for arguments on the stack, under the assumption that you've called a function that has executed the int. On x86, anyway; I don't know how it is with other ports.) 13:11:17 ... Nevertheless, FreeBSD gives you a choice." 13:11:18 they're so bitter 13:11:37 I see you've found the page I always hit when googling for the FreeBSD calling convention. 13:11:56 I wonder what they do on x86-64 13:12:09 given that that C calling convention is JUST AS BAD AS MS-DOS(R) 13:12:34 "If you are coding specifically for FreeBSD, you should always use the UNIX® convention [...] If you want to create portable code that can also run on Linux, you will probably still want to give the FreeBSD users as efficient a code as possible." 13:12:45 are you coding just for freebsd? 13:12:51 |-- yes --> use our convention 13:12:56 |-- no --> use our convention anyway 13:13:09 implicit parameters 13:13:28 I seem to recall they follow the x86-64 SysV ABI document, aka they're JUST AS BAD AS LINUX. 13:15:59 The C Api's are still the most-used method of calling the OS on both linux and windows. That is i believe the whole problem 13:16:27 okay, but like, a language can either wrap around libc, or write its own library based on syscalls 13:16:41 go does the latter 13:16:56 the latter is the right thing. 13:17:06 the latter causes annoying interop problems with C threads IIRC 13:17:21 there's not really any major disadvantage to the former... 13:17:29 I don't see what the problem is about "wrapping memory unsafe APIs to be safe" 13:17:32 like, that is what encapsulation is. 13:17:40 any memory safe language contains memory unsafe parts that are encapsulated for safety 13:17:53 -!- InvalidCo has quit (Ping timeout: 244 seconds). 13:17:55 but the real right think is for there to be a native API in the memory safe language, e.g. dot net. 13:18:05 *right thing 13:18:22 uh, I don't know .NET implementation details but I wouldn't be at all surprised if it called into libc... 13:18:44 what is the substantial difference between wrapping libc and wrapping syscalls anyway 13:18:50 -!- InvalidCo has joined. 13:19:13 like sure "ideally" we'd have memory-safe OSes running on lisp machines or whatever but I don't see how any of this implementation detail stuff is relevant to the adoption of a memory-safe language 13:19:24 elliott: it probably does but it is developed by the same people as the OS. the issue is when you have a wrapping layer it becomes language maker's responsibility 13:19:37 I don't think the .NET team and the Windows kernel team are the same. 13:20:01 *same organization 13:20:10 By memory safety ensured at compile time I was thinking of Rust 13:20:27 that really doesn't say much, but sure. (have you heard about the OS vs. Office team antagonism? :p) 13:21:46 if we want linux to be very safe with say JVM, the Linux kernel team needs to work on the interface into JVM. 13:22:04 what o.o 13:22:35 it needs to be developed by people who understand the model at both ends in great detail 13:23:46 you can already violate memory safety if you find a bug in the JVM JIT, who cares about the kernel interface? 13:23:54 I really don't understand the angle you're going for here... 13:24:23 elliott: it is chiefly a political issue 13:24:30 ok. 13:24:39 then I'll stop trying to have a technical discussion 13:25:13 if the JVM api is subordinate to the C api, then people will use C api to avoid there being more places to have bugs 13:25:56 if you don't believe that encapsulation can increase safety, then I don't know what to tell you. 13:26:19 encapsulation increases safety but there can be bugs in the capsule 13:26:21 you could maybe argue a wrapper around memcpy that checks that src and dest are valid pointers before passing it on (or whatever) has "more places to have bugs". it is also strictly safer. 13:26:50 fundamentally, there is no way of getting around wrapping unsafe operations 13:27:10 whether that's in the kernel or in libc or in a language library, who cares? the principle is the same 13:28:13 replacing the syscall/libc API won't make wrapping the underlying options for safety take *significantly* less code (it would certainly be more elegant and potentially less prone to errors, sure; I'd love it too. but it's still weird to use this as an argument for using unsafe APIs directly?) 13:29:06 elliott: everyone will want to make their own wrapper unless there is one standard wrapper 13:29:26 this is the Gnome/KDE/XFCE/LXDE problem 13:29:31 does go allow overloading? 13:29:54 I really feel like you just generate random plausible-sounding retorts outside of the context of the rest of the conversation every time the one you were harping on before stops making sense :/ 13:30:41 hm. nope 13:30:51 not even operator overloading :( 13:32:07 "If you wish the users of an interface to explicitly declare that they implement it, you can add a method with a descriptive name to the interface's method set." 13:32:13 this is bullshit. Sorry. 13:32:27 but adding a dummy method as a means of documentation? 13:32:30 Are you kidding me? 13:33:58 go is not a good language 13:34:08 though explicitly duck-typed interfaces aren't that horrible an idea 13:36:08 mroman: i hope so. overloading is basically the same thing as polymorphism 13:36:16 polymorphism: x.m(y) where the type of x may be different 13:36:20 overloading m(x,y) where the type of x may be different 13:36:53 apparently it supports polymorphism but not overloading... 13:36:53 i find that bizarre and hypocritical 13:37:14 uhhh 13:37:21 elliott: they should be an option but not the only option 13:37:27 m(x,y) where the type of x can vary can be polymorphism too 13:37:33 m :: Show a => a -> String -> String 13:37:36 m x y = show x ++ y 13:38:02 (indeed haskell, and many other languages, allows controlled overloading through a system like typeclasses) 13:38:08 (it is _ad-hoc_ overloading a la C++ that is unpopular.) 13:40:35 go doesn't have inheritance either :( 13:40:48 good! 13:41:00 that is one of the things go actually gets right... 13:41:17 what? but elliotr i use inheritance in C all the time and it is useful... 13:42:01 uhh... what C are you using that has implementation inheritance, exactly? 13:42:11 do you mean horrible BSD socket-style hacks, because, lol 13:42:18 Come on, just because nearly everyone designs subtyping wrong 13:42:29 I mean using the usual method of passing in a this pointer explictly 13:43:04 a.m(b) -> A_m(a,b) 13:44:15 the C standard library does this for FILE*. the windows api uses this with its HWND. 13:45:03 that doesn't have anything to do with inheritance 13:45:07 seriously 13:45:10 i'm getting to it 13:45:21 Jafet: I'm fine with interface inheritance 13:45:24 just not implementation inheritance 13:46:18 so struct bugbear {struct enemy enm; ...} *bb can be passed as a struct enemy* to any function that takes one 13:46:37 -!- Lorenzo64 has joined. 13:47:25 that's composition, not inheritance 13:47:27 Go even has special support for that 13:47:36 you can omit the field name and access bb.enm.x as bb.x 13:47:39 -!- Lorenzo64 has quit (Read error: Connection reset by peer). 13:47:39 (this is inherited from Plan 9 C) 13:47:45 (in fact gcc even supports this extension) 13:48:59 elliott: wha? why do you keep answering myarguments with things that will make my life infinitely easier, if you wanted me to stop arguing? 13:49:19 this isn't much motivation 13:49:35 I could kick you too to balance it out 13:49:54 btw you probably don't want to use gcc's Plan 9 C support, I don't think clang supports it and I doubt anyone cares about maintaining it 13:49:59 I wouldn't be surprised if it went away 13:50:17 here's a cool thing: unless they changed it, a bunch of Go is written in Plan 9 C. they ported the Plan 9 C compilers to linux and compile all their non-standard C code with it 13:50:43 by cool I mean vaguely horrifying 13:50:56 it's uncanney valley C 13:50:59 so how is inheritance different from composition? 13:51:09 Go, the modern programming language 13:51:12 given this syntax sugar 13:51:27 composition is building structures out of other structures (potentially multiple ones!), using their public API 13:52:21 implementation inheritance is building a structure's implementation on top of the implementation of another one, creating a direct "is-a" relationship where Subclass is-a Superclass, and potentially using private API and implementation details 13:52:36 is-a vs. has-a, etc. 13:52:39 https://en.wikipedia.org/wiki/Composition_over_inheritance 13:53:25 implementation inheritance is pretty close to directly going against principles of encapsulation, basically. from an OOP point of view, how many codebases actually satisfy the Liskov substitution principle? 13:53:50 it's a tricky invariant to keep to, but it's hard to assign any coherent meaning to the notion of inheritance without it. 13:54:19 you end up basically having to concede "well, this is just copy-paste code reuse that isn't really grounded in any kind of abstraction" 13:54:49 thankfully composition is all three of more elegant/simpler, easier to reason about, and more flexible, so. 13:55:00 *interface* inheritance is just fine though. 13:55:19 as in, the concept that to satisfy an interface X, you must also satisfy interfaces Y, Z, ... 13:55:31 conflating the two is common but unfortunate, especially in languages without an explicit implementation/interface divide 13:56:37 elliott: i try to create a divide in C by using a lot of static functions and static globals, but it doesn't always work 13:56:37 (I am not a fan of "standard" OOP (I would say "traditional" but C++, Java, Python, whatever really don't look all that much like Smalltalk or whatever) in general, anyway. inheritance is one of the reasons why) 13:56:54 Yeah, C++ lacks that... concept 13:57:01 har har 13:57:09 aren't they adding like mini-concepts or something 13:57:41 C++ added a slightly different version of each thing from C 13:58:35 i really do not understand why we need references and pointers in the same language 13:58:40 I suspect that at this point all of WG21's energies can only be devoted to updating the standard to be relevant on computers designed in the last ten years 13:58:55 leaving none for actual language design 13:59:18 references are a little safer and nicer (but not safe enough) 13:59:36 it's true that C++ basically has a nicer parallel universe language fighting against the "legacy" C parts. 13:59:48 that nicer language has some horrifying stuff in it too though of course 13:59:53 FSVO nicer I guess 14:01:56 we need a language called c*=2; 14:02:44 it would have the good parts of C++ and remove the parts inherrited 14:03:33 I hate C++ because thinking in C and Python at the same time screws my head up 14:04:30 -!- mihow has joined. 14:04:43 Do you mean (++c)++ 14:04:56 the language trying to get out of C++ only looks like Python in an extremely distorted funhouse mirror :p 14:05:04 anyway, that's what rust is trying to be 14:05:11 *Rust 14:05:22 The distorted funhouse is D 14:06:02 I am planning on eventually get around to trying both of thsoe 14:06:19 I dislike D :( 14:06:38 it feels like such a grab bag of stuff 14:06:58 so it is the PHP of compiled languages? 14:07:22 argh! 14:08:01 I think the design is a lot more solid than that :p 14:08:06 I just don't like the taste of it 14:10:33 -!- mihow has quit (Ping timeout: 250 seconds). 14:17:19 I like Rust 14:17:27 Rust gets my thumbs-up 14:18:04 what are some of the best things about Rust? 14:20:25 it is the least fucked alternatives among there (including C++ itself) 14:20:36 ocaml 14:20:45 not really alternative? 14:20:50 ok 14:21:07 I'm starting to think that this problem space itself is fucked 14:21:17 Rust gets you memory safety without garbage collection, and it has a nice type system 14:21:23 what problem space, programming? 14:21:27 so it's about minimizing fucks 14:21:29 You can write an OS kernel in Rust 14:21:38 Or code for your microcontroller 14:22:06 FreeFull, That seems pretty awesome to be but afaict there's no proof that the rust type system ensures the operational semantics are actually safe 14:22:22 afaik they are trying 14:22:43 proof, whatver, so long as it provably HELPS thats' good 14:22:53 they have a core semantics, I'm not sure it has been fully proved 14:22:59 Theoretically, the lifetime system should be sound, modulo compiler bugs 14:22:59 (search for rust-redex) 14:23:13 Also the ownership system 14:23:15 what is the theory though? 14:27:09 https://en.wikipedia.org/wiki/Region-based_memory_management has a long history 14:29:32 -!- AndoDaan_ has joined. 14:30:03 Cyclone, ML Kit etc. 14:31:51 -!- AndoDaan has quit (Ping timeout: 250 seconds). 14:37:03 -!- shikhout has joined. 14:37:25 -!- shikhout has changed nick to Guest86316. 14:40:02 -!- shikhin has quit (Ping timeout: 244 seconds). 14:54:55 i have invented the c/bash polyglot archive format 14:56:47 it is a c file which can be run as its own compile script 14:57:45 -!- Guest86316 has changed nick to shikhin. 14:57:51 -!- shikhin has quit (Changing host). 14:57:51 -!- shikhin has joined. 14:58:37 because the cpp directive #if 0 is also a bash comment 14:59:56 that kind of thing is quite a common trick 15:00:27 you can also do things like this 15:00:28 sh-3.2$ /* 2>/dev/null; echo hi; # */ 15:00:28 hi 15:00:57 elliott: really? the only reason i'm doing it is becauase i'm too lazy to start puttin gthings in separate files 15:01:21 oh, it actually extracts itself, heh. 15:01:23 you could base it on shar 15:01:35 because then i couldn't use pastbin as a repository 15:01:38 why not just put all the program in one file... 15:02:01 elliott: it also contians its documentation and test suite 15:02:46 documentation can be a big comment, test suite can be an #ifdef ... int main() ... #endif? :p 15:03:23 the test suite is a shell script that feeds abunch of test code to the scrip7 interpreter 15:05:03 you could write it as function calls 15:05:06 nobody likes shell :p 15:05:27 -!- `^_^v has joined. 15:05:39 I prefer here documents to "" strings 15:06:25 oh I assumed it was one-liners 15:07:09 nah, i have to test the loops and stuff, so in order to test it properly i implemented an insertion sort for example 15:07:33 /* 2>/dev/null; if [ "$1" = "test" ]; do sh $0 < *then/fi 15:07:50 (assuming sh $0 compiles and runs it if given no arguments) 15:17:03 -!- dts|pokeball has joined. 15:21:31 it is a c file which can be run as its own compile script 15:21:44 Just put a comment with the compile line at the start 15:22:01 i would not run a large c/sh 'polyglot' for fear it might do something dodgy that isn't immediately obvious 15:22:43 cluid: the entire concept of this language is dodgy 15:42:03 -!- oerjan has joined. 15:43:29 Gregor: i don't think glogbot's clock is properly set 15:44:08 it seems to be a minute late 15:46:45 -!- AndoDaan_ has quit (Ping timeout: 250 seconds). 15:46:51 http://pastebin.com/qVp7R5D2 <-- how dodgy is this 15:51:27 -!- AndoDaan has joined. 15:54:22 at least use "$0" instead of requiring a filename 15:54:35 you probably want to set -e too 15:55:35 you might also want to make it not a sharbomb, but :p 15:55:49 shar and enjoy 15:57:02 oots updates have become even rarer lately, it seems 15:57:13 -!- dts|pokeball has quit (Ping timeout: 245 seconds). 16:05:30 -!- mihow has joined. 16:07:30 There, it now uses $0. (same link) 16:07:44 now completely free! 16:08:06 lol 16:09:27 see it compiles itself 3 times and runs cpp on itself twice, to produce two executables, a .o library, a test shell script and a .txt document. 16:10:07 [wiki] [[Language list]] http://esolangs.org/w/index.php?diff=41488&oldid=41464 * Tastyfish * (+17) added flow_chart 16:10:33 -!- mihow has quit (Ping timeout: 264 seconds). 16:11:02 the different executables share part of their code, so this is a highly efficient way of doing it 16:11:52 oren: are you sure this counts as one .c file any longer 16:12:29 it is a txt.c.sh file 16:13:00 oren: this won't work if you curl ... | sh 16:13:10 you gotta make it use heredocs or something like shars 16:15:16 elliott: what do you mean? you jsut sh scrip7.c 16:15:31 as in curl http://pastebin/blah | sh 16:15:34 because you use $ 16:15:36 $0 16:15:44 don't you want it to be as easy as possible to let you run arbitrary code 16:16:17 elliott: but how ami supposed to compile myself a bunch of times? 16:16:40 bah too complicated 16:18:04 ideally what we need is a scripting language except instead of have /*blah */ 16:19:10 -!- jix_ has quit (Quit: Lost terminal). 16:20:14 it is a shame that there is no way to get cpp to accept a shebang at the start of the file (afaik) 16:20:22 [wiki] [[List of ideas]] http://esolangs.org/w/index.php?diff=41489&oldid=41479 * Tastyfish * (+172) /* Derivative Ideas */ 16:26:17 -!- drdanmaku has joined. 16:31:49 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds). 16:36:41 -!- Phantom_Hoover has joined. 16:42:25 https://www.indiegogo.com/projects/the-hybrid-programming-language remember the Osmosian Order of Plain English Programmers? well, 16:43:00 -!- jix has joined. 16:48:12 plain english! 16:48:25 "When you start me up, I will quickly take over your screen so you no longer have to look at that painted whore of an interface that comes with the kluge." 16:48:27 ... 16:48:31 -!- mihow has joined. 16:49:00 (also, I had to manually type that quote from the manual, because they've done something to obfuscate copy&paste results from the PDF) 16:53:36 elliott: I think they're being a little bit unclear about what they need their half a million dollars for. 16:54:10 either drugs or antipsychotic medication hth 16:54:17 possibly both 16:54:18 J_Arcane: yes, the manual is quite something 16:54:33 (i guess the latter are also drugs.) 16:54:58 J_Arcane: I've tried to write programs in it 16:55:06 unfortunately I missed the painted whore of an inteface that comes with the kludge 16:55:13 it had some weird alphabetical file navigation system. it was horrible 16:55:21 J_Arcane: I don't think what I get from copy-pasting ("When you star meup, Iwil quickly take over your scen soyu nolnger have tolok athat painted whore ofan iterface tha comes with e kluge") is really any worse. 16:55:23 *interface 16:55:29 elliott: *kluge 16:55:39 oerjan: let's say it's british spelling or something. 16:56:30 http://www.catb.org/jargon/html/K/kluge.html hm 16:56:33 Yeah, it's a bit batty. I wonder if there's any relation between these guys and the HYBRID RPG guy. 16:58:58 well, I like batty. 16:59:05 the language isn't actually interesting, though. 16:59:19 IT just reads like a lower level AppleTalk. 17:00:37 elliott: wow you were right " It now appears that the British, having forgotten the etymology of their own ‘kludge’ when ‘kluge’ crossed the Atlantic, repaid the U.S. by lobbing the ‘kludge’ orthography in the other direction and confusing their American cousins' spelling!" 17:00:59 great 17:01:07 I've always said "kludge", I think. 17:02:26 "Some observers consider this mess appropriate in view of the word's meaning." 17:02:48 I've always used "kludge" too, but I was aware of the controversy. 17:03:13 wait a second, is that 1981 oldsmobile a Delorean? (xkcd) 17:09:04 ok, no. 17:09:48 * int-e checks off "say something stupid on #esoteric" from his to-do list for the day. 17:09:54 i believe those are different brands hth 17:10:42 oerjan: and you'd be right to believe that. 17:11:14 I didn't realise that "Oldsmobile" *was* a brand. 17:11:46 it;'s old 17:11:54 -!- dts|pokeball has joined. 17:12:11 but not too old to be mobile 17:19:46 -!- oerjan has quit (Quit: leaving). 17:22:13 -!- bb010g has quit (Quit: Connection closed for inactivity). 17:37:58 [wiki] [[StaPLe]] http://esolangs.org/w/index.php?diff=41490&oldid=41463 * BCompton * (-17) /* Interpreter */ 17:39:14 -!- GeekDude has joined. 17:55:42 * Gregor bites the head off of a chicken. 17:57:47 uh. 18:00:58 -!- Sprocklem has joined. 18:14:37 -!- MoALTz has joined. 18:16:34 [wiki] [[MNNBFSL]] http://esolangs.org/w/index.php?diff=41491&oldid=41486 * AndoDaan * (+172) /* External resources */ added JavaScript implementation. 18:30:34 hi AndoDaan 18:31:03 Hey, cluid. 18:31:49 i created an esolang 18:31:53 do you wantto see it 18:31:59 Treehugger? 18:32:01 yeah 18:32:25 :) congratulations. I've been tickering on an interpreter for it actually. 18:32:49 realy! 18:33:38 Yeah, javascript (very simular to the mnnbfsl interpreter I just posted). 18:34:45 cool good luck :D 18:35:00 i have posted an interpreter, but I haven't been able to write intereting programs with it yet 18:35:14 Encoding the tree is giving me some problems though. I need to brush up on that kind of data structure. 18:35:37 it is a little difficult since its infinite/unbounded 18:35:47 one way might be to grow the tree as needed 18:35:48 Can BF automatically translated to TH? 18:35:55 yes its easy to translate 18:36:01 just turn < to ^ 18:36:24 since you can see a linear tape as just taking the right branch each time 18:36:46 Hmm. 18:37:04 http://web.cecs.pdx.edu/~sheard/course/Cs163/Graphics/CompleteBinary.jpg 18:37:12 like 18:37:16 A > C > G > ... 18:37:19 would be the brainfuck part 18:37:21 and the rest is just ignored 18:38:05 http://cs.anu.edu.au/~bdm/tree.png this is a better pictures 18:38:17 so you have all this extra space than BF 18:38:22 but it's hard to make good use of it 18:39:20 Is there anything interesting the tree can do, that's otherwise is hard to do in bf? 18:39:51 the main thing is that you easily have as much memory as you choose next to any cell 18:40:02 http://www.sweetandfizzy.com/fractals/index.html http://www.sweetandfizzy.com/fractals/diagrams.html 18:40:12 whereas in brainfuck you would have to make sure you keep space around before starting 18:42:33 http://www.webcitation.org/query?url=http://www.geocities.com/CapeCanaveral/Campus/8446/vid_fractals/index.html&date=2009-10-25+06:34:34 18:42:38 computerless fractals 18:51:12 We were browsing our trip photos on the hotel room TV the other day, and I took a couple of silly feedback photos since I had the camera plugged in and all. 18:51:16 -!- InvalidCo has quit (Ping timeout: 256 seconds). 18:53:06 so can you make fractals like that with no camera at all, just using mirrors 18:53:15 no reason you shouldn't be able to, right? 18:54:02 elliott: I think it works like https://i.imgur.com/Q3aWVGf.gif as they said on another channel. 18:54:21 god, I love that gif 18:54:54 (This was on a course channel for a 3D graphics course that's almost all about raytracing.) 18:56:44 https://www.dropbox.com/l/nw8dddpkXVIYQgOYyDtGQr <- the usual thing 18:58:07 I think the best part of these photos is your wife implicitly facepalming off-screen 18:58:29 "is THIS what they do at GOOGLE" 18:58:57 It wasn't quite like that. But it was a little bit like that. 18:59:34 It looks like an IBNIZ demo. 19:06:07 -!- scounder has quit (Read error: Connection reset by peer). 19:06:46 -!- ais523 has joined. 19:16:45 -!- MDream has quit (Quit: later chat). 19:18:57 -!- Sprocklem has quit (Ping timeout: 264 seconds). 19:22:20 -!- roasted42 has joined. 19:25:09 -!- scounder has joined. 19:27:00 -!- roasted42 has quit (Ping timeout: 258 seconds). 19:41:21 -!- mihow has quit (Quit: mihow). 19:43:21 -!- InvalidCo has joined. 19:48:09 -!- mihow has joined. 20:00:43 -!- Sprocklem has joined. 20:05:09 -!- Patashu has joined. 20:15:38 -!- ais523 has quit (Read error: Connection reset by peer). 20:15:52 -!- ais523 has joined. 20:18:27 -!- InvalidCo has quit (Ping timeout: 250 seconds). 20:25:44 -!- Patashu has quit (Ping timeout: 265 seconds). 20:26:35 -!- dts|pokeball has quit (Ping timeout: 272 seconds). 20:36:15 -!- shikhin has quit (Read error: Connection reset by peer). 20:36:46 -!- shikhin has joined. 20:37:09 -!- shikhin has changed nick to Guest80998. 20:50:06 -!- bb010g has joined. 20:56:06 -!- MoALTz has quit (Quit: Leaving). 21:02:29 [wiki] [[StaPLe]] http://esolangs.org/w/index.php?diff=41492&oldid=41490 * BCompton * (+3) /* Hello World */ Fixed syntax 21:13:26 -!- jedi01 has joined. 21:16:50 -!- InvalidCo has joined. 21:21:06 -!- jedi01 has quit (Quit: Leaving). 21:34:02 -!- MDream has joined. 21:42:24 BS sounds like an amazing language 21:43:49 -!- ais523 has quit (Read error: Connection reset by peer). 21:44:00 -!- ais523 has joined. 21:46:50 -!- callforjudgement has joined. 21:47:08 -!- ais523 has quit (Read error: Connection reset by peer). 21:52:12 Cluid, I guess because TH's binary tree is infinite and because you can only get to those nodes by computing its 'address' ("><>>><><>" or 10110101), that means some nodes will never be reachable." 21:52:42 Right? I could be confusing concepts. 21:53:47 AndoDaan, I think you could write a program that touches each node eventually 21:54:01 just like how you can write a prorgam that prints out every fraction for example 21:54:07 I should try to do this 21:54:13 GeekDude, brainsuck? 21:54:25 https://skillsmatter.com/skillscasts/6088-the-worst-programming-language-ever 21:54:31 BS, the worst programming language ever 21:54:46 haha 21:56:05 you can't because paths are infinite 21:56:10 you can never touch the path 11111... 21:56:24 or the path 01001000100001000001... 21:56:44 paths in an infinite binary tree, i.e. infinite lists of bits, are isomorphic to the reals 21:57:09 -!- callforjudgement has changed nick to ais523. 21:57:10 we're only considering finite paths 21:57:11 Supernatural numbers. 21:57:54 ok, I was just replying to AndoDaan (since it is true that some nodes of the infinite tree will never be reachable) 21:58:09 Or that's what hofstadler called them. 21:58:12 that isn't correct 21:58:24 every node in the tree will have a finite path to it 21:59:57 -!- S1 has joined. 22:00:56 ok, yes, you're right 22:01:06 it would be cooler without that limitation though 22:12:02 elliott: One could construct an infinite binary tree where each node corresponds to a rational number too 22:18:41 [wiki] [[StaPLe]] http://esolangs.org/w/index.php?diff=41493&oldid=41492 * BCompton * (+93) /* Example Programs */ 22:18:49 now that i think about it i'm pretty sure any graph with finitely (or even countably) many edges touching each vertex has a countable number of vertices in each connected component 22:28:01 -!- Sprocklem has quit (Ping timeout: 265 seconds). 22:37:12 -!- CrazyM4n has joined. 22:38:22 [wiki] [[Deadfish]] http://esolangs.org/w/index.php?diff=41494&oldid=41476 * BCompton * (+12) /* External resources */ Dead Link 22:38:28 -!- mihow has quit (Quit: mihow). 22:41:17 -!- S1 has quit (Quit: S1). 22:48:34 -!- roasted42 has joined. 22:51:24 -!- oerjan has joined. 23:00:27 whoa, i just was informed that Gregor is a professor at Waterloo now 23:01:21 so does he have a napoleon hat 23:02:03 also i meant "was just" but english is great it works either way 23:04:19 Phantom_Hoover: So how about those infinite trees corresponding to base-d digit sequences, then? One connected component, each vertex (except the root) has a degree of d+1, yet there's at least ond vertex for each real? 23:05:06 oerjan, I thought of a fun thing to write in Treehugger if youre interesting 23:05:08 interesed 23:05:09 ** 23:05:25 hm he has a tricorn but not a bicorne 23:06:13 O_O 23:06:26 @tell Gregor now that you're in waterloo you need a bicorn hth 23:06:26 Consider it noted. 23:06:46 cluid: are you not familiar with http://choosemyhat.com/ 23:07:08 :D 23:07:09 haha 23:07:54 also, i don't think treehugger is quite my thing, although i _did_ implement V way back 23:08:03 V? 23:08:09 oh yeah 23:08:13 BTW it's cool you should like it 23:08:41 its like brainfuck 23:08:52 i mean, the thing that interested me about V was its weird operations and Treehugger is less weird... 23:09:00 alright 23:09:14 il read about V more 23:09:20 i don't think i was particularly interested in _programming_ V, once it became clear how to translate bf to it 23:10:03 V seems a bit like a sort of rubiks cube type problem 23:12:04 hah in that case you should look at Jolverine 23:13:23 -!- roasted42 has quit (Ping timeout: 245 seconds). 23:14:39 -!- roasted42 has joined. 23:15:15 I think this treehugger problem is really interesting 23:16:59 Phantom_Hoover: (Or I guess scratch that, there's just a path for each real. Bah.) 23:17:29 it's so easy in brainfuck, but really hard in treehugger -that's funny bceause it was designed the opposite way 23:18:10 wait isn't brainfuck trivially translatatble to treehugger 23:18:28 yes 23:19:07 *-t 23:19:46 ok what kind of problem can it be then 23:20:20 it'd need to be something aware of its implementation language 23:20:25 yes thats right 23:20:38 its not a self interpreter though 23:21:03 and a quine wouldn't be hard to modify slightly for different commands 23:21:25 I could give a hint in the form of a BF program 23:21:29 not that a quine is "so easy" in brainfuck 23:21:49 it's not theoretically hard, but it's messy 23:22:54 so i guess i am curious what the problem is, no promises though 23:23:17 +[>+] 23:23:36 ok that's an infinite loop 23:23:38 oh hm 23:23:43 let me gues 23:23:46 *guess 23:23:57 you want something that touches every cell in the tree 23:24:13 yeah! 23:24:26 hm that's essentially labyrinth code isn't it 23:24:34 I think this is even tricky for double sided brainfuck 23:24:47 ah i see how to do it for that just push 1's out 23:24:49 I think it should be quite easy 23:25:00 because basically the trailed 1s give you a path 23:25:14 elliott, I would appreciate an implementation! I'm trying myself too but I think you would be able to tdo it quicker 23:25:20 elliott: the problem is not going off on an infinite path and never coming back 23:25:34 oerjan: how could you? the tree starts as all 0s 23:25:46 maybe you would need a counter in the cells or something... 23:26:08 wait do you have to fill the nodes *above* you too 23:26:11 since there is no root 23:26:16 obviously 23:26:25 i don't think that makes it much harder though... 23:26:27 that sounds trickier, I was thinking just all the children of the initial cell 23:26:47 you just need to consider the starting cell the root 23:26:47 okay it's just non-trivial I was wrong to think it's easy 23:26:58 Phantom_Hoover: So how about those infinite trees corresponding to base-d digit sequences, then? One connected component, each vertex (except the root) has a degree of d+1, yet there's at least ond vertex for each real? 23:27:09 oerjan: okay, yeah. 23:27:16 do cells have limited range, I forget 23:27:18 vertices corresponding to infinite sequences don't connect to anything 23:27:33 for the sake of this program ets say cells can hold Integer (unbounded) 23:27:44 Phantom_Hoover: See also the other message. 23:29:27 bah i think it's more interesting if they're bounded :P 23:29:52 are you sure you can't get away with Bool cells 23:30:06 ouch 23:30:24 possible? probably. but seriously awkward. 23:32:37 you'd want to store the direction to the root, at least 23:34:38 -!- roasted42 has quit (Ping timeout: 258 seconds). 23:35:13 it should be possible to visit the cells in an outgoing spiral, essentially 23:35:49 oh hm 23:36:06 one bit _is_ enough for the direction to the root 23:36:15 -!- roasted42 has joined. 23:36:25 assuming you know where you are coming from 23:36:43 -!- TodPunk has quit (Ping timeout: 245 seconds). 23:37:54 ...problem is, not for telling you when you've actually _reached_ it. 23:38:25 however, you could probably store extra bits in side branches 23:41:08 so hm on the path downwards to the root, a bit tells you what is the direction to the root, although the _other_ direction gives you a bit that tells if you're already there. 23:42:27 as you go downward, you change the cells you are passing through to tell you the direction upwards instead. 23:42:45 like a zipper inside the actual structure you're navigating 23:44:13 -!- callforjudgement has joined. 23:44:33 -!- Sprocklem has joined. 23:47:00 oerjan: there's an easy 3rd place up for grabs in an ancient endless problem: http://golf.shinh.org/p.rb?ASCII+from+0x01+to+0x7f 23:47:37 -!- MDream has changed nick to MDude. 23:47:59 so how should I actually write this...h m....... 23:47:59 -!- ais523 has quit (Ping timeout: 272 seconds). 23:48:06 [wiki] [[Treehugger]] http://esolangs.org/w/index.php?diff=41495&oldid=41452 * Oerjan * (+27) clarify infinity is rootless 23:48:06 also I'm not really sure how to test it 23:48:39 -!- TodPunk has joined. 23:48:43 oerjan, thanks for the edit! 'upwards' might be misleading though? 23:49:02 the program ^ is similar to < in brainfuck.. you crash beacuse of going off the tape 23:49:19 cluid: oh. then i've completely misunderstood. 23:49:24 and so have others, i think. 23:49:28 -!- poq has joined. 23:49:39 -!- poq has left. 23:49:47 [wiki] [[Treehugger]] http://esolangs.org/w/index.php?diff=41496&oldid=41495 * Oerjan * (-17) it wasn't to be 23:50:04 that definitely changes what the space-filling program needs to do 23:50:08 elliott: ^ 23:50:27 cluid: huh, didn't you say the tree was unrooted? 23:50:28 THERE WAS A ROOT 23:50:32 so that you can go up forever 23:50:33 http://esolangs.org/wiki/Treehugger/Implementation 23:50:43 zero there is the initial tape 23:51:08 that is a shame, I liked the idea of it spanning infinitely like that 23:51:35 I see what you mean about up 23:51:56 that sounds hard to do you define that as Treehugger++ or something 23:52:08 treehuger+=aleph_0 23:52:10 gg 23:52:16 oerjan: do you need to store the direction to the root? 23:52:24 cluid: V did that. although you then have to decide whether up is rightward of leftward 23:52:38 my thinking was that you'd arrange so that [^] gets you to the root or such 23:52:45 of course it's not as simple as that 23:52:50 elliott: all i said was based on the idea of it being unrooted 23:52:57 right 23:53:05 should be simpler without that 23:53:06 oh, I see, because that way you might have to go *down* to the root 23:53:10 indeed 23:54:03 actually 23:54:10 if you have the root be 0 how can you fill every cell 23:54:11 >_< 23:54:13 i have been thinking that if you wanted to a _really_ unrooted tree like this, you'd not want up to special, instead you'd just do "turn left", "turn right", and "go back where you came from" 23:54:18 *to do 23:54:18 btw I am very pleased with using a zipper in this code 23:54:28 okay the root isn't any less filled than the infinite number of cells below you but it feels weird 23:54:28 it's called Z there 23:54:45 elliott: heh that is a point 23:55:08 you cannot fill arbitrary many levels down with non-zeros. or can you? 23:55:16 why not? 23:55:28 you could always flip the root to filled for one cycle when you got up there 23:55:30 i mean while keeping the root non-zero as well 23:55:38 then you could have nice freeze frames 23:55:54 also my idea didn't intend to fill everything simultaneously 23:55:55 see I assumed it was filling every cell below the one you start on, and that you could go up forever 23:56:02 so in that case [^] does put you to the root. 23:56:06 *move you 23:56:09 which i guess doesn 23:56:10 -!- roasted42 has quit (Ping timeout: 264 seconds). 23:56:20 't fit the analogy with +[>+] 23:56:21 that turning idea is nice for my generalised graph brainfuck idea I think 23:56:36 I thought of Gridfuck 23:56:40 it has <^>v 23:56:42 four directions 23:56:54 http://esolangs.org/wiki/Gridfuck 23:56:56 it doesn't exist! 23:57:13 you'd have "focus previous/next edge", "follow edge (making you face back the way you came)", there is one edge for every integer, the initial state is one zero cell looped to itself an infinite number of times 23:57:41 plus a (...) construct that means "reassign this edge to the cell we end up at", or something 23:57:49 and then a control structure less powerful than [] so you're forced to program with the graph 23:58:04 oh plus a "connect a new cell to this edge" instruction. 23:58:14 (maybe it'd be better if you got an infinite number of cells to start with so you could omit that) 23:58:15 gridfuck ha sloops, but treehugger is just a tree 23:58:42 "so you're forced to program with the graph" <- that is cool! 23:58:46 well anyway this would be impossible to program in because nobody can visualise graphs like this except mathematicians too good to care about esolangs