code logs -> 2017 -> Sun, 26 Mar 2017< code.20170325.log - code.20170327.log >
--- Log opened Sun Mar 26 00:00:19 2017
00:39 Jessikat` [Jessikat@Nightstar-0101jr.dab.02.net] has joined #code
00:39 Jessikat [Jessikat@Nightstar-0101jr.dab.02.net] has quit [The TLS connection was non-properly terminated.]
00:40 Jessikat [Jessikat@Nightstar-0101jr.dab.02.net] has joined #code
00:40 Jessikat` [Jessikat@Nightstar-0101jr.dab.02.net] has quit [The TLS connection was non-properly terminated.]
00:46 Jessikat` [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code
02:21 RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [Ping timeout: 121 seconds]
03:53 Jessikat` [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving]
03:53 Jessikat [Jessikat@Nightstar-0101jr.dab.02.net] has quit [[NS] Quit: Bye]
03:59 Jessikat [Jessikat@Nightstar-0101jr.dab.02.net] has joined #code
04:10 Jessikat` [Jessikat@Nightstar-bqh9js.dab.02.net] has joined #code
04:13 Jessikat [Jessikat@Nightstar-0101jr.dab.02.net] has quit [Ping timeout: 121 seconds]
04:47 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
04:47 mode/#code [+o mac] by ChanServ
04:50 macdjord|wurk [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
05:03 celticminstrel is now known as celmin_of_nod
05:09 Derakon is now known as Derakon[AFK]
08:10 Jessikat` is now known as Jessikat
09:10 Kindamoody[zZz] is now known as Kindamoody
09:18 gnolam [quassel@Nightstar-f22.ckv.119.62.IP] has joined #code
09:18 mode/#code [+o gnolam] by ChanServ
10:23 mac is now known as macdjord|slep
10:25 Kindamoody is now known as Kindamoody|afk
10:40 Jessikat` [Jessikat@Nightstar-utq9h6.dab.02.net] has joined #code
10:43 Jessikat [Jessikat@Nightstar-bqh9js.dab.02.net] has quit [Ping timeout: 121 seconds]
11:01 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Operation timed out]
11:36 gnolam [quassel@Nightstar-f22.ckv.119.62.IP] has quit [[NS] Quit: Switching trains]
12:01 Jessikat [Jessikat@Nightstar-utq9h6.dab.02.net] has joined #code
12:01 Jessikat` [Jessikat@Nightstar-utq9h6.dab.02.net] has quit [The TLS connection was non-properly terminated.]
12:14 Jessikat` [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code
13:16 gnolam [lenin@Nightstar-09nsce.cust.bahnhof.se] has joined #code
13:16 mode/#code [+o gnolam] by ChanServ
13:51 VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has quit [Connection closed]
13:53 VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has joined #code
13:53 mode/#code [+ao VirusJTG VirusJTG] by ChanServ
15:37 Derakon[AFK] is now known as Derakon
--- Log opened Sun Mar 26 16:28:59 2017
16:28 TheWatcher [chris@GlobalOperator.Nightstar.Net] has joined #code
16:28 Irssi: #code: Total of 33 nicks [26 ops, 0 halfops, 0 voices, 7 normal]
16:29 mode/#code [+o TheWatcher] by ChanServ
16:29 Reiver [quassel@Nightstar-ksqup0.co.uk] has joined #code
16:29 mode/#code [+ao Reiver Reiver] by ChanServ
16:29 Irssi: Join to #code was synced in 55 secs
16:30 Orthia [quassel@Nightstar-ksqup0.co.uk] has joined #code
16:30 mode/#code [+o Orthia] by ChanServ
17:10 Jessikat`` [Jessikat@Nightstar-ihmqid.dab.02.net] has joined #code
17:12 Jessikat [Jessikat@Nightstar-utq9h6.dab.02.net] has quit [Ping timeout: 121 seconds]
18:17 Jessikat`` is now known as Jessikat
18:18
< sshine>
I have to design my own DSL.
18:18
< sshine>
as part of a course.
18:18
< sshine>
I have two ideas, but one is perhaps a little ambitious considering I've got a little less than two weeks, and the other is perhaps not ambitious enough.
18:19
< sshine>
one is a declarative Ethereum-based contract language - all of Ethereum's languages are imperative.
18:20
< sshine>
the other one is a template language for specifying RoboRally game boards that have some degree of probability in their description.
18:22
< sshine>
there are some requirements, like one of the following should be true: (use non-trivial static type-system, use non-trivial data structures, employ non-trivial domain-specific notation, or have more than one related semantics for the same program).
18:22
< sshine>
my professor is the guy who came up with the dice rolling language http://topps.diku.dk/~torbenm/troll.msp (I think I mentioned this some years ago on this channel).
18:23
< sshine>
it has two semantics in the sense that you can either ask it to roll the dice or provide a probability distribution. for a lot of the language combinators, it can derive the distribution analytically.
18:25
< sshine>
I figured that for a map generating template language, it could have one runtime that drew maps and one that ran a simulation in order to decide where players should start.
18:25
< sshine>
and the contract language could have 1) actually generate EVM code, 2) quickcheck the contract.
18:26
< sshine>
does anyone here have an idea for other DSLs that are non-trivial, i.e. not just markup languages unless they come with a twist.
18:27
< sshine>
I was thinking of: how about CSS for non-tree graphs. not sure exactly what the use-case could be. wouldn't have to be graphical decoration...
18:47 Jessikat [Jessikat@Nightstar-ihmqid.dab.02.net] has quit [Ping timeout: 121 seconds]
18:49
< sshine>
another idea: ADTs in functional languages don't have support for pattern matching like algebraic types. it would be cool if one could supply a pattern matching interface that allowed for pattern matching across something abstract and then let it be the reponsibility of the pattern matching interface designer to make sure those patterns run in a bearable time.
18:50
< sshine>
it'd be like computed getters in C#, but even stronger.
19:38 Turaiel[Offline] is now known as Turaiel
20:26 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
20:26 mode/#code [+o mac] by ChanServ
20:26
<@celticminstrel>
"member initializer does not name a non-static data member or base class"
20:27
<@celticminstrel>
Even though it clearly does..
20:27
<@celticminstrel>
:|
20:27
<@celticminstrel>
Seems to have something to do with the fact that either the class or the base class is a template?
20:28
<@celticminstrel>
Yeah, if the derived class is not a template, it works.
20:29 macdjord|slep [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
20:34
<@celticminstrel>
Actually, maybe I'll use static whatever-its-called instead (CRTP).
20:34 RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code
20:38
<@celticminstrel>
Not that that'll solve it...
20:43
<@celticminstrel>
Apparently I have to write out the full template arguments. ><
20:43
<@celticminstrel>
Well, at least it works now.
20:44
<@celticminstrel>
(Even though I don't even need to mention the template arguments when the derived class is not a template... weird...)
20:51
< sshine>
silly half-baked type systems
20:51
<@celticminstrel>
???
20:51
< sshine>
is this C++ or C# or something third?
20:51
<@celticminstrel>
C++
20:52
<@celticminstrel>
But old compiler, not even fully C++11 compliant.
20:52 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
20:52 mode/#code [+qo Vornicus Vornicus] by ChanServ
20:54
< sshine>
okay, I admittedly know very little about C++ and assume a lot of thought has gone into its excessive amount of language features. it just seems sub-optimal to me that it can't infer the same things for templates as it can for classes, like templates are so beyond the main language that they're not to be reasoned about.
20:55
< sshine>
surely it *can't* reason about the same things for self-modifying code, but for ever meta-syntactic level of a language, you could extend the type system, to some extent, so you get to reason about things. isn't that essentially what dependent types are trying to do?
20:56
<@celticminstrel>
I dunno?
20:56
<@celticminstrel>
I mean, this could be a problem with the old compiler rather than a problem with the standard.
20:57
< sshine>
I belong to an extremist sect who thinks Hindley-Milner is the least you can treat yourself to. :-D
20:57
< sshine>
hmm yeah
20:58
< sshine>
I was doing some C programming for the PIC16F microprocessor years ago and its proprietary compiler made this "Error! Your program contains recursion!" - although it wasn't an error and was in fact intentional, I didn't know that the architecture simply didn't have more stack memory than for 16 stack frames.
20:59
<@celticminstrel>
Huh.
21:08 Kindamoody|afk is now known as Kindamoody
21:17
<&McMartin>
... aren't there basically only two fully C++11 compliant systems these days
21:17
<&McMartin>
Maybe three if MSVC++ has caught up
21:17
< Jessikat`>
MSVC++ has largely caught up
21:18
< Jessikat`>
(modulo the fact that it doesn't see the standard as an absolutely so much as a tour guide)
21:18
< Jessikat`>
absolute*
21:19
<@TheWatcher>
(Normal Microsoft, then~)
21:20
<&McMartin>
(The took endless shit for nearly a decade for following the C++ standard where gcc broke it, and then lost when the standard changed to make gcc retroactively right all along)
21:21
< Jessikat`>
Neither gcc nor MSVC++ really gets to claim victory in following the standard :P
21:21
<&McMartin>
I'm just glad the days of "#define for if (0) else for" are behind us
21:22
<&McMartin>
Er
21:22
<&McMartin>
if (0); else for
21:22
< Jessikat`>
words
21:22
<@Tamber>
...that sounds... worrying.
21:22
< Jessikat`>
so many random words
21:22
<&McMartin>
Tamber: So, as I understand it, the story goes like this
21:23
<@celticminstrel>
I really want to hear this.
21:23
<&McMartin>
Early drafts of the C++ standard - remembering as one should that C++ was introduced in the mid-1980s, wasn't standardized until 1998, and that standard wasn't reliably implemented on stuff you could reach until about 2004 - had slightly different semantics for declarations of loop variables.
21:24
<&McMartin>
In the original version, for (int i = 0; ...) {} was exactly equivalent to int i; for (i = 0; ...) { ... }
21:24
<&McMartin>
which MSVC did
21:24
<&McMartin>
gcc did not, preferring what we now actually would covert that to, which is { int i; for (i = 0; ...) { ... } }
21:25
<&McMartin>
That is, gcc had i cease to exist the instant you left the loop which means that you don't redeclare it later in the function.
21:25
<@Tamber>
Ahhh
21:25
<&McMartin>
While in MSVC, and in the standard draft MSVC was following, redeclaring it for your next loop is a multiply-declared variable error.
21:26
<@Tamber>
So everyone poked fun because "why is this warning, this is stupid"?
21:26
<&McMartin>
So, it turns out, you can make the MSVC behavior match gcc's by hanging every for statement off a stub else clause.
21:26
<&McMartin>
error
21:26
<@Tamber>
oh, right, yes.
21:26
<&McMartin>
And no, they were mad because this code broke on MS and worked on gcc and therefore MS is wrong.
21:26
<@Tamber>
Well, usually... right? :p
21:26
<&McMartin>
Remember, "insane" means "didn't make the same assumptions I did when I built my system"
21:27
< Jessikat`>
why not #define for if (1) for
21:27
<&McMartin>
A fine question, Jessikat! I was going to get to that, but I was going to pose it as a puzzle first.
21:27
<&McMartin>
So, the setup is "because for if (1) for" changes the semantics subtly, but "if (0); else for" does not.
21:27
< Jessikat`>
oh, because then your else applies to a different if statement elsewhere
21:27
<&McMartin>
Yep
21:28
<&McMartin>
Or rather, it stops doing so
21:28
< Jessikat`>
C is a silly language
21:28
<&McMartin>
If you have if (foo) for (yadda) bar; else baz;
21:28
< Jessikat`>
though, honestly, $lang is a silly language
21:28
<&McMartin>
then if (1) for noms the baz else.
21:28
<~Vornicus>
your FACE is a silly language
21:28
< Jessikat`>
yes
21:29
< Jessikat`>
stop trying to use my face to express things
21:29 * McMartin compiles YOUR FACE into some kind of face... book?
21:29
<@Tamber>
Jessikat`: But how else am I supposed to type?
21:29
<@Tamber>
...that doesn't work.
21:29 * Jessikat` smashes her face on the keyboard
21:30
< Jessikat`>
d s56fhg4trjxbvcz5nr4fdt6eg nmjbkhiu,l k.m;óphjn bmuygfdvcr gxezsax
21:30
<@Tamber>
(I realised after typing that, it seemed a little rude to be typing by bashing your face on my keyboard.)
21:30
< Jessikat`>
maybe
21:30
< Jessikat`>
we might be able to negotiate something
21:30
<@celticminstrel>
. . .
21:30
< Jessikat`>
could always 3D scan my face and print an analogue for you to use
21:31
< Jessikat`>
If you're that attached to the idea
21:31
<@Tamber>
Honestly, I think I'll revert to pounding my own face against the keyboard. Just feels a tiny less creepy that way.
21:31
< Jessikat`>
Fair
21:31
<~Vornicus>
That's it. If I ever decide in a fit of pique to make my own programming language, it will be called "Your FACE"
21:32
<@Tamber>
XD
21:32
<@Tamber>
...and all the keywords are emoji?
21:32 * TheWatcher twitch
21:32
<&McMartin>
"I thought it was called Schlockian"
21:33
<~Vornicus>
oh my god don't remind me
21:37 * Alek giggles.
21:38
<@Alek>
not far from there to was it APL or some such? where every argument or code snippet is a unique symbol, and you can write a mid-length script in a single line?
21:38
<&McMartin>
On the Internet nothing can be permanently destroyed
21:38
<&McMartin>
APL had a lot of mathematical operators
21:39
<&McMartin>
And it solved the problem of representing them by just Using The Mathematical Operators.
21:39
<~Vornicus>
(I don't know if jessikat ever heard of schlockian. it was a standard procedural language, though heavily lacking in features. no arrays, no strings. it barely had functions. its primary conceits were that "d" and "D" were operators - they rolled dice and the former echoed its results - and that the flow control syntax was Very Much Like the ternary operator
21:39
<&McMartin>
This was not the globally winning strategy one might expect, but yes, most mathematical functions can be specified on a single line.
21:40
<&McMartin>
APL's other claim to fame was arrays/vectors/matrices as a fundamental data type around which you organized your computations.
21:41
<&McMartin>
Quite civilized for its day, in various ways, but my understanding is that we have bent our human minds sufficiently that the affordances it granted are no longer considered necessary or, indeed, even welcome given the difficulty of typing the notation on a standard keyboard.
21:41
<&McMartin>
(APL predates "standard keyboards")
21:41
< Jessikat`>
:)
21:41
< Jessikat`>
J is the modern day nonsense symbol noise language, I believe
21:42
<&McMartin>
AIUI APL was only nonsense symbol noise in the sense that a math textbook five years ahead of your education is nonsense symbol noise
21:42
< Jessikat`>
the problem with such things is that there's an awful lot of information density in individual symbols
21:43
< Jessikat`>
which means that you need a lot of semantic domain knowledge through rote memorisation, basically
21:43
<&McMartin>
Yep.
21:43
<&McMartin>
Though frankly having all those operators as keywords or infix functions doesn't solve that
21:43
< Jessikat`>
Which is true of most things, admittedly, but it doesn't really let you draw on existing knowledge (though that could be an advantage)
21:43
<&McMartin>
It turns out Math Is Work.
21:44 * Jessikat` nodsa
21:44
< Jessikat`>
The issue I have with J is mainly that people on Project Euler wave it around like a giant penis
21:44
<&McMartin>
Ahahahahaha
21:44
<&McMartin>
"This article contains APL source code. Without proper rendering support, you may see question marks, boxes, or other symbols instead of APL symbols.This article contains APL source code. Without proper rendering support, you may see question marks, boxes, or other symbols instead of APL symbols."
21:45
<&McMartin>
But yeah, APL doesn't have the issue you describe.
21:45
< Jessikat`>
Which one?
21:45
<&McMartin>
Extra cognitive load
21:45
< Jessikat`>
presumably compared to commonly used mathematical notation?
21:45
< RchrdB>
All of the symbols that APL used are in Unicode since approximately forever, right?
21:46
<&McMartin>
APL's premise was "here is the notation that we already have for concisely expressing functions on what are, let's be honest, multidimensional arrays"
21:46
<&McMartin>
"So this programming language involves using that notation"
21:46
<&McMartin>
RchrdB: Code points assigned? Yes. Font has glyphs in those code points? ehhhhh
21:47
< RchrdB>
Unicode coverage in most OSes is pretty good these days, taking fallbacks into account.
21:48
<&McMartin>
Looking at the set, as long as you have Latin, noncombining Latin diacriticals, Greek, and the math symbols, you're fine.
21:48
< RchrdB>
like if I ask for DejaVu, but there's a glyph missing, FreeType will go searching other fonts on the system for one that has it and might pick symbola.
21:48
<&McMartin>
https://en.wikipedia.org/wiki/APL_(programming_language)#/media/File:APL-keybd2. svg
21:49
< RchrdB>
Oh that's nothing then. Windows, OS X and all the unix clones all ship with font sets that cover that.
21:49 * RchrdB squints at that keyboard
21:49
< RchrdB>
the one problem I have with that is that one of the glyphs is a square, presumably meaning QED?
21:49
<&McMartin>
Somehow I think the article made it larger.
21:49
<&McMartin>
i thought QED was three dots arranged like the Triforce.
21:49
<~Vornicus>
Actually, I wish I could turn off fallbacks on purpose occasionally
21:49
< RchrdB>
but my brain interprets "empty box" as "MISSING CHARACTER HA HA NO GLYPH FOR YOU"
21:50
< RchrdB>
No, three dots in a triforce is "therefore"
21:50
<&McMartin>
Missing character is supposed to be <?>
21:50
<@celticminstrel>
"triforce"
21:50
< RchrdB>
Missing character varies with your text rendering engine. Freetype likes to use "square with the hex digits in it". Windows likes to use "empty box".
21:50
<~Vornicus>
There's a site for instance that lets you see what fonts have a particular glyph, but on my machine it doesn't work because if windows finds a fallback the answer is "yes" for *every font*
21:51 * McMartin will now be assigning Power/Wisdom/Courage appropriately to each dot in any further proof.
21:51
<@celticminstrel>
RchrdB: When I see a box for QED, it's generally filled (black) rather than unfilled (white) as the "unknown characters" sometimes are.
21:51
<&McMartin>
I don't actually know APL, so I don't know if that has some mathematical or syntactic meaning.
21:51
< RchrdB>
celticminstrel, hm good point
21:51
<&McMartin>
I definitely uses its own syntax for stuff like summations just so that you can have your text be properly line-based.
21:52
< RchrdB>
and unicode has U+220E "END OF PROOF" for QED. which is "â"
21:52
<@celticminstrel>
Oh wow.
21:52
<~Vornicus>
that character is also known as the Tombstone
21:52
< RchrdB>
the reference glyph is a short black rectangle at the bottom of the em box
21:53
<@Alek>
bad character boxes are usually black here (mirc).
21:53
<~Vornicus>
also, the UnTriforce is "since" but I've never seen it actually used.
21:53
<&McMartin>
... which is consistent with the lore in LBW.
21:54
< RchrdB>
LBW?
21:54
<&McMartin>
Link Between Worlds
21:54
<&McMartin>
One of the setting variations in that Zelda game is that the Dark World is, instead of being some kind of spirit realm
21:54
< RchrdB>
oh OH right I only just got what was meant by "unTriforce", haha
21:55
<&McMartin>
An alternate dimension where the solved the problem of "all the nations of the world keep fighting over control of the insanely powerful triangles" by destroying them as opposed to locking them in the spirit world like Hyrule did.
21:55
< RchrdB>
oooh that's pretty neat
21:55
<&McMartin>
And it's kind of a shithole in part because it turns out destroying the insanely powerful triangles that undergird your reality is a bad idea; those are *load-bearing* insanely powerful triangles.
21:55
< RchrdB>
yes
21:56
< RchrdB>
that gives me an idea for a mashup fanfic
21:56
< RchrdB>
Kerbal Triforce Program
21:56
<&McMartin>
(And their royal symbol is basically an inverted triforce rendered in lead instead of gold)
21:56
<&McMartin>
(LBW is also really good!)
21:56
< RchrdB>
Don't destroy the magic triangles, that would be bad. Don't just lock them in a spirit world, a wizard will steal them. Hide the magic triangles in orbit where they'll be safe!
21:57
<&McMartin>
... I feel that I may be missing important relevant context due to not having played Skyward Sword.
21:57
<&McMartin>
Don't they basically live in orbit there~
21:58
< RchrdB>
I don't know. I only played "Link's Awakening". Only Nintendo console I ever had was a gameboy.
21:58 * McMartin finally got around to playing that one this month.
21:58
<&McMartin>
It turns out you pretty much hit the high points of every game after it right there~
21:58
<&McMartin>
One of the reasons I liked LBW so much was that it tried to leave the wheel-ruts that LA left
21:59
< RchrdB>
Occasionally I wonder about the idea of buying a Nintendo WhateverTheLatestOneIs and playing the entire series on Virtual Console, assuming that you can actually do that?
21:59
<&McMartin>
There is no single platform that hosts all the games.
21:59
<&McMartin>
You would need, at a minimum... hm.
22:00
<&McMartin>
GBA, 3DS, Wii
22:00
<&McMartin>
... and I guess a Wii U or Switch for BotW
22:00
<&McMartin>
I think Zelda and Zelda 2 are on the 3DS VC and the Wii one
22:00 * Vornicus examines the e shop to tell you
22:00
<&McMartin>
GBA had its own editions of LttP, and can play all the Game Boy ones directly
22:01
<&McMartin>
Minish Cap was GBA-exclusive
22:01
<&McMartin>
3DS can play DS games outright, which means that it can cover Phantom Hourglass and Spirit Tracks; 3DS also has native editions of the two N64 Zeldas (Ocarina of Time and Majora's Mask), which I think also are in the Wii VC in their original form.
22:02
<~Vornicus>
3DS or Wii U for Hyrule Warriors
22:02
<&McMartin>
Wii can also play GC games, so that gets you Wind Waker
22:02
<~Vornicus>
Wii U also gets you Twilight Princess and Wind Waker
22:02
<~Vornicus>
(there were HD remakes of both)
22:02
<&McMartin>
But you still need a Wii for Skyward Sword
22:02
<~Vornicus>
Truth.
22:02
<&McMartin>
I'm not counting Hyrule Warriors, either of the Four Swords games, or any of the CDi games
22:02
<~Vornicus>
3DS also gets you Ocarina and Majora's Mask
22:03
<@celticminstrel>
Can't the WiiU play Wii games?
22:03 Turaiel is now known as Turaiel[Offline]
22:03
<&McMartin>
No
22:03
<@celticminstrel>
Seriously.
22:03
<&McMartin>
But the Wii can play GC games.
22:03
<~Vornicus>
Wii U can play Wii games
22:03
<@celticminstrel>
Can the Switch play Wii or WiiU games?
22:03
<&McMartin>
The Wii U's core interaction technique is completely different from the Wii's.
22:03
<~Vornicus>
Wii U cannot play GC games
22:03
<&McMartin>
Aha, OK
22:03
<~Vornicus>
Switch cannot play Wii U or earlier.
22:03
<&McMartin>
... how does the Wii U play Wii games without a remote
22:04
<&McMartin>
Switch is a complete architecture change
22:04
<~Vornicus>
You take a wii remote and use it
22:04
< Jessikat`>
the WiiU is compatible with wiimotes
22:04
<&McMartin>
Aha, OK
22:04
<~Vornicus>
It comes with a sensor bar; there's also one built into the mini screen
22:04
< Jessikat`>
you can, in fact, only use a single WiiU Controller with it at any one time
22:04
< Jessikat`>
because of the power required for rendering to it
22:04
<@celticminstrel>
So Switch, unlike all (or most?) earlier Nintendo consoles, has no backwards compatibility whatsoever?
22:05
<&McMartin>
SNES and N64 also had no backwards compatibility whatsoever
22:05
< RchrdB>
celticminstrel, to be fair to Nintendo, they're actually a pretty mixed bag historically.
22:05
<~Vornicus>
celmin: NES, SNES, N64, GC are not mutually compatible in any way either
22:05
<&McMartin>
GBC is literally an upgraded GB
22:05
< Jessikat`>
It annoys me that Nintendo apparently didn't want the WiiU pad to be novel compared to what the wiimotes can do, because the obvious use is for that to be the DM's pad with the players using wiimotes
22:05
< RchrdB>
...what McM and Vorn said.
22:05
<@celticminstrel>
Oh.
22:05
< RchrdB>
McMartin, twice the clock speed! and a deeper framebuffer. and more RAM? :)
22:05
<&McMartin>
GBA turns out to have just packed an entire GBC inside of it because it's a Z80 so why the Hell not.
22:05 * celticminstrel suspected that about NES/SNES, at least.
22:05
<~Vornicus>
But GC-Wii and Wii-Wii U are
22:06
<&McMartin>
NES/SNES is an interesting case because the *CPU* is still the same family, in the Apple IIgs/Apple IIe sense
22:06
<@celticminstrel>
Also GB-GBA, GBA-DS, DS-3DS
22:06
<&McMartin>
Yeah. GBA/DS/DSi/3DS are all ARM7TDMI
22:06
< RchrdB>
It'll be interesting to see if the PS5, PS6 etc go backwards compatible, and likewise with Xbox followups
22:06
<@Alek>
wasn't there a plug-through adapter for SNES to play GB/GBC games?
22:06
<~Vornicus>
DS actually uses an ARM9 + ARM7
22:06
<&McMartin>
3DS loses GBA support
22:06
<~Vornicus>
Yep.
22:06
<~Vornicus>
And GC-GBA
22:07
< RchrdB>
now that they've got non-weird architectures; maybe they will stick with this whole "non-weird architectures" trend?
22:07
<&McMartin>
Honestly, no Nintendo architecture was every weird.
22:07
< RchrdB>
Isn't the CPU on the DS fast enough to emulate a GBA?
22:07
< Jessikat`>
all of the major console developers have stopped trying to be innovative in terms of hardware
22:07
<&McMartin>
NES is 6502 (C64, Apple, Atari)
22:07
< RchrdB>
I don't think I agree with that, Jessikat`.
22:08
< Jessikat`>
Aside from form factor and input tech, there's no real benefit any more
22:08
<&McMartin>
SNES is 65816 (Apple IIgs, a misstep but the 6502's Chosen Successor and not surprising)
22:08
<~Vornicus>
Genesis is 68000 (Mac, Amiga)
22:08
< RchrdB>
Okay maybe I do.
22:08
<&McMartin>
N64 is MIPS (PS, Every Teaching System Ever)
22:08
<@Alek>
I swear I've heard of DS running emulators and roms for GB... or something.
22:08
<@Alek>
the PSP for PSX, as well.
22:08
< Jessikat`>
RchrdB: for reference, I work with this hardware as part of my day job :)
22:08
<&McMartin>
GB/GBC is Z80 (literally every 8-bit computer that wasn't the ones I listed above)
22:08
< RchrdB>
Form factor and input tech *are* interesting to innovate on. Architecture doesn't seem so useful now though.
22:09
<&McMartin>
GC/Wii/Wii U is PowerPC (post68k Mac)
22:09
< Jessikat`>
(though I'm totally willing to admit I'm wrong)
22:09
< Jessikat`>
I guess rendering tech too (VR and such)
22:09
< RchrdB>
like the PS3 had a weird architecture and the only result of that was⦠software got more expensive to write
22:09
<&McMartin>
GBA/DS/DSi/3DS/Switch are all ARM
22:09
< Jessikat`>
output tech? not rendering as such
22:09
<&McMartin>
Though ARM is vast and contains multitudes
22:09
<@Alek>
the PS3 architecture was useful for non-gaming purposes though, wasn't it? :P
22:09
< Jessikat`>
The PS3 had weird architecture because they tried something and failed, but I appreciate the attempt at massive parallelisation
22:09
< Jessikat`>
it was fucking brutal to try and work with, though
22:09
<~Vornicus>
the only weird part about gc/wii/wiiu is that its graphics cards use multitexturing (and way more modes for same) rather than shaders
22:10
<@Alek>
why did it fail though, besides difficulty in working with?
22:10
<&McMartin>
The NES had some innovation in its chip, but that innovation was of the form "don't get their asses sued off by Commodore"
22:10
<&McMartin>
There is apparently a famous story of Commodore's engineers and legal department taking the cap off a NES's chip and ready do the whole AHA BUSTED TAKE THAT OBJECTION thing
22:10
< RchrdB>
Jessikat`, AFAIK Sony have as much as admitted on that one that what they were actually trying to do was make cross-platform game launches harder, on the assumption that everybody would develop for the PS3 first because the PS2 was such a huge success.
22:11
<&McMartin>
... only to find that the part of the chip with the patented components was entirely missing and had been replaced with the sound circuitry
22:11
< Jessikat`>
And then Microsoft pulled a Sony with the xbone in this gen xD
22:11
<@Alek>
how?
22:11
< RchrdB>
in terms of "I want to do massively parallel numerical computation", GPGPU kit is more interesting than Cell was anyway
22:11
<&McMartin>
I recall the PS2 had something weird going on
22:12
< RchrdB>
Jessikat`, how so? both the xbone and ps4 are, uh, AMD Jaguar CPUs with very similar integrated GPUs
22:12
<&McMartin>
But that was also 2001; that era didn't have a solid notion of what graphics even were
22:12
< Jessikat`>
RchrdB: the hubris of assuming they were going to be the dominant console because of the previous generation
22:12
< Jessikat`>
rather than the hardware
22:12
< RchrdB>
oh right yes
22:12
<&McMartin>
It was when the fixed OpenGL-1 style pipeline was clearly no longer good enough, but shaders didn't really exist or work
22:12
< RchrdB>
well at least they didn't sabotage a bunch of stuff and make everyone else's life worse as a result of that hubris :)
22:13
< RchrdB>
s/sabotage a bunch of stuff/sabotage a bunch of stuff *on purpose*/
22:13
<&McMartin>
It's not sabotage if it's an accident
22:13
<&McMartin>
It's fucking up or flailing around
22:13
< Jessikat`>
fair, though I wouldn't describe the PS3 as impossible to work with
22:13
< Jessikat`>
I wouldn't say they sabotaged anything
22:13
<&McMartin>
Yeah, say what you will about the Cell, it's no Itanium
22:14
< Jessikat`>
The Cell's hardware introspection tech was really cool
22:14
<&McMartin>
"Let's just assume that compilers spent the past 20 years focusing on this tech instead of what they actually focused on"
22:14
< Jessikat`>
and it was competing with Pix on the 360, which was fantastic
22:14
<&McMartin>
"Compilers aren't getting good enough to make this work"
22:14
<&McMartin>
VLIW only really practical in an alternate universe
22:15
<&McMartin>
Jessikat` can correct me on this but I think of PS3/X360 as being where graphics had settled into their basically modern form of the programmable pipeline
22:15
<&McMartin>
And PS1/N64 used the old fixed pipeline
22:15
< Jessikat`>
I don't have as much visibility on rednering tech, but that sounds about right
22:15
<&McMartin>
And then - the part that I am less clear on - DC/PS2/GC/XB1 being a sort of uncomfortable middle ground where they were trying to make fixed pipelines that don't suck
22:16
<&McMartin>
And pretty much all wonkiness from that era I would cite as "flailing while we figured out as a species how to do this stuff"
22:16
<&McMartin>
anyway, looking over all that
22:17
<&McMartin>
It seems like Nintendo's choices *of CPU* have always been very conservative.
22:17
<&McMartin>
they never went with anything that wasn't an industry leader of some kind.
22:17
<&McMartin>
The closest to not doing so was PowerPC and I'm not *quite* willing to consign PowerPC to also-ran status.
22:18
< RchrdB>
McMartin, AFAIK the N64 wasn't actually quite as fixed-function as it looked
22:18
< RchrdB>
the GPU was some kind of SIMD processor from... TI or SGI or someone like that
22:19
< RchrdB>
almost every game used the default firmware that Nintendo bought from SGI and put into their dev kits
22:19
<&McMartin>
It's also jarring when I see American chips showing up in Japanese computers~
22:19
<&McMartin>
(General Instrument also had a sound chip that was immensely popular in Japan and the UK and saw like zero use *here*)
22:20
< RchrdB>
a very small number of games (Rogue Squadron, famously?) had their own firmware for the chip that did the rendering!
22:20
<&McMartin>
That feels like it's cousin to the trick of "put extra hardware capability in the cartridge"
22:21
<&McMartin>
Which Nintendo liked to do a lot~
22:22
<~Vornicus>
And now they can do again!
22:22
<&McMartin>
I've gotten the impression that PS2 rendering is infamously bizarre and also includes at least one unforced Complete Fuckup.
22:22
<~Vornicus>
...I don't think they will though. The Switch cartridge is itty.
22:22
<&McMartin>
Yeah, the modern trend of cartridges being Basically SD Cards means you're unlikely to pull that track
22:22
<~Vornicus>
I'm actually vaguely disappointed in the size of the Switch cartridge, my mind wanted it to be larger but thinner than the original GB cart
22:23
<~Vornicus>
only slightly largers
22:23
<&McMartin>
And it's less necessary anyway, because the real reason you did this before was because cartridges have to know how to bankswitch
22:23
< RchrdB>
https://en.wikipedia.org/wiki/Nintendo_64_programming_characteristics#Microcode talks about the graphics coprocessor.
22:23
< sshine>
McMartin, can you recommend a DSL for me?! ^_^
22:24
< sshine>
or RchrdB :)
22:24
<&McMartin>
Inform 7
22:24
< RchrdB>
I don't understand the question. A DSL for what?
22:25
< sshine>
RchrdB, I've got an exam task to make up a DSL and implement it in two weeks.
22:25
<&McMartin>
In the absence of a specific goal, Inform 7 will be an exciting DSL due to its unusual structure and the way that it gets away with its otherwise insane design decisions.
22:25
<&McMartin>
... however, that also makes it horrendously complex and thus it is bad to try to clone.
22:25
< sshine>
McMartin, whoaaa. I think I saw Inform 7 way back and forgot to get back to it.
22:26
< RchrdB>
Aha.
22:26
<&McMartin>
It is still technically in the design stages at this point but it is nevertheless mostly mature.
22:26
< sshine>
McMartin, maybe there's a saner way to solve the same problem.
22:26
<&McMartin>
It is also the largest artifact I know of produced via literate programming
22:26
< RchrdB>
sshine, have you seen Varnish's VCL?
22:27
<&McMartin>
Hmm. speaking of those N64 coprocessing tricks...
22:27
< RchrdB>
It's a domain-specific language for configuring how the Varnish HTTP caching server responds to incoming requests.
22:27
<&McMartin>
... ISTR that the GBA used its Z80 for controlling the sound chip or something when it wasn't using the Z80 to Be A Game Boy.
22:27
< sshine>
RchrdB, no, I didn't know Varnish had a non-trivial config DSL.
22:28
< RchrdB>
VCL is procedural and doesn't have loops. (happens to be compiled to C but don't worry about that)
22:28
<&McMartin>
sshine: The core mad insight at the core of Inform 7 was "if your domain is text adventures, your language should exploit and mirror the capabilities of the text adventure parser it will be driving"
22:28
<&McMartin>
Which is why it's the only language that tries to look like English that *gets away with it* because it's got to do a lot of the logic-relevant parsing anyway
22:29
< RchrdB>
What else⦠Puppet's manifest files are a DSL for configuring machines? Vagrantfiles are a Ruby *E*DSL for configuring VMs for testing stuff on?
22:29
<&McMartin>
And uses that specify assertions or filtered transformations on the set of All Objects In The Universe, which turns out to be the primary thing you do when specifying a text adventure
22:29
< sshine>
McMartin, haha, cool.
22:30
< RchrdB>
Makefiles are a DSL for expressing dependency graphs and instructions for invoking compilers.
22:30
< RchrdB>
hm
22:31
< RchrdB>
I think a Makefile might be the most fully-featured show-off-y DSL, that you could make in 2 weeks?
22:31
< sshine>
I'd like to go with something like Inform 7. but I don't know if there's anything more to add (or subtract).
22:32
< RchrdB>
Something like Inform 7 is a really big thing to implement in 2 weeks. Something like VCL or Make would be less work.
22:32
< sshine>
maybe add generic directions as a type. like "East is a direction opposite to West."
22:32
<&McMartin>
That's already in.
22:32
< sshine>
RchrdB, like a functional contract language for Ethereum might be as well. -_-
22:32
< sshine>
McMartin, ok.
22:33
<&McMartin>
This is Very Very Not A 2 Week Project
22:33
<&McMartin>
It is, politely, "organic" and has about ten years of built-up stuff in it at this point
22:33
< sshine>
heh. maybe I should put it off and actually try and make stories in it, instead.
22:33
<&McMartin>
You want a *CLEAN* DSL.
22:33
<&McMartin>
Which I7 is certainly not.
22:33
<&McMartin>
("A thing can be on fire. A thing is seldom on fire.")
22:34
< RchrdB>
is your goal here to *make up* a DSL, implement it and document it?
22:34
< sshine>
RchrdB, make it up and implement some non-trivial subset of it (the wording is a bit more specific).
22:34
<&McMartin>
Well, speaking of things that map to directions...
22:34
<&McMartin>
... dot?
22:34 mac is now known as macdjord|fude
22:34
< RchrdB>
does dot count? it's almost a data format.
22:34
< RchrdB>
dot is a good one though.
22:35
<&McMartin>
Datalog is also almost a data format :)
22:35
< RchrdB>
dot probably counts.
22:36
< RchrdB>
McMartin, btw you know cyclic cellular automatons?
22:36 * Vornicus always has a hard time defining what a DSL is, possibly because his threshold for "L" and "DS" are individual too high
22:36
< sshine>
the only idea I've had so far that seemed to have a manageable workload was a language for describing RoboRally game boards using small routines for assembly lines, lasers, walls, and some probability combinators, and some overall game board constraints. https://boardgamegeek.com/boardgame/18/roborally
22:37
< RchrdB>
I have vague memories of someone on nightstar showing me a CCA like eight years ago or something and I think it might've been you or ToxicFrog
22:37
< sshine>
the compiler could either generate a game board for printing or a heatmap that suggests how simulated robots might end up running into each other.
22:38
<~Vornicus>
I mean - would a file format that defines, for instance, Carcassonne tiles, be a DSL?
22:38
<~Vornicus>
That definitely feels very DS but not terribly L
22:38
< sshine>
Vornicus, sure. anything a DSL can do, a library can do as well. so I guess it's mostly a matter of whether the notation is substantially different from whatever language you'd otherwise compare it to.
22:38
< RchrdB>
I think I have the same issue. It's not a category with perfectly sharp boundaries.
22:38
< sshine>
Vornicus, I'd say if it's anything more than a data type definition, yes.
22:38
<&McMartin>
RchrdB: I am the one that has a bunch of CCA implementations, yes.
22:38
< RchrdB>
I think EDSLs are actually easier to draw the line on than DSLs.
22:39
< RchrdB>
McMartin, w00t.
22:39
< RchrdB>
McMartin, anyway here's Wonderwall^H^H^H^H^H^H^H^H^H^H^H WebGL: http://carefully.understood.systems/cyclic-cellular-automaton.html
22:39
< RchrdB>
I wrote that like yesterday-ish
22:40
< sshine>
RchrdB, https://www.youtube.com/watch?v=JgnO-4fhuGE -- seems like all you need is some psytrance and some LSD. :D
22:41
<&McMartin>
Nice
22:41
<&McMartin>
Man, at that scale it just erupts into demons immediately
22:41
< RchrdB>
turn the number of states up on the right
22:42
< RchrdB>
the higher the number of states, the longer it takes to erupt because the lower the probability that any cell with value k is initially adjacent to a cell with value k+1 and so on
22:42
< RchrdB>
you get a neat visual effect if you turn the number of states up to about 20 and use the "change size" button to make it really really big
22:43
< RchrdB>
above about 25 states it only rarely moves at all
22:43
< RchrdB>
and tick the "go fast" box :D
22:48
<@Tamber>
Trippy
22:49
< RchrdB>
McMartin, I guess I could probably implement a button that halves the canvas size and sets style="transform: scale(2.0, 2.0);" for when you would like fewer cells but still big enough to see 'em
22:49
< RchrdB>
but mmmmeh
22:49
< RchrdB>
Firebug that style onto the canvas element yourself if you want it that bad ;)
22:50
< RchrdB>
oh and the most surprising thing about WebGL for me is the number of times I've tried to show someone a WebGL demo and they haven't said "it doesn't work"
22:51
<@Tamber>
hee
22:51
<@Tamber>
This is The Futureâ¢
22:51
< RchrdB>
like I wouldn't use it on a production website without a fallback yet but daaang
22:52
< RchrdB>
like >=90% presence on web browsers now apparently?
22:53
< sshine>
RchrdB, you'd think browser vendors actually cooperate these days!
22:53
< RchrdB>
heh
22:54
< sshine>
I can't wait for WebAssembly. :)
22:54
< RchrdB>
Isn't WebAssembly already usable?
22:54
< RchrdB>
I thought part of the point was that it could trivially be polyfilled for backwards-compatibility.
22:54
< sshine>
maybe?!
22:55
< sshine>
cool.
22:55
< RchrdB>
iirc: WebAssembly is a serialisation format for programs written in asm.js; you can write a WebAssemblyâasm.js translator in JS. There might even be a reference implementation?
22:56
< RchrdB>
and asm.js is just a subset of JS so it's also backwards-compatible
22:56
< RchrdB>
(it happens to make use of a couple of relatively recent APIs like typed arrays, but those can be polyfilled too)
22:56
< sshine>
you know more than I.
22:57
< RchrdB>
yeah but what I didn't know is that the wasm standard isn't finalised yet
22:57
< sshine>
https://lists.w3.org/Archives/Public/public-webassembly/2017Feb/0002.html -- http://webassembly.org/roadmap/ -- it seems at least that they agree about the format, so if everything can be polyfilled, one could really just start to use it.
22:57
< sshine>
no, but but they have reached a consensus about a draft.
22:58
< sshine>
it's still a work in progress. I guess I'm mainly thinking of the future days when targeting WebAssembly rather than JS will speed up your app.
23:00
< sshine>
I mostly know about WebAssembly from stalking Andreas Rossberg who is a frequent contributor to the 'sml' tag on stackoverflow (and generally a cool guy to follow).
23:00
< RchrdB>
asm.js giving a speedup for programs that fit it has already been demonstrated.
23:00
< sshine>
nice.
23:00
< sshine>
would Elm fit it?
23:01
< RchrdB>
Pass. I don't expect it would. I don't have high confidence in that answer.
23:02
< RchrdB>
There were some demos of things like UnrealEngine and, uh, Sauerbraten being compiled from C++ to asm.js and running in browsers.
23:03
<&McMartin>
Yeah, and most of Archive.org's in-browser emulation is based on it
23:04
<&McMartin>
I've been considering poking at emscripten to create a ZX81 environment
23:05
< RchrdB>
I think if you're shipping a small in-browser GUI app, doing anything substantial in asm.js involves shipping a big enough blob of asm.js code that you would lose user-perceived performance from the extra download & parsing time, exceeding the amount that you could gain from having a "faster" runtime
23:06
< RchrdB>
wasm has better compactness than asm.js and presumably native implementations will be able to parse it faster
23:07
< RchrdB>
but anyway; unless you fuck them up, GUIs and CRUDs and things like that shouldn't be CPU-bound anyway? they should always be bottlenecked by waiting for a human being to press the next button!
23:07
<&McMartin>
... Look at your list of demos
23:07
<&McMartin>
Add in my list, which includes things hardware emulators
23:07
<&McMartin>
emulators get CPU-bound *all the time*
23:07
< RchrdB>
McMartin, the question sshine asked was â<sshine> would Elm fit it?â
23:08
<&McMartin>
Aha
23:08
< RchrdB>
Elm is a compile-to-JS language that implements FRP
23:08
<&McMartin>
...oh
23:08
<&McMartin>
I thought Elm was a mail client
23:08
< sshine>
I'm curious about that because I imagined a future where you write front-end code in sane languages and completely sidestep JS.
23:08
< RchrdB>
it's intended for making smallish GUIs
23:08
<&McMartin>
sshine: Welcome to 2006?
23:08
< sshine>
Elm is a silly Haskell-like for browser-based FRP.
23:09
< sshine>
McMartin, thanks! anything new happening? ;-)
23:09
< RchrdB>
sshine, I don't think that's totally implausible in the long run!
23:09
<&McMartin>
Java-to-JS translators seem out of fashion now
23:09
< RchrdB>
McMartin, I never understood the point of those
23:09
<&McMartin>
Coffeescript had a decent run but is also fading out in favor of ECMA6
23:09
< RchrdB>
yes you can translate nicer languages to JS
23:09
< RchrdB>
why would you translate to JS a language that is not as nice as JS in the first place?
23:10
< sshine>
McMartin, really, 2006? I thought this was only a few years old (like 2010+) with Ember.js transpiling ES6, Elm and such. and that everything else were just eDSLs in JS (like jQuery).
23:10
< sshine>
RchrdB, to run it in the browser!
23:10
<&McMartin>
"Because your employees and job applicants already knew this other language and don't want to learn"
23:10
< RchrdB>
yes but it's more hateful than writing the JS itself would've been
23:10
< sshine>
but... performance!
23:10
<&McMartin>
sshine: There was this whole google-based widget toolkit that involved java-to-js
23:11
< sshine>
McMartin, oy.
23:11
< RchrdB>
GWT!
23:11
<&McMartin>
RchrdB: "more hateful than writing the JS itself would be" assumes facts not in evidence
23:11
< RchrdB>
it was a clusterfuck!
23:11
< RchrdB>
well
23:11
<&McMartin>
RchrdB: Thank you. I had forgotten the name.
23:11
< sshine>
I remember that name. never knew what it covered.
23:11
< RchrdB>
it was really useful! but every app that used it was noticeably slow!
23:11
< RchrdB>
sshine, oh wait i misinterpreted your last question
23:12
< RchrdB>
sshine, âa future where you write front-end code in sane languages and completely sidestep JSâ â yes this is totally doable
23:12
< RchrdB>
some of your sane languages might compile to fairly high-level JS rather than compiling to things like wasm
23:12
< RchrdB>
but that's okay too
23:12
< RchrdB>
as long as you don't have to debug the raw JS sewage itself *too* often
23:12 * Vornicus finds js relatively sane
23:12
< sshine>
well, Elm is kind of blazingly fast compared to many other frameworkey-languagey things because they use the virtual DOM techniques that everyone else does and also it isn't crazy (like e.g. Angular's "magic" dependency injection).
23:12
<&McMartin>
JS appears to be relatively sane as long as you are only running in one browser and never touch the DOM.
23:13
< RchrdB>
JS is really badly designed around the edges.
23:13
<~Vornicus>
even the DOM stuff isn't so bad, I find.
23:13
<&McMartin>
I have Strong Disapproval of the interaction between Objects and Dictionaries
23:13
< RchrdB>
The language itself, I mean. It's okay if you stay away from the parts that are really badly designed.
23:13
<&McMartin>
But it does get functions right~
23:14
< RchrdB>
McMartin, yes like that.
23:14
< sshine>
I suppose a compiler can always try to generate JS that GCs well.
23:14
< RchrdB>
With the minor caveat about `var` bindings being lifted to the tops of functions.
23:14
< sshine>
RchrdB, you're talking about Elm now?
23:14
< RchrdB>
No, JS.
23:14
<&McMartin>
ECMA6 addresses that with its let bindings which where what you wanted in those cases anyway.
23:14
<&McMartin>
*which were
23:15
< RchrdB>
Raw JS, as in what Brendan Eich designed by taking inspiration from Scheme but dammit he should have taken more.
23:15
< RchrdB>
McMartin, yeah, ECMA6 is on my "to-learn" list.
23:15
< sshine>
indeed.
23:15
<&McMartin>
Since the other related failure modes surrounding those lifted var bindings happen in Scheme too
23:15
<&McMartin>
The issue is mutation vs rebinding, which ECMA6 splits out
23:15
< RchrdB>
Anyway I would like people to please watch three short talks by Gary Bernhardt who is a very good speaker.
23:15
<&McMartin>
Which is a mighty fine hair to split in my book.
23:15
< RchrdB>
The first is upon the topic of the ignoble past. It is called "Wat": https://www.destroyallsoftware.com/talks/wat
23:16
<&McMartin>
Wat is an eternal classic.
23:16
< RchrdB>
The second is upon the topic of the glorious future. It is a piece of science fiction called "The Birth & Death of JavaScript": https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
23:17
< sshine>
cool, I like his talks. :)
23:17
< RchrdB>
It outlines a direction that JS might plausibly go in. There are some small technical points in it that I don't agree with Gary about but they're not super important.
23:17
<&McMartin>
That is a good sign.
23:18
<~Vornicus>
Does he start the second one with "let's talk about Javascript."
23:18 * McMartin found he had many very large philosophical points in which he disagreed sharply with the author of "Javascript: The Good Parts"
23:18
<&McMartin>
I still consider it a good read, but it should be treated as food for thought and not a sensible set of norms for usage of JS or language design in general.
23:19
<&McMartin>
This seems to be a much less short talk than Wat.
23:20
< RchrdB>
yes but the jokes are funnier
23:20
<&McMartin>
Oho
23:21 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
23:21 mode/#code [+o mac] by ChanServ
23:22
< RchrdB>
The third talk I'd like people to watch is called "Boundaries" and it suggests a heuristic for using FP & procedural ideas together so that you can have code where all the complicated bits are easily unit tested and all the bits that interact with the outside world can be simple enough to verify correctness by manual testing and inspection. https://www.destroyallsoftware.com/talks/boundaries
23:22
< RchrdB>
not that it's relevant to this discussion or anything
23:22
< RchrdB>
I just thought it was really good
23:22
<&McMartin>
That does sound like fun.
23:23
<&McMartin>
And hey, I should ask you this too since I asked other people it at other times and got answers that were, um, good but nonresponsive
23:23
<&McMartin>
Is there a resource - a talk, a book, a codewalk, anything beyond Obvious Toys - that discusses how to organize functional or mostly-functional software in the large?
23:24
<&McMartin>
I am particularly interested in a discussion of large-scale software architecture using ML's structs and functors.
23:24
<&McMartin>
Because I have basically never seen any use of them that meaningfully applied to that space; they were either toy examples that were clearly using them as Fancy Data Structures or What You Use To Do What Java Programmers Would Use Objects For
23:24 macdjord|fude [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
23:25
<&McMartin>
Which has its place, but structs and functors have been presented to me as *also* being a meta-level step above modules and namespaces as well.
23:25
<&McMartin>
I have literally never seen this meaningfully done and would like to see the process broken down.
23:26
< RchrdB>
Not that I know of, no.
23:26
<&McMartin>
(The last time this came up I was linked some Jane Street talks that were wonderful examples of a process that trivially mapped to designing a good smart-data class in C++.)
23:26
< RchrdB>
AFAIK lots of the biggest codebases written in FP langs are actually secretly messes.
23:26
<&McMartin>
s/FP //
23:27
<&McMartin>
Thus my quest for an Example Of Excellence, and ideally an Example Of Alien Excellence.
23:27
< RchrdB>
e.g. GHC itself supposedly has an awful lot more not-strictly-necessary "x -> IO y" in it than anyone would like to admit.
23:27
<&McMartin>
Mmm
23:27
<&McMartin>
That's even lower level than what I am looking for here
23:27
<&McMartin>
Like, the usual way to dismiss an impractical language is "has it been used for anything besides its own compiler"
23:28
<&McMartin>
Now, I Happen To Know that the ML family of languages is Really Fucking Good at compilers, and I know how to structure a compiler in one
23:28
<&McMartin>
What I don't know is how to structure something the *size of a compiler* that *isn't a compiler* in one.
23:28
<&McMartin>
My own attempts to learn by doing end up looking a lot like the way I organize C code.
23:29
< RchrdB>
That Boundaries talk advocates something that I think works, where you end up writing CSP code, and inside each of the communicating sequential processes, the complicated bits are mostly purely-functional.
23:29
<&McMartin>
It is possible that this is because I have internalized a discipline that about right for both.
23:29 * McMartin nods
23:29
<&McMartin>
That is relevant to my immediate interests, actually.
23:30
< RchrdB>
(secretly, Erlang)
23:30
<&McMartin>
Though the language I'm working in for that particular case turns out to be Go~
23:30
<&McMartin>
But if I'm going to write Go, writing it as if it were Erlang sounds good to me
23:30 * McMartin just recently learned Erlang's what Discord runs on.
23:30
< RchrdB>
I specifically can't answer questions about how to structure software using ML modules because I⦠never used ML! :)
23:30
<&McMartin>
Yeah, and ML modules are super wacky.
23:31
<&McMartin>
And, you know, you have your ear more to those streets than I do; it can't hurt to ask.
23:32 * McMartin gets to the bit in the the JS talk where we laugh at how small "JavaScript: The Good Parts" is
23:32
< RchrdB>
oh there's a thing by, um, Ed Kmett maybe, about non-obvious software engineering benefits attached to Haskell typeclasses
23:32
<&McMartin>
That would be a superb resource as well for me
23:32 * McMartin also goes back to his earlier thought and simply includes the introduction to every single Report On Scheme.
23:32
< RchrdB>
and there's sometimes a fairly close analogy between "instantiate a first-class module" and "look up a Haskell style typeclass"
23:33
< RchrdB>
so maybe there's some great relabelling that makes the one thing relevant to the other
23:33
< RchrdB>
It'll take me a while to find this.
23:33
<~Vornicus>
that's what I should do. do PE in haskell
23:33
<&McMartin>
PE?
23:33
< RchrdB>
partial evaluation?
23:34
<&McMartin>
Doesn't that happen automatically as part of its evaluation?
23:34
<~Vornicus>
project euler
23:34
<&McMartin>
Ah yes.
23:34 * McMartin did his PE work therein.
23:34 * Vornicus has been trying to pick a thing to do to learn him a haskell
23:35
< RchrdB>
McMartin, that this is the Ed Kmett talk that I was thinking of: https://www.youtube.com/watch?v=hIZxTQP1ifo
23:35
<&McMartin>
There are some stumbly bits where you need to force eager evaluation at exactly the right point or your system explodes.
23:35
<&McMartin>
Excellent, thank you
23:35
< RchrdB>
I'm not sure if he wrote this as an article or blog post or something
23:35
< RchrdB>
I'm sorry but it is not short
23:35
<&McMartin>
Now, as it happens, the eager evaluation stuff was something that... I think RchrdB under an earlier name, but it may have been one of the other folks here
23:35
<&McMartin>
helped me through
23:35
< RchrdB>
the things that are in this talk that I think might be relevant to what you want are not necessarily going to be easy to dig out
23:35
<&McMartin>
I am in no way convinced that PE made me any better at Haskelling, compared to Battling Haskell's Runtime.
23:35
<&McMartin>
That's fine
23:36
< RchrdB>
oh yes I used to use "MyCatVerbs" or "MyCatOwnz" on nightstar.
23:36
<&McMartin>
Also, RchrdB, for some reason stuff you play on Steam has been absolutely dominanating Valve's reclist to me.
23:36
< RchrdB>
and then stuff happened and I stopped using pseudonyms on the internet in most contexts
23:36
<&McMartin>
HEY RICHARDB IS PLAYING THIS YOU SHOULD BUY IT
23:36
< RchrdB>
that's because my taste is impeccable
23:36
< RchrdB>
uh
23:36
<&McMartin>
I guess so
23:36
< RchrdB>
ignore my playlist, check my reviews though? ;)
23:37
<&McMartin>
Maybe it was the reviews.
23:37
<&McMartin>
DMoM&M is the one that pops up the most.
23:37
< RchrdB>
OH THAT GAME IS SO FUCKING AWESOME
23:37
< RchrdB>
and so buggy
23:37
<&McMartin>
It's exactly the right level of buggy, based on the speedrun I saw of it.
23:37
<@celticminstrel>
What does that stand for?
23:37
<&McMartin>
Buggy enough that it can be broken in half, but not Oblivion-level buggy where the game then dissolves into a pile of bits in five minutes.
23:38
<&McMartin>
"Dark Messiah of Might & Magic"
23:38
< RchrdB>
aka âThe Adventures of Sir Kicksalot Deathboot in the Land of the Conspicuously Placed Spike Racksâ
23:38 * celticminstrel had predicted Dungeon Master of Might and Magic. :P
23:38
<&McMartin>
Also a lot of staircases
23:38
< RchrdB>
also I kinda liked the plot
23:38
<&McMartin>
The speedrun didn't do a lot of punting dudes off cliffs, but that matters less when you spend half your time embedded in ceilings and walls.
23:39
< RchrdB>
yeah I spent a lot of time just sending enemies off cliffs by various means
23:39
<&McMartin>
... I didn't get much of a handle on the plot in the speedrun, but it still made way more sense than any of the Elder Scrolls speedruns
23:40
< RchrdB>
the plot isn't complicated enough to be exceptionally rich but it makes sense
23:40
< RchrdB>
and there are one or two clever twists in it if you're really paying attention
23:40
<&McMartin>
M&M games were not well known for the subtle and complicate plots.
23:40
< RchrdB>
anyway the best advert for DMoM&M is https://www.youtube.com/watch?v=p7T9tJiw6AU
23:40
<&McMartin>
They were, indeed, best known for suddenly turning into Star Treck in the final third of the game, a thing DMoM&M does not actually do.
23:41
< RchrdB>
or alternately a shorter video which gets along the same point and has catchier music: https://www.youtube.com/watch?v=KnxgQMSsc8c
23:41
<&McMartin>
(Note that this particular claim requires one to treat Clouds of Xeen and Darkside of Xeen as two halves of one game)
23:43
< RchrdB>
I can deal with that.
23:43
< RchrdB>
oh and on the topic of the writing
23:44
< RchrdB>
DMoMaM was made by Arkane Studios who later made Dishonored
23:44 * McMartin nods
23:44
< RchrdB>
so yeah M&M is not famous for their writing these days
23:44
< RchrdB>
but Arkane sure are!
23:45
<&McMartin>
JVC is famous now mainly for, shall we say, his enthusiasm more than his raw skills.
23:47
< RchrdB>
JVC? The writer of M&M?
23:47
<&McMartin>
And designer and core programmer.
23:48
< RchrdB>
Jon Van Caneghem
23:48
<&McMartin>
Yes
23:48
< RchrdB>
well I like schlocky imperfect stuff
23:48
<&McMartin>
He never left the industry
23:48
<&McMartin>
And yeah
23:48
<&McMartin>
And, well
23:48
< RchrdB>
enthusiasm and imperfect skills are a much nicer combination than fine skill and disdain, I think
23:48
< RchrdB>
this is why I use Linux and not Windows :)
23:48
<&McMartin>
I was playing M&M6 at the same time that I was trying to play Dragon Age: Origins
23:49
<&McMartin>
M&M6 was by far the more compelling experience.
23:49
<&McMartin>
I still haven't gotten back to DA:O.
23:49 * Alek still fondly remembers renting M&M2: Gates to Another World on his Genesis in the mid to late 90s.
23:49
< RchrdB>
I remember playing M&M 5 or 6 or 7, can't remember which. They were pretty cool actually.
23:49
<@Alek>
circa 95-97?
23:50
< RchrdB>
(The "enthusiasm vs skill" thing: Linux is imperfect but when there's a problem I'm pretty sure it's an accident. Windows is very polished but when there's an annoyance it's often been put there on purpose which is *vexing*.)
23:52
< RchrdB>
McMartin, my enthusiasm for Bioware kind of ran out after playing Mass Effect and DA:O.
23:52
< RchrdB>
it had hit its peak when I played, um, bridge of birds?
23:52
< RchrdB>
er Jade Empire
23:54 Jessikat` [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving]
23:54
<&McMartin>
Oh hey, this JS talk is quoting one of the guys who was on my thesis committee
23:54
< RchrdB>
sweet!
23:54 Jessikat [Jessikat@Nightstar-hpgbve.dab.02.net] has joined #code
23:54
<&McMartin>
Or at least, I assume it is.
23:54
<&McMartin>
I don't know of any other Aikens in CS besides him.
23:54
< RchrdB>
quite likely
23:55
< RchrdB>
GB claims to have been reading a lot of material far & wide to condense that talk. :)
--- Log closed Mon Mar 27 00:00:47 2017
code logs -> 2017 -> Sun, 26 Mar 2017< code.20170325.log - code.20170327.log >

[ Latest log file ]