00:02:50 -!- augur has quit (Remote host closed the connection).
00:04:25 -!- hppavilion has joined.
00:08:46 <\oren\> anyone else watchin the handegg?
00:11:12 <\oren\> otherwise known as "armored rugby"?
00:11:35 <oerjan> <\oren\> you don't need a cable thruough the earth if we can do it with a neutrino beam <-- i think bandwidth / energy might be a problem there.
00:12:11 <oerjan> because you only detect a tiny fraction
00:13:15 <oerjan> (this concludes my logreading.)
00:14:42 <oerjan> also, the time saving isn't that big compared to just going around...
00:15:06 <oerjan> shachaf: your scheme fails on account of me being on the channel hth
00:31:25 -!- tromp_ has joined.
00:35:48 -!- tromp_ has quit (Ping timeout: 248 seconds).
00:50:58 -!- jaboja has joined.
00:51:18 -!- augur has joined.
00:51:48 -!- augur has quit (Remote host closed the connection).
00:52:33 -!- augur has joined.
00:54:34 -!- lynn has quit (Ping timeout: 256 seconds).
00:59:42 <lambdabot> boily asked 9h 48m 20s ago: since when are we misleading the topics? everything makes sense, eh?
01:00:25 <hppavilion> @tell boily I didn't set the "misleading topics" thing
01:00:38 <hppavilion> @tell boily I just added "esoteric" for consistency
01:01:02 <Elronnd> We should have the topic on revision control or something
01:01:20 -!- jaboja64 has joined.
01:02:35 -!- jaboja has quit (Ping timeout: 264 seconds).
01:05:08 -!- variable has joined.
01:10:18 <hppavilion> Elronnd: Speaking of which, I should probably GitHub my personal server and client soon so people can actually visit my personal network
01:11:03 <Elronnd> isn't github really expensive though?
01:12:26 <hppavilion> GitHub is the free one, unless you want private repos
01:12:49 <hppavilion> Or if you want their backend to run on your own servers, I think that's also expensive
01:13:25 <Elronnd> How would you put github on your server if you didn't get "their backend to run on your servers"?
01:15:30 <hppavilion> Elronnd: No, I was going to put the server/client on the github website
01:15:48 <Elronnd> that kind of personal server
01:16:06 <hppavilion> Elronnd: It's like HTTP/BBS, but if you use it you look awesome
01:16:23 <Elronnd> but if I use it no one else can look at it
01:16:26 <hppavilion> Because it's more a terminal application than anything else
01:16:34 <diginet> bitbucket doesn't everything github does, but better
01:16:46 <diginet> even better though: host your own git/hg repo
01:17:08 <diginet> it's hilarious how github has managed to centralize DVCS...
01:17:24 <diginet> distributed version control
01:17:29 <Elronnd> hppavilion: Decentralized Version Control System
01:17:52 <diginet> I cannot tell you how many programmers I've met who don't know what to do when github goes down
01:17:54 <hppavilion> Elronnd: Do you think the idea for a terminal-based command line-accessed server sounds cool?
01:17:54 <diginet> the irony is lost on them :/
01:18:02 <shachaf> What's centralized about it?
01:18:14 <shachaf> Things like bug tracking are centralized, but those are centralized with other systems too.
01:18:27 <hppavilion> diginet: Just a little server that spits out user-created content
01:18:39 <zzo38> I do not use GitHub for my own projects
01:18:44 <diginet> so...some kind of social network?
01:18:50 <hppavilion> diginet: Paired with a Qt-based pseudoterminal client
01:18:53 -!- tromp_ has joined.
01:19:03 <diginet> hppavilion: why not just use a regular terminal?
01:19:05 <hppavilion> diginet: Sort of, but it's not a website, so you look cool to everyone else when you use it
01:19:06 <diginet> that seems like a lot of work
01:19:10 <zzo38> Can you connect to it with a real telnet client?
01:19:28 <diginet> ...but you're making a GUI to clone a CL UI?
01:19:31 <zzo38> Such thing should be added on then
01:19:50 <hppavilion> diginet: The GUI allows me to add formatting and images down the line
01:19:51 <diginet> I host my own hg repo on my VPS that I was already paying for, so in effect I have a "private" repo for free
01:20:12 <diginet> hppavilion: plz tell me this isn't a clone of that godawful termkit thing
01:20:36 <hppavilion> So no, I guess. If I don't know what it is, I can't clone it xD
01:20:40 <diginet> hppavilion: a really stupid project, the creator got all buttmad when people didn't fawn over it
01:20:46 <zzo38> Even xterm supports colors and pictures and so on though
01:20:59 <hppavilion> diginet: I don't expect people to use it, but it'd be cool if somebody did
01:21:14 <hppavilion> diginet: Part of the point is that you can easily engineer your own client or server from scratch
01:21:24 <diginet> hppavilion: basically imagine a terminal which inexplicably uses Chrome for rendering thumbnails and stuff...it's like terminal but with web crap
01:21:29 <hppavilion> It literally uses string.split() for lexing AND parsing commands
01:22:08 <diginet> I would sue python if I could
01:22:32 <hppavilion> (I actually typoed "used" to "sued", realized my mistake, fixed it, then realized it was funny and unfixed it)
01:22:40 <diginet> hppavilion: personal bias
01:23:01 <diginet> I don't know enough to comment
01:23:07 <diginet> hppavilion: actually, my main issue with python is that it is too bloated
01:23:23 <diginet> zzo38: JS is far far far far worse
01:23:30 <diginet> there's not really a clear ly defined "core" of the language
01:23:35 <diginet> porting it is an utter nightmare
01:23:50 <hppavilion> diginet: http://pastebin.com/xRnvGfJk is an example of a fairly boring session
01:24:13 <diginet> new idea: drop python and Qt and whatever else and use FreePascal
01:24:28 <diginet> hppavilion: so it's like a BBS?
01:24:29 <hppavilion> diginet: I'm planning to expand the client/server to allow powerful things like Dwarf Fortress-style game graphics
01:24:54 <diginet> ahh, I didn't read the backlog
01:24:57 <hppavilion> diginet: I'm trying to modernize the concept of BBS in a way.
01:25:10 <diginet> well, that could be interesting I suppose
01:25:26 <hppavilion> diginet: Also, if someone sees you using it you look REALLY awesome from a non-programmer's perspective
01:25:44 <hppavilion> diginet: Remember, it's part of the internet, so of course there's porn.
01:25:45 <diginet> TIL porn uses special container formats
01:25:54 <diginet> hppavilion: so make it not internet
01:26:13 <hppavilion> diginet: How do you not make something internet while still using sockets?
01:26:33 <diginet> hppavilion: use twine and tin cans
01:26:34 <hppavilion> diginet: Correct answer: You don't, sockets use the internet
01:26:51 <diginet> porn violates the categorical imperative
01:27:09 <zzo38> You could use a local network I suppose
01:27:14 <diginet> and wait..how are you using complex numbers to refer to users?
01:27:21 <zzo38> Therefore it can use socket without needing internet
01:27:26 <diginet> you realized complex numbers only have partial order right?
01:27:29 <hppavilion> diginet: That was a joke, though a client could do that if they liked
01:27:39 <diginet> hppavilion: the categorical imperative. Do you even Kant?
01:27:43 <hppavilion> diginet: It's largely a thing implemented by the server
01:28:04 <zzo38> diginet: Do you know ES6?
01:28:25 <diginet> zzo38: I'm familiar with it, it's just as shit as ES1-5
01:28:59 <diginet> hppavilion: do you even Deontology?
01:29:00 <zzo38> Well I think it is good, except, it doesn't have "goto", and "!yield*" is not acceptable
01:29:21 <diginet> JS is like a braindead Lua, IMO
01:29:36 <zzo38> However a few ES6 feature are not supported in Node.js yet I think
01:30:09 <diginet> hppavilion: well considering that was one of its original purposes...I odn't see how that's bad
01:30:23 <hppavilion> diginet: Part of the server is that much calculation is done by the server; the only real required feature is that it accepts text input and that "METHODS" gives you a list of methods
01:30:31 <diginet> Object Pascal is the one of the best languages ever designed
01:31:40 <diginet> this sounds over engineered
01:31:45 <zzo38> I like C programming too though, I also make programming in C and also 6502 assembly language and BASIC and a few others
01:31:47 <hppavilion> diginet: All the server needs to do is accept information from the socket and return `HEAD:body` information
01:32:11 <hppavilion> The client then connects to it and sends user input
01:32:32 <diginet> it's one of the worst languages ever written. If you measure badness by costs wrt loss productivity due to hacking or loss assets, it may be the single most desctructive language ever
01:32:41 <diginet> why the hell are buffer overflows still aproblem in 2016?
01:32:48 <hppavilion> `%conn <ip> [port]` connects to the server in my client
01:32:52 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: %conn: not found
01:33:21 <hppavilion> (I think we should start apologizing to HackEgo whenever we accidentally send an invalid command)
01:33:23 <zzo38> diginet: Because of bad programmers I expect
01:33:52 <diginet> zzo38: even good programmers fall victim to oversites, esp in million+ SLOC projects
01:34:04 <diginet> that's why you'd have to be braindead not to use a memory safe and type safe language
01:34:32 <diginet> hppavilion: rust is a kitchen sink language
01:34:53 <zzo38> This is a 6502 code: http://wiki.nesdev.com/w/index.php/User:Zzo38/Famicom_Z-machine
01:34:57 <diginet> it's a convoluted mess that adds no conceivable benefit over languages like object pascal
01:35:00 <diginet> hppavilion: no, not really
01:35:14 <diginet> zzo38: how is that specific to JS though?
01:35:26 <diginet> it's equally true of Lua...and Python...and Perl...and Lisp...and countless others
01:35:47 <zzo38> diginet: It isn't specific to JS of course
01:36:01 <diginet> zzo38: nor is it esp well odne in JS
01:36:09 <diginet> theory: functional programming is the OOP of the 2010s
01:36:17 <hppavilion> diginet: Haskell. Haskell is nothing but functional programming.
01:36:18 <zzo38> Yes you are right, it is better done in such thing as Haskell
01:36:36 <diginet> we see the same ridiculous overpromies we saw in the 90s with OOP
01:36:48 <diginet> "bug free code, OOM less lines" etc etc
01:36:49 <hppavilion> Granted, that serious code was to implement a CL interpreter, but...
01:37:11 <diginet> and yet, Cabal is one of the buggiest pieces of software I've ever used
01:37:21 <zzo38> Do you like assembly language programming?
01:37:31 <hppavilion> diginet: What features would you like to see in my server, OOC?
01:37:50 <diginet> zzo38: that's too broad a category, which asm?
01:38:05 <diginet> hppavilion: what's ELK?
01:38:29 <hppavilion> diginet: It's a VM/ASM/Infrastructure I'm making as my own .NET-like system
01:38:46 <zzo38> Modern x86 is especially terrible, the old one was not quite as bad.
01:39:03 <zzo38> However, the assembly language programming I know best is 6502 assembly language programming, which I sometimes use.
01:39:04 <diginet> pre-286 was tolerable at best
01:39:13 <hppavilion> I'm not saying it's good, but I don't know much x86
01:39:13 <zzo38> diginet: Yes, that is what I meant.
01:39:15 <diginet> hppavilion: it's a nightmare
01:39:47 <zzo38> In my opinion 6502 assembly language is good
01:39:56 <hppavilion> zzo38: Perhaps you should port 6502 to modern machines xD
01:39:57 <diginet> hppavilion: you have to memorize all kinds of weird, implicit rules about which instructions use which registers implictly
01:40:10 <diginet> weird, non-orthogonal addressing mode restrictions
01:40:24 <diginet> needlessly complicated booting procedure
01:40:41 <hppavilion> IMHO, there should be instructions to do things on ANY register, and the assembler should simplify that to the builtins if applicable
01:40:52 <diginet> hppavilion: interesting, I've been developinng my own VAXoid ISA
01:41:00 <diginet> hppavilion: congratualtions, you just invented RISC
01:41:15 <diginet> along with a compiler for a Pascal/Oberon like language
01:41:28 <oerjan> <diginet> porn violates the categorical imperative <-- of course not. you just have to stream all your own sex too hth
01:41:41 <hppavilion> So if ZA1 (set Auxiliary 1 to 0) exists, and you call SET %A1 0, it'll simplify to the former
01:41:50 <zzo38> THe 6502 is ported to modern machines, there are several emulators!
01:41:58 <diginet> oerjan: it violated the second formulation, that you never treat another human as a means to an end
01:42:08 <hppavilion> zzo38: Yes, but are there any that compile to x86?
01:42:21 <zzo38> I think I have read of such a thing once
01:42:25 <diginet> hppavilion: not worth it
01:42:29 <hppavilion> Not an emulator, mind you, but a compiler from 6502 to x86
01:42:40 <diginet> hppavilion: this has been done from x86 to ARM
01:42:49 <diginet> hppavilion: actually, wait
01:43:07 <diginet> hppavilion: enjoy: http://andrewkelley.me/post/jamulator.html
01:43:20 <diginet> too bad it uses piece of shit language like Go
01:43:36 -!- jaboja64 has quit (Ping timeout: 250 seconds).
01:43:43 <hppavilion> You can model data moving instructions as ordered pairs <d, s> where s >= 1 and d >= 0, where s is the length of the reference chain to the source and d is the reference chain to the destination
01:44:16 <hppavilion> So <1, 0> is the SET instruction, <1, 1> is MOV, <2, 1> is IMOVL, etc.
01:44:17 <zzo38> I have designed a VM too, called QUACKVM and have written a few programs in it (a minesweeper game and a robot find kitten game are some)
01:44:53 <hppavilion> diginet: I know that his had 32 instructions, which was impressive to me
01:45:16 <hppavilion> diginet: I've also been attempting to design a VM based on digraphs
01:45:29 <diginet> a graph reduction machine you mean?
01:45:51 <zzo38> QUACKVM has memory-mapped stack and registers
01:46:01 <hppavilion> diginet: No, like an actual machine code that could- in theory, given completely different models- be run on bare metal
01:46:34 <diginet> I...don't kinow what you mean bu that
01:46:44 <zzo38> The program counter is memory address zero, address one is the default stack pointer, and address two is a "quick access" register, instructions that take operands from cell two can use a shorter encoding than those at later addresses
01:48:13 <zzo38> Yes that is correct, JMP is not a builtin (although the assembler provides a macro)
01:48:22 <hppavilion> diginet: I mean that it's a VM that uses a digraph w/ pointer instead of registers
01:48:25 <zzo38> (RETURN is not a builtin either)
01:49:56 <zzo38> In QUACKVM, RETURN is a macro for "PUT ,,STACK"
01:49:58 <hppavilion> zzo38: Though ELK has nearing on 128 instructions because I wanted floats to be builtin.
01:50:12 <zzo38> (Which encodes into a single memory cell)
01:50:52 <zzo38> No it does not separate instructions
01:52:14 <hppavilion> `CALL line` in ELK is a macro for `PUSH <index of current line+1> \ JMP line`
01:52:15 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: CALL: not found
01:52:31 <hppavilion> And CCALL is t a macro for the same, but with CJMP
01:53:58 <hppavilion> diginet: THings get weird in that <s, d> notation if you allow negatives
01:55:24 <zzo38> QUACKVM does have CALL as a builtin, although all instructions use the same encoding (the instruction set is orthogonal), so a computed call is the same CALL instruction.
01:55:56 <hppavilion> zzo38: You can do CALL as a builtin in QUACKVM if QUACKVM happens to have MOV, IIAC
01:57:24 <hppavilion> zzo38: At what point does a VM cease to qualify as a RISC?
01:57:34 <hppavilion> I've read RISC doesn't imply less instructions that CISC
01:57:51 <hppavilion> In fact, RISCs tend to have /more/ opcodes than CISCs
02:00:18 -!- AlexR42 has joined.
02:02:25 <zzo38> I don't know how it works
02:02:36 <zzo38> It seems to me people decide it arbitrarily
02:04:43 <oerjan> <diginet> oerjan: it violated the second formulation, that you never treat another human as a means to an end <-- according to wikipedia, you're missing an important "merely" there hth
02:07:42 <diginet> porn clearly violates the second formulation
02:07:50 <diginet> as told to me by an actual Kantian
02:09:05 <oerjan> so does buying chocolate and now i should stop.
02:11:19 -!- Hoolootwo has left ("Leaving").
02:11:28 -!- Hoolootwo has joined.
02:16:52 <hppavilion> zzo38: Perhaps I should just have conditional SKIP instructions and make JMP and its conditional variants macros...
02:18:12 <zzo38> In QUACKVM, all instructions are conditional skip instructions.
02:18:38 <hppavilion> So `JMP.Z condreg line` macros to `IFZ condreg %cond \ SKIPIF %cond \ SET %pc line`
03:05:40 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
03:08:25 -!- AlexR42 has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
03:08:35 <HackEgo> [wiki] [[Generic 2D Brainfuck]] https://esolangs.org/w/index.php?diff=46372&oldid=43414 * 126.96.36.199 * (+1) "d moves pointer counter down and r does too? I don't think so!"
03:11:19 -!- boily has joined.
03:17:37 <\oren\> why is everything i order from china being shipped from rotterdam
03:19:49 <hppavilion> \oren\: Could it be because it ships through the Netherlands/
03:20:57 <boily> he\\orenederlands\.
03:21:03 <lambdabot> hppavilion said 2h 20m 37s ago: I didn't set the "misleading topics" thing
03:21:03 <lambdabot> hppavilion said 2h 20m 24s ago: I just added "esoteric" for consistency
03:21:22 <boily> hppavilion: hppavellon. I was mislead. tdh.
03:22:59 <\oren\> oh, my other package is actually in china
03:23:20 <\oren\> the tracking status is 【广州互换局】已出口直封 which seems legit
03:24:33 <\oren\> oh, i see 广州 = Guangzhou
03:25:01 -!- boily has quit (Quit: TAPPED CHICKEN).
03:44:22 -!- lleu has quit (Quit: That's what she said).
03:52:02 -!- Elronnd has changed nick to fnurgle.
03:52:05 -!- fnurgle has changed nick to fnurggle.
03:52:10 -!- fnurggle has changed nick to Elronnd.
04:16:07 -!- mad has joined.
04:16:27 <mad> https://www.youtube.com/watch?v=tK50z_gUpZI <- guy trash talks garbage collection
04:19:59 <hppavilion> I'm making a VM called ELK that is meant to be an alternative to CLR! I'm a bit of an idiot!
04:23:15 <hppavilion> mad: It's made to work like the common language runtime, but not be microsoft
04:23:34 <hppavilion> * Have the cool interaction-between-language feature of the CLR
04:26:17 <\oren\> mad: the problem is these people reek of fake expertise
04:27:42 <mad> \oren\ : what makes you think that
04:28:40 <\oren\> just a general feeling, plus, seriously, if the Ouya is open source, then there is absolutely nothing that can prevent them from releasing and running native executables?
04:29:32 <mad> I'm not familiar with the ouya, I guess it did have the native executable fixes that android got
04:29:56 <mad> though to be fair I think Java in android was a stupid idea and should never have been done
04:32:26 <mad> and they are game programmers so of course they're going to trash talk java
04:33:23 <oerjan> sheesh scott aaronson's blog theme reset again
04:33:39 <oerjan> this is the third time, i think. he needs a more permanent fix to that bug.
04:34:14 <oerjan> (which is technically a "we don't support your php any more" type of bug iirc)
04:34:17 <mad> \oren\ : also, if the ouya store only takes java games, you're screwed
04:35:10 <\oren\> bah, some of the most memorable games I played as a kid were written in ActionScript
04:35:42 <mad> and didn't run at 60fps :D
04:36:50 <mad> funny, some of the most memorable games I played as a kid were written in 65816 assembly
04:36:57 <mad> and ran at 60fps
04:37:19 <mad> on a 3mhz system with barely any ram to talk of
04:39:34 <oerjan> *any more, so we sometimes delete all of it
05:09:58 -!- variable has quit (Quit: 1 found in /dev/zero).
05:18:33 <zzo38> I can program in 6502 assembly, not 65816 though
05:21:10 <mad> One of my pet projects is looking at the 6502 to see if you could 32bit-ify modernize it and stuff
05:23:05 <Elronnd> mad: by 60fps do you mean 60fpm?
05:23:45 <mad> snes games run at 60fps
05:24:14 <mad> nobody had an apple2gs which I admit typically runs at 60fpm :D
05:26:51 <zzo38> I find 6502 is OK as it is, although I use the stable unofficial opcodes too (they can be used only on NMOS 6502 or on other implementations of the NMOS 6502 instruction set)
05:29:17 * oerjan isn't sure what is happening in today's girl genius but he doubts it's proper handling of books
05:34:51 <mad> zzo38 : anu useful ones?
05:36:27 <zzo38> Do you mean useful unofficial opcodes? They can be useful for different purposes, I have used LAX, ARR, ANC, and others too
05:46:34 <pikhq_> mad: Yes, several of them were used fairly often back in the day.
05:48:03 <mad> lax loads both lda and ldx at the same time?
05:49:00 <mad> I can see how that could be useful
05:49:06 <zzo38> (However it does not work correctly with the immediate addressing mode, so LAX should be used only with non-immediate addressing modes.)
05:51:59 <zzo38> Here is the explanation: http://wiki.nesdev.com/w/index.php/Programming_with_unofficial_opcodes
05:53:23 <zzo38> One .NSF file I released starts with the instruction "EOR #0" in order to create a patch point, so that the multi-song NSF can be converted into a single-song NSF of any of the songs, without having to recompile the entire program.
05:56:20 <zzo38> However I noticed that the instruction that would be "STA immediate" actually does nothing and does not overwrite the instruction.
05:57:01 <zzo38> (If it did, it would probably be convenient for fast bankswitching)
05:58:28 <mad> it's hard to make a faster version of the 6502 is what I mean
06:01:29 <\oren\> can't you just make the chip smaller and the clock faster?
06:01:57 <mad> yes but you're still reading opcodes directly from DRAM
06:02:07 <mad> with a full access cycle every time
06:04:29 <mad> like, if you put it in competition with a MIPS or an ARM it will lose badly
06:05:10 <mad> because they use their memory cycles much more efficiently
06:06:45 <zzo38> Still I do not like the automatic reordering and automatic stalling and automatic caching and so on of many newer instruction sets, and I believe they should be done explicitly, although also some instruction might just not return the result right away (such as multiplication register for example) and you can do other stuff in between
06:09:25 -!- XorSwap has joined.
06:10:15 <mad> actually what I like about the idea of a modernized 6502 is the potential for new ways to do automatic reordering and automatic stalling and automatic caching
06:13:36 <mad> provided that you take out the stuff that tends to create stalls and doesn't help throughput too much
06:19:07 <hppavilion> In my ELK ASM, I was at first going to make conditional JMPs macros (using SKIPIF), but I was told that it's better to make the important ones builtin for efficiency
06:19:54 <hppavilion> mad: zzo38: everyone else: We should team up as the Council of Eso and construct the world's best ISA
06:20:06 <mad> I have some ideas
06:20:26 <mad> ok you know how a RISC is like
06:20:31 <hppavilion> mad: Also, ICYC, ELK is documented at https://docs.google.com/document/d/1ZFHwxE0AqpW9nRqTjLMPKZ68RUubLsYGRozKAwTI68s/edit#
06:20:35 <mad> add r0, r4, r5
06:20:44 <mad> (add r4 to r5 and store in r0)
06:21:05 <hppavilion> Where instructions take one (or at most 2, but rarely) CPU cycles to complete
06:21:14 <mad> ok I'd look into doing an architecture where instead you go
06:21:47 <hppavilion> Not necessarily less instructions, but less complicated instructoins
06:22:04 <mad> actually I'm looking into "less retirement"
06:22:21 <mad> so instructions that don't write to any register / flag / memory are GOOD
06:22:32 <mad> because you have one less register to rename
06:22:40 <mad> one less write port to the register file
06:23:05 <mad> the problem with a sequence, like
06:23:14 <hppavilion> mad: So the instructions don't have to have a target?
06:23:17 <mad> add r4, r4, r5
06:23:25 <mad> shr r4, r4, 16
06:23:33 <mad> shift right
06:23:54 <mad> ok, well, you're writing to two a register twice
06:24:05 <mad> even though the first value will never be used anywhere
06:24:21 <mad> so what I'm suggesting is:
06:24:31 <mad> every instruction writes to the accumulator
06:24:53 <mad> and you can also have that value copied to some other register
06:24:59 <mad> the sequence becomes
06:25:05 <zzo38> I have had similar idea before
06:25:12 <mad> add (ac), r4, r5
06:25:36 <mad> shr (ac), ac, 16 and also write the result to r4
06:26:14 <hppavilion> mad: Taking it one step further, you could do ACC r4; INC r5; SHRI 16; DACC r4
06:26:29 <hppavilion> mad: I don't see what makes this any more efficient though
06:26:40 <mad> hppavilion : I've considered that too
06:27:03 <mad> the catch being that it turns a 2 cycle sequence into a 4 cycle sequence
06:27:20 <mad> lower latency is good
06:27:45 <hppavilion> mad: That might be more efficient for some types of program, but not all
06:27:57 <mad> well, you could have VLIW style fusion
06:28:03 <mad> have every op being
06:28:18 <Lymia> Android-x86 is a piece of crap.
06:28:21 <hppavilion> Larger programs- the ones that are actually compiled and need to be efficient- would probably be /less/ efficient
06:28:26 <mad> [otional ACC], alu operation, [optional DACC]
06:28:28 <Lymia> It has lost in every single way I can think of so far.
06:28:44 <mad> and have the whole 1-3 instruction sequence fit into a single 32bit word
06:28:56 <mad> that way you can pretend it's a 3 instruction sequence for the programer
06:29:05 <mad> except it's still a single instruction for the CPU
06:29:54 <hppavilion> mad: We could have some alternative syntax to make it easier to assemble and more obvious how it works
06:30:35 <mad> ok next step is that you tend to have instruction sequences that are, like,
06:30:51 <mad> ACC alu, alu, alu, alu, alu DACC
06:31:04 <hppavilion> e.g. `^5 -> RSHI 16 -> _r5` is accumulate-shift-disaccumulate
06:31:29 <mad> ok well what if you have two sequences like that one after the other
06:31:36 <mad> ACC alu, alu, alu, alu, alu DACC, ACC alu, alu, alu, alu, alu DACC,
06:31:51 <Lymia> It's 4.4 build actually works on Virtualbox.
06:31:57 <hppavilion> mad: You should make a proof of concept so it's easier to understand
06:31:58 <mad> you can run those 2 sequences in PARALLEL
06:32:09 <Lymia> The 5.1 build, for some reason, apparently is missing a tablet interface
06:32:21 <mad> the CPU only needs to know in advance what registers the DACC instructions are writing to
06:33:13 <mad> in fact you can guess that there's a new execution thread starting every time an ACC instruction appears
06:33:38 <mad> not 100% sure yet
06:34:05 <mad> probably someting like jz / jnz on the accumulator value
06:34:10 <hppavilion> mad: Perhaps every ACC alu* DACC is put in a hardwired WHILE loop?
06:34:19 <mad> and some cmp alu opcode
06:34:35 <zzo38> One of my idea was VLIW microcode and that microcodes can be user-programmable and self-modifying; the external instruction set is something like old 8-bit instruction sets but can be modified by the program.
06:34:40 <mad> or a jmp instruction that compares the alu to some register and jumps if the comparison is true
06:35:10 <mad> I like how RISCs handle the call stack
06:35:26 <mad> JL (jump and put jump source in a preset register)
06:35:34 <mad> aka "jump and link"
06:35:48 <mad> then to return you call j LR
06:35:55 <zzo38> Another of my ideas was to have a conditional move instruction, the jump is just the "load pc", and immediate addressing mode is actually "pc indirect with postincrement"
06:35:58 <mad> hppavilion : why not?
06:36:01 -!- hppavilion has set topic: Joining this channel is a RISCy move | Eﬃ's ﬁneﬆ ﬂuﬀy waﬄes | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://esolangs.org/ | 100% of cpus on the wall ♪.
06:36:13 <mad> it does call and return in 2 opcodes
06:36:34 <mad> (jump and link, and simple jumping to a register address)
06:36:39 <mad> none of which write to memory
06:36:49 <hppavilion> mad: Because it can be decomposed into two opcodes: PUSH <current line> and JMP <destination>
06:36:58 <mad> push is WAY more complex
06:37:16 <mad> jl DOESNT TOUCH THE MEMORY
06:37:22 <mad> that's a 100x win
06:37:25 <hppavilion> zzo38: OK, yeah, it's kind of obvious that it is xD
06:37:37 <mad> hppavilion : you use a stack
06:37:50 <mad> it just doesn't have to be melded into the call opcodes
06:38:03 <mad> like a typical version goes
06:38:04 <zzo38> I think I have read about a VM that has a branch and link instruction, although you could specify what register rather than only one register
06:38:07 <hppavilion> mad: Perhaps have a 4-bit mini-opcode (nested ISA) that allows for conditions to be done?
06:38:08 <mad> jl _function
06:38:17 <mad> _function:
06:38:36 <mad> st lr, [sr]
06:38:53 <mad> (function body goes here)
06:39:07 <mad> ld lr, [sr]
06:39:17 <hppavilion> Well, 4-bit opcode, 2 n-bit (where n=ceil(log(regcount))) arguments
06:39:48 <mad> like, you need zero stack opcodes
06:40:04 <hppavilion> mad: OK, here's what I've got. Assuming 64-bit architecture
06:40:53 <zzo38> You could also use different addressing modes to deal with stack instead of stack opcodes, such as "register indirect with postincrement" and so on. If PC is also one of those registers then immediate addressing is also the same one
06:41:22 <mad> zzo38 : the problem with those is that you have instructions that write to 2 registes
06:41:32 <mad> register writes are bad
06:41:52 <mad> that being said ARM does have them
06:42:04 <mad> and yes it does use them for the stack
06:42:45 <mad> PC probably really shouldn't be a general purpose register
06:43:19 <mad> if you're running 1 instruction per cycle you're fine
06:43:37 <mad> but once you're doing multiple stuff then the PC really isn't ever where you expect anyways
06:44:06 <mad> due to all the caching, branch predicting etc
06:44:17 <zzo38> That's why you don't execute multiple instructions per cycle, you instead execute an instruction that can do multiple things, and don't use branch prediction and so on
06:45:41 <zzo38> (QUACKVM, which is designed purely for VM and not fore hardware, has the PC at address zero, and this is mainly how to deal with flow controls)
06:46:04 <mad> well, the problem with "multiple thing" instructions is that they tend to be overly complex
06:46:19 <mad> that's why they got booted out on RISCs
06:46:25 <mad> they weren't making anything faster anyways
06:46:51 <mad> zzo38 : PC at zero is bad
06:47:13 <mad> zzo38 : because then any memory write turns into a potential surprise jump
06:47:52 <hppavilion> mad: The header is 2 bytes, which gives the number of conditions used for this thread
06:48:29 <zzo38> It is not for hardware though, hardware should use proper register instead anyways
06:48:55 <hppavilion> It is followed by that many conditions, which are of the form of 1 byte for a "condition group", 1 byte for the condition opcode, then 2 8-byte groups for the arguments (assuming a 64-bit architecture)
06:49:33 <mad> problem with conditionals is
06:49:34 <hppavilion> The "condition groups" are based off of Prolog- basically, ALL conditions in AT LEAST ONE condition group must evaluate to true for it to be counted as true
06:50:04 <hppavilion> mad: It's probably a stupid idea, but I'd like to explain it :)
06:50:26 <hppavilion> If at least one condition group is all true upon testing, the loop terminates
06:51:23 <hppavilion> Which starts with a 1 byte "flag header" that tells the (probably virtual) machine which are used and which are not
06:52:17 <mad> oh? what are some typical flags?
06:52:17 <hppavilion> Then you have up to 8 (the exact number is equal to the hamming weight of the flag header) 8-byte (64-bit architecture again) things that tell it what the target registers are
06:52:58 <hppavilion> Basically, each flag tells it that a given target is present
06:53:31 <hppavilion> So if the flag for optional ACC is true, then the first thing is the optional ACC register argument
06:54:22 <mad> I have an idea but I don't get the reasons for these :D
06:54:50 <mad> I don't quite undersant what it's for
06:55:22 -!- XorSwap has quit (Quit: Leaving).
06:55:33 <hppavilion> Each [ACC] alu* [DACC] group has a WHILE loop over it that terminates when one of its condition groups is met
06:55:50 <hppavilion> I don't know if it'll work as a substitute for JMP, but it might
06:55:57 <mad> actually in the kind of stuff I'm going for the JMP instructions can be exactly like on MIPS except for the delayed branch stuff
06:56:06 <mad> or like on ARM without the flags register
06:56:18 <hppavilion> mad: If you don't like it, I could just put it in my own separate thing ;)
06:56:19 <zzo38> Once when trying to make a schematic diagram of CPU, I made it all operation are by register, the only instruction is to copy one register to one register and then it jump to specified address, but that is only half of the program counter and the other half is one of the register that you can write on
06:56:34 <mad> it's just that I have a different design goal
06:56:52 <mad> my goal is simple: out of order cpu without having to to the whole tomasulo algorithm
06:57:14 <hppavilion> mad: Are you interested in hearing about mine at all, or should I stop explaining?
06:57:15 <mad> so basically I'm looking at having instruction groups as well
06:57:19 <mad> but for a different reason
06:57:48 <mad> well, yours has some interesting commonality so I'll try to explain
06:58:25 <izabera> googling quackvm, first result is a 2012 paper by VM Quack
06:58:41 <mad> RISC is good but it has too many useless register reads/writes, so to do 4 ops per cycle you need an insane 8-read port 4-write port register file
06:58:41 <izabera> http://www.ncbi.nlm.nih.gov/pubmed/22718583
06:58:59 <mad> plus same thing for renaming all the registers but with even more associativity etc
06:59:08 <hppavilion> mad: My idea is at least inspired by your uber-threading thing you explained
06:59:24 <mad> yes this is the uber-threading thing that I've refined more
06:59:38 <zzo38> izabera: Well, it is not what I mean. The one I mean is: http://zzo38computer.org/prog/quackvm.zip
06:59:51 <mad> to be able to uber-thread code, you need to rename all the registers
07:00:23 <mad> so every time you have a write to a real register, you have to pull out a new register name out of the available register name queue
07:01:10 <mad> accumulator writes don't have to be renamed, correct
07:01:48 <mad> if you look at a bunch of code, normally it should be made out of a bunch of short sequences that go
07:02:10 <mad> ACC alu, alu, alu.. alu DACC, ACC alu, alu, alu.. alu DACC, ACC alu, alu, alu.. alu DACC,
07:02:29 <mad> so you look at the target of each one of those DACCs
07:03:05 <mad> also you look if that target reappears right after in the following ACC and alu opcodes
07:03:11 <mad> this can be cached
07:03:30 <mad> you rename those to be the same as the register you got for the DACC
07:03:50 <mad> all the other ACC and alu register sources you also rename
07:04:04 <mad> to the previous names for those registers
07:05:44 <mad> ACC r4, shr 16, DACC r0, ACC r5, shr 14, add r0, DACC r1, ACC r6, shr 12, add, r1, DACC r2
07:06:10 <mad> ok you can issue all of those in 1 cycle to 3 micro thread units on your cpu
07:06:27 <mad> all you have to do is come up with a new virtual register for r0, r1, r2
07:06:44 <mad> let's say v20, v21, and v22 are available
07:07:33 <mad> and let's say r4 is currently renamed to v10, r5 <= v11, r6 <= v12
07:07:46 <mad> ok well then you can rename the whole lot to
07:09:02 <mad> ACC v10 shr 16 DACC v20; ACC v11 shr 14, add v20 DACC v21; ACC v12 shr 12, add v21 DACC v22
07:09:58 <mad> then you can simply queue in your alu1 to execute the first part of the renamed instructions, alu2 to execute the second part, and alu3 to execute the third part
07:10:23 <mad> also each virtual register needs a valid bit
07:10:42 <mad> so that 3rd unit doesn't read v21 before the value actually goes live
07:11:13 <mad> it's also possible to have a micro-thread that writes more than 1 register
07:11:35 <hppavilion> mad: We should invent THE most long-word architecture ever built
07:11:55 <mad> something like ACC v10 add 4 DACC v11, add 4 DACC v12
07:12:29 <mad> I can propose an instruction format but it's a bit hair raising :D
07:12:32 <hppavilion> ("unnecessary padding" would be something like having kilobyte-long opcodes)
07:13:07 <mad> ok first thing its easier to rename registers if you have different rename partitions
07:13:17 <mad> like have r0, r4, r8, r12, r16 in the first partition
07:13:23 <mad> r1, r5... in the second
07:13:29 <mad> r2, r6... in the third
07:13:35 <mad> r3, r7... in the fourth
07:13:57 <mad> ok opcode goes:
07:15:08 <mad> [partition 1 nop/write to registerX] [partition 2 nop/write to registerX] [partition 3 nop/write to registerX] [partition 4 nop/write to registerX]
07:17:27 <mad> alu op1: [[nop/ACC +rename reg flag] alu-op[+rename reg flag] [nop/DACC]]
07:17:32 <mad> alu op2: [[nop/ACC +rename reg flag] alu-op[+rename reg flag] [nop/DACC]]
07:17:36 <mad> alu op3: [[nop/ACC +rename reg flag] alu-op[+rename reg flag] [nop/DACC]]
07:17:46 <mad> etc... for all the alu ops in the group
07:18:33 <mad> [micro thread 1 start/end points] [micro thread 2 start/end points] ... [micro thread N start/end points]
07:19:33 <mad> [offset to memory load opcode in the alu opcodes][offset to memory store opcode in the alu opcodes]
07:19:53 <mad> and that's it!
07:20:24 <mad> with potentially 2 memory load opcodes if the data cache can handle 2 loads per cycle
07:20:30 <\oren\> hmm what if the 6502 and all its memory were together on one chip
07:20:35 <mad> all of this can be issued in 1 cycle
07:20:52 <mad> as long as you rename every single register read
07:21:13 <mad> and you don't have any more than 4 register writes and they all end up on different partitions
07:21:36 <\oren\> and then you have an asynchonous mechanism for paging things from the fast memory to a much larger slow address spae
07:21:52 <mad> \oren\ : still not efficient compared to a MIPS with all its memory together on one chip :D
07:22:30 <\oren\> see most 6502 ode uses the zero page as registers
07:23:14 <mad> \oren\ : yes but there's always the menace that some absolute or indirect address opcode writes into the zero page
07:23:30 <mad> that prevents you from turning the zero page into a register file :(
07:24:07 <mad> ok suppose you have
07:24:49 <hppavilion> \oren\: I want to make the most LIW architecture ever
07:24:51 <mad> lda #0, sta [some address that later turns out to be zero page], lda $40, adc $44
07:26:49 <mad> if you were guaranteed that "sta [some address that later turns out to be zero page]" won't write to $40 or $44 then you could pipeline those operations while the long sta executes and replace the slow memory reads they do with fast register reads
07:27:02 <\oren\> see but that's the key, you don't need it to be out of order, because the chip as designed runs all the way through with each cycle
07:27:37 <mad> then you have to wait till sta does the whole address calcuation
07:27:49 <mad> which is potentially up to 5 cycles or something
07:31:12 <mad> compared to the equivalent MIPS sequence which is something like li $1, 0x0 sw $1, [some address] addu $10, $10, $11
07:31:17 <mad> you're coming way behind
07:32:10 <mad> the MIPS sequence runs in 3 cycles (2 if you're dual issue, 1~ish on an out-of-order tomasulo MIPS)
07:33:12 <mad> actually the "li" instruction isn't even necessary since you have a zero register
07:33:22 <zzo38> Another thing in 6502 is that the zero page may be mirrored, depending on the system (for example, on Famicom it is mirrored)
07:33:28 <\oren\> but how fast can those ycles be made?
07:33:46 <mad> \oren\ : as fast as x86 presumably
07:33:46 <zzo38> And I have designed a mapper which takes advantage of that mirroring to do bankswitching
07:34:22 <mad> probably a little bit faster even since it doesn't have as much crazy insanity like flags registers to deal with as x86
07:35:57 <mad> MIPS instructions are easy to reorder since they have no side effects aside writing the result in a register
07:36:33 <mad> as opposed to multiple side effects on 6502 like changing the flags but only some flags depending on which instruction
07:37:09 <\oren\> So I guess my intuition here is that 6502 is such a simple processor, with no reordering or complex instructions etc. that you can make it faster simply by shrinking the chip and upping the clock speed to insane levels
07:37:46 <\oren\> whereas the reordering itself in complex processors increases the die size so you can't do that as much
07:38:16 <mad> reordering is something you do when you're already pushing out 2 instructions per cycle and want to reach 3 4 etc
07:38:52 <mad> if you limit yourself to 1 IPC then MIPS and ARM become a lot less complex
07:40:14 <mad> and MIPS is designed to be easy to pipeline and up the clock
07:40:45 <mad> because you don't have to do anything more complex in 1 clock than adding or loading a word from the data cache
07:41:17 <mad> that's why it's a classic
07:41:17 <zzo38> I have done in quite a different way to do multiple things at once with 6502 programming, such as using unofficial opcodes such as LAX and DCP and SAX and so on, and to design hardware in the ROM cartridge to take advantage of RAM mirrors so that one instruction can both read RAM, update flags, and bankswitch all at the same time, or to bankswitch and save the selected bank number to RAM at the same time.
07:42:52 <mad> though I have to admit making the 6502 32bits and adding a bunch of registers would probably make it a lot faster
07:43:34 <mad> that's how the 8080 eventually became the 386 and it somehow worked in the end
07:44:16 -!- tromp_ has quit (Remote host closed the connection).
07:44:41 <\oren\> I think a lot of the speed of x86 has to do with the compilers generating the code
07:45:18 <\oren\> people use it so much that there's an immense knowledge of what works and what doesnt
07:45:44 <mad> no x86 has a couple of weird voodoo things going for it
07:46:02 <mad> that have helped it not get wiped off the surface of earth
07:46:29 <mad> basically remember itanium? intel tried to make a cpu faster than x86
07:46:48 <mad> and they had the whole "no legacy software" advantage
07:46:50 <\oren\> did anyone end up using that?
07:46:53 <mad> and they failed
07:47:23 <mad> itanium was good at floating point but it was never really faster than x86 which is why it failed
07:47:44 <\oren\> "The most recent processor, Poulson was released on November 8, 2012."
07:48:26 <mad> like, the 4 IPC dec alpha was the fastest cpu in the world when introduced
07:48:52 <mad> (basically like a 4 instruction per cycle mips almost)
07:49:20 <mad> the AMD athlon went basically the same speed with 3 instructions per cycle
07:49:27 <mad> and eventually got higher mhz
07:50:12 <mad> because x86 has opcodes that are math+memory load
07:50:33 <mad> and even ones that are memory load->math->memory store
07:50:57 <mad> it turns out, this is useful
07:51:19 <mad> every time that sort of opcode is used, well, that's one less register write compared to mips/arm/etc
07:51:31 <mad> and one less opcode to push through the pipeline
07:51:38 -!- oerjan has quit (Quit: Nite).
07:51:54 <mad> also the weird/brain damaged x86 instruction encoding acts as some sort of data compression
07:52:11 <mad> which means you get more instruction cache for free
07:52:31 <mad> (well, ok not free when you consider the heavy decoding overhead but still)
07:52:36 <\oren\> oh, i see, simpler instructions are shorter
07:53:17 <mad> irl having a 2/4/6... byte instruction format instead of like 1..15 would probably have been a lot better
07:53:42 <mad> and more balanced between size reduction vs extra encoding complexity
07:54:17 <mad> because irl most instructions that actually get used could fit in 2 bytes most of the time
07:54:32 <mad> which is why ARM has all those THUMB/THUMB2 modes
07:56:01 <mad> also the low number of registers have forced intel and amd to optimize memory loads/stores
07:56:03 <mad> this is good
07:56:56 <mad> so yeah that's the 'voodoo' behind the x86
07:57:17 <mad> irl it's probably not REALLY better than risc architectures
07:58:04 <mad> but it's not bad in a way that makes it SLOW
07:58:20 <mad> (once you make it all out-of-order and stuff)
08:00:01 <mad> if 68000 had survived it would probably be in the same weird position as well
08:30:07 -!- Sgeo has quit (Read error: Connection reset by peer).
08:44:48 -!- tromp_ has joined.
08:46:36 -!- J_Arcane has quit (Ping timeout: 256 seconds).
08:49:06 -!- tromp_ has quit (Ping timeout: 245 seconds).
09:40:19 <hppavilion> I just saw a picture of a PDP-11 for the first time
09:51:12 <\oren\> what, you didn't picture it as a giant fridge with lights and switches in front?
09:53:00 <\oren\> over the years they made them smaller though
09:54:36 -!- hppavilion has quit (Ping timeout: 256 seconds).
10:07:36 -!- mroman has joined.
10:07:44 <mroman> http://designs.mroman.ch/designs/d3.html
10:07:50 <mroman> I didn't know there was a "ch" css unit
10:07:55 <mroman> but I'm playing around with it now.
10:08:37 <mroman> I wanted a fixed 80x25
10:08:46 <mroman> but that looks weird on smart phones :)
10:09:04 <mroman> so I just used 80ch as max-width for the div
10:09:18 -!- TodPunk has quit (Read error: Connection reset by peer).
10:09:23 <lambdabot> oerjan said 9d 17h 13m 16s ago: <mroman> according to the majority of readers [...] <-- s/readers/survey answerers/ hth
10:09:50 -!- TodPunk has joined.
10:10:03 <mroman> now I need to figure out what tables would look like in such a layout
10:14:35 -!- TodPunk has quit (Read error: Connection reset by peer).
10:15:21 -!- TodPunk has joined.
10:19:14 <mroman> colgroup does not allow me to overwrite text-align?
10:22:21 <fizzie> "Do not try to set the text-align property on a selector giving a <colgroup> element. Because <td> elements are not descendant of the <colgroup> element, they won't inherit it.
10:24:35 <fizzie> Their suggested workaround is to use td:nth-child(an+b) selectors, where a is the number of columns and b the one you want to change. And hope you don't do any colspans.
10:25:34 <mroman> http://designs.mroman.ch/designs/d3.html
10:25:51 <mroman> table looks good on my smartphone too
10:27:42 <mroman> it looks fucked up in "Web" though
10:27:50 <mroman> but I'm not sure "Web" is CSS3 ready
10:28:36 <fizzie> How about Netscape Navigator 4.01?
10:31:19 <mroman> http://api.browsershots.org/png/original/8f/8f269efd2501458b93febb6967fa5e8e.png
10:31:56 <mroman> I've never heard of that browser before anyway
10:32:16 <fizzie> I used Dillo on a crappy laptop.
10:32:26 <fizzie> Very lightweight, yet graphical.
10:33:07 <fizzie> Of course the web was kind of different a decade or so ago.
10:37:00 -!- fractal has quit (Ping timeout: 260 seconds).
10:45:17 -!- tromp_ has joined.
10:49:36 -!- tromp_ has quit (Ping timeout: 250 seconds).
11:07:33 <\oren\> only problem is you're not using a true-monospace font, it's one of those annoying ones where the bold version is wider than the unbold
11:08:31 <\oren\> of course the usual solution is to use bright color instead of bold
11:09:12 <\oren\> hmm... woit, maybe it is true-monospace
11:35:01 -!- boily has joined.
12:17:08 -!- Treio has joined.
12:20:55 -!- boily has quit (Quit: DISCONNECTED CHICKEN).
12:36:53 -!- MoALTz has quit (Quit: Leaving).
12:56:50 -!- benderpc_ has joined.
12:57:23 -!- Treio has quit (Remote host closed the connection).
13:00:26 -!- AnotherTest has quit (Ping timeout: 250 seconds).
13:00:44 -!- benderpc_ has quit (Client Quit).
13:02:47 -!- bender| has joined.
13:09:04 -!- Sgeo has joined.
13:13:37 -!- lleu has joined.
13:13:37 -!- lleu has quit (Changing host).
13:13:37 -!- lleu has joined.
13:29:57 -!- vanila has joined.
13:44:26 -!- tromp_ has joined.
13:54:50 -!- lynn has joined.
13:56:18 -!- AnotherTest has joined.
14:00:14 -!- tromp_ has quit (Remote host closed the connection).
14:00:32 -!- fractal has joined.
14:08:50 -!- MoALTz has joined.
14:09:50 -!- MDude has joined.
14:18:51 -!- `^_^v has joined.
14:30:43 -!- MoALTz has quit (Quit: Leaving).
14:37:05 -!- spiette has joined.
14:43:26 -!- yorick__ has changed nick to yorick.
15:02:28 -!- AnotherTest has quit (Ping timeout: 248 seconds).
15:04:45 -!- MoALTz has joined.
15:14:05 -!- bender| has quit (Ping timeout: 260 seconds).
15:14:57 -!- bender| has joined.
15:18:10 <HackEgo> [wiki] [[Truth-machine]] https://esolangs.org/w/index.php?diff=46373&oldid=45966 * 188.8.131.52 * (+4130) Added Malbolge
15:45:57 -!- tromp_ has joined.
15:50:09 -!- tromp_ has quit (Ping timeout: 240 seconds).
15:55:37 <int-e> vanila: we already had that slogan in the topic I believe
15:57:32 <int-e> speaking of which, I'm impressed by Eﬃ's longevity.
15:58:28 -!- Treio has joined.
16:06:25 -!- mroman has quit (Quit: Lost terminal).
16:11:48 -!- Treio has quit (Remote host closed the connection).
16:12:52 <izabera> https://murze.be/2016/02/today-digitalocean-lost-our-entire-server/ way to go digitalocean
16:13:34 -!- bender| has quit (Ping timeout: 252 seconds).
16:15:20 <izabera> link doesn't work with sank...
16:16:41 -!- ais523 has joined.
16:17:43 <int-e> uh, maybe it's "sunk"... but anyway, I was just musing.
16:18:54 <MDude> They call their serverts droplets, so maybe "evaporated"?
16:19:02 <fizzie> "Sink" is a game discordianists play.
16:19:13 <fizzie> http://principiadiscordia.com/book/73.php <- there's the rules.
16:19:17 <int-e> MDude: well it's a digital ocean
16:19:36 <int-e> MDude: And I'd hope they're not cooking it.
16:19:48 <fizzie> I hope so too, I'm writing this from a droplet.
16:20:01 <fizzie> (Kinda-sorta-kinda, I guess that's a point-of-view question.)
16:20:11 <MDude> Well evaporation happens all the time, that's how we get rain later.
16:20:23 <MDude> I don't know if I'd want my server hosted by someone who treats it as no more important than a droplet in an ocean.
16:20:50 <fizzie> When all you've got is an ocean, every server looks like a droplet.
16:20:52 <int-e> In any case the story matches my expectations.
16:20:55 <MDude> Doesn't sound like it'd be good with custome service.
16:21:12 <MDude> Like maybe call it a reef or something.
16:21:48 <int-e> (that's without checking what their contracts say about reliability)
16:22:01 <fizzie> I think they did exactly what they promise.
16:24:02 <int-e> http://esoteric.sange.fi/archive/2001-q2-1 ... look for "I sink the sink"
16:25:26 <izabera> looks like a drug dealer's encrypted conversation
16:27:57 -!- Snakke has joined.
16:30:08 <Snakke> Is this channel about esoteric (magic, runes, tarot...) or computer term?
16:30:41 <HackEgo> sNaKkE: 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.)
16:31:09 <Snakke> then ill to leave, bye !! ^^
16:31:24 <myname> good, that font color was horrible
16:31:49 <myname> dark grey on black ground
16:31:49 <vanila> i thought ais was going
16:31:55 -!- Snakke has left.
16:32:56 <ais523> oh, I was just seeing all the messages in bold
16:33:05 <ais523> also this is the only legitimate use for a stupid welcome that I've seen :-)
16:34:37 <ais523> yes, I hate the stupid welcome variants
16:35:50 <int-e> relcome is for encouraging people to filter colors :P
16:35:58 <int-e> (or was, whatever)
16:36:30 -!- Lord_of_Life has quit (Excess Flood).
16:36:48 <ais523> `` welcome vanila | rainwords
16:37:06 -!- Lord_of_Life has joined.
16:37:09 <ais523> did rainwords get deleted too? I'm pretty sure I didn't delete that one
16:37:16 <ais523> I may well have deleted relcome itself though
16:37:18 <HackEgo> vanila: 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.)
16:37:26 <int-e> `culprits bin/relcome
16:37:53 <HackEgo> tswett tswett shachaf oerjan oerjan elliott oerjan elliott ais523_ ais523_ elliott Jafet oerjan elliott oerjan oerjan oerjan ais523 ais523 elliott FreeFull Bike Bike Bike Bike
16:41:07 <int-e> anyway the thing is, Snakke had been here before (last friday), and `welcomed.
16:41:40 <int-e> (and that explains the "misleading topics")
16:41:48 <myname> i am not confused that people which want to go to real esoteric stuff don't learn
16:41:56 -!- ais523 has quit (Read error: Connection reset by peer).
16:41:57 <int-e> (which, confusingly, have been elided from the topic)
16:42:13 -!- ais523 has joined.
16:42:35 <vanila> why don't we make this channel double purpose
16:42:38 <vanila> esoteric languages and occult!
16:42:48 <vanila> it could really spice things up
16:43:20 <fizzie> Depends on whether that's ∧ or ∨.
16:43:57 <myname> because occultists are no fun
16:44:00 <fizzie> Or maybe ∩ or ∪ would be more appropriate.
16:44:36 <vanila> idunno i liked the sound of those esoteric runes
16:44:43 <vanila> could use them for something
16:44:59 <int-e> Anyway, I'm looking for a reference that studies PCP as a trichtomic problem (a PCP instance can have a finite solution (corresponding to accepting Turing machines), only infinite solutions (corresponding to non-terminating Turing machines) or have no solution at all (corresponding to Turing machines that reject their input)). The result I want to use is that there's no algorithm that separates...
16:45:05 <int-e> ...the finite solution instances from the no-solution instances. This is obvious enough that it should exist in the literature... but where?
16:45:51 <int-e> (the correspondences come from the standard proof that encodes runs of turing machines on a given input as a PCP instance)
16:47:24 -!- tromp_ has joined.
16:47:40 <vanila> it's not a direct application of rices theorem?
16:49:28 <int-e> well, no, because Rice's theorem talks about Turing machines.
16:50:04 <int-e> It's doing the construction of a PCP instance from a TM that I want to avoid.
16:50:21 <vanila> a direct proof of this before showing equivalence to TMs
16:50:39 <int-e> no, just a result I can cite
16:51:04 <vanila> i don't see why isn't it just rice theorem then sorry
16:51:42 <int-e> I want a result about PCP.
16:52:22 <int-e> Oh perhaps you regard PCP as a model of computation... then it would be Rice. I usually don't.
16:52:23 -!- tromp_ has quit (Ping timeout: 264 seconds).
17:18:44 -!- bb010g has quit (Quit: Connection closed for inactivity).
17:19:10 <Taneb> Rice, the evil sorcerer?
17:19:29 <Taneb> That... is a reference that is slightly too obscure
17:19:48 <MDude> An entire turing machine carved onto a single grain of rice.
17:19:48 <Taneb> In fact, it's an in joke
17:20:17 <MDude> Oh no my cat is here.
17:20:25 <Taneb> MDude, say hi from mke
17:23:42 <int-e> vanila: sorry, I'm to stupid to read. what you wrote after "ok I get you" was correct.
17:23:45 -!- V3R4X has quit (Quit: sleep).
17:24:41 <int-e> (though I suspect that the direct proof would really consist of the reduction from TMs, but indeed I don't care about the internals of that proof)
17:25:23 -!- LexiciScriptor has joined.
17:29:03 -!- idris-bot has quit (Quit: Terminated).
17:30:30 <int-e> `le/rn rice/It is undecidable whether a given Turing machine can prove Rice's theorem.
17:32:16 <int-e> @googe rice's theorem
17:32:17 <lambdabot> https://en.wikipedia.org/wiki/Rice's_theorem
17:33:49 <vanila> i sort of feel like PCP is so difficult to do anything with that nobody might have done a direct proof
17:35:06 <vanila> post correspondence problem
17:35:21 <vanila> its about who send letters to who
17:35:28 <lambdabot> https://en.wikipedia.org/wiki/Post_correspondence_problem
17:35:57 <int-e> `` echo wisdom/*post*
17:36:19 <int-e> `quote correspondence
17:36:56 <HackEgo> [wiki] [[Beeswax]] M https://esolangs.org/w/index.php?diff=46374&oldid=46352 * Albedo * (+10) /* Available instructions in beeswax */
17:38:55 <int-e> vanila: But PCP is easy to reduce from. It's just that in my case "PCP is undecidable" isn't strong enough to get the job done, because I can't predict what happens when there's only infinite solutions.
17:42:02 -!- AnotherTest has joined.
17:44:09 <zzo38> vanila: Well, one thing that could be done is, you can make the esoteric programming which is including occult too, is also one thing to do
17:45:30 <zzo38> (If you want to; it is not requited)
17:49:36 -!- hppavilion has joined.
17:56:20 -!- lynn_ has joined.
17:58:37 -!- smorgasbord has joined.
17:59:25 <hppavilion> smorgasbord: Oh, sorry, didn't mean there was a python one xD
17:59:28 -!- lynn has quit (Ping timeout: 276 seconds).
17:59:30 <Taneb> What do yo mean by a python help bot?
17:59:43 <myname> who needs python if he can have haskell
17:59:49 <Taneb> !python print "hello"
17:59:54 <hppavilion> Taneb: He seemed to be looking for a bot, so I humorously directed him here
17:59:55 <Taneb> I'm so glad that worked
18:00:21 <EgoBot> Traceback (most recent call last): \ File "<stdin>", line 1, in <module> \ NameError: name 'date' is not defined
18:00:28 <hppavilion> smorgasbord: If you want to experiment with python in a CLI fashion, you should check out ipython
18:00:48 <hppavilion> smorgasbord: This channel is generally for discussion of esolangs though, not a help channel usually
18:01:42 <hppavilion> In case you're curious about esolangs, you can check out the wiki at [http://esolangs.org/wiki/Main_Page] </evangelism>
18:03:24 -!- lynn has joined.
18:04:46 -!- lynn_ has quit (Ping timeout: 256 seconds).
18:06:40 <int-e> `` python -c 'print(1+1)'
18:07:25 <izabera> this proves that bash is faster than python
18:07:34 -!- idris-bot has joined.
18:07:40 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: mapole: not found
18:08:43 <int-e> izabera: of course that's especially true when the python executable is invoked by the bash shell in question
18:09:31 <int-e> bourne again shell shell... I'm a hero.
18:10:22 <izabera> `` echo 'sleep 3; /usr/bin/python "$@"' > bin/python; chmod +x bin/python
18:11:26 <myname> how is hackego protected against misuse of people?
18:11:33 <HackEgo> rm: cannot remove `/home/hackbot/hackbot.hg/multibot_cmds/env/.hg/store/data/canary.orig': Is a directory \ Done.
18:11:35 <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/
18:11:44 <Riviera> `` python -c 'for a in range(1000000): print(1+1)' > /dev/null
18:12:21 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing.
18:12:44 <HackEgo> Linux umlbox 3.13.0-umlbox #1 Wed Jan 29 12:56:45 UTC 2014 x86_64 GNU/Linux
18:13:21 <ais523> myname: you can undo /almost/ any action (although I once managed to break it in a way that it couldn't undo, which is why it prints the "canary.orig" message every revert); also there's a lot of sandboxing
18:13:28 <int-e> `` curl http://google.com/
18:13:30 <HackEgo> Failed to connect to socket 2. \ % Total % Received % Xferd Average Speed Time Time Time Current \ Dload Upload Total Spent Left Speed \
18:13:51 <int-e> myname: I guess that gives some measure of how much protection and nonprotection it offers
18:17:20 -!- lynn_ has joined.
18:18:35 <b_jonas> ais523 and others: I'm trying to make a list of all available free software implementations of fast fourier transforms. So far I see six engines (plus a few wrappers): FFTPACK (of netlibs), in OpenCV, KissFFT, in FXT ("http://www.gnu.org/software/gsl/"), FFTW, in GSL (Gnu Scientific Library). Are there others I should know of?
18:19:22 <ais523> in my university project I used some FFT code written by Microchip for their dsPIC line of products, but can't remember what the license on it was
18:19:42 -!- lynn has quit (Ping timeout: 252 seconds).
18:19:43 <int-e> is djbfft still worth looking at or have the ideas been incorporated into the better known fft implementations?
18:19:59 <b_jonas> I believe there are at least two more commercial implementations.
18:20:18 <ais523> I know it was at least shared-source (i.e. source is visible to anyone)
18:21:28 <int-e> (djbfft is ancient.)
18:21:39 <b_jonas> int-e: FFTPACK is also ancient
18:22:14 <b_jonas> it's written in fortran, and it's on netlibs, the collection of softawre that houses the famous Lapack
18:22:58 <b_jonas> however, just because it's ancient doesn't necessarily mean it's no longer worth to use
18:23:07 <int-e> okay, let's say that djbfft is semi-ancient then ;)
18:24:44 <int-e> in any case it's open source and that's all you asked for
18:25:32 <b_jonas> the tarball seems to be corrupt
18:25:44 <b_jonas> probably in an ancient format
18:25:52 -!- lynn__ has joined.
18:26:09 -!- smorgasbord has left ("Closing Window").
18:28:02 -!- jaboja64 has joined.
18:29:15 <b_jonas> it extracted the gz part, and the first directory from the tarball, but not more
18:29:23 -!- lynn_ has quit (Ping timeout: 276 seconds).
18:30:03 <b_jonas> 7-zip version 15.14 windows x86_64 in case it matters
18:30:21 <Melvar> I was just curious, I have no desire to debug anything.
18:30:25 <b_jonas> but there are like ten incompatible formats of tar
18:30:29 <b_jonas> so it's no surprise really
18:32:14 <HackEgo> olist 1022: shachaf oerjan Sgeo FireFly boily nortti b_jonas
18:32:17 * Melvar looks at man tar, it lists five formats. Neat.
18:32:38 -!- Phantom_Hoover has joined.
18:32:44 <b_jonas> it looks as if djbfft handles only power of two sizes. that's the most restrictive I've seen
18:35:57 <b_jonas> int-e: it doesn't seem that ancient. the FAQ references FFTW. is FFTW also semi-ancient?
18:37:20 <b_jonas> (I don't buy its claims that it's so fast though.)
18:37:24 <int-e> well, djbfft is close to 20 years old and hasn't been updated in the current millenium.
18:37:40 <int-e> afaiu fftw is actively maintained.
18:38:08 <b_jonas> but has djbfft really not been updated? the faq seems more recent than 2000
18:39:06 <b_jonas> oh look, https://cr.yp.to/djbfft/links.html has some links, but apparently ancient ones
18:39:34 <b_jonas> none of them seem very useful at first glance though
18:39:42 <int-e> HEAD http://cr.yp.to/djbfft/djbfft-0.76.tar.gz [...] Content-Type: application/x-gzip / Last-Modified: Thu, 30 Sep 1999 20:31:44 GMT
18:41:14 -!- Treio has joined.
18:41:56 <b_jonas> thank you for the reference anyway
18:43:59 -!- heroux has quit (Ping timeout: 264 seconds).
18:45:01 -!- lynn_ has joined.
18:45:59 <b_jonas> hmm, djbfft seems to include no copyright licensing instruction
18:46:03 -!- heroux has joined.
18:46:12 <b_jonas> is there evidence that it's free software?
18:46:22 <b_jonas> or what is its copyright status?
18:47:16 -!- lynn__ has quit (Ping timeout: 256 seconds).
18:52:18 -!- Treio has quit (Ping timeout: 250 seconds).
18:52:51 <ais523> if you can't find a copyright notice anywhere it's default-all-rights-reserved
18:53:08 <ais523> (which is a copyright status I've used intentionally in the past, normally because I haven't made my mind up yet)
18:55:15 <zzo38> I will just make most of my own software as public-domain (explicitly), although when modifying other software I will use the same license they have instead.
18:56:11 <zzo38> Also, if you look at my program XISYNTH (included with AmigaMML), it includes a Fourier transform implementation too
19:02:40 -!- AlexR42 has joined.
19:05:40 -!- jaboja64 has quit (Ping timeout: 248 seconds).
19:14:27 <int-e> b_jonas: https://cr.yp.to/distributors.html
19:14:47 <hppavilion> I'm trying to make an IRC bot (because there aren't enough of those already)
19:14:58 <hppavilion> But it doesn't ever receive a PING request from the server
19:15:12 <hppavilion> Then the server the connection because it times out
19:15:38 <int-e> hppavilion: how do you know that it never receives a PING request?
19:16:08 <hppavilion> int-e: And it eventually terminates, never having received a PING
19:16:22 <int-e> also, have you completed the login?
19:17:14 <int-e> I'd double-check with a packet sniffer
19:19:37 -!- jaboja64 has joined.
19:20:15 <fizzie> b_jonas: I don't know if you were interested in non-native cases, but I think JTransforms gets used a little if you need pure Java implementations.
19:20:56 <fizzie> According to their own website, it's the fastest (pure Java) implementation, but maybe that's not an entirely objective source.
19:27:54 -!- jaboja64 has quit (Ping timeout: 252 seconds).
19:41:24 -!- jaboja64 has joined.
19:48:41 -!- hppavilion has quit (Ping timeout: 276 seconds).
19:50:57 -!- hppavilion has joined.
19:52:53 <hppavilion> int-e: I `NICK PyRCBot`, then `USER PyRC 0 * :PyRCBot`, then `JOIN :#esoteric`
19:56:29 -!- jaboja64 has quit (Remote host closed the connection).
19:59:32 <b_jonas> fizzie: uh, I probably don't want a Java implementation, sorry
20:00:18 <b_jonas> I don't generally do java, and wouldn't want to add it just for a fast fourier transform.
20:00:52 <b_jonas> I mean, java usually comes with a heavyweight interpreter that I'd prefer not to have to involve just for this.
20:01:09 <b_jonas> int-e: thanks, that says it's public domain
20:02:01 <fizzie> The Intel MKL one is great but probably one of the non-free ones you alluded to.
20:02:16 <b_jonas> fizzie: yes, that's one of the non-free ones
20:02:38 <b_jonas> opencv generally uses a lot of low level algorithms from MKL when built that way
20:02:45 <b_jonas> (no wonder, opencv was partly developped by intel)
20:03:04 <fizzie> It's kinda free in the beer sense, but not more than that.
20:09:58 -!- evalj has joined.
20:15:39 -!- XorSwap has joined.
20:21:38 -!- mihow has joined.
20:22:21 <int-e> hppavilion: how do you know that your messages are actually being sent out?
20:22:28 -!- spiette has quit (Ping timeout: 250 seconds).
20:25:05 -!- hppavilion has quit (Ping timeout: 276 seconds).
20:26:17 -!- hppavilion has joined.
20:27:48 <izabera> the only way to know it is to be connected with a second client
20:28:33 <int-e> I'm serious about the packet sniffer. It really helps.
20:29:09 <int-e> (I've debugged a few lambdabot issues that way)
20:30:20 <b_jonas> int-e: I actually have my irc bots output every incoming and outgoing irc message to the debug output, except there's a filter masking those that might contain passwords
20:30:32 <int-e> hppavilion: fwiw, if you never send anything, freenode will close the connection with 'ERROR :Closing Link: 127.0.0.1 (Connection timed out)'.
20:30:43 <zgrep> izabera: Unless the server and client is IRCv3.2 compliant.
20:30:53 <zgrep> izabera: In particular with echo-message.
20:31:05 <int-e> b_jonas: well that won't help if it's a buffering issue
20:31:21 <Taneb> b_jonas, the trick is to make all your passwords *********
20:31:28 <Taneb> No-one will suspect a thing
20:31:41 <b_jonas> Taneb: it's not _my_ passwords, that's the problem
20:31:48 <b_jonas> or at least not only my passwords
20:32:00 <b_jonas> cbstream takes other people's passwords
20:32:07 <b_jonas> and I take their privacy seriously
20:32:29 <b_jonas> so I can't dump passwords or hashed passwords to the debug output
20:32:44 <Taneb> My suggestion I don't think was entirely serious
20:32:51 <int-e> password: <REDACTED>
20:33:17 <b_jonas> oh, incidentally, the old freenode services had a bug where I think you couldn't have asterisks in your nickserv password, or something
20:33:23 <b_jonas> though I think the new services has fixed this
20:34:09 -!- Treio has joined.
20:35:17 -!- spiette has joined.
20:36:54 <olsner> hppavilion: https://gist.github.com/olsner/623071/a1adaa2aefa1b30c154f12de7544b76efe2f5848 just sends USER then NICK then processes anything it gets from the server (and it seems to get PINGs alright)
20:37:58 <olsner> so that seems to be enough to be accepted by freenode at least
20:39:42 -!- mihow has quit (Quit: mihow).
20:40:27 <fizzie> https://github.com/fis/fungot/blob/master/fungot.b98 lines 43-44 hth
20:40:27 <fungot> fizzie: the java spec, does that count? ( instead of rdbms)?
20:40:47 <fizzie> If you want something more readable than sed!
20:41:11 -!- mihow has joined.
20:44:34 -!- hppavilion has quit (Ping timeout: 276 seconds).
20:48:47 <olsner> my sed code is perfectly readable, it even has comments!
20:50:17 <zzo38> I have written a proxy once to figure out what a program was doing. While the program still worked when the proxy was used, all data sent to the proxy was encrypted so I still could not figure it out.
21:00:20 -!- evalj has quit (Remote host closed the connection).
21:04:03 -!- J_Arcane has joined.
21:15:30 <fizzie> That's typically the problem with packet sniffers and TLS as well.
21:22:34 <int-e> Right, I just assumed that hppavilion was using plain old plain text IRC.
21:23:48 -!- oerjan has joined.
21:24:02 * int-e wonders what hppavilion stands for, but it probably isn't related to "Hewlett Packard Performance Architecture"
21:24:24 <fizzie> It's a model of HP laptops.
21:24:41 <oerjan> eerily i've started getting web ads for them recently
21:24:54 <oerjan> never noticed them before hppavilion came here
21:25:12 -!- hppavilion has joined.
21:25:23 <int-e> so at least I got the "HP" part correct.
21:25:28 <int-e> speaking of the devil
21:26:26 <int-e> I think I prefer mapoles.
21:26:40 <fizzie> an indirect suggestion, a slight indication, a slight but appreciable amount, a just detectable amount, an indication of potential opportunity; hth
21:26:52 <int-e> Now why haven't I thought of this before, I should use a mapol-e.
21:27:24 <int-e> though perhaps -----##-# looks a bit strange ;-)
21:27:43 <fizzie> fungot: Do you want to write me a TLS implementation in Funge-98 so that we could make your connection more secure?
21:28:04 <int-e> apparently the cool people use socat
21:28:14 <fizzie> Well, that'd be a bit lame.
21:28:32 <fizzie> Anyway, it's already doing the socket part.
21:28:46 -!- XorSwap has quit (Ping timeout: 256 seconds).
21:28:48 <fizzie> If I started to use socat, I might as well just be speaking to stdinout.
21:28:48 <oerjan> hm apparently my dentist has the flu, emails the receptionist.
21:29:03 <fizzie> A number of people were out sick at the office.
21:29:21 <fizzie> Also I think I just hit fungot's babble limit, the debug console reveals it's online and well.
21:29:24 <oerjan> i hope gurgling with fluoride will keep it from deteriorating until next week.
21:30:32 <fizzie> What's the best time to go to the dentist? 2:30!
21:30:33 <oerjan> (web comments are rather divided about how much of an emergency losing a filling is. it's my first time so...)
21:31:07 <fizzie> I think that's one of the Alexa jokes.
21:31:10 <oerjan> fizzie: i generally agree (assuming that's PM), but my appointment is 12:30.
21:31:23 <fizzie> (If you ask Amazon Alexa to tell you a joke, it tells you a really bad joke.)
21:31:38 <oerjan> fizzie: wait is there a point to that joke
21:31:46 <fizzie> oerjan: Two thirty / tooth hurty.
21:32:00 <oerjan> my pun sense led me in the wrong direction.
21:33:18 -!- XorSwap has joined.
21:34:04 <oerjan> <int-e> though perhaps -----##-# looks a bit strange ;-) <-- that's not a mapol-e, that's a swatt-e-r
21:35:18 <Taneb> Is a kind of brush I think
21:35:21 * int-e swats -----### int-e
21:35:34 <int-e> Taneb: one of those dust removal things, whatever they're called
21:36:06 <int-e> that would make sense :P
21:37:39 <Taneb> English occasionally (not often) does
21:37:43 -!- lynn_ has quit (Read error: Connection reset by peer).
21:38:14 -!- lynn_ has joined.
21:38:56 <int-e> But the german word isn't helpful here; it's "Staubwedel" - literally, "dust waver".
21:40:35 -!- XorSwap has quit (Read error: Connection reset by peer).
21:40:54 -!- XorSwap has joined.
21:41:07 <fizzie> (The first half is dust, and the second half is the broom-sense of whisk, apparently.)
21:41:41 <Taneb> fizzie, that sort of makes sense
21:42:08 <oerjan> <Taneb> English occasionally (not often) does <-- just to keep you off balance, i take.
21:43:26 <hppavilion> olsner: I'm sorry, did you just write an IRC client (or server?) with sed!?
21:43:31 <oerjan> which is basicall dust+broom
21:46:11 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
21:48:09 <hppavilion> IMHO, we should retire the Client-Server model in favour of the Client-Server-NSA model
21:48:37 <fizzie> The politicians here would agree with you, I believe.
21:59:22 -!- XorSwap has quit (Ping timeout: 256 seconds).
22:02:17 <oerjan> <int-e> vanila: we already had that slogan in the topic I believe <-- that wasn't about presidency
22:04:32 -!- Treio has quit (Quit: Leaving).
22:05:20 <int-e> 22:32:12: * oerjan suddenly realizes someone might think the channel topic refer
22:05:23 <int-e> s to a misspelled candidate
22:05:31 <int-e> 22:33:49: <int-e> oerjan: well, it doesn't say "Tromp for president!" ... yet!
22:05:39 <int-e> (01-23)... so that's what I misremembered
22:06:06 <int-e> but the topic was Go Tromp! [...] at the time
22:07:18 <b_jonas> On linux, what's the surefire way to decide whether the kernel is an x86_32 or an x86_64 one, regardless of the userspace programs? Is there some /proc entry?
22:08:28 <int-e> `` linux32 uname -a
22:08:31 <HackEgo> Linux umlbox 3.13.0-umlbox #1 Wed Jan 29 12:56:45 UTC 2014 x86_64 GNU/Linux
22:08:35 <b_jonas> myname: I think that tells the result of the uname system call, which (I'm not sure) might report x86_32 if the uname executable itself is x86_32
22:08:52 <HackEgo> man: can't open the manpath configuration file /etc/manpath.config
22:08:54 <int-e> for me it says i686 then
22:08:57 <HackEgo> Usage: linux32 [options] [program [program arguments]] \ \ Options: \ -h, --help displays this help text \ -v, --verbose says what options are being switched on \ -R, --addr-no-randomize disables randomization of the virtual address space \ -F, --fdpic-funcptrs makes function pointers point to descriptors \ -Z, -
22:09:21 <myname> lol, -v sounds useless
22:09:59 -!- AlexR42 has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
22:10:55 <int-e> `` linux32 -v uname -a
22:10:56 <HackEgo> Linux umlbox 3.13.0-umlbox #1 Wed Jan 29 12:56:45 UTC 2014 x86_64 GNU/Linux
22:11:45 -!- hppavilion has quit (Ping timeout: 240 seconds).
22:12:22 <b_jonas> for some reason, /proc/version doesn't tell, even though I thought it would
22:12:26 <oerjan> <myname> i am not confused that people which want to go to real esoteric stuff don't learn <-- i think he learned about the channels, he's just confused about the networks...
22:12:26 <HackEgo> Linux version 3.13.0-umlbox (hackbot@codu) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 Wed Jan 29 12:56:45 UTC 2014
22:13:07 <int-e> b_jonas: I suppose setarch x86_64 uname -a will fail on a 32bit kernel
22:13:38 -!- spiette has quit (Ping timeout: 252 seconds).
22:13:52 <b_jonas> Oh, and this should work on older linuxen too
22:14:44 <b_jonas> int-e: ah, thanks, that seems to work
22:15:04 <b_jonas> myname: oh, that does report something, but it can lie
22:15:37 <b_jonas> int-e: although I'm not sure if that would succeed if the setarch was built for some old system that doesn't even know about x86_64 or something
22:15:57 <b_jonas> why can't the stupid kernel just tell this in /proc/version ?
22:17:16 <int-e> because the point of linux32 is to lie to build tools that try to be clever
22:17:18 <b_jonas> ah, I think /proc/kallsyms should tell (if it is readable)
22:17:38 <b_jonas> because /proc/kallsyms gives straight kernel addresses
22:17:42 <b_jonas> so it is probably accurate
22:19:16 <b_jonas> it says stuff like "ffffffff810d12d0 t __register_chrdev_region" on x86_64 and stuff like "c10f7ea1 T __bdevname" on x86_32
22:21:59 <b_jonas> `perl -e warn length "ffffffff810d12d0"
22:22:23 <HackEgo> ssstosis/ssstosis is a disease causing false identities
22:22:34 <HackEgo> The Moon is an unprovable celestial object that is not very retroreflectorey.
22:24:03 <int-e> `learn Pluto is an ex-planet that moonlights as a dog in Disney cartoons.
22:24:06 <HackEgo> Learned 'pluto': Pluto is an ex-planet that moonlights as a dog in Disney cartoons.
22:24:35 <int-e> (I did it for the "moonlights")
22:25:30 <HackEgo> b_jonas egy nagyon titokzatos személy. Hollétéről egyelőre nem ismertek.
22:25:43 <int-e> does that mention a tendency of making up new words?
22:28:47 <oerjan> `learn The Sun *may* be retroreflectorey, it's hard to be sure.
22:28:49 <HackEgo> Learned 'sun': The Sun *may* be retroreflectorey, it's hard to be sure.
22:30:03 <int-e> I don't believe that's factually accurate.
22:31:27 <oerjan> `learn Chthonic lithping can be vethy dithturbing to lithten to.
22:31:29 <HackEgo> Learned 'chthonic': Chthonic lithping can be vethy dithturbing to lithten to.
22:31:32 <int-e> At least to me there's no doubt that the plasma scatters photons quite randomly.
22:31:40 <fizzie> `` linux32 --uname-2.6 uname -a
22:31:41 <HackEgo> Linux umlbox 2.6.53-umlbox #1 Wed Jan 29 12:56:45 UTC 2014 x86_64 GNU/Linux
22:32:14 <oerjan> int-e: i demand visual proof tdnh
22:32:18 <int-e> yeah, that one is curious.
22:32:44 <int-e> oerjan: ah just get those wings to work and fly up there to have a look.
22:33:46 <int-e> try not to make a splash. http://smbc-comics.com/index.php?id=1938
22:36:24 <int-e> Oh GG... oh library... oh... fish, is that an aquarium with a little sea monster? I wonder what it'll look like after coloring is done...
22:38:49 <oerjan> i do not think that treatment of books is according to library policy
22:38:59 <Taneb> Hmm, the difference between two wolfram alpha queries that should be identical are 0.002 years different
22:39:08 <int-e> and without the speech balloons that would make an excellent "where's Agatha?" picture.
22:39:13 <Taneb> https://www.wolframalpha.com/input/?i=years+since+3%2F6%2F2014 and http://www.wolframalpha.com/input/?i=03%2F06%2F2014+to+today+in+years
22:41:04 <int-e> maybe it runs the queries on servers in different time zones
22:41:17 <fizzie> I think it's just a unit thing.
22:41:40 <Taneb> fizzie, it's giving both answers in years
22:41:40 <int-e> > 0.002 * 365 * 24
22:41:46 <fizzie> It's identical if you look at unambiguous units -- one says 14760 hours, while the other says 615 days, and 615*24 == 14760.
22:42:17 <fizzie> I'm thinking "convert [days from [...]] to years" is taking an absolute period, and converting it to some nominal years without being anchored to anything.
22:42:29 <int-e> oh you have a point there... one of the years involved is a leap year
22:42:45 <fizzie> While "years since [...]" is treating it as a particular period anchored in a calendar, and giving an exact number of the thingsies.
22:43:07 <fizzie> We had a very similar discussion about esowiki ban lengths recently.
22:43:41 <Taneb> Anyway, bbl, I need to help a friend with a library
22:44:17 <vanila> why nott just ban everyone
22:44:28 <fizzie> Where an input of "24 years" turned into 24 years plus a few hours, because it was interpreted as the calendar date you get by adding 24 years, then taking the actual number of seconds there are between current time and that time 24 years in the future, but then that amount of seconds was converted back to "years" for printing by using a fixed conversion factor.
22:47:03 -!- tromp_ has joined.
22:47:42 -!- boily has joined.
22:48:37 <fizzie> I think it's actually just using a year of 365 days for the latter.
22:49:52 <fizzie> Because it says 14760 hours, and 14760/(24*365) is approximately 1.6849 (rounds to 1.685) while 14760/(24*365.2425) is approximately 1.6838, which rounds to 1.684, which was neither of the answers.
22:51:08 <oerjan> the wiki used what int-e said, though.
22:52:04 -!- tromp_ has quit (Ping timeout: 272 seconds).
22:52:25 <int-e> what are the answers?
22:53:17 -!- `^_^v has quit (Ping timeout: 276 seconds).
22:53:32 <fizzie> First one ("years since 3/6/2014") yielded "1.683 years", also listed (under "time span") as 1 year 8 months 5 days, 20 months 5 days, 87 weeks 6 days, 615 days or 439 weekdays.
22:54:23 <fizzie> Second one ("03/06/2014 to today in years") yielded "1.685 years", also listed (under "additional conversions") as 20.22 months, 87.86 weeks, 14760 hours, 885600 minutes, 5.314×10⁷ seconds.
22:54:31 <olsner> int-e: I would've used a socket API if sed had one (re socat)
22:54:56 <int-e> > (365/365 + 250/366, 365/365 + 250/365)
22:54:57 <lambdabot> (1.6830601092896176,1.6849315068493151)
22:56:03 <fizzie> And the input interpretations were [[years] since [Tuesday, June 3, 2014]] for the first, and [convert [[days] from | [Tuesday, June 3, 2014] to [today]] to years] for the second.
22:57:32 <olsner> maybe I should just build an extended sed dialect with useful stuff like that? makes it a bit easy to cheat though
23:00:15 <int-e> okay. "1460 days in years" gives 4, so it's using 365 as a factor for that.
23:05:09 -!- hppavilion has joined.
23:05:20 <shachaf> How many days in a dog year?
23:05:58 <shachaf> It's a trick question: Dog years contain only dog days, and dog days occur only during the summer.
23:07:56 <fizzie> "Assuming folklore dog‐equivalent human years for "dog years" | Use folklore human‐equivalent dog years instead"
23:08:09 <fizzie> That gave 28 dog years for 1460 days.
23:08:16 <HackEgo> sleep 3; /usr/bin/python "$@"
23:08:49 <oerjan> int-e: the main think `revert is buggy about, is reverting file creation.
23:08:59 <fizzie> It says 52.14 days in a dog year.
23:09:25 <shachaf> we're discussing pooch mortality
23:09:30 <fizzie> 52 days 3 hours 25 minutes 42.86 seconds.
23:10:33 <oerjan> shachaf: izabera made a joke about python being slow
23:10:53 <oerjan> then int-e tried to revert it, but got caught by the bug
23:11:29 -!- hppavilion has quit (Ping timeout: 276 seconds).
23:12:12 <fizzie> `learn izabera is probably implemented in bash.
23:12:15 <HackEgo> Learned 'izabera': izabera is probably implemented in bash.
23:12:18 <int-e> oerjan: I'll pretend I planned for you to fix it for me.
23:12:18 <boily> fizzie: AAAAAAAAAAURGH!
23:12:24 <int-e> I didn't, but it's a good lie. I think.
23:12:48 <boily> `learn izabera is a tachyherpetologist. They are probably implemented in bash.
23:12:50 <HackEgo> Learned 'izabera': izabera is a tachyherpetologist. They are probably implemented in bash.
23:13:09 -!- lynn__ has joined.
23:13:17 <HackEgo> Your famous mysterious evil overlord oerjan is a lazy expert in future computation. Also an antediluvian Norwegian who mildly dislikes Roald Dahl. He can never remember the word "amortized" so he put it here for convenience. His arch-nemesis is Betty Crocker.
23:13:17 <boily> izabera: izabellora. are you a man, woman, both, neither, other, won't answer, all of this?
23:13:23 <HackEgo> lynn_: 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.)
23:13:37 <shachaf> that's a little rude, don't you think?
23:14:30 -!- lynn_ has quit (Ping timeout: 252 seconds).
23:16:11 <oerjan> flash forward to 2050, when you can get lynched for suggesting someone has a gender.
23:18:42 <oerjan> i realize i was unclear.
23:28:15 <int-e> In fact, just suggesting might get you lynched these days. It doesn't really matter what.
23:28:34 -!- adu has joined.
23:30:34 -!- carado has quit (Remote host closed the connection).
23:30:42 -!- carado has joined.
23:39:07 -!- boily has quit (Quit: ACADEMIC CHICKEN).
23:44:26 -!- hppavilion has joined.
23:52:44 -!- lynn_ has joined.
23:53:29 -!- idris-bot has quit (Quit: Terminated).
23:54:38 -!- Melvar has quit (Quit: rebooting).
23:55:32 -!- lynn__ has quit (Ping timeout: 256 seconds).
23:59:00 -!- Melvar has joined.