←2016-10-22 2016-10-23 2016-10-24→ ↑2016 ↑all
00:04:52 -!- DHeadshot has quit (Ping timeout: 260 seconds).
00:06:52 -!- augur has quit (Quit: Leaving...).
00:11:08 -!- moony has joined.
00:13:20 -!- News has quit (Ping timeout: 260 seconds).
00:22:08 -!- otherbot has quit (Quit: Restart requested by jeffl35: irc framework had a bug, uh oh).
00:22:26 -!- otherbot has joined.
00:22:42 <godel> hello
00:22:49 <boily> `relcome godel
00:22:51 <godel> can I ask what do you think about my language?
00:22:54 <godel> https://github.com/gciruelos/quiver
00:22:54 <HackEgo> godel: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
00:23:57 <boily> I like the language. it feels zucchinesque.
00:24:27 <godel> zucchinii is a language?
00:24:33 <wob_jonas> what does zucchiniesque even mean?
00:25:28 <godel> oh cool
00:25:40 <godel> I'm reading, programs are graphs too
00:25:44 <godel> but the idea is different
00:26:57 <Zarutian> godel: this is news to you?
00:27:38 <godel> what?
00:27:50 <godel> I'm not very involved in the esolang community
00:28:27 <boily> wob_jonas: wob_jellonas. it's like auberginy languages, that one is zucchinesque hth
00:29:29 <Zarutian> godel: no in general. That programs are Directed Graphs. You never seen a flowchart of a program?
00:34:16 -!- moony has quit (Ping timeout: 260 seconds).
00:36:44 * Zarutian is somewhat proud to have made an dual stack machine variant that has only one primitive branch instruction, no add or other such ALU instructions.
00:42:48 -!- iovoid has quit (Excess Flood).
00:43:01 -!- alercah has quit (Quit: Lost terminal).
00:43:10 <wob_jonas> Wait, is she actually trying to shake hands in http://www.questionablecontent.net/view.php?comic=528 ? Early Hannelore is out of character.
00:44:34 -!- iovoid has joined.
00:51:13 <izalove> demand a full refund
00:54:16 <godel> Zarutian: well yes
00:56:33 -!- imode has joined.
01:00:58 -!- iovoid has quit (Quit: Iovoid has quit!).
01:02:06 -!- iovoid has joined.
01:17:04 -!- Zarutian has quit (Quit: Zarutian).
01:25:23 <oerjan> `? peer gynt
01:25:23 <HackEgo> peer gynt? ¯\(°​_o)/¯
01:25:31 <oerjan> `? peer
01:25:33 <HackEgo> Peer Gynt is a famous norwegian troll. His reviews are in high demand, but nowadays he amuses himself by resetting people's irc connections.
01:26:01 <oerjan> boily: the lack of capitalization there was sort of intentional, to match the irc error.
01:26:32 <oerjan> also you forgot norwegian, you wile francophone
01:27:00 <oerjan> `slwd peer//s/no/No/
01:27:02 <HackEgo> wisdom/peer//Peer Gynt is a famous Norwegian troll. His reviews are in high demand, but nowadays he amuses himself by resetting people's irc connections.
01:27:33 <boily> capitalizing languages is weird hth
01:27:42 <oerjan> (well, technically norwegian doesn't do it either)
01:28:05 <oerjan> s/.*es/english/
01:29:13 -!- iovoid has quit (Remote host closed the connection).
01:29:33 <boily> English is the universal weirdness we make sense with.
01:29:54 <wob_jonas> no I don't make sense
01:30:22 <oerjan> german otoh doesn't capitalize the word for norwegian, but does capitalize the word for language hth
01:30:37 -!- iovoid has joined.
01:31:01 <myname> which makes perfect sense
01:31:09 <oerjan> to germans, yes
01:31:22 <myname> which i am :p
01:32:13 <oerjan> schockierend
01:32:22 <boily> outragé
01:32:24 <myname> gar nicht
01:33:13 <oerjan> wow outragé is genuine
01:34:17 <oerjan> oh outrage isn't from out+rage at all
01:34:29 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
01:34:43 <oerjan> "From Middle English and Old French oltrage ‎(“excess”), from Late Latin *ultragium or *ultraticum ("a going beyond") and from Latin ultra ‎(“beyond”); rather than from out and rage."
01:37:17 <boily> of course it's genuine. for whom do you take me for, tsé :P
01:47:44 <boily> . o O ( what is that hideous cacophony that appeared in the wisdom... )
01:48:08 <oerjan> which one?
01:51:54 <boily> `` ls wisdom/*cacophony*
01:51:55 <HackEgo> wisdom/the most hideous cacophony in g minor
01:52:01 <boily> ↑ this one.
01:52:12 <boily> it's also refered in at least one another entry...
01:52:16 <boily> `? music
01:52:17 <HackEgo> The result was a short burst of the most hideous cacophony in G minor.
01:52:25 <boily> ↑ that one too, apparently.
01:56:42 <boily> `unidecode 🀤
01:56:43 <HackEgo> ​[U+1F024 MAHJONG TILE BAMBOO]
01:57:07 * boily sighs in latexasperation...
01:57:16 <imode> iovoid: hey, I saw your VoidLang page on the wiki. using your language, how would you form an if-else construct?
02:08:17 <hppavilion[1]> Hm, my Viginere implementation returns incorrect output when the keychar and msgchar are the same
02:08:26 <hppavilion[1]> `unidecode
02:08:27 <HackEgo> ​[U+0020 SPACE]
02:08:29 <hppavilion[1]> Hm
02:08:45 <hppavilion[1]> It might just be an issue with the IDE
02:10:07 <hppavilion[1]> But, like, here's an example: I am the dark lord santacus, and have come to devour your children. => R?u{+<CTCP>q 4rlt? }}q)u|nl:+nwvln?w}xr).or +x.nurx p{7 => I am the dark ord santacus, and have come to devou your childen.
02:10:12 <hppavilion[1]> (keyword used was "walrus")
02:14:00 <zzo38> It is using the control characters ^L and ^R instead of the proper "l" and "r" in a few cases, it look like to me?
02:14:13 <boily> is it feasible to write poetry shorter than haiku?
02:14:44 <myname> define poetry and shorter
02:15:32 <oerjan> boily: oh. the cacophony one was a douglas adams reference hth
02:15:59 <boily> poetry: congealed poet juice on a slice of paper.
02:16:30 <boily> shorter: that which shorts electrical circuits.
02:16:36 <boily> oerjan: tdh.
02:16:48 <myname> well, in this case "hello world" is shorter poetry
02:17:53 <boily> shocking.
02:20:05 <oerjan> hppavilion[1]: so, an off by 96 error? >:)
02:21:31 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
02:21:42 * oerjan seems to have started trying to solve tatham's Loopy puzzle by only removing lines instead of marking them (except at the end to check the solution)
02:24:27 <oerjan> this is working surprisingly well. but may have some error correcting problems.
02:30:47 -!- hppavilion[1] has joined.
02:33:12 <hppavilion[1]> Simple Cyphers: Block Reverse, Block Shift
02:33:54 <boily> `` rm wisdom/xkcd\ \(*
02:33:56 <HackEgo> No output.
02:33:59 <hppavilion[1]> Bah!
02:34:10 <hppavilion[1]> `? xkcd
02:34:11 <HackEgo> xkcd ([ɪkskɑsede]) is a webcomic that updates every M/W/F.
02:34:22 <oerjan> what was that
02:34:27 <oerjan> `before
02:34:29 <HackEgo> wisdom/xkcd ([ɪkskɑsede]) is a webcomic that updates every m//W/F.
02:34:37 <oerjan> oh right
02:34:58 * boily can't learn.
02:35:55 <hppavilion[1]> Block Reverse: Key is a positive natural n; works by dividing message into n-length chunks (currently having a problem in deciding what to do when len(msg) % n != 0), reverse each chunk, join the message back together
02:36:09 <oerjan> it has been suggested making two /'s mandatory even with `le/rn
02:36:21 <hppavilion[1]> (decrypt is an identical algorithm)
02:36:43 <oerjan> since many of the mixups are now essentially about that
02:37:22 <hppavilion[1]> Block Shift: Key is a positive natural n, works by dividing message into n-length chunks (ditto problem), rotating each chunk by n, rejoining
02:37:31 <hppavilion[1]> (decrypt is the same but with reversed rotation)
02:38:36 <myname> both of them are stupid and in both of them it wouldn't be a problem if the last segment is shorter
02:39:07 <myname> also, shifting an n long block by n is basically a nop
02:39:42 <hppavilion[1]> myname: Oh, I explained it wrong
02:40:06 <hppavilion[1]> I mixed it up in my head
02:40:40 <hppavilion[1]> myname: I meant that it has two keys- positive integer n, integer k, it divides into n-length chunks, rotates each by k, and rejoins
02:40:42 <hppavilion[1]> My mistake
02:41:33 <myname> you can break both of them in seconds
02:41:39 <hppavilion[1]> myname: Well yeah
02:42:31 <hppavilion[1]> myname: It's not to be used on its own except against particularly dull human decypherers and as an educational tool
02:43:17 <hppavilion[1]> (And it can be done efficiently by hand, so...)
02:43:38 <myname> the only way they would somehow make any encryption better by combining is if you are doing security through obscurity
02:43:53 <hppavilion[1]> Full reverse (no key): Reverse entire message (pretty shit even by these standards); Full shift: key is integer k, rotate the entire message by k spaces (potentially even worse)
02:43:58 <myname> which is not a good idea in almost any case
02:44:03 <hppavilion[1]> myname: True, true
02:47:17 <hppavilion[1]> myname: Though technically, security through obscurity doesn't violate the word of Kerckhoff's principle
02:47:40 -!- ais523 has quit.
02:47:52 <myname> how so
02:48:11 <hppavilion[1]> myname: "A cryptosystem should be secure even if everything about the system, except the key, is public knowledge" doesn't mean that you have to voluntarily MAKE the knowledge public
02:48:36 <hppavilion[1]> The NSA's cyphers are (in theory) cryptographically secure, but also secret as an extra layer of security
02:49:09 <myname> the point is, most people can't do crypto
02:49:23 <zzo38> That is correct but the algorithm should be public if it is to be used by many people or programs or whatever, rather than just a single private communication between only two people.
02:49:26 <myname> we had rfid keys here, based on mifare classic
02:49:42 <myname> mifare decided to make its own crypto, called crypto1
02:49:56 <myname> it has a c implementation nowadays, called crapto1
02:50:23 <myname> i am sure you get why it has this name
02:50:31 <boily> `unidecode 🐚
02:50:36 <HackEgo> U+1F41A SPIRAL SHELL \ UTF-8: f0 9f 90 9a UTF-16BE: d83ddc1a Decimal: &#128026; \ 🐚 \ Category: So (Symbol, Other) \ Bidi: ON (Other Neutrals)
02:50:41 <myname> at one point, we could make a key to open every door
02:51:02 <hppavilion[1]> Of course, this does mean that almost the only people who will be trying to find flaws will be malicious hackers; publishing it gives genuine, benevolent academics the opportunity to say "yep, this is good" or "hey, if you just give it the key \'admin password\' it cracks automatically", thus preventing you from using an insecure system
02:51:48 <hppavilion[1]> myname: None of these cyphers are meant to be used for proper over-the-internet security anyway
02:51:48 <boily> ♪ DING ♪ wisdom PDF updated!*
02:51:54 <hppavilion[1]> boily: Yaywhere
02:52:00 <hppavilion[1]> Use PGP and RSA and such for that.
02:52:13 <boily> hppavellon[1]. what's a yaywhere?
02:52:38 <hppavilion[1]> boily: It's a type of knapbeast
03:09:04 <zzo38> GURPS rules says that you are allowed to define the same person as being both your dependent and your ally. But can you define the same person to be both your dependent and your enemy?
03:12:30 -!- boily has quit (Quit: DISC CHICKEN).
03:12:56 <imode> @ask iovoid how would you creae an if-else construct in VoidLang? very interested.
03:12:57 <lambdabot> Consider it noted.
03:13:10 <iovoid> imode, well you could use the if-first-item-is-0-break-loop thing
03:13:10 <iovoid> Like code[?dothingsiffirst-item-is-0]do-other-things
03:14:04 <iovoid> My current implementation in NodeJS doesnt support multiple loops, but I will improve it when I find a good way to do that
03:14:36 <imode> right, you can use loops as conditionals. my issue is how would you continue control flow after the "else" clause...
03:14:39 <imode> like.
03:15:15 <imode> if(tos == 5){push 5;}else{push 6;}push 7;
03:16:36 <imode> so if I use [?<code>]<other_code>, the <other_code> will always be executed.
03:17:37 -!- hppavilion[1] has quit (Ping timeout: 276 seconds).
03:20:13 <imode> reason I ask is because I have a language that uses a similar looping construct, and you can construct conditional blocks using [,:?<code_if_true>;]
03:20:15 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
03:20:35 <imode> but I don't really have a clean way of producing an "else".
03:21:26 <imode> reason being, for an "else" you'd have to either check the negation of the condition you've already checked during the first 'if'...
03:21:46 <imode> and in order to do that you'll have to step over the potential stack effects earlier or push a flag noting the condition.
03:21:58 <imode> so you could do it..
03:23:23 <myname> don't you have like the same problem with bf?
03:23:31 <imode> just about.
03:23:37 <imode> different loop construct though.
03:23:48 <myname> i'd say make a "global" variable that is checked on else
03:24:01 <imode> try that with a nested conditional. :\
03:24:10 <imode> [,:? <if> ,0;] [? <else> ;] is a partial solution.
03:24:33 <imode> the else clause checks for 0 on the top of the stack.
03:24:43 <myname> you don't need nested conditionals to be tc
03:24:56 <imode> the goal isn't to be only tc.
03:25:16 <imode> if that were the case, then I'd be writing just another brainfuck clone. I'm not. :P
03:44:47 <FreeFull> How about an esoteric language that is actually just C
03:45:01 <FreeFull> No real differences
03:45:18 * pecan . o O ( C but with APL-style unicode syntax )
03:47:45 <oerjan> `? segmentation fault
03:47:48 <HackEgo> ​ The segmentation fault can be found just of the Silicon Valley and is known to produce various hiccups at the most inconvienent times.
03:47:57 -!- hppavilion[1] has joined.
03:47:57 <oerjan> `? segfault
03:47:58 <HackEgo> segfault? ¯\(°​_o)/¯
03:48:34 <hppavilion[1]> A student asks is professor "Professor, where is the best place to research emergent behavior online", and the professor says "Well, you open your browser, go to the search bar, and type literally anything".
03:49:10 <hppavilion[1]> oerjan: How's the lawn going btw
03:49:30 <oerjan> needs more moon repellant hth
03:49:32 <hppavilion[1]> `rw ==
03:49:34 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: rw: not found
03:49:35 <hppavilion[1]> :(
03:49:41 <hppavilion[1]> `rm wisdom/==
03:49:42 <HackEgo> No output.
03:49:46 <oerjan> `before
03:49:48 <HackEgo> wisdom/==//Did you know you can define == recursively!?
03:50:00 <oerjan> `cwlprits ==
03:50:02 <HackEgo> hppavilion[1̈] fizzïe evilips̈e hppavilion[1̈] oerjän zui438̈s
03:50:14 <oerjan> `howg ==
03:50:17 <HackEgo> ​<hppavilion[1̈]> rm wisdom/== \ <fizzïe> revert 942e964c81c1 \ <evilips̈e> ` chmod 777 / -R \ <hppavilion[1̈]> le/rn ==/Did you know you can define == recursively!? \ <oerjän> revert 4969 \ <zui438̈s> echo \\r\\n\\t\\0\\0\\0 > wisdom//./==
03:50:35 <oerjan> fancy
03:50:42 <FreeFull> cwlprits?
03:50:58 <FreeFull> Who named that command?
03:51:15 <oerjan> i may have done so
03:51:41 <oerjan> `culprits bin/cwlprits
03:51:43 <HackEgo> fizzïe jeffl3̈5 shachäf
03:51:49 <oerjan> hm nope, was shachaf
03:51:55 <oerjan> `hoag bin/cwlprits
03:51:57 <HackEgo> ​<fizzïe> revert 58b9ee8f97a7 \ <jeffl3̈5> ` rm --no-preserve-root -rfv / # testing, plz no ban \ <shachäf> mkx bin/cwlprits//culprits "wisdom/$1"
03:52:27 <hppavilion[1]> Woooow
03:52:29 <hppavilion[1]> I just found http://www.robertecker.com/hp/research/leet-converter.php?lang=en
03:52:34 <hppavilion[1]> And it's terrible
03:52:53 <oerjan> hppavilion[1]: `rw doesn't exist because it's redundant with `forget hth
03:52:58 <hppavilion[1]> Oooooh
03:53:06 <hppavilion[1]> It leeterally just decoded '1337' to 'ieet'
03:53:30 <oerjan> @leet fancy
03:53:30 <lambdabot> F4n(Y
03:53:54 <FreeFull> hppavilion[1]: Lol
03:54:07 <hppavilion[1]> `? 1337
03:54:08 <HackEgo> 1337 15 50 905
03:54:18 <hppavilion[1]> I can't figure out 9
03:54:33 <hppavilion[1]> I feel like it should be 'g', but 'gos' means nothing to me
03:54:35 <FreeFull> hppavilion[1]: It decodes 1 as l if you switch it into advanced leet
03:54:39 <hppavilion[1]> But it's probably a pun'
03:55:15 <FreeFull> For some reason it does braille and stuff too
03:55:26 <hppavilion[1]> Yeah
03:55:53 <hppavilion[1]> Of course, truee programmers can only speak in 0x539
03:55:55 <hppavilion[1]> *true
03:56:16 <FreeFull> 48656c6c6f2c202365736f7465726963
03:56:37 <oerjan> hppavilion[1]: i think i made that i don't remember if it means anything hth
03:56:47 <oerjan> `cwlprits 1337
03:56:49 <HackEgo> fizzïe evilips̈e oerjän
03:56:55 <oerjan> *+and
03:57:02 <FreeFull> 1337 must have been quite the year
03:57:34 <FreeFull> The Chinese famine ended
03:58:21 <oerjan> had the black death started yet?
03:58:43 <FreeFull> No, that was 1346
03:59:02 <FreeFull> Oh, I guess 1346 is when it started peaking, so maybe
04:00:25 <FreeFull> "Nestorian graves dating to 1338–1339 near Lake Issyk Kul in Kyrgyzstan have inscriptions referring to plague and are thought by many epidemiologists to mark the outbreak of the epidemic"
04:00:29 <hppavilion[1]> FreeFull: The Qinese famine ended because it doesn't count as starving if you die from the black death hth
04:01:38 <FreeFull> hppavilion[1]: Also as people die, there are fewer people to eat the remaining food
04:01:49 <hppavilion[1]> FreeFull: Yes, that's true as well
04:03:30 * oerjan wonders how the poles managed to avoid it
04:03:53 <FreeFull> oerjan: What, the Chinese famine?
04:04:12 <oerjan> this picture https://en.wikipedia.org/wiki/Black_Death
04:04:29 <oerjan> a big polish patch never got red
04:04:31 <FreeFull> Black Polish magic
04:04:37 <oerjan> iceland is easier to understand
04:04:54 <FreeFull> "The plague was somewhat less common in parts of Europe that had smaller trade relations with their neighbours, including the Kingdom of Poland, the majority of the Basque Country, isolated parts of Belgium and the Netherlands, and isolated alpine villages throughout the continent."
04:04:59 <FreeFull> Less movement of people, it seems
04:05:21 <oerjan> i guess that still leaves milan
04:05:40 <hppavilion[1]> oerjan: They had been visiting Stockholm and didn't want to leave; they died with the rest of the Stockholmers
04:05:53 <oerjan> OKAY
04:06:00 <hppavilion[1]> (Stockholmits? Stockholmians? Stockholmosexuals?)
04:06:21 <imode> cool! [ <condition> ;] [,:?. <if> ,~;] [~? <else> ;]
04:06:28 <hppavilion[1]> imode: wat?
04:06:39 <imode> hppavilion[1]: just made an "if-else" in my language.
04:06:44 <imode> been thinking about it all day.
04:06:56 <hppavilion[1]> imode: What is the language like?
04:07:11 <hppavilion[1]> Did you implement it in the compiler or is it somehow implemented?
04:07:22 <imode> stack-based. no direct jumps. compiler/interpreter is partially implemented.
04:07:34 <imode> 32 commands.
04:08:25 <imode> includes function definitions, conditionals, arbitrary-base numbers... etc.
04:08:50 <FreeFull> There's no reason why a plague like that couldn't happen, other than increased hygiene and such
04:09:37 <imode> all single-character commands. it's quite fun to write in. easy to write down in a notebook, on paper...
04:10:04 -!- Moony has joined.
04:10:50 -!- Moony has changed nick to Guest93629.
04:13:21 <imode> http://pastebin.com/dp21tvWU
04:21:47 <hppavilion[1]> I think I might've just broken the record for 'weirdest cryptographic test string'
04:21:57 <hppavilion[1]> I used: "I am the dark lord santacus, and have come to devour your children. Bow before my unholy wrath, or be consumed with your offspring. And remember kids: He who fights monsters should be careful, lest he become a monster himself; and when you gaze long into an abyss, the abyss may gaze into you."
04:29:28 -!- Kaynato has quit (Ping timeout: 260 seconds).
04:31:07 -!- Kaynato has joined.
04:31:46 <FireFly> FreeFull: I guess that is a good thing about famines, that they tend to solve themselves over time
04:35:32 -!- Kaynato has quit (Ping timeout: 260 seconds).
04:39:45 <hppavilion[1]> `? handout 1
04:39:46 <HackEgo> handout 1? ¯\(°​_o)/¯
04:39:50 <hppavilion[1]> `? page 17
04:39:51 <HackEgo> page 17? ¯\(°​_o)/¯
04:39:53 <hppavilion[1]> `? adventure
04:39:54 <HackEgo> You're in a 20 foot by 20 foot stone room. A stout oaken door banded with iron affords the only visible egress. As you approach the door, an imp appears. "Hello, INSERT NAME. To pass, you must solve my puzzle. SEE HANDOUT 1 ON PAGE 17."
04:40:02 <hppavilion[1]> I kind of want to see `? adventure expanded
04:40:18 <hppavilion[1]> Maybe create the adventure/ directory?
04:41:29 <oerjan> `cwlprits adventure
04:41:30 <HackEgo> fizzïe evilips̈e b_jonäs
04:42:18 <oerjan> hppavilion[1]: it's a quote from this http://www.irregularwebcomic.net/984.html
04:42:28 <hppavilion[1]> Oh?
04:44:58 <oerjan> `slwd segmentation fault//s/can be found/is/
04:45:00 <HackEgo> wisdom/segmentation fault// The segmentation fault is just of the Silicon Valley and is known to produce various hiccups at the most inconvienent times.
04:45:08 <oerjan> hmph
04:46:04 <shachaf> `cwlprits segementation ault
04:46:07 <HackEgo> No output.
04:46:07 <oerjan> `slwd segmentation fault//s/ //
04:46:09 <HackEgo> wisdom/segmentation fault//The segmentation fault is just of the Silicon Valley and is known to produce various hiccups at the most inconvienent times.
04:46:13 <shachaf> `cwlprits segementation fault
04:46:15 <HackEgo> No output.
04:46:31 <oerjan> shachaf: have you considered copying and pasting twh hth
04:46:54 <shachaf> oerjan: oops widdnh
04:46:56 <shachaf> `cwlprits segmentation fault
04:46:58 <HackEgo> oerjän oerjän Zarutiän
04:48:01 <oerjan> `cat bin/slashlearn
04:48:01 <HackEgo> sep="/"; [[ "$0" == *//* ]] && sep="//"; [[ "$1" == ?*"$sep"* ]] || exit 1; key="$(echo "${1%%$sep*}" | lowercase)"; value="${1#*$sep}"; [ -e "wisdom/$key" ] && verb="Relearned" || verb="Learned"; echo "$value" > "$(echo-p "wisdom/$key")" && echo "$verb '$key': $value"
04:48:50 <oerjan> it feels so crude to drop a sed into that.
04:49:21 <oerjan> but i'm at the point where i just want to chop [ /]* off the start of value.
04:49:36 <shachaf> just fail if it starts with a space
04:49:54 <shachaf> that way people can feel bad for violating arbitrary rules they didn't know about
04:49:57 <oerjan> well the thing is i'm not good enough with shell to do that.
04:50:21 <oerjan> `? le/rn
04:50:22 <HackEgo> le/rn? ¯\(°​_o)/¯
04:50:30 <oerjan> `? le//rn
04:50:31 <HackEgo> le//rn? ¯\(°​_o)/¯
04:50:34 <shachaf> `cwlprits le/rn
04:50:35 <HackEgo> fizzïe evilips̈e shachäf shachäf
04:50:36 <oerjan> `? slashlearn
04:50:37 <HackEgo> slashlearn? ¯\(°​_o)/¯
04:50:48 <shachaf> `` dowg le/rn | tac
04:50:50 <HackEgo> 2015-06-07 <shachäf> ` rm wisdom/le; mkdir wisdom/le; echo \'le/rn makes creating wisdom entries manually a thing of the past\' > wisdom/le/rn \ 2015-06-07 <shachäf> ` sed -i \'s/$/./\' wisdom/le/rn \ 2016-09-25 <evilips̈e> ` chmod 777 / -R \ 2016-09-25 <fizzïe> revert 942e964c81c1
04:50:58 <shachaf> reversed dowg ought to exist
04:51:08 <oerjan> i've considered it.
04:51:36 <oerjan> you know, i think maybe that's my fault.
04:51:40 <oerjan> `cat bin/?
04:51:41 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed "s/noo\+dl/nooodl/;s/ *$//;s,\(\(..\?\)\?/\)*,,") \ topic1=$(echo "$topic" | sed "s/s$//") \ cd wisdom \ if [ \( "_$topic1"_ = "_ngevd"_ \) -a \( -e ngevd \) ]; \ then cat /dev/urandom; \ elif [ -e "$topic" ]; \ then cat "$topic" | rnooodl; \ elif [ -e "$topic1" ]; \ then cat
04:51:47 <shachaf> also a version of dowg that filters out evilips̈e and 942e964c81c1
04:52:35 <oerjan> `before bin/?
04:52:39 <HackEgo> bin/?//#!/bin/bash \ topic=$(echo "$1" | lowercase | sed "s/noo\+dl/nooodl/;s/ *$//") \ topic1=$(echo "$topic" | sed "s/s$//") \ cd wisdom \ if [ \( "_$topic1"_ = "_ngevd"_ \) -a \( -e ngevd \) ]; \ then cat /dev/urandom; \ elif [ -e "$topic" ]; \ then cat "$topic" | rnooodl; \ elif [ -e "$topic1" ]; \ then cat "$topic1" | rnooo
04:53:21 <shachaf> `now bin/?
04:53:24 <HackEgo> bin/?//#!/bin/bash \ topic=$(echo "$1" | lowercase | sed "s/noo\+dl/nooodl/;s/ *$//;s,\(\(..\?\)\?/\)*,,") \ topic1=$(echo "$topic" | sed "s/s$//") \ cd wisdom \ if [ \( "_$topic1"_ = "_ngevd"_ \) -a \( -e ngevd \) ]; \ then cat /dev/urandom; \ elif [ -e "$topic" ]; \ then cat "$topic" | rnooodl; \ elif [ -e "$topic1" ]; \ then
04:53:33 <oerjan> `` mkx "`before 'bin/?'`"
04:53:40 <HackEgo> bin/?
04:53:44 <oerjan> ff
04:53:52 -!- otherbot has quit (Remote host closed the connection).
04:53:53 <oerjan> `before bin/?
04:53:56 <HackEgo> bin/?//#!/bin/bash \ topic=$(echo "$1" | lowercase | sed "s/noo\+dl/nooodl/;s/ *$//;s,\(\(..\?\)\?/\)*,,") \ topic1=$(echo "$topic" | sed "s/s$//") \ cd wisdom \ if [ \( "_$topic1"_ = "_ngevd"_ \) -a \( -e ngevd \) ]; \ then cat /dev/urandom; \ elif [ -e "$topic" ]; \ then cat "$topic" | rnooodl; \ elif [ -e "$topic1" ]; \ then
04:53:58 <shachaf> you're pleased with yourself, aren't you
04:54:01 <oerjan> `cat bin/?
04:54:01 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed "s/noo\+dl/nooodl/;s/ *$//") \ topic1=$(echo "$topic" | sed "s/s$//") \ cd wisdom \ if [ \( "_$topic1"_ = "_ngevd"_ \) -a \( -e ngevd \) ]; \ then cat /dev/urandom; \ elif [ -e "$topic" ]; \ then cat "$topic" | rnooodl; \ elif [ -e "$topic1" ]; \ then cat "$topic1" | rnooodl;
04:54:07 -!- otherbot has joined.
04:54:19 <oerjan> shachaf: i guess.
04:54:24 -!- zgrep has left.
04:54:28 <oerjan> `? le/rn
04:54:29 <HackEgo> le/rn makes creating wisdom entries manually a thing of the past.
04:55:49 <shachaf> I meant about the mkx/before combination
04:56:10 <oerjan> i know.
04:56:10 <shachaf> Which is unfortunately not perfect.
04:56:17 <oerjan> why not?
04:56:36 <shachaf> For example, if a file contains \0, the command line is truncated.
04:56:41 <oerjan> OKAY
04:56:50 <oerjan> i don't think this file did hth
04:56:52 <shachaf> (So it won't work for binary files usually.)
04:56:56 <shachaf> And you need to explicitly choose between mk and mkx.
04:57:26 <shachaf> So a per-file revert might be a useful feature.
04:59:33 <oerjan> `` cd bin; for f in doa dow hoa how; do mkx "${f}t//${f}g "'"$@"'" | tac"; done
04:59:36 <HackEgo> doat \ dowt \ hoat \ howt
04:59:58 <oerjan> `doat le/rn
05:00:00 <HackEgo> 2015-06-05 <shachäf> ` mkdir le; ln -s ../bin/learn le/rn \ 2015-06-05 <oerjän> ` rm le/rn; ls -s ../bin/slashlearn le/rn \ 2015-06-05 <shachäf> ` ln -s ../bin/slashlearn le/rn
05:00:10 <oerjan> `dowt le/rn
05:00:11 <HackEgo> 2015-06-07 <shachäf> ` rm wisdom/le; mkdir wisdom/le; echo \'le/rn makes creating wisdom entries manually a thing of the past\' > wisdom/le/rn \ 2015-06-07 <shachäf> ` sed -i \'s/$/./\' wisdom/le/rn \ 2016-09-25 <evilips̈e> ` chmod 777 / -R \ 2016-09-25 <fizzïe> revert 942e964c81c1
05:00:39 <oerjan> hth
05:03:38 <oerjan> `` cd bin; for f in doa dow hoa how; do culprits bin/${f}t; done
05:03:43 <HackEgo> No output.
05:04:00 <oerjan> `` cd bin; for f in doa dow hoa how; do culprits "bin/${f}t"; done
05:04:05 <HackEgo> No output.
05:04:07 <oerjan> hm...
05:04:17 <oerjan> `` for f in doa dow hoa how; do culprits "bin/${f}t"; done
05:04:26 <HackEgo> oerjän \ oerjän \ oerjän \ oerjän
05:04:56 <oerjan> `? hoag
05:04:57 <HackEgo> hoag? ¯\(°​_o)/¯
05:05:03 <oerjan> `? hog
05:05:03 <HackEgo> hog? ¯\(°​_o)/¯
05:05:11 <oerjan> na
05:07:40 <zzo38> `danddreclist 84
05:07:41 <HackEgo> danddreclist 84: shachaf nooodl boily \ http://zzo38computer.org/dnd/recording/level20.tex
05:13:57 <oerjan> @tell zarutian `le/rn does not use a space after the / hth
05:13:57 <lambdabot> Consider it noted.
05:14:08 <oerjan> `? chargeback
05:14:09 <HackEgo> ​ The backside of an Coloumb.
05:14:17 <oerjan> `forget chargeback
05:14:20 <HackEgo> Forget what?
05:18:34 <oerjan> `? isomorphism
05:18:35 <HackEgo> isomorphism is isomorphic to Phantom_Hoover up to isomorphism.
05:18:44 <oerjan> `slwd isomorphism//s/i/I/
05:18:46 <HackEgo> wisdom/isomorphism//Isomorphism is isomorphic to Phantom_Hoover up to isomorphism.
05:18:53 <oerjan> `doat isomorphism
05:18:54 <HackEgo> No output.
05:19:00 <oerjan> `dowt isomorphism
05:19:02 <HackEgo> 2013-05-31 <boil̈y> learn isomorphism is isomorphic to Phantom_Hoover up to isomorphism. \ 2013-07-31 <FreeFul̈l> for x in wisdom/*; do rev "$x" > "$x"a; mv "$x"a "$x"; done \ 2013-07-31 <Bik̈e> revert \ 2014-03-16 <ellioẗt> revert 1 \ 2014-03-16 <oerjän> revert \ 2016-09-25 <evilips̈e> ` chmod 777 / -R \ 2016-09-25 <fizzïe> revert 942e96
05:19:33 <oerjan> `dowg fisdom
05:19:34 <HackEgo> 2016-09-25 <fizzïe> revert 942e964c81c1 \ 2016-09-25 <evilips̈e> ` chmod 777 / -R \ 2015-08-13 <int-̈e> revert accbc9c5c7ec \ 2015-08-12 <ais52̈3> echo wisdom/* | shuf | head -n 10 | xargs rm \ 2015-08-03 <mromän> learn fisdom is the domination by the federal inspection station. \ 2015-08-03 <mromän> learn fisdom is the domination by the f
05:19:55 <oerjan> `slwd fisdom//s/f/F/
05:19:59 <HackEgo> wisdom/fisdom//Fisdom is the domination by the federal inspection station.
05:20:50 <oerjan> `? sand
05:20:52 <HackEgo> Sand is what microprocessors are made of. Taneb invented it.
05:20:58 <oerjan> `? tanebvention
05:21:02 <HackEgo> Tanebventions include automatic squirrel feeders, necessity, Go, submarine jousting, Fueue, the universe, special relativity, metar, weetoflakes, persistence, the BBC, _46bit, progress, sanity, the Oxford comma, and this sentence. See also tanebventions: math. He never invents anything involving sex.
05:21:28 <oerjan> `slwd tanebvention//s/persi/sand, persi/
05:21:31 <HackEgo> wisdom/tanebvention//Tanebventions include automatic squirrel feeders, necessity, Go, submarine jousting, Fueue, the universe, special relativity, metar, weetoflakes, sand, persistence, the BBC, _46bit, progress, sanity, the Oxford comma, and this sentence. See also tanebventions: math. He never invents anything involving sex.
05:21:55 <oerjan> `dowg sand
05:21:56 <HackEgo> 2016-10-22 <segfaul̈t> slwd sand//s/GregorR/Taneb/ \ 2016-09-25 <fizzïe> revert 942e964c81c1 \ 2016-09-25 <evilips̈e> ` chmod 777 / -R \ 2016-03-14 <int-̈e> learn Sand is what microprocessors are made of. GregorR invented it.
05:22:06 <zzo38> I played the Dungeons&Dragons game. I suggested using the properties of some molecules that will be different when mirrored, but another player thinks this mirror does not work at the molecular level.
05:22:17 <oerjan> oh hm
05:24:44 <oerjan> `? grey
05:24:45 <HackEgo> Grey is a common misspelling of Gey
05:24:53 <oerjan> `dowg grey
05:24:54 <HackEgo> 2016-09-25 <fizzïe> revert 942e964c81c1 \ 2016-09-25 <evilips̈e> ` chmod 777 / -R \ 2016-05-31 <hppavilion[1̈]> le/rn Grey/Grey is a common misspelling of Gey
05:24:56 <shachaf> `? gray
05:24:57 <HackEgo> Gray is e common misspalling of grey.
05:25:02 <zzo38> My character looked at the broken mirror and it still worked, and a duplicate of him appeared. That can be an advantage and a disadvantage; one thing it can cause is that now he can handle the shards safely. I did also think of other things to try, such as to see if it duplicates summoned creatures (my character can summon a dove or a raven, but nothing else).
05:25:29 <shachaf> I thought Gray was the Google death ray
05:25:57 <oerjan> `? gey
05:25:58 <HackEgo> I know nothing about Gey, sir.
05:26:06 <oerjan> `dowg gey
05:26:08 <HackEgo> 2016-09-25 <fizzïe> revert 942e964c81c1 \ 2016-09-25 <evilips̈e> ` chmod 777 / -R \ 2016-05-31 <oerjän> le/rn Gey/I know nothing about Gey, sir.
05:26:23 <oerjan> my memory, it is going...
05:51:58 <hppavilion[1]> Trying to figure out the Python IRC library...
05:52:27 -!- esoadventure has joined.
05:52:48 <hppavilion[1]> Yay!
05:52:55 <hppavilion[1]> That part worked!
05:53:01 -!- esoadventure has quit (Read error: Connection reset by peer).
05:55:21 <hppavilion[1]> Huh, a friend of mine has a cat named Isis (after the god; named before the terrorists were a problem)
05:55:29 <hppavilion[1]> She was very confused during the debate
05:58:56 <oerjan> the cat or your friend?
06:00:59 <zzo38> The debate.
06:01:27 <hppavilion[1]> oerjan: The cat. The friend is a dude
06:02:04 * hppavilion[1] . o O ( ^ s/has/is/ )
06:05:09 <oerjan> . o O ( TOO LATE )
06:08:47 -!- advbot has joined.
06:09:00 <hppavilion[1]> walrus
06:09:34 <hppavilion[1]> Hm...
06:09:48 -!- advbot has quit (Read error: Connection reset by peer).
06:10:20 -!- advbot has joined.
06:10:28 <hppavilion[1]> Walrus
06:10:37 <oerjan> Kvalross
06:12:25 -!- advbot has quit (Read error: Connection reset by peer).
06:12:41 <hppavilion[1]> oerjan: It's my test for advbot :P
06:12:43 -!- advbot has joined.
06:12:48 <hppavilion[1]> Kvalross
06:12:54 <hppavilion[1]> Nothing?
06:12:56 <hppavilion[1]> Sadface
06:13:02 -!- advbot has quit (Read error: Connection reset by peer).
06:13:10 <oerjan> Kvifor ikkje
06:13:14 <hppavilion[1]> (This should be being logged)
06:19:59 -!- advbot has joined.
06:20:03 <hppavilion[1]> advbot: Hi
06:21:01 <hppavilion[1]> :/
06:21:05 -!- advbot has quit (Read error: Connection reset by peer).
06:21:58 <shachaf> maybe test your bot in #esoteric-blah twh
06:22:43 <izalove> proposal: there must be a minimum ratio of comments/lines for a software to be called open source
06:23:10 <izalove> i'm not sure exactly what it is but it must be at least 1%
06:23:22 <izalove> what's your take on this?
06:24:30 <izalove> i'm browsing through a repo on github with some very non obvious code and there's no comment at all
06:24:33 <izalove> this is frustrating
06:24:42 -!- advbot has joined.
06:28:23 <zzo38> I think it depends on the code
06:28:39 <izalove> ok
06:28:44 <zzo38> What program is it anyways?
06:29:33 <izalove> https://github.com/skarnet/execline/blob/master/src/libexecline/el_parse.c basically any file in this repo
06:30:48 <zzo38> What line number?
06:31:13 <izalove> any?
06:31:19 <deltab> n > 1
06:32:25 <izalove> and i even tried to do my homework but git blame didn't help at all and neither did git log
06:33:07 <deltab> what are you trying to figure out?
06:33:13 <izalove> i don't know
06:34:35 <izalove> "hey let's look at how execline parses stuff" and there's a huge table of binary data in it
06:34:56 <izalove> imho that doesn't qualify as open source
06:36:38 <pikhq> Eh, it's just an explicit FSM. Quite plausibly manually written.
06:36:51 <izalove> yeah ok
06:37:01 <pikhq> Bit of work figuring out the exact state machine in question, but really not that bad.
06:37:32 <izalove> if you don't count the /* ISC license. */ comments, there are 24 comments in 4100+ lines
06:37:56 <pikhq> And it's helped out by each state being a bit mask describing the actions taken for each given state.
06:38:07 <shachaf> @param x an int
06:38:07 <lambdabot> Not enough privileges
06:38:11 <shachaf> @param y an int
06:38:20 <pikhq> Could use some commenting, granted, but this really is not super deep and impenetrable.
06:38:57 <pikhq> (probably the comment most merited is one describing the FSM's transitions)
06:39:11 <shachaf> The GPL says: « “source code” for a work means the preferred form of the work for making modifications to it.»
06:39:33 <pikhq> Yeah...
06:39:46 <deltab> doesn't say whose preference
06:39:57 <pikhq> Per the GPL a binary file would count as "source code" if you literally wrote the thing with a hex editor.
06:40:16 <shachaf> Right, which it probably should.
06:41:08 <zzo38> For a sufficiently short program it seems that you might do, and then it should not be too difficult to figure out either if you do intend to change it.
06:42:02 <zzo38> But if the program is short you also might just rewrite it anyways if you need to make a change, which might be easier anyways; understanding the code is different to modifying it.
06:44:56 <zzo38> In that file el_parse.c I probably would have included a comment above line 12 so that you might more easily to see which character of which class.
06:59:03 <izalove> http://www.geekherocomic.com/2009/02/11/everything-is-open-source-actually/index.html
07:19:22 <imode> so, I'm thinking of offering free computer repair and education at my local library. how bad of an idea do you think that is.
07:20:21 <imode> don't see anybody doing it around the area for less than $80/hr.
07:20:56 <izalove> a sound business plan
07:21:20 <imode> I'm already in a position of "fuck you". it might be fun.
07:29:35 -!- alercah has joined.
07:43:48 -!- PinealGlandOptic has joined.
07:54:19 <hppavilion[1]> imode: how so?
07:59:13 -!- Lymia has quit (Quit: Hugs~ <3).
08:08:19 -!- Lymia has joined.
08:15:07 <hppavilion[1]> I think I discovered a new problem with the ontological argument!
08:20:15 <nortti> go on?
08:22:01 <shachaf> This argument is irrefutable: http://agreatercourage.blogspot.com/2011/11/argumentum-ornithologicum.html
08:24:41 <hppavilion[1]> nortti: Basically, the assumptions themselves aren't self-evident and can be counterargued
08:24:47 <oerjan> shachaf: us scandinavians find that argument a bit fugly hth
08:25:11 <hppavilion[1]> Specifically, it's that you can reasonably reject "Something that exists is better than the same thing that doesn't exist"
08:25:16 <izalove> i can't even count to ten thus god exists
08:26:16 <nortti> hppavilion[1]: what makes you believe that is new criticism? out of interest
08:26:17 <hppavilion[1]> Example: The harry potter books are great. However, if any of that stuff actually happened, it'd be sad and have mass death involved. I conclude that Harry Potter is better on paper than in the real world.
08:26:28 <hppavilion[1]> nortti: I haven't seen it before, so...
08:26:38 <imode> hppavilion[1]: right now I'm financially set for a long, long time, and nobody offers free computer repair around the area... so I figure offering a public service might be nice.
08:27:06 <hppavilion[1]> imode: You wouldn't happen to be Elon Musk or something, would you?
08:27:20 <imode> nope, just a guy who's worked enough.
08:27:46 <imode> free computer repair and education are something sorely lacking.
08:27:55 <shachaf> oerjan: the rhythm doesn't translate to norwegian very well. the argument is much better scanned in avian hth
08:28:06 <hppavilion[1]> imode: Does 'financially set' include disasters, like cancer or getting in a nasty car accident and needing extensive long-term medical care?
08:28:14 <hppavilion[1]> imode: It's a noble cause, sure
08:28:29 <izalove> shachaf: ba dum tss
08:28:40 <imode> hppavilion[1]: currently unemployed by choice and living off of funds from a couple years of working in tech.
08:29:18 <hppavilion[1]> imode: Well, my econ isn't very good
08:29:44 <hppavilion[1]> imode: But if it's practical, then it's a noble enough cause that I say go for it
08:29:52 <imode> I worry about liability.
08:30:00 <hppavilion[1]> imode: Oh?
08:30:08 <imode> probably need some form of disclaimer or insurance.
08:30:17 <hppavilion[1]> Ah, yes
08:30:29 <hppavilion[1]> imode: To be clear, you are *qualified* to repair computers, correct?
08:31:04 <imode> been a system administrator for 8 years. was a software engineer prior. hardware engineer even more prior.
08:31:15 <izalove> just grab a wrench and you're qualified for computer repair
08:31:47 <imode> back then I reflowed boards, sold custom addons and carts.
08:31:59 <imode> these days it's easy.
08:32:28 <hppavilion[1]> imode: You're qualified. Even if you screw up, you're still doing it for free, so...
08:32:44 <izalove> http://www.electronicproducts.com/Hardware/Components/These_stock_images_of_people_39_fixing_39_computers_are_so_wrong_they_ll_give_you_physical_pain.aspx
08:32:55 <imode> true.
08:33:04 <imode> if I wanted to make money I'd charge a flat rate of $10.
08:34:19 <imode> computing education is also something that'll be useful. people come in with questions saying "I can't do this" or "How do I do that?" or "how does this work?"
08:34:38 <imode> at best I'm experienced. at worst I'm a relay for google.
08:34:52 <izalove> computing education will end up in ms office support
08:35:03 <imode> done that before.
08:35:15 <imode> it always ends with me printing a reference sheet. I never hear from them again.
08:35:23 <imode> apart from the occasional thanks.
08:36:06 -!- godel has quit (Ping timeout: 244 seconds).
08:41:09 <hppavilion[1]> `cwlprits ascii
08:41:15 <HackEgo> fizzïe evilips̈e int-̈e ais52̈3 oerjän ellioẗt shachäf
08:46:33 -!- augur has joined.
08:50:26 -!- imode has quit (Ping timeout: 256 seconds).
08:51:24 -!- otherbot has quit (Remote host closed the connection).
08:51:58 <hppavilion[1]> ...oh my god
08:52:13 <hppavilion[1]> The addition to http://esolangs.org/wiki/Brainfuck did absolutely NOTHING
08:54:46 <HackEgo> [wiki] [[Special:Log/move]] move * Hppavilion1 * moved [[D2]] to [[User:TuxCrafting/D2]]: Page is literally 2 sentences with a link for another braining BF derivative. Insufficient for its own page.
09:09:29 -!- oerjan has quit (Quit: *Sigh*).
09:44:32 -!- Lymia has quit (Ping timeout: 260 seconds).
09:49:07 -!- Lymia has joined.
09:49:50 <hppavilion[1]> https://en.wikipedia.org/wiki/User:Oddmartian2/Wikipedia!_the_Musical is... a thing... that exists
10:01:55 -!- hppavilion[1] has quit (Ping timeout: 276 seconds).
10:01:57 -!- advbot has quit (Ping timeout: 265 seconds).
10:45:09 -!- Phantom_Hoover has joined.
11:27:19 <Taneb> `? torus
11:27:20 <HackEgo> Topologically, a torus is just a torus. Taneb invented it so he'd have something to drink his coffee out of.
11:27:33 <Taneb> Fun fact: I only drink my coffee out of a torus
11:29:38 <\oren\> I have a mug with a different homotopy group
11:30:23 <\oren\> specifically, the second homotopy group
11:30:34 <\oren\> a pity that the second hole is in the bottom
11:30:50 <Taneb> Second fun fact: I only drink coffee out of a sphere
11:31:01 -!- Zarutian has joined.
11:31:38 -!- Zarutian has quit (Read error: Connection reset by peer).
11:32:18 -!- Zarutian has joined.
11:44:17 -!- augur has quit (Read error: Connection reset by peer).
11:44:44 -!- augur has joined.
12:45:43 -!- AnotherTest has joined.
12:59:30 <lynn> 07:29 <izalove> https://github.com/skarnet/execline/blob/master/src/libexecline/el_parse.c  basically any file in this repo
12:59:34 <lynn> Oh my gosh.
12:59:39 <lynn> That reminds me of that one NES emulator
12:59:58 <izalove> which one?
12:59:58 -!- boily has joined.
13:00:02 <lynn> http://bisqwit.iki.fi/jutut/kuvat/programming_examples/nesemu1/nesemu1.cc /* Decode address operand */
13:00:51 <izalove> UHMMM
13:01:49 <lynn> What part of "#define t(s,code) { enum { i=o8m & (s[o8]>90 ? (130+" (),-089<>?BCFGHJLSVWZ[^hlmnxy|}"[s[o8]-94]) : (s[o8]-" (("[s[o8]/39])) }; if(i) { code; } }" don't you understand, iza??
13:03:55 <izalove> actually i can steal some of their tricks
13:04:39 <izalove> 0)o(A8)o(B0)o(B8)
13:04:42 <izalove> o(C0)o(C8)o(D0)o(D8)o(E0)o(E8)o(F0)o(F8) o(100)
13:04:46 <izalove> paste fail
13:05:13 <izalove> o(00)o(08)o(10)o(18)o(20)o(28)o(30)o(38)
13:05:16 <izalove> o(40)o(48)o(50)o(58)o(60)o(68)o(70)o(78)
13:05:18 <izalove> o(80)o(88)o(90)o(98)o(A0)o(A8)o(B0)o(B8)
13:05:20 <izalove> o(C0)o(C8)o(D0)o(D8)o(E0)o(E8)o(F0)o(F8) o(100)
13:05:22 <izalove> better
13:05:24 <izalove> now that's simple
13:06:11 <lynn> That bit is so strange
13:06:49 <izalove> Trademarks are owned by their respective owners. Lawyers love tautologies.
13:07:35 <lynn> You can watch it be "created" live here https://www.youtube.com/watch?v=y71lli8MS8s
13:07:51 <izalove> they use auto
13:07:54 <izalove> so this is c++11?
13:08:10 <lynn> Yeah, there's lots of C++11 features in here
13:08:33 <izalove> then why do they use enums to ensure compile time evaluation?
13:08:36 <izalove> there's constexpr
13:08:59 <lynn> (1:33 is so mesmerising I love it)
13:09:46 <int-e> izalove: so do some book authors ("Winter is coming" -- really? tell me more!)
13:10:45 <izalove> is that a small super mario in the title bar?
13:11:11 <lynn> It is. That's Bisqwit's own DOS text editor
13:16:37 <int-e> izalove: If that wasn't tautological enough: The same author has written about the next book in that series, "It will be done when it's done."
13:17:11 <izalove> i need a whole book of these
13:17:41 <int-e> @google "the book of tautologies"
13:17:43 <lambdabot> No Result Found.
13:17:49 <int-e> (it was worth a shot)
13:17:53 <boily> fizzie: fizziello. FUNGOOOOOOOOOOOOOOOOOOOOOOOOOOOOT!
13:27:50 * boily tries to find somebody else to pass off as fungot...
13:29:16 -!- DHeadshot has joined.
13:41:28 <boily> `? sand
13:41:35 <HackEgo> Sand is what microprocessors are made of. Taneb invented it.
13:41:56 <boily> `? fisdom
13:41:57 <HackEgo> Fisdom is the domination by the federal inspection station.
13:42:29 <boily> `` sed -i 's/fault/Fault' wisdom/segmentation*
13:42:31 <HackEgo> sed: -e expression #1, char 13: unterminated `s' command
13:43:31 <boily> `` sed -i 's/fault/Fault/' wisdom/segmentation*
13:43:38 <HackEgo> No output.
13:44:15 <boily> `` sed -i 's/seg/Seg/' wisdom/segmentation*
13:44:17 <HackEgo> No output.
13:47:19 <boily> `quote 1276
13:47:19 <HackEgo> 1276) <Phantom_Hoover> man i just realised esolangs are subject to the inverse wadler's law <Phantom_Hoover> nobody ever cares about lexical syntax, let alone comments
13:58:00 -!- MoALTz has joined.
13:59:50 -!- bibibi has quit (Ping timeout: 256 seconds).
14:03:02 <fizzie> Hm. Instead of just restarting fungot, I should maybe try to see where it's gotten stuck up.
14:03:29 <fizzie> Because occasionally it just quits when a read fails, but more often it's just unresponsive.
14:04:40 <fizzie> I don't even have gdb installed on the box. :/
14:06:32 <boily> ♪ DING ♪ quotes updated in the PDF!
14:06:45 <boily> izalove: izellove! good news! your quote is now formatted!
14:06:59 <boily> fizzie: you can gdb fungot???
14:07:22 <fizzie> You can gdb cfunge, on which a fungot is running.
14:08:01 <boily> neat.
14:08:33 <fizzie> Wow, I've even got debugging symbols in here. It seems to be in a blocking sendmsg call in finger_SOCK_receive.
14:09:22 <fizzie> Why is there a sendmsg in receive?
14:09:48 <fizzie> There isn't one in the sources.
14:11:01 <fizzie> That's pretty weird.
14:12:38 <fizzie> There's a "call recv" in finger_SOCK_receive which is what called it, but according to backtrace, execution is in "sendmsg () at ../sysdeps/unix/syscall-template.S:83".
14:13:46 <boily> so is it a send, or a recv?
14:14:09 <fizzie> I think I might've just updated the C library (including the libc6-dbg package) since starting fungot for the last time.
14:14:52 <fizzie> Because if I disassemble the libc code, it's at "mov $0x2d,%eax; syscall" and 0x2d == 45 -> sys_recvfrom.
14:15:33 <fizzie> Which makes more sense. Though I'm not sure this helped much -- looks like a recv call that's blocking forever, which is odd.
14:17:25 <fizzie> It's reading from fd 3, and /proc/5746/fd/3 is a socket.
14:18:37 <boily> can you artificially write to that socket and see what happens? this looks like a spurious "floating" recv that shouldn't have been called, and is expecting data that will never be.
14:19:13 <fizzie> It's a state-"ESTABLISHED" TCP socket to, which I presume is freenode.
14:20:34 <fizzie> That's pretty odd. I would expect that TCP connection to eventually go away if nothing's happening.
14:20:47 <boily> freenode.net resolves to from here, and nothing listens on :80 for
14:21:00 <fizzie> I did say :6667, you know.
14:21:07 <fizzie> I wouldn't expect the actual IRC servers to listen to :80.
14:21:27 <boily> one never knows!
14:21:45 <fizzie> Anyway, I can't use DNS names with fungot -- is wolfe.freenode.net.
14:23:12 <boily> makes sense.
14:24:51 <fizzie> Hmm. I've never thought of it, but I guess it's possible the TCP stack works so that if you only ever read from a socket, the connection can stay forever in 'ESTABLISHED' mode if the other end just forgets about the connection (instead of sending FIN or RST).
14:25:22 -!- DHeadshot has quit (Ping timeout: 244 seconds).
14:25:45 -!- Guest93629 has quit (Ping timeout: 260 seconds).
14:29:48 <fizzie> If I call write() on the socket from GDB, I wonder if that unstucks it.
14:32:36 <fizzie> Hm. call write(3, "PRIVMSG #esoteric :hi\r\n", 23) in gdb returned EFAULT. Maybe it doesn't like string literals.
14:34:15 <fizzie> Everything seems to do that. Strange.
14:34:26 <fizzie> I think I need breakfast to figure this out.
14:39:58 <boily> @localtime fizzie
14:40:00 <lambdabot> Local time for fizzie is Sun Oct 23 14:39:59 2016
14:40:52 -!- `^_^v has joined.
14:46:47 -!- TuxCrafting has joined.
14:46:50 <TuxCrafting> Hi
14:46:57 <TuxCrafting> Someone is here?
14:47:14 <fizzie> boily: Look, it's Sunday.
14:47:45 <int-e> `welcome TuxCrafting
14:47:46 <HackEgo> TuxCrafting: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
14:49:43 <boily> fizzie: a fine time for breakfast.
14:51:48 <fizzie> I'll just try this again once I have the matching version of glibc for the debugging info, it's too confusing otherwise.
14:52:04 -!- fungot has joined.
14:52:16 <fizzie> In the meanwhile, I think I had HackEgo things to try.
14:53:35 -!- TuxCrafting has quit (Quit: Page closed).
14:53:59 <boily> fungot: fungellot!
14:54:00 <fungot> boily: it's just something gregor would have to be?' ' mul?' ' static' with neither rhyme nor reason is a sure sign of unclear thinking, and
14:54:18 -!- TuxCrafting has joined.
14:54:32 -!- PinealGlandOptic has quit (Quit: leaving).
14:57:37 <boily> `relcome TuxCrafting
14:57:39 <HackEgo> TuxCrafting: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
14:59:10 -!- TuxCrafting has left.
14:59:18 -!- TuxCrafting has joined.
15:00:51 <boily> `` ls bin/*elcom*
15:00:53 <HackEgo> bin/autowelcome \ bin/elcome \ bin/relcome \ bin/rwelcome \ bin/velcome \ bin/welcome \ bin/welcome \ bin/Welcome
15:01:02 <boily> `rwelcome TuxCrafting
15:01:03 <HackEgo> TuxCrafting: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
15:01:13 <boily> meh...
15:01:20 <boily> `velcome TuxCrafting
15:01:21 <HackEgo> TuxCrafting: Velcome to the international hub for esoteric programming language design and deployment! For more information, check out our viki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
15:01:39 <TuxCrafting> That's a lot of welcome commands
15:02:07 <boily> there were more, or less, depending on whom you ask.
15:14:13 <fizzie> @tell oerjan The revert-file-additions thing was more subtle than I thought.
15:14:14 <lambdabot> Consider it noted.
15:14:39 <fizzie> @tell oerjan Turns out "hg revert" *does* remove (tracked) files that did not exist in the revision to revert to. The problem is that it *removes* them instead of *deleting* them.
15:14:40 <lambdabot> Consider it noted.
15:14:53 <fizzie> @tell oerjan Mercurial has both "deleted" (doesn't exist but is still tracked) and "removed" (doesn't exist and is no longer tracked) states for a file.
15:14:53 <lambdabot> Consider it noted.
15:15:17 <fizzie> @tell oerjan As far as I can tell, the transact code wasn't expecting anything to be "removed" (because commands in the sandbox can't), so it only checked for deleted file in the status and never made a commit if the only change was files having been "removed" (like after a `revert of adding a file).
15:15:18 <lambdabot> Consider it noted.
15:15:21 -!- Cale has joined.
15:15:42 <fizzie> @tell oerjan So after a `revert of a file addition, the repository was left in an inconsistent state, and the next command that caused a commit inadvertently restored the removed file when it cleaned up the state for the second run.
15:15:43 <lambdabot> Consider it noted.
15:16:39 <fizzie> @tell oerjan I think it doesn't hurt to just include removed files in the "commit or not?" check as well, so I'll propose that.
15:16:39 <lambdabot> Consider it noted.
15:17:34 <fizzie> (Although I do wonder why it was originally restricted to -umad instead of the default, which does include removals as well.)
15:19:29 <boily> @tell oerjan that's a lot of @tell oerjans!
15:19:29 <lambdabot> Consider it noted.
15:19:42 <myname> indeed
15:20:25 -!- boily has quit (Quit: PARASITE CHICKEN).
15:20:36 <TuxCrafting> > Quit: PARASITE CHICKEN
15:20:36 <TuxCrafting> wat
15:20:38 <lambdabot> error: Data constructor not in scope: Quiterror:
15:20:38 <lambdabot> Data constructor not in scope: PARASITE :: t0 -> [a]error: Data construc...
15:20:50 <TuxCrafting> Oh
15:20:52 <TuxCrafting> > 1 + 1
15:20:54 <lambdabot> 2
15:21:40 <TuxCrafting> > 2+2 where let 2+2=5
15:21:42 <lambdabot> <hint>:1:5: error: parse error on input ‘where’
15:22:56 <TuxCrafting> > 2+2 where 2+2=5
15:22:58 <lambdabot> <hint>:1:5: error: parse error on input ‘where’
15:24:08 <TuxCrafting> > let 2+2=5 in 2+2
15:24:10 <lambdabot> 5
15:24:13 <TuxCrafting> \o/
15:28:23 -!- ais523 has joined.
15:35:21 -!- Cale has quit (Remote host closed the connection).
15:47:16 -!- bibibi has joined.
15:47:17 -!- bibibi has quit (Read error: Connection reset by peer).
15:47:34 -!- bibibi has joined.
16:12:32 <HackEgo> [wiki] [[Special:Log/newusers]] create * Coates * New user account
16:22:52 <HackEgo> [wiki] [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=50033&oldid=50029 * Coates * (+176) Added Coates
16:23:14 <HackEgo> [wiki] [[Bitwise Cyclic Tag]] M https://esolangs.org/w/index.php?diff=50034&oldid=43592 * Coates * (+90) Added another interpreter
16:25:28 <TuxCrafting> @help
16:25:29 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
16:25:34 <TuxCrafting> @list
16:25:34 <lambdabot> What module? Try @listmodules for some ideas.
16:25:41 <TuxCrafting> @listmodules
16:25:42 <lambdabot> activity base bf check compose dice dict djinn dummy elite eval filter free fresh haddock help hoogle instances irc karma localtime metar more oeis offlineRC pl pointful poll pretty quote search
16:25:42 <lambdabot> slap source spell system tell ticker todo topic type undo unlambda unmtl version where
16:25:49 <TuxCrafting> @help slap
16:25:49 <lambdabot> slap <nick>. Slap someone amusingly.
16:25:57 <TuxCrafting> @slap lambdabot
16:25:57 * lambdabot locks up lambdabot in a Monad
16:26:13 <TuxCrafting> @help pretty
16:26:13 <lambdabot> pretty <expr>. Display haskell code in a pretty-printed manner
16:26:24 <TuxCrafting> @help dice
16:26:25 <lambdabot> @dice <expr>. Throw random dice. <expr> is of the form 3d6+2.
16:26:32 <TuxCrafting> @help unlambda
16:26:32 <lambdabot> unlambda <expr>. Evaluate an unlambda expression
16:26:40 <TuxCrafting> @help todo
16:26:41 <lambdabot> todo. List todo entries
16:26:49 <TuxCrafting> @help poll
16:26:49 <lambdabot> poll provides: poll-list poll-show poll-add choice-add vote poll-result poll-close poll-remove
16:26:54 <TuxCrafting> `help
16:26:55 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
16:27:34 <TuxCrafting> `run echo Hi
16:27:45 <TuxCrafting> `echo hi
16:27:46 <HackEgo> Hi
16:27:50 <HackEgo> hi
16:28:02 <TuxCrafting> `ls
16:28:05 <HackEgo> bin \ canary \ cdescs \ emoticons \ esobible \ etc \ evil \ factor \ good \ hw \ ibin \ interps \ karma \ le \ lib \ misle \ out \ paste \ ply-3.8 \ quines \ quotes \ -r * \ share \ src \ tmflry \ tmp \ wdiff-latest.tar.gz \ wisdom \ wisdom.pdf
16:29:02 <TuxCrafting> @slap HackEgo
16:29:02 <lambdabot> stop telling me what to do
16:29:06 <TuxCrafting> ಠ_ಠ
16:29:28 <myname> haha
16:30:38 <int-e> `` stat -- '-r *'
16:30:42 <HackEgo> ​ File: `-r *' \ Size: 0 Blocks: 0 IO Block: 1024 regular empty file \ Device: 12h/18dInode: 664677 Links: 1 \ Access: (0644/-rw-r--r--) Uid: ( 5000/ UNKNOWN) Gid: ( 0/ UNKNOWN) \ Access: 2016-10-12 00:16:16.000000000 +0000 \ Modify: 2016-10-12 00:16:15.000000000 +0000 \ Change: 2016-10-12 00:16:15.000000000 +00
16:30:59 <int-e> `` rm -- '-r *'
16:31:07 <HackEgo> No output.
16:32:30 <TuxCrafting> @slap @slap
16:32:30 * lambdabot beats up @slap
16:35:41 <fizzie> @tell oerjan btw fyi https://bitbucket.org/GregorR/hackbot/pull-requests/5 hth hand
16:35:41 <lambdabot> Consider it noted.
16:35:50 <\oren\> `echo @slap
16:35:53 <HackEgo> ​@slap
16:36:06 <TuxCrafting> `echo @slap \oren\
16:36:08 <HackEgo> ​@slap \oren\
16:36:21 <TuxCrafting> Huh
16:36:54 <fizzie> There's a non-visible character added by HackEgo in front of messages that start with non-letters, to stop that sort of thing.
16:37:00 <fizzie> (Well, mostly to stop botloops.)
16:37:20 <fizzie> `unidecode o> ​@s
16:37:42 <fizzie> \u200b, apparently.
16:38:08 <HackEgo> [wiki] [[User:Coates]] N https://esolangs.org/w/index.php?oldid=50035 * Coates * (+95) Created page with "Hi there! I am Coates, a young programmer and musician. C is my favourite programming language."
16:38:26 <TuxCrafting> (;´༎ຶД༎ຶ`) unicode
16:38:57 -!- Zarutian has quit (Quit: Zarutian).
16:39:26 <TuxCrafting> > "`echo hi"
16:39:28 <lambdabot> "`echo hi"
16:39:37 <TuxCrafting> hmmm
16:39:51 <TuxCrafting> > putStrLn "`echo hi"
16:39:53 <lambdabot> <IO ()>
16:40:03 <TuxCrafting> ._.
16:40:16 <myname> > "hi"
16:40:19 <lambdabot> "hi"
16:40:25 <TuxCrafting> > main = putStrLn "hi"
16:40:28 <lambdabot> <hint>:1:6: error:
16:40:28 <lambdabot> parse error on input ‘=’
16:40:28 <lambdabot> Perhaps you need a 'let' in a 'do' block?
16:40:39 <TuxCrafting> oic it's in a do block
16:40:42 <int-e> @help run
16:40:42 <lambdabot> run <expr>. You have Haskell, 3 seconds and no IO. Go nuts!
16:41:00 -!- sebbu2 has changed nick to sebbu.
16:41:17 <myname> there was this weird function to actually print a string
16:41:33 <myname> i can't remember 'cause i never need it
16:41:35 <TuxCrafting> the function to print a string is putStrLn but it don't work :/
16:41:49 <fizzie> > text "foo" -- didn't this used to work at some point?
16:41:52 <lambdabot> foo
16:41:57 <fizzie> At least now there's a space.
16:41:58 <myname> aha!
16:42:12 <TuxCrafting> > printString "hi"
16:42:14 <lambdabot> error:
16:42:14 <lambdabot> Variable not in scope: printString :: [Char] -> t
16:42:21 <myname> > text "\hfoo"
16:42:24 <lambdabot> <hint>:1:8: error:
16:42:24 <lambdabot> lexical error in string/character literal at character 'h'
16:42:29 <myname> :(
16:42:31 <TuxCrafting> > text "\nfoo"
16:42:33 <lambdabot> foo
16:42:36 <fizzie> It doesn't exactly print a string, more like makes a thing that gets outputted without extra quotes.
16:43:17 <TuxCrafting> > show "Hi"
16:43:19 <lambdabot> "\"Hi\""
16:43:27 <TuxCrafting> That's even worse
16:43:31 <ais523> I'm vaguely considering wrting my own init system
16:43:36 <TuxCrafting> > show$show$show "Hi"
16:43:39 <lambdabot> "\"\\\"\\\\\\\"Hi\\\\\\\"\\\"\""
16:43:50 <ais523> on the basis that sysvinit is lacking features that most OSes care about nowadays, and most of the others are instane
16:44:17 <ais523> I probably won't get around to it ever but am nonetheless wondering if people have opinions about it
16:44:17 <TuxCrafting> systemd have some flaws but it work
16:44:22 <\oren\> ais523: that sounds like a great idea
16:44:27 <TuxCrafting> ^
16:44:44 <\oren\> TuxCrafting: systemd has the problem that it takes over too much
16:44:59 <TuxCrafting> fair enough
16:45:10 <ais523> I would be hoping to replicate the functionality of systemd (so that it can replace systemd on systemd-based systems) but with a suite of programs, rather than a single init
16:46:04 <\oren\> https://www.youtube.com/watch?v=ifkYccnfmK4
17:01:41 -!- idris-bot has quit (Quit: Terminated).
17:02:36 -!- Melvar has quit (Quit: rebooting).
17:11:46 -!- Melvar has joined.
17:15:41 -!- `^_^v has quit (Quit: This computer has gone to sleep).
17:15:51 -!- Zarutian has joined.
17:16:04 -!- `^_^v has joined.
17:17:00 -!- Zarutian has quit (Read error: Connection reset by peer).
17:17:02 -!- Zarutian has joined.
17:21:44 <izalove> how do i tell github that i want to search for code that contains foo and not my_foo or foo_x?
17:24:39 -!- Melvar` has joined.
17:25:36 -!- Melvar has quit (Disconnected by services).
17:25:40 -!- Melvar` has changed nick to Melvar.
17:26:12 <ais523> izalove: I don't know with github specifically, but the normal syntaxes for that include «" foo "», «\bfoo\b», and «\<foo\>»
17:26:56 <izalove> " foo " can't work because i want to find foo(...) in code
17:27:06 <izalove> and github ignores backslashes afaics
17:27:13 <izalove> and special characters
17:28:47 <ais523> actually, I have a question on another topic
17:28:52 <ais523> the use I want for it is insane but there are sane uses too
17:29:39 <ais523> the question is, suppose someone is behind a NAT; is there something that they can do to allow other people to make inbound connections to them? (It's OK if this requires them to make a specific outbound connection of their own just before, but that outbound connection can't go to the person connecting inbound)
17:30:09 <ais523> I'm thinking about something on the lines of giving someone else the port that you're using for the return half of a TCP connection
17:30:31 <alercah> You probably could
17:31:16 <alercah> certainly if you had kernel access on the machine behind the NAT
17:31:39 <ais523> usermode would be helpful but I'm willing to accept something that needs kernel powers if necessary
17:32:02 <alercah> actually no wait, you could do it usermode assuming you're willing to make sacrifices
17:32:11 <ais523> what sort of sacrifices?
17:32:24 <alercah> inability (or at least difficulty) to see where the connection originated
17:32:41 <ais523> oh, I'm OK with that
17:32:42 <alercah> what you could do is have a relay at a fixed address outside the NAT
17:32:54 <alercah> and.... oh wait you could just set up a VPN
17:33:11 <ais523> oh, I want to do this without additional hardware outside the NAT, at least in terms of relaying the connection
17:33:17 <alercah> ohhh
17:33:22 <ais523> obviously you can do it using ssh port forwarding
17:33:23 <alercah> then I don't know if you can
17:33:56 <ais523> it probably depends on the details of the NAT
17:34:00 <alercah> yeah
17:34:07 <alercah> exactly how it handles port opening
17:37:34 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
17:40:49 <fizzie> There's a whole terminology related to that sort of thing; the strict/moderate/open terms used by I think some Microsoft things, and full-cone/restricted/port-restricted terms in https://en.wikipedia.org/wiki/Network_address_translation#Methods_of_translation -- they all differ in terms of what sort of incoming packets they accept on the translated port (from everywhere, or from any port on ...
17:40:55 <fizzie> ... the same host as the original destination, or just from the original destination host:port).
17:41:16 <fizzie> In the most open case you can do that sort of thing -- open a connection somewhere, and publish the visible port for anyone else to connect to you.
17:46:02 <ais523> fizzie: hmm, I'm not sure; I don't think you can listen on the visible port
17:46:11 <ais523> without closing the previous connection
17:46:44 <ais523> at least with TCP
17:46:47 <ais523> let me try this with UDP
17:48:13 <pikhq> ais523: On common consumer routers, you can use UPNP to temporarily request a port forward.
17:51:58 -!- idris-bot has joined.
17:52:28 <alercah> ais523: you can close the previous connection
17:52:42 <alercah> but if the router isn't paying attention, that's fine
17:52:48 <ais523> alercah: the close is visible to the router, does it leave the port assignment around for a while anyway?
17:52:53 <ais523> the purpose of UDP is that the close wouldn't be visible
17:53:24 <alercah> probably depends on the router
18:00:11 <ais523> ugh, these UDP tests are so awkward
18:00:17 <ais523> because this connection has a ton of packet loss for some reason
18:00:29 <ais523> and it's hard to tell whether I've done something wrong or whether the packet simply decided not to arrive
18:01:50 -!- ineiros has quit (Read error: Connection reset by peer).
18:11:21 <ais523> hmm, apparently UPNP+IGDP is sufficiently obscure that Wireshark hasn't heard of it
18:13:32 <pikhq> ais523: That smells, cause... Nearly all consumer routers support it, video game consoles for the past decade have used it, and every BitTorrent client uses it.
18:13:53 <ais523> yes, I'm wondering if maybe Wireshark has an outdated list
18:14:02 <pikhq> Could be. What version of Wireshark?
18:14:13 <ais523> 2.0.2
18:14:14 -!- Vorpal has joined.
18:14:32 <ais523> `welcome Vorpal
18:14:41 <pikhq> That's outdated, but not *super* outdated.
18:14:44 <HackEgo> Vorpal: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
18:14:45 <ais523> we could really do with a `welcome-back, I guess
18:17:16 <Vorpal> ais523: hi!
18:17:42 <ais523> I haven't seen you here for a while
18:18:39 <Vorpal> ais523: lets see if the rpi running the bouncer is more stable this time around. That RPi managed to corrupt external USB drive file systems several times (even when they were attached to a USB hub with separate power supply)
18:19:15 <ais523> hmm, this is not really helping out my irrational hatred of IRC bouncers
18:19:24 <Vorpal> ais523: why?
18:19:26 <ais523> even if it's probably the rpi that corrupted the bouncer rather than vice versa
18:19:46 <Vorpal> ais523: it managed to corrupt /. Not the bouncer as such
18:21:35 <ais523> currently I'm asking the channel for help with doing something that could be used for sensible purposes, but my purpose is ridiculous
18:21:45 <Vorpal> ais523: I wish I had the sort of rock solid industrial grade computers we use at work. That just run forever assuming there are no software bugs. I have never seen more reliable hardware.
18:21:49 <ais523> also there's an esolang contest which I should really be working on, I'm going to miss the deadline at this rate
18:21:55 <Vorpal> But then they cost about $50k...
18:22:08 <Vorpal> (and are not very powerful)
18:22:29 <fizzie> ais523: That's quite possibly true API-wise, but in theory there should be no reason why you couldn't do it. I mean, you can accept several incoming TCP connections on the same port, there's no reason why some of those couldn't be outgoing connections using it as a source port (as long as the protocol-host-port-host-port-5-tuples are unique).
18:22:50 <ais523> Vorpal: a set of 1000 redundant raspberry pis would be cheaper and possibly even more reliable
18:23:34 <Vorpal> ais523: true, but they wouldn't be IP66 and able to handle running salt water at high temperatures
18:23:39 <Vorpal> Also not -80 C
18:24:09 <Vorpal> Not that I need that part
18:24:46 <ais523> you could perhaps distribute them geographically, in the hope that they wouldn't all be exposed to boiling salt water and/or liquid nitrogen simultaneously
18:25:19 <Vorpal> hah
18:25:31 <ais523> actually you'd think computers would run better at -80°C as it'd reduce issues with cooling
18:25:32 <Vorpal> also would require special software
18:25:47 <ais523> the world record for overclocking was set with the computer immersed in liquid nitrogen; it still managed to overheat and shut down
18:25:54 <ais523> but not before they'd managed to boot Windows and verify the clock speed
18:25:57 <Vorpal> True, but presumably some components might have issues with the thermal stresses
18:26:02 <ais523> unfortunately I haven't managed to find the article on it
18:28:38 -!- OriginalOldMan has joined.
18:28:44 -!- imode has joined.
18:28:54 <Vorpal> Going to reboot the rpi, installed kernel update on it
18:29:06 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
18:31:10 -!- Vorpal has joined.
18:31:33 -!- Vorpal has changed nick to Guest17360.
18:35:01 <\oren\> https://www.youtube.com/watch?v=kunO5ydDxvg
18:36:27 -!- Guest17360 has quit (Changing host).
18:36:27 -!- Guest17360 has joined.
18:36:47 -!- Guest17360 has changed nick to Vorpal.
18:36:55 <Vorpal> Wtf was going on there
18:37:07 <\oren\> argh I hate it when I want to show someone a funny video, but it's in japanese and they won't understand a word
18:38:03 <Zarutian> if it is a gameshow you dont need translation, they are hillarious those vids.
18:38:15 <Vorpal> Had to reset the password hm
18:38:22 <fizzie> ais523: Based on a quick check with socat, as long as you specify SO_REUSEADDR on both sockets, you can connect() somewhere with an automatically bound local port, and subsequently listen on that same port to receive connections.
18:38:27 <fizzie> ais523: I did "socat tcp4-listen:18080 stdout" + "socat stdin tcp4:localhost:18080,reuseaddr" to make one connection, netstat to find the source port for that (37576 in this case), and then "socat tcp4-listen:37576,reuseaddr stdout" + "socat stdin tcp4:localhost:37576", and I now have two independent connections in "opposite directions" sharing the same port.
18:38:32 <fizzie> (Not that there really is a direction once the connection has been established.)
18:39:28 <ais523> aha, I have to go lower level that netcat, but it's apparently doable
18:39:50 <ais523> *than
18:40:02 <Zarutian> oerjan: duly nodet
18:41:12 -!- augur has quit (Remote host closed the connection).
18:41:40 -!- augur has joined.
18:42:09 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
18:42:22 -!- Vorpal has joined.
18:46:01 <ais523> fizzie: well that doesn't seem to work through my NAT, unfortunately
18:46:10 <ais523> even though the IPs were the same
18:46:48 -!- augur has quit (Ping timeout: 260 seconds).
18:46:54 <Vorpal> ais523: what are you trying to do?
18:47:06 <Vorpal> And yes I can imagine a NAT getting confused by this
18:47:35 <ais523> Vorpal: the ideal answer would be "open a port on the external side of the NAT that arbitrary people can connect to and get a connection to your machine"
18:47:53 <ais523> variations of that might also be better than nothing, though
18:47:59 <Vorpal> ais523: yes, called port forwarding usually, check your router settings
18:48:34 <ais523> right, I was hoping to do it entirely from the device inside the NAT by somehow fooling it into allowing more through than it should
18:48:44 <ais523> it seems that there are a ton of protocols designed for this already, though
18:49:48 <ais523> anyway, this is mostly just out of curiosity, as the use I have for it is fairly ridiculous when much more sensible ones exist
18:50:01 -!- contrapumpkin has joined.
18:50:56 -!- copumpkin has quit (Ping timeout: 244 seconds).
18:51:24 <fizzie> Yes, I don't think many NATs do the "full cone" behavior, at least by default. I don't know if you can even do one with Linux netfilter.
18:51:35 <Vorpal> well this configuration file for znc is broken. It has the empty string channel set as sticky rejoin. And I can't fix it without stopping znc and fixing the file myself
18:52:00 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
18:53:03 <ais523> aha, the reason it didn't work is probably that the ephemeral port number on the end of the connection outside the NAT doesn't match the (non-ephemeral) port number used for the original outbound connection
18:53:06 -!- Vorpal has joined.
18:53:06 -!- Vorpal has quit (Changing host).
18:53:06 -!- Vorpal has joined.
18:54:01 <fizzie> ais523: I imagined your proposed solution involved connecting to a third party, which would tell your client what the externally visible source port was, so that it could then advertise that.
18:54:42 <ais523> fizzie: yes, that's the direction I was experimenting with (I believe the existing implementation of this is called STUN)
18:55:35 <fizzie> I believe STUN's generally for UDP, which is more likely to work.
18:56:12 <Vorpal> Oh you are trying to do this for TCP? Good luck
18:56:13 <ais523> it's primarily for UDP but it has a TCP version too
18:56:29 <ais523> Vorpal: at this point I don't really care, although I was hoping to use it with HTTP
18:56:40 <Vorpal> heh
18:56:48 <ais523> and HTTP doesn't work well over UDP
18:57:04 <Vorpal> ais523: I would suggest just setting up port forwarding in the router instead
18:57:26 <Vorpal> Didn't google experiment with HTTP over UDP?
18:57:30 <Vorpal> QUICK or something like that
18:57:39 <Vorpal> Think it was a 4-letter name though
18:57:43 <Vorpal> so QUIC maybe?
18:57:48 <fizzie> QUIC, yes.
18:57:55 <fizzie> It's a little more than "experiment" now.
18:58:00 <Vorpal> Ah
18:58:09 <Vorpal> fizzie: do you run HTTP/2 over it then I guess?
18:58:09 <fizzie> I would share numbers but they're probably confidential.
18:58:19 <ais523> Vorpal: the thing is, this isn't really intended for me, I already have a server with a publicly visible IP
18:58:31 <Vorpal> ais523: then what is the goal of it?
18:58:58 <ais523> to let arbitrary people broadcast their terminal sessions over HTTP
18:59:41 <Vorpal> heh, viewing only or?
18:59:45 <ais523> viewing only, yes
18:59:53 <ais523> I'm not /that/ insane
19:00:12 <pikhq> fizzie: I don't think it's *that* confidential. I mean, QUIC is in the wild, both clients and servers.
19:00:16 <Vorpal> ais523: well, there are "remote help" thingies
19:00:26 <pikhq> Well, okay, maybe some of the exact details of the Chrome telemetry are confidential.
19:00:49 <fizzie> pikhq: Yes, I meant things like number of QUIC sessions and so on.
19:00:57 <Vorpal> how much better is the performance of quic compared to HTTP/2 over TCP?
19:01:05 <pikhq> At some point in time Google published that, I'm pretty sure.
19:01:18 <fizzie> We might've published a relative number.
19:01:22 <pikhq> ... But, then that'd be the particular publication that wouldn't be confidential.
19:01:50 <pikhq> Vorpal: IIRC, quite notably in cases of packet loss.
19:02:00 <pikhq> Because QUIC isn't subject to head-of-line blocking.
19:02:02 <Vorpal> ah
19:02:24 <ais523> well, probably best to get someone who doesn't work at Google to find the numbers, to avoid the risk of accidentally leaking something they shouldn't
19:02:26 <pikhq> IIRC connection setup is quicker as well?
19:02:37 <fizzie> There's a 0-RTT thing for the connection setup.
19:02:44 <pikhq> Yeah, that's what I thought.
19:02:50 <Vorpal> pikhq: oh the http level? ah
19:03:01 <Vorpal> on*
19:03:06 <pikhq> Vorpal: On the TCP level.
19:03:13 <fizzie> If you've connected to a server before, and are doing an idempotent request, there's a chance of just being able to start talking without any handshake packets at all.
19:03:28 <pikhq> It's not quite HTTP/2 over QUIC, it's more a protocol related to HTTP/2.
19:03:52 <Vorpal> pikhq: wouldn't you still need all the packets to arrive before you can interpret and display the data, (except for video data I guess)
19:04:07 <fizzie> Vorpal: Yes, but you can treat each stream independently.
19:04:16 <Vorpal> Fair enough
19:04:19 <pikhq> Yes, *but* you don't need the packets to arrive for independent files on the HTTP session.
19:05:29 <ais523> really for something HTTP-like, you should just send a packet for each byte range simultaneously
19:05:49 <ais523> and have the recipient send out requests for the ones it didn't get
19:05:58 <ais523> you want to have each packet reliably but you don't care about the order you get them in
19:07:27 <fizzie> ais523: Well, that's not quite true. I mean, if you mean the all the subresources -- not all of them are needed before you can start rendering.
19:08:37 <fizzie> Not to mention that you want the client to be able to do flow control instead of filling their pipe; it might be that they want to do two things at a time, and not dedicate all their incoming bandwidth to your site.
19:11:43 <fizzie> HTTP/2 and QUIC both have rather explicit flow-control mechanisms built on WINDOW_UPDATE frames the client can use to essentially specify how many octets the other side is allowed to send before stopping to wait for some acks.
19:12:22 <Vorpal> While HTTP/2 is great in a lot of ways, it makes me sad you can no longer test the server using netcat.
19:12:23 <fizzie> s/the client/one side/
19:12:41 -!- TuxCrafting has quit (Quit: Leaving).
19:13:07 <ais523> I wonder when browsers will stop supporting HTTP/0.8
19:13:20 <Vorpal> 0.8? Really? What is that one
19:13:28 <Vorpal> 0.9 I heard of
19:13:50 <ais523> maybe I'm thinking of 0.9
19:14:04 <ais523> but basically it interprets the response as HTML if it doesn't have any headers
19:14:15 <fizzie> ais523: https://groups.google.com/a/chromium.org/forum/#!topic/Blink-dev/OdKnpLlvVUo for Chrome.
19:14:38 <fizzie> "According to our numbers, about 0.01% of HTTP responses are HTTP/0.9 (that count excludes HTTP/2 and QUIC requests). Each week, about 1% of Chrome users see a response that's interpreted as HTTP/0.9. Note that these numbers likely overstate the prevalence of HTTP/0.9. If we get anything from a server in response to an HTTP/1.x request, and it's not HTTP/1.x, then we assume it's HTTP/0.9. ...
19:14:45 <fizzie> ... It could well be we're talking to a broken server, or a non-HTTP server."
19:15:16 <Vorpal> Ah
19:15:17 <fizzie> I seem to recall they decided to only drop support of it when talking to non-default ports, because there were some routers that only did HTTP/0.9 on their web config interface.
19:15:39 <fizzie> And it's a rather bad experience if you no longer can use Chrome to configure your router.
19:16:07 <fizzie> https://bugs.chromium.org/p/chromium/issues/detail?id=624462 is actually a more concise summary.
19:16:22 <fizzie> "Revert HTTP/0.9 removal -- This broke compatibility with the Tenda D301 router, --"
19:16:28 <ais523> oh wow, I just looked up the standard way to make a TCP connection between two computers, both of which is behind a NAT
19:16:34 <ais523> and it's beautifully stupid
19:16:43 <fizzie> "It turns out that we can't just remove HTTP/0.9 support without breaking the interfaces of at least some home routers (Tenda D301), which we're not currently comfortable doing. So instead, we're going to reduce the cases where it's supported."
19:16:58 <Vorpal> fizzie: Hm, I think the major browser vendors together should put pressure on vendors by disabling certain legacy features in a coordinated way. That way they don't need to fear it will cause users to migrate to a different browser
19:17:22 <ais523> basically you guess which port the other person's NAT is going to assign to the connection, then both of you start the connection simultaneously
19:17:26 <Vorpal> Which seems to to be the main reason for why SSL downgrade attacks and such work
19:17:31 <fizzie> Vorpal: TLS version deprecation is I think already happening like that.
19:17:43 -!- `^_^v has quit (Quit: This computer has gone to sleep).
19:17:44 <Vorpal> fizzie: really? news to me, but great
19:18:44 <fizzie> Vorpal: At least for some things. Mozilla, Chrome and Firefox coordinated dropping support for RC4, and I think everyone's agreed when to stop accepting SHA-1 certificates as well.
19:19:03 <Vorpal> fizzie: you need IE and Safari too
19:19:16 <fizzie> Er, I was going to include IE in the RC4 thing.
19:19:23 <fizzie> "Mozilla and Firefox" didn't really make much sense.
19:19:24 <Vorpal> rather than firefox twice?
19:19:26 <Vorpal> yeah
19:20:01 <ais523> hmm, now I'm wondering how many simultaneous outbound connections you can make at once
19:20:21 <ais523> the idea is very simple: each end of the connection simultaneously tries to connect to /every/ port on the other end (sort-of like a portscan)
19:20:42 <Vorpal> <ais523> hmm, now I'm wondering how many simultaneous outbound connections you can make at once <-- depends on your computer and probably on your NAT
19:20:58 <Vorpal> I remember reading that number for my router. Apparently it is something Asus advertises
19:21:03 <ais523> really we should all be on IPv6, without NAT, but the ISPs aren't cooperating
19:21:06 <Vorpal> Probably because it is a "pro-consumer" router
19:21:12 <Vorpal> rather than cheap crap
19:21:26 <Vorpal> ais523: yeah... why is that?
19:21:50 <ais523> I don't even know
19:22:28 <ais523> I'm currently online via a very wireless router (connection to the computers inside the NAT is wireless, connection to the Internet outside the NAT is also wireless, and the thing can run on batteries so it doesn't always even need a power supply)
19:22:41 <ais523> but it's IPv4 only for some bizarre reason (at least the connection is; I don't know if the router itself knows how to IPv6)
19:23:22 <Vorpal> ais523: my router can definitely do IPv6. I can also ssh to it
19:23:26 <fizzie> I'm guessing it's because IPv6 migration would cost money to do (in terms of taking up engineering time etc.), and doesn't immediately increase profits.
19:24:05 <fizzie> My ISP does native IPv6, though.
19:24:10 <Vorpal> fizzie: oh? neat
19:24:47 <fizzie> But these are people who give a static /29 subnet of IPv4 addresses to consumer users (who ask) as well, so they're not exactly typical.
19:26:13 <Vorpal> Ah
19:26:34 <fizzie> Some of the more mainstream ones in Finland have done IPv6 for the last few years, though.
19:26:39 <Vorpal> Hm
19:26:52 <ais523> huh, I just discovered that my router knows my laptop's hostname
19:26:56 <fizzie> And the trend certainly points up.
19:27:01 <ais523> I wonder how it determined that, is it a field in DHCP or something?
19:27:03 <fizzie> https://www.google.com/intl/en/ipv6/statistics.html
19:27:09 <fizzie> There is a field for that in DHCP, yes.
19:27:33 <fizzie> 12% isn't *too* bad, to be fair.
19:27:43 <fizzie> It's approximately the same as Trump's chances to win, I believe.
19:28:46 <Vorpal> fizzie: https://www.google.com/intl/en/ipv6/statistics.html#tab=per-country-ipv6-adoption&tab=per-country-ipv6-adoption is interesting
19:28:51 <Vorpal> Sweden is quite behind
19:29:13 <fizzie> I see UK has jumped to 15%, which probably means somebody big here has done the migration since I last looked.
19:29:13 <Vorpal> Looks like US and Greece are way ahead
19:29:22 <Vorpal> Greece? That is a bit weird
19:30:34 <fizzie> There aren't generally that many "major" ISPs per country, so it's probably rather random as to how many of them do IPv6.
19:30:47 <Vorpal> Ah
19:30:52 <fizzie> In the UK, it seems that Sky's doing it, which probably explains the 15% figure.
19:31:06 -!- DHeadshot has joined.
19:31:36 <fizzie> https://corporate.sky.com/media-centre/news-page/2016/sky-completes-roll-out-of-ipv6-becoming-the-first-major-uk-internet-provider-to-future-proof-its-service-for-customers
19:31:43 <fizzie> September 6th, that's very recent.
19:32:09 <fizzie> "Each customer is provided with a /56 prefix, that can support up to 256 networks within the home." That's not too shabby.
19:32:19 <Vorpal> yeah, that is reasonable
19:33:05 <Vorpal> fizzie: I think SiXXS went overboard with my tunnel. I have a /48. That is silly huge.
19:43:17 <fizzie> Personally I find the "no subnets smaller than /64" thing a little odd.
19:45:47 -!- godel has joined.
19:53:49 <Vorpal> fizzie: well, it is due to how the stateless autoconfiguration works
19:54:04 <Vorpal> where you basically use the network prefix followed by your MAC
19:57:18 <fizzie> 48 bits would've been enough for *that*.
19:59:55 <Vorpal> fizzie: not for wifi
20:00:21 <Vorpal> I belive wifi uses 64-bit MACs?
20:01:04 <shachaf> hi Vorpal
20:01:17 <Vorpal> hi
20:01:56 <shachaf> Is hg the future?
20:02:23 <Vorpal> hm?
20:02:26 <int-e> we'll know when git grows a hg fs backend
20:02:57 <Vorpal> "The IEEE has a target lifetime of 100 years for applications using MAC-48 space, but encourages adoption of EUI-64s instead."
20:03:27 <Vorpal> fizzie: looks like that is why it is 64 bits
20:04:53 <fizzie> I think I remember seeing a VPS provider giving you a discount for an IPv6-only host.
20:04:58 <fizzie> Maybe not quite yet enough for general-purpose use, but I guess for some more backendy stuff.
20:05:14 <Vorpal> would make sense
20:06:56 -!- ineiros has joined.
20:11:27 <int-e> the /56 is suggested by RFC 6177 (BCP 157)
20:13:53 <Vorpal> Seems reasonable as well
20:14:25 <Vorpal> A /48 is unreasonably large though I think
20:18:08 <Vorpal> good night
20:30:26 -!- clog has quit (Ping timeout: 250 seconds).
20:31:06 -!- Cale has joined.
20:41:20 <ais523> bye clog
20:41:32 <ais523> `welcome Cale
20:41:45 <HackEgo> Cale: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
20:50:15 <Cale> hey
20:51:10 <ais523> ugh, I really need to work on my CALESYTA entry more
20:51:30 <ais523> I /think/ I've worked out how to write a hello world, at least in terms of what order to write the commands in
20:51:34 <ais523> but I need a working interp to test
21:09:27 -!- contrapumpkin has changed nick to copumpkin.
21:31:18 -!- hppavilion[1] has joined.
21:39:45 -!- OriginalOldMan has quit (Ping timeout: 260 seconds).
21:45:48 <imode> CALESYTA, huh?
21:47:10 -!- hppavilion[1] has quit (Ping timeout: 276 seconds).
21:47:21 -!- Phantom_Hoover has joined.
21:51:01 -!- hppavilion[1] has joined.
21:51:03 <hppavilion[1]> `? hppavilion[1]
21:51:05 <HackEgo> hppavilion[1] se describe en las notas al pie. ¿Porqué no los dos? Nadie lo sabe. No es tan cluecless.
21:51:13 <hppavilion[1]> `? hppavilion1
21:51:15 <HackEgo> higgledy piggledy / hp pavilion / doesn't like jokes that are / written in text; // uncontroversially, / one in a million is / roughly the chance they won't / be left perplexed
21:51:18 <hppavilion[1]> Hm...
21:51:35 <hppavilion[1]> I'm trying to (re)learn piano (with my sister)
21:56:16 -!- hppavilion[1] has quit (Ping timeout: 276 seconds).
22:01:18 -!- hppavilion[1] has joined.
22:01:25 <hppavilion[1]> `? metronome
22:01:27 <HackEgo> metronome? ¯\(°​_o)/¯
22:02:36 <hppavilion[1]> `learn A metronome is an ancient and highly sophisticated instrument typically used in the player variety in conjunction with another, simpler instrument. hppavilion[1] is learning to play one. Taneb invented parts of it at regular intervals.
22:02:40 <HackEgo> Learned 'metronome': A metronome is an ancient and highly sophisticated instrument typically used in the player variety in conjunction with another, simpler instrument. hppavilion[1] is learning to play one. Taneb invented parts of it at regular intervals.
22:07:15 -!- Cale has quit (Read error: Connection reset by peer).
22:09:26 -!- MoALTz has quit (Quit: Leaving).
22:12:21 -!- Frooxius has quit (Quit: *bubbles away*).
22:12:39 -!- Frooxius has joined.
22:21:28 -!- DHeadshot has quit (Ping timeout: 260 seconds).
22:22:55 -!- hppavilion[1] has quit (Ping timeout: 276 seconds).
22:30:43 -!- clog has joined.
22:32:03 -!- augur has joined.
22:34:08 -!- DHeadshot has joined.
22:35:24 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
22:48:14 -!- iovoid has quit (Remote host closed the connection).
22:48:15 -!- jeffl35 has quit (Remote host closed the connection).
22:51:03 <fizzie> fungot: How do you like it? https://zem.fi/tmp/fungotshirt.jpg
22:51:04 <fungot> fizzie: 1 cakeprophet: ps ( thread-id 5)) `(begin ( pp ,a) `(pp ,a))
22:51:19 <fizzie> Speechless, huh? I understand.
22:54:00 <shachaf> fungot must be disgusted looking at fungot innards like that.
22:54:00 <fungot> shachaf: to prove that ( in scheme) but it would be really, really small initrd that would create an awesome language of their own
22:55:05 -!- hppavilion[1] has joined.
22:56:02 -!- DHeadshot has quit (Ping timeout: 250 seconds).
23:03:16 -!- jeffl35 has joined.
23:07:14 -!- iovoid has joined.
23:09:15 -!- advbot has joined.
23:09:46 -!- advbot has quit (Read error: Connection reset by peer).
23:09:56 <hppavilion[1]> Wait, forgot to move to #esoteric-blah
23:41:03 -!- DHeadshot has joined.
←2016-10-22 2016-10-23 2016-10-24→ ↑2016 ↑all